DevTrendsDeveloper trends
Accent color

DEV TRENDS / DAILY DISCOVERIES

Jan 24, 2026 · What developers are building

Daily discoveries from developer communities, independent makers, and open source.

nihon go (霓虹go!) - 科学算法+AI辅助的日语学习平台

【网站自荐】nihon go (霓虹go!) 基于科学算法的日语学习平台 一个集成了艾宾浩斯遗忘曲线算法、AI 对话助手和 3D 可视化进度的日语学习平台,帮助学习者科学高效地掌握日语。 🎯 核心特色 1. 科学的学习算法 基于艾宾浩斯遗忘曲线,系统自动安排复习时间(1天、2天、4天、7天、15天、30天、60天、120天),确保在最需要的时候复习,避免无效重复。 2. AI 驱动的对话练习 集成 DeepSeek AI,提供 24 小时日语对话助手: 支持中文输入,自动翻译为日语并标注假名 实时语法纠错和地道表达建议 自动记录对话中的生词和语法点 智能安排复习,让新学知识不再遗忘 对话助手 3. 可视化学习进度 使用 Three.js 构建的 3D 学习进度可视化,让学习目标清晰可见: 直观展示 N3 考试需要掌握的 1126 个单词、200 个语法点、10 篇 N3 级别文章 实时追踪学习进度和复习计划 3D 场景交互,让学习更有趣 📚 功能模块 词汇学习 学习效率计算:艾宾浩斯在你即将遗忘的时候提醒你,确保每个单词都能得到有效复习,保证每一次都是有效复习,而不是"永远停留在 abandon,第一页看了100遍,10页以后没翻过"。 听力真题 收录 19992024 年共 20 年的日语能力考试听力真题: 边听边对比原文 自动记录生词和语法点 支持逐句播放和重复练习 文章学习 提供 N1N5 级别的精选文章: 语法点自动标注和解释 文章朗读功能 基于遗忘曲线的复习提醒 真题下载 免费下载历年日语能力考试真题 PDF: 淘宝售价 40 元/本,PDF 全套 30 元 会员网站年费 49 元 这里完全免费,只需登录即可下载 💡 项目亮点 1. 科学算法:不是简单的重复,而是基于遗忘曲线的智能复习 2. AI 赋能:24 小时日语老师,随时解答疑问、纠正错误 3. 数据可视化:3D 进度展示,让学习目标清晰可见 4. 完全免费:真题、听力、练习全部免费,无广告、无会员费 5. 用户友好:支持中文输入,降低学习门槛 🎓 适用人群 准备日语能力考试(N1N5)的学习者 希望系统化学习日语的初学者 需要科学复习方法的学习者 想要免费获取真题资源的考生 让科学算法和 AI 技术,帮你更高效地学习日语! 🎌

Original
DTResearch & learningDTWeb appDTWeb
—

Sora2Web - 接入 Azure 官方接口的低成本 Sora 2 生成平台

一句话描述: 一个基于 Azure OpenAI 官方 API 构建的 Sora 2 视频生成工具,专为国内用户优化,提供企业级稳定性和极具竞争力的价格。 核心特点: 官方渠道直连:底层接入 Microsoft Azure 官方 API,非逆向破解或第三方中转接口。确保了生成服务的高并发稳定性与数据安全性,拒绝封号风险,稳定可靠。 极低门槛:针对国内网络和支付环境优化,无需魔法,直接支持支付宝和微信支付。 成本优势:全网低价,提供灵活的订阅制和按量付费(积分) 模式,拒绝捆绑销售。 免费试用:注册即送 2 次免费生成机会,真实体验官方模型效果后再付费。 无水印高清:支持无水印输出及高清版本选项,满足专业内容创作者需求。 AI 工具箱:集成了 Sora 2 及其他前沿 AI 视频/图片工具,一站式满足创作需求

Original
DTContent creationDTData & operations
—

Memov: 基于 Git 的 Claude Code 可回溯记忆层

MemoV 是 AI 编程代理的记忆层,提供可追溯、Git 驱动的提示词、上下文和代码差异版本控制。它实现了 VibeGit AI 编程会话的自动版本化,支持分支探索、回滚功能,且对标准 .git 仓库零污染。 核心特性 1. 一键安装 MCP — 适配任何 AI 编程助手 2. VibeGit for Agents — 自动追踪提示词、上下文和代码差异,无需手动提交 3. 版本控制 — 分支、回滚、重放任何交互 4. 保持 Git 干净 — 影子 .mem 时间线,零污染 .git 5. 可视化界面 — 在对话中说 "mem ui",访问 查看 6. 隐私优先 — 本地存储,无数据库,零开销。使用 .memignore 排除文件 博客 1. 2. 开源仓库: 3. 知乎介绍: 4. 安装手册: 5. vscode插件:memov

Original
DTData & operationsDTSoftware developmentDTAgent extension
—

分割图片的小工具

想要更轻松地分割图片? 试试 splitimage.xyz 免费,无需注册 浏览器即可使用 注重隐私(本地处理) 几秒钟即可分割图片

Original
—

llmdoc: 解决AI Coding的最后100米

在过去一年半的时间里, 我的工作流有了巨大的变化, 也亲眼见证了 AI Coding从兴起到现在的全面铺开, 个人工作模式已经被彻底颠覆了 当我们回顾 2025 年的变化, 从年初的 gemini 2.5 到 sonnet 4.5, gpt5codex, opus 4.5, gemini 3, gpt5.2codex. 我们应该认为: 模型的能力进步速度没有变得缓慢, 而且Cursor / Claude Code / OpenCode这类Coding Agent 的兴起, ToD 的应用也以令人难以预料的速度推进. 随之而来的有另一个问题: Context, 是的上下文构建, 而且我想要说的是在严肃的面向生产的环境中的 Context, 这不是 chatbot 中用personality 这种可以糊弄过去的, 代码更新留下了遗漏是真的会出现线上故障的. 让我们再看一下现在的这些Coding Agent 提供的能力吧: 1. AGENTS.md / CLAUDE.md: 注入到 User Message 满足 Context定制化的需求 2. SubAgent / ForkContext: 通过增加并行度实现 Task 的更快解决 3. Skill / Command / Workflow: 虽然都在鼓吹 Skill 的渐进式披露, 但是我认为对于编程这种极度明确的场景太多的 Skill只会让你的模型编程笨蛋 但是, 还差了一些东西, Agent 实际上并不了解你的仓库, 我这里的了解指的是 Agent 实际上是通过Claude.md + 大量阅读代码文件才感知到了当前的环境. 这是正常的工作模式, 我们也习惯于这一点, 但是这不是一个好的路径, 如果使用 codexcli 的人对此应该深有感触: 不断的不断的阅读代码文件, 甚至是完全不需要阅读的代码文件, 在 Context 足够解决问题的时候, 才开始解决问题. Context Floor 我个人会把 "满足 Agent 解决需求的 context 的丰富度" 称之为: Context Floor 1. 调用了多少工具 2. 占用了多少 Token 3. 关键信息的密度 现在让我们回过头来看, 一些经典的解决方案: 1. LSP MCP: 通过提升关键Symbol密度 + 大量的工具调用 实现快速到达context floor 2. ACE / RAG: 通过少量的工具调用 + 稀疏的关键信息密度, 很难保证信息的关联性和有效性 3. Agentic RAG: 让 Agent 做一次信息的搜集, 提供一份概要, 一般使用 SubAgent, 在 claude code 中的explorer就是承担了类似的作用, 虽然 subagent 执行任务可以保证 master agent 上下文足够干净, token 占用量也不高, 关键信息密度也很高, 但是耗时太久了 TTCR (Time to Context Floor)实在是难以忍受 那么, 有没有一个解决方案足够快, 信息密度足够高, 主Agent的Token 占用足够少, 信息和任务存在强关联而且有效呢? 我的解决方案 调试了一个月, 在公司内验证了3 个月之后,我觉得在现在时间节点的 SOTA 模型的加持下, 这套方案足够满足需求了 llmdoc + subagnet RAG 过去我有几个帖子说名字他的诞生的思考过程, 这里就不在详细的介绍 llmdoc 一个在设计之处就用来解决AI 快速获取高密度信息 + 人类可读性的文档系统 脱胎于 diataxis, 做了些微不足道的改动 1. 利用 Agent 能够快速批量 Read的能力, 文档中保留最关键的文件路径+负责的模块说明 2. 项目概览 + 架构 + 通过主题串联的 guides + refrence 以上作为基础, 在代码库中插入一个 llmdoc, 满足人类可读性 + Agent 可读性 示例: subagent RAG 为了解决并行度的问题, 必须要引入 subagent, 但是 subagent 用来做什么呢? 主要是两件事情: 1. 调研: 基于 llmdoc + 现有的代码文件, 调研拆解后的任务作为前置条件 2. 记录: 在完成了编码任务之后, 自动的更新维护 llmdoc 问题 效果当然非常好, 或者说, 自从有了这一套解决方案之后我没有再使用过其他乱七八糟的 plugin 但是有一个问题: 贵 而且不是有点贵, 大概是用1.5倍的价钱完成了从 85 分 90 分的效果, 在一些简单的项目中, 效果一般, 但是越复杂的项目收益越好. 效果 在我们公司的线上业务中, 后端代码仓库大概有 10W 行代码, 这套系统工作出色, 在几乎所有的情况下, 都能够准确的完成需求. 在建立了 llmdoc 的基础上, 根据需求的大小, 需求完成的成本大概在 1 5 刀, 而且最关键的是: 人类介入的次数大大降低, 只需要 Review 代码, 以及执行少量的修改后, 就能够放心交付. 现在也在我们的前端团队内开始推进, 效果依然出色. 我推荐大家使用 ccplugin, 强烈推荐!

Original
DTSoftware developmentDTAgent extensionDTAgent observability
—

Future-Style-Periodic-Table:可视化核外电子排布的未来风元素周期表

FutureStylePeriodicTable 链接地址 GitHub 简短描述 这是一个基于 Web 标准(HTML/CSS/JS)构建的交互式 3D 元素周期表。 项目采用赛博朋克风格设计,核心亮点在于可视化了抽象的“核外电子排布”。用户点击任意元素即可查看详细数据,并能进入 3D 模式旋转观察原子结构与电子轨道,非常适合初高中化学教学与科普。 1. 3D 电子排布可视化:基于电子排布算法,实时渲染出动态旋转的 3D 原子结构模型,直观展示电子层分布。 2. 沉浸式交互:点击元素即弹出详情卡片,展示电子排布式、同位素、化合价等详尽数据。 3. 零依赖纯前端:完全使用 Vanilla JavaScript (ES6+) 开发,代码结构清晰,是学习 CSS 3D 变换与原生 JS 的优质案例。 预览图 1. 周期表主界面 2. 元素详情卡片(点击元素触发,展示电子排布数据) 3. 3D 原子结构模型(核心特色,可视化电子轨道) 3D

Original
DTResearch & learningDTSoftware developmentDTWeb
—

web-sqlite-js:解决 Web 端“缺少开箱即用持久化关系型数据库”的核心痛点

演示 核心问题 在 Web 端长期缺少一个开箱即用、可持久化、真正关系型的用户端数据库。 开发者要么被迫使用 IndexedDB,要么引入复杂且高延迟的后端服务,无法像桌面应用那样直接调用基于本地存储的 SQLite。 websqlitejs 的目标:让浏览器像桌面一样拥有 本地存储SQLite一致的使用体验和效果。 技术原理 SQLite → WASM:将 SQLite 编译为 WebAssembly,使其可在浏览器端直接运行 SQL OPFS 持久化:基于 Origin Private File System 将数据落盘保存,刷新页面不会丢失(除非用户清理浏览器存储) Worker 执行:SQL 在 Web Worker 中运行,避免阻塞主线程 结构化日志:支持订阅 SQL、耗时、错误与事件 为什么推荐 开发体验一致:使用方式与本地 SQLite 几乎一致,只需写直观 SQL 即可读写本地数据库并返回结果 真正关系型数据库:完整 SQL 能力,不是简单 KV 存储 开箱即用:安装即用,无需后端 持久化可靠:OPFS 本地保存,不会随刷新消失 工程化完整:事务、版本迁移、日志订阅、回滚/发布 调试友好:专用 Chrome DevTools 插件 释放前端能力上限:基于这种数据库,可开发更复杂、更强大的网页应用 额外亮点 TypeScript 原生支持 debug 模式可输出 SQL 执行耗时与参数 DevTools 插件: GitHub: NPM:

Original
DTData & operationsDTDesktop productivityDTWeb app
—

Claude Code Skill 的完全研究: context fork / skill folder / skill router / tool usage policy

Skill的实现以及指令 让我们来抓包Claude Code的请求, 看看Claude Skill的实现吧 json { "name": "Skill", "description": "Execute a skill within the main conversation\n\nWhen users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively. Skills provide specialized capabilities and domain knowledge.\n\nWhen users ask you to run a \"slash command\" or reference \"/<something\" (e.g., \"/commit\", \"/reviewpr\"), they are referring to a skill. Use this tool to invoke the corresponding skill.\n\nExample:\n User: \"run /commit\"\n Assistant: [Calls Skill tool with skill: \"commit\"]\n\nHow to invoke:\n Use this tool with the skill name and optional arguments\n Examples:\n skill: \"pdf\" invoke the pdf skill\n skill: \"commit\", args: \"m 'Fix bug'\" invoke with arguments\n skill: \"reviewpr\", args: \"123\" invoke with arguments\n skill: \"msofficesuite:pdf\" invoke using fully qualified name\n\nImportant:\n When a skill is relevant, you must invoke this tool IMMEDIATELY as your first action\n NEVER just announce or mention a skill in your text response without actually calling this tool\n This is a BLOCKING REQUIREMENT: invoke the relevant Skill tool BEFORE generating any other response about the task\n Only use skills listed in \"Available skills\" below\n Do not invoke a skill that is already running\n Do not use this tool for builtin CLI commands (like /help, /clear, etc.)\n If you see a <commandname tag in the current conversation turn (e.g., <commandname/commit</commandname), the skill has ALREADY been loaded and its instructions follow in the next message. Do NOT call this tool just follow the skill instructions directly.\n\nAvailable skills:\n tr:reviewPR: Conducts an automated review of a GitHub Pull Request.\n tr:updateDoc: Updates the documentation based on recent code changes.\n tr:initDoc: Generate great doc system for this project\n tr:what: Clarifies a vague user request by asking clarifying questions.\n tr:withScout: Handles a complex task by first investigating the codebase, then executing a plan.\n tr:commit: Analyzes code changes and generates a conventional commit message.\n", "inputschema": { "$schema": " "type": "object", "properties": { "skill": { "description": "The skill name. E.g., \"commit\", \"reviewpr\", or \"pdf\"", "type": "string" }, "args": { "description": "Optional arguments for the skill", "type": "string" } }, "required": [ "skill" ], "additionalProperties": false } } Instructions markdown Execute a skill within the main conversation When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively. Skills provide specialized capabilities and domain knowledge. When users ask you to run a \"slash command\" or reference \"/<something\" (e.g., \"/commit\", \"/reviewpr\"), they are referring to a skill. Use this tool to invoke the corresponding skill. Example: User: \"run /commit\" Assistant: [Calls Skill tool with skill: \"commit\"] How to invoke: Use this tool with the skill name and optional arguments Examples: skill: \"pdf\" invoke the pdf skill skill: \"commit\", args: \"m 'Fix bug'\" invoke with arguments skill: \"reviewpr\", args: \"123\" invoke with arguments skill: \"msofficesuite:pdf\" invoke using fully qualified name Important: When a skill is relevant, you must invoke this tool IMMEDIATELY as your first action NEVER just announce or mention a skill in your text response without actually calling this tool This is a BLOCKING REQUIREMENT: invoke the relevant Skill tool BEFORE generating any other response about the task Only use skills listed in \"Available skills\" below Do not invoke a skill that is already running Do not use this tool for builtin CLI commands (like /help, /clear, etc.) If you see a <commandname tag in the current conversation turn (e.g., <commandname/commit</commandname), the skill has ALREADY been loaded and its instructions follow in the next message. Do NOT call this tool just follow the skill instructions directly. Available skills: tr:reviewPR: Conducts an automated review of a GitHub Pull Request. tr:updateDoc: Updates the documentation based on recent code changes. tr:initDoc: Generate great doc system for this project tr:what: Clarifies a vague user request by asking clarifying questions. tr:withScout: Handles a complex task by first investigating the codebase, then executing a plan. tr:commit: Analyzes code changes and generates a conventional commit message. 除此之外, 在 System 的 Tool Usage Policy 中还有这么一个 markdown /<skillname (e.g., /commit) is shorthand for users to invoke a userinvocable skill. When executed, the skill gets expanded to a full prompt. Use the Skill tool to execute them. IMPORTANT: Only use Skill for skills listed in its userinvocable skills section do not guess or use builtin CLI commands. 1. 功能 核心定位: 这是一个中转站。它的核心功能是将自然语言(如 "help me fix this bug")或 显式指令(如 "/commit")映射到具体的系统预设能力(Skills)上。 触发机制: 1. 意图识别: 用户任务需要专业能力辅助时。 2. 符号触发: 明确的斜杠命令 /。 状态管理: 它不仅仅是调用,还包含了一个非常关键的状态检查功能(检查 <commandname 标签),用于防止死循环(即防止模型在已经加载了技能的情况下再次尝试调用技能)。 2. 构成与强调内容 采用了 Context(背景) Trigger(触发器) Examples(示例) Constraints(约束) Knowledge Base(可用列表) 的经典结构。 强调内容(Emphasis): 即时性与阻断性(Blocking Requirement): 使用了大写的 IMMEDIATELY、BLOCKING REQUIREMENT、BEFORE generating。这是为了解决 LLM 常见的一个毛病: “光说不练” (即模型回复“好的,我来帮你运行 commit”,但实际上并没有发起工具调用)。这里强制要求工具调用必须是第一动作。 排他性(Negative Constraints): 明确规定了不该做什么(不要用于内置 CLI 命令,不要只是嘴上说说,不要调用未列出的技能)。 防递归(Loop Prevention): 特别强调了检测 <commandname 标签。这说明该系统是一个多轮对话或基于 Agent 的系统,技能加载后会注入新的 Prompt,必须防止 Router 再次拦截。 3. 适配高智能模型 & 声明式 vs 命令式 适配度:高。这段 Prompt 非常适合高智商模型。 风格分析: 混合风格,但偏向命令式(Imperative) 。 虽然有声明式的描述("Skills provide specialized capabilities..."),但在执行逻辑上使用了大量的命令式语句("Use this tool...", "Check if...", "Do NOT call...")。 点评: 对于工具调用(Function Calling) 类任务,命令式通常优于声明式。因为工具调用需要严格的语法和时序准确性,模糊的声明可能导致模型自由发挥而产生幻觉 思维链引导: Prompt 隐式地要求模型先进行判断(Check if relevant),然后行动。 Skill的调用 command 调用 让我们直接调用一个 command, 然后观察他的执行流程吧 Claude Code 其实会把一个 command 的调用拆解成两个步骤 1. commandnameTag 包裹的命令请求 json { "type": "text", "text": "<commandmessagetr:what</commandmessage\n<commandname/tr:what</commandname" }, 2. SKILL.md 的内容 json { "type": "text", "text": "CONTENT of SKILL" } skill folder claude code skill 提供的另外一个令人兴奋的能力是: 可以将 skill 涉及到的文件封装在同一个目录下, 这样可以实现更好的结构化. 来看看这部分是怎么实现的, 我们将使用一个空的目录, 看看这个目录的结构吧 json .claude └── skills └── sayhello ├── scripts │ └── hello.sh └── SKILL.md skill 的内容非常简单 json name: sayhello Say hello to the user disablemodelinvocation: true run scripts/hello.sh 执行流程 json ❯ /sayhello ⏺ Bash(bash /Users/test/code/claudecodeskillresearch/.claude/skills/sayhello/scripts/hello.sh) ⎿ Hello, World! ⏺ 脚本已成功执行,输出:Hello, World! 这部分其实就没有什么惊喜了, 但是这里要注意: 不要声明绝对目录 请求设计 json { "role": "user", "content": [ { "type": "text", "text": "<commandmessagesayhello</commandmessage\n<commandname/sayhello</commandname" }, { "type": "text", "text": "Base directory for this skill: /Users/test/code/claudecodeskillresearch/.claude/skills/sayhello\n\nrun scripts/hello.sh\n", "cachecontrol": { "type": "ephemeral" } } ] } 可以看到, 这里也没有什么魔法, 或者很工程的设计, 唯一一个需要注意的是: Base directory for this skill: /Users/test/code/claudecodeskillresearch/.claude/skills/sayhello 所以, skill 的 folder 是怎么实现的呢? 很简单, 在提示词里显式的说明了 skill 的路径, 好吧, 有点失望 contextfork 另外一个值得观察的: context fork 的能力, 按照官网描述: Set to fork to run in a forked subagent context. 听描述应该是说, 会启动一个 subagent, fork 主 agent 的 context, 在完全独立的上下文中运行 让我们看一看, 这个 subagent 的使用吧 现在修改下 SKILL.md, 使用 context fork 以及使用 generalpurpose agent 来运行 markdown name: sayhello Say hello to the user disablemodelinvocation: true context: fork model: sonnet agent: Generalpurpose run scripts/hello.sh 执行路径 plaintext ❯ hello ⏺ Hello! How can I help you today? ❯ /sayhello ⎿ The script ran successfully and outputted: Hello, World! The script is located at /Users/test/code/claudecodeskillresearch/.claud /skills/sayhello/scripts/hello.sh and simply prints a greeting message. ❯ ok, hi, claude code ⏺ Hi! What can I help you with? subagent的工作流 json { "model": "claudesonnet4520250929", "messages": [ { "role": "user", "content": "Base directory for this skill: /Users/test/code/claudecodeskillresearch/.claude/skills/sayhello\n\nrun scripts/hello.sh\n" }, { "role": "assistant", "content": [ { "type": "thinking", "thinking": "The user wants me to run the script scripts/hello.sh. They've also provided a base directory for a skill: /Users/test/code/claudecodeskillresearch/.claude/skills/sayhello\n\nI should run the script. The path could be:\n1. Relative to the current working directory (which is /Users/test/code/claudecodeskillresearch)\n2. Relative to the skill base directory\n\nLet me try running it. Since the current working directory is /Users/test/code/claudecodeskillresearch, the script path would likely be scripts/hello.sh relative to that, or it could be within the skill directory.\n\nLet me check what's available. I'll try to run the script first and see what happens.\n\nActually, given that the base directory for the skill is provided, the script is likely at /Users/test/code/claudecodeskillresearch/.claude/skills/sayhello/scripts/hello.sh\n\nLet me run that script.", "signature": "Eq0ICkYICxgCKkDugd7USNmyDSocrUDwZIgs5NHZ+c/rCy1NrlCexGsxGojGT34iwzaaRAzlzx8Ej9zyvLcL1W1RcBlABJtseubTEgxgFSMj0JHL/v34/OwaDI8rm6XT4rIsJdZHQCIwfc+IqhSnC2tuc6oAFVemNtHNM8zHjbHe88RSGxRCttWvDstUOwN/yFzsBRWkWJs3KpQHn2gPaqbkB+KO4rHA9zL57EM0U9fag2hq1LudmJQ+EjevffqwidkNw5SQOkxKZi5sWE7bEnBYFLw02stS2B8MPYC/sLlKSXom4/G5EuEDWDK92yOuLa/otpAiVNC897c4m7Tq4EZmPpt52elsdwJFtJSRfn4XWdqP0xi5UeT/h6Z6m0NR3zgF04vpg9HMpo/DYEV0/MxGgKcPODXFOuPfup6LHCsXEH2v2g1TAiqECtUc1Qo/RY2Fc2VV6jrN+vmp8pnwuOUiJuXgSUP4hFIkqZylo9Nwv4tHik2sdzfQW+2RAiKDmsjOjuCLaYEeJ2G6TWEe0kYGzSDiY+Wvl5TXPOPpCtYVrQBWySS7ojMT/1uK9UKD2lPyiiEzYjzlfZ40lLDsJf4YTAXI5IEiiJxi4Du5gxgcq50aanwGXnnbkiYQB8hucKI18CF2NG/7obDyidOYJj56aVLAVqauTFp2Wf6Gw3coY4WZuAokS8uPhucM35oo4Ip+XS5VYwCvVe7iSNqZNgVzntnsipFkEi31F0TKmu9lo/mXEix3p9gjem88JvCAOvGFxorh+1+yPZbK+sIUmwf8DAU+gdb2G1s9Tsiue3aUPiImGY53cxrRWu8OlbJ0GBHNeW/9HrX30Rmx2cV1DkSQpV0VZLES6X8d0q821wqGnF+wPp+QXvN2VDTdQzv74GPnKWKfyDVMlBRIVMZ9Zy4YzOeO5kEDAkXgPKMkTUbfd8f/K97I38+jE9uavVRkyVefjpNkSca89tXCnMMYGormXrkVczZr08Wgny/nJXIS4qapbaoRwVpQWKh8thfVttpkQngktd2152e1iFspfNlnn1PxVJ8EDKvQTKBEXL5hXl6j42XkybXI19za79ppvvViXK/s373IUTtlLeJGZuqUdj1cbtEunNlS0NjDFRMZD6nWdx81tJraJjr7AFKzbuXG57UhUlJ6pR7co3kaCzkpVU899LM0XXoZ702VXy1JvgKIEh8yceQuhGuCVDMT04OeVZMsGk7EPVQpIYLOdMVl08fzrc3096TkFM+wRunonIqDNq/t5pCA/mHiREAOkpSD5ZyFfj1eTY/s5H1vrxJJah26yeHuPRAU4ermSduIx9tcSqioJe/aNK/9HUZTZXDz1eNKw5DUoNCwmeLIa0Tod7Rb+85aGlqTKVyk9EUqhMXBvz4LWn6b4yII2+Ta7wjr+xS3akphBB67TsLQ/BgB" }, { "type": "text", "text": "I'll run the hello.sh script for you." }, { "type": "tooluse", "id": "toolu01ANhWLy3masVW2f6K7dcSTF", "name": "Bash", "input": { "command": "bash /Users/test/code/claudecodeskillresearch/.claude/skills/sayhello/scripts/hello.sh", "description": "Run the hello.sh script" }, "cachecontrol": { "type": "ephemeral" } } ] }, { "role": "user", "content": [ { "tooluseid": "toolu01ANhWLy3masVW2f6K7dcSTF", "type": "toolresult", "content": "Hello, World!", "iserror": false, "cachecontrol": { "type": "ephemeral" } } ] } ] } subagent的 context 很遗憾, subagent 里并不是fork master context, 看起来就像是运行普通的 agnet 一样, 只是把 Skill 的执行放在了 subagent 中 我尝试了以下做法: 1. 不指定 skill 使用的 subagent 2. 在 skill.md 中要求 load master agent 的上下文 3. 只使用 agent 不使用 context fork 现在看来, 这里的 context fork 指的并不是 fork master agent 的 context, 而是指的是 subagent skill + agent 本身的 context, 其实是一个 new 的 context, 有点失望 Claude Code Skill 机制研究总结 核心发现 1. Skill 工具本质 Skill 工具是一个路由器(Router) ,而非执行器。它的职责是: 将用户意图(自然语言或 /command)映射到预定义的能力 触发 Skill 的加载,而非直接执行 通过 <commandname 标签进行状态管理,防止递归调用 2. 执行流程 Skill 调用被拆解为两步: 用户输入 → Skill Router → 注入 Skill 内容 → LLM 执行 1. 标记注入:<commandname/skillname</commandname 2. 内容注入:SKILL.md 的实际指令 这不是一个复杂的编排系统,而是简单的 Prompt 拼接。 3. Skill Folder 的实现 毫无魔法可言。 实现方式仅仅是在 Prompt 中显式声明基础路径: Base directory for this skill: /path/to/skill/folder 然后依赖 LLM 自行推断相对路径。这是一个脆弱且依赖模型理解能力的设计。 4. Context Fork 的真相(最大失望点) 文档描述具有误导性。 | 官方描述 | 实际行为 | | | | | "Fork" 主 Agent 的上下文 | 创建全新的独立上下文 | | Subagent 继承对话历史 | Subagent 仅接收 Skill 指令 | | 类似子进程 fork | 更像是 spawn 一个新进程 | 实测证明: Subagent 无法访问主对话的任何历史 不存在真正的上下文继承 context: fork 的 "fork" 是名义上的,实际是 "new" 最终结论 定性评价 Claude Code Skill 系统是一个工程上极简、能力上有限的实现: | 维度 | 评价 | | | | | 架构复杂度 | 低(本质是 Prompt 路由 + 拼接) | | 扩展性 | 中(支持目录结构、多模型) | | 隔离性 | 弱(依赖 LLM 自律,无真正沙箱) | | 上下文管理 | 差(无真正的 fork,仅 spawn) | | 文档准确性 | 存在误导(context fork 名不副实) | 核心局限 1. 无真正的 Subagent 上下文继承:如果你的 Skill 需要依赖主对话的上下文(如"基于之前讨论的方案执行 X"),当前设计无法满足 2. 路径管理依赖模型理解:Skill Folder 的相对路径解析完全依赖 LLM,存在幻觉风险 3. 状态同步缺失:Subagent 执行结果仅通过文本返回主对话,无结构化状态同步

Original
DTResearch & learningDTAgent extensionDTAgent orchestration
—

专为视频创作者打造的专业分镜工具!只需导入视频或输入文本描述,即可快速生成完整分镜脚本与素材资产。

分镜大师是一款专业的本地分镜工作台应用,为视频创作者和制作团队提供从创意到成片的完整工作流支持。 🎯 核心价值 两种创作模式:视频导入自动分镜 + 文本描述生成分镜 AI 智能解析:自动识别镜头类型、场景设置、动作指令 专业参数控制:支持构图、光线、色调、镜头类型等专业参数 创意意图融合:将创作目标、目标受众、视频基调融入 AI 生成 批量任务处理:解析、生成、合成任务独立执行,互不干扰 本地化部署:数据本地存储,FFmpeg 内置,无需外部依赖

Original
DTContent creationDTData & operations
—

专为视频创作者打造的专业分镜工具!只需导入视频或输入文本描述,即可快速生成完整分镜脚本与素材资产。

C 只需导入视频或输入文本描述,即可快速生成完整分镜脚本与素材资产。 🎯 核心价值 两种创作模式:视频导入自动分镜 + 文本描述生成分镜 AI 智能解析:自动识别镜头类型、场景设置、动作指令 专业参数控制:支持构图、光线、色调、镜头类型等专业参数 创意意图融合:将创作目标、目标受众、视频基调融入 AI 生成 批量任务处理:解析、生成、合成任务独立执行,互不干扰 本地化部署:数据本地存储,FFmpeg 内置,无需外部依赖 亮点 ✨ 功能亮点 📁 项目管理 ✅ 创建/打开/切换项目,SQLite 本地持久化 ✅ 最近项目历史记录 ✅ 项目级元数据管理(创意意图、视频信息) 🎥 视频导入与分析 ✅ 支持主流视频格式导入 ✅ 自动提取视频元数据(时长/分辨率/帧率) ✅ FFprobe 智能视频分析 🖼️ 智能抽帧(四种模式) ✅ 定数模式:提取指定数量的关键帧 ✅ 动态间隔模式:根据场景变化动态调整间隔 ✅ 等时模式:按固定时间间隔提取 ✅ 关键帧检测:基于场景变化智能识别关键帧 ✏️ 分镜编辑 ✅ 镜头字段全量编辑(镜头类型、核心内容、动作指令、场景设置) ✅ 拖拽排序,灵活调整镜头顺序 ✅ 时间线可视化展示 ✅ 多视图模式:网格、列表、时间线 🤖 AI 智能功能 AI 镜头解析 ✅ 分析首尾帧特征,生成结构化镜头描述 ✅ 三种处理策略:覆盖/追加/放弃 ✅ 融合创意意图(创作目标、目标受众、视频基调、关键信息) 文本生成分镜 ✅ 自然语言描述自动拆分为多个镜头 ✅ 智能识别场景转换和镜头切换 ✅ 支持创意意图引导生成 🎨 素材生成 图片生成 ✅ 首帧、尾帧独立生成 ✅ 专业参数支持:构图、光线、色调、镜头类型 ✅ 多次生成保留历史,用户显式绑定 ✅ 支持通义千问、火山引擎 Seedream 视频生成 ✅ 基于镜头描述生成视频片段 ✅ 支持场景描述、动作描述、风格描述 ✅ 镜头运动、特效参数配置 ✅ 支持火山引擎 Seedance ⚙️ 配置管理 ✅ 多 Provider 支持(通义千问、火山引擎) ✅ 多模型配置,文本/图片/视频各自独立 ✅ 应用内可视化配置界面 ✅ 本地渲染与云端模型并存 📊 批量任务与任务管理 ✅ 批量解析、生成、合成任务 ✅ 任务队列管理,支持取消/重试/删除 ✅ 任务历史记录 ✅ 独立任务执行,互不干扰 📤 导出与输出 ✅ 导出分镜 JSON 文件 ✅ FFmpeg 合成最终视频 ✅ 输出目录:output/projects/<ProjectId/images 和 videos markdown 截图或演示视频

Original
DTContent creationDTData & operations
—

FastReadi

books, reading, Speed read PDFs, study, RSVP

DTResearch & learningDTContent / resource
—

LetsPeace

Meditation & Mental Wellness

DTLifestyle & entertainmentDTContent / resource
—

FreeMeditate

Meditation and mental fitness tools built for men.

DTLifestyle & entertainmentDTContent / resource
—

DEV TRENDS / COMMUNITY

Discuss this edition

Sign in with GitHub to share a thought, question, or useful follow-up.

Open discussions ↗