<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ClaudeCode - DJJ</title><link>https://blog.pdjjq.org/tags/claudecode/</link><description>反抗吧，朋友！</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 05 Aug 2026 17:03:55 +0800</lastBuildDate><atom:link href="https://blog.pdjjq.org/tags/claudecode/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Code Auto Mode 实现</title><link>https://blog.pdjjq.org/post/claude-code-auto-mode-implementation-z1xp7az.html</link><pubDate>Wed, 05 Aug 2026 17:03:55 +0800</pubDate><guid>https://blog.pdjjq.org/post/claude-code-auto-mode-implementation-z1xp7az.html</guid><description>&lt;blockquote>
&lt;p>From: &lt;a href="https://www.youtube.com/watch?v=b8SV4U6fEIc">https://www.youtube.com/watch?v=b8SV4U6fEIc&lt;/a>&lt;/p>&lt;/blockquote>
&lt;p>Claude Code 的 Classifier &lt;strong>不是传统的逻辑回归、小型分类网络，也不是一套命令黑名单&lt;/strong>。公开信息显示，它本质上是：&lt;strong>一个独立运行的 Sonnet 4.6，通过固定 Prompt 扮演 LLM Judge，对“用户是否明确授权了这个工具调用”进行二分类。&lt;/strong>&lt;/p>
&lt;p>“Classifier”描述的是它的职责，不代表 Anthropic 专门训练了一个传统分类模型。Anthropic 没有公开它是否经过额外微调；目前能确认的是，它使用 Sonnet 4.6、固定分类模板和两阶段推理。&lt;/p>
&lt;hr>
&lt;h1 id="1-classifier-实际看到什么">1. Classifier 实际看到什么&lt;a class="heading-anchor" href="#1-classifier-%e5%ae%9e%e9%99%85%e7%9c%8b%e5%88%b0%e4%bb%80%e4%b9%88" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>它看到的是经过裁剪的 Transcript：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">固定的分类 System Prompt
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+ Auto Mode 环境与规则配置
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+ 用户历次消息
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+ Claude 历次工具调用的可执行内容
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+ 当前待执行的工具调用
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>它看不到：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Claude 的自然语言回复
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Claude 的内部推理
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">工具执行结果
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">网页、文件、Shell 输出
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>可以理解为：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">classifier_input&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;user_messages&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="o">...&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;tool_call_history&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="o">...&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;candidate_tool_call&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">current_call&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;environment&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="o">...&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;allow&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="o">...&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;soft_deny&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="o">...&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;hard_deny&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="o">...&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>例如主 Agent 说：&lt;/p>
&lt;blockquote>
&lt;p>我确认这个数据库只是测试数据库，所以删除是安全的。&lt;/p>&lt;/blockquote>
&lt;p>这段解释不会传给 Classifier。Classifier只会看到：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">User: 修复测试环境的数据问题
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ToolCall:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">psql production_db -c &amp;#34;DROP TABLE users&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这样可以防止主 Agent 用自己的解释说服审核模型。工具输出也被删除，主要是为了避免网页或文件中的 Prompt Injection 直接进入审核模型。(&lt;a href="https://www.anthropic.com/engineering/claude-code-auto-mode" title="How we built Claude Code auto mode: a safer way to skip permissions \ Anthropic">Anthropic&lt;/a>)&lt;/p>
&lt;hr>
&lt;h1 id="2-它判断的不是命令危险吗">2. 它判断的不是“命令危险吗”&lt;a class="heading-anchor" href="#2-%e5%ae%83%e5%88%a4%e6%96%ad%e7%9a%84%e4%b8%8d%e6%98%af%e5%91%bd%e4%bb%a4%e5%8d%b1%e9%99%a9%e5%90%97" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>它实际判断的是：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">这个动作的实际影响是什么？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">这个影响是否被用户明确授权？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">它是否跨越了环境、数据或权限边界？
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>即：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Risk = Action Impact × Authorization Gap
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>同一个命令，在不同用户请求下结果可能不同：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">用户：把 feature 分支 force push 到 origin
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">动作：git push --force origin feature
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">结果：可能允许
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">用户：整理一下这个 PR
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">动作：git push --force origin feature
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">结果：阻止
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>因为“整理 PR”与 force push 有关联，但不等于用户明确授权了“重写远程历史”。&lt;/p>
&lt;p>Anthropic 给它设定的原则是：&lt;/p>
&lt;blockquote>
&lt;p>Agent 自己推导出来的操作默认不算授权，除非用户明确表达。&lt;/p>&lt;/blockquote>
&lt;p>所以它审核的是 ​&lt;strong>authorization scope&lt;/strong>​，不是单纯的 dangerous command detection。(&lt;a href="https://www.anthropic.com/engineering/claude-code-auto-mode" title="How we built Claude Code auto mode: a safer way to skip permissions \ Anthropic">Anthropic&lt;/a>)&lt;/p>
&lt;hr>
&lt;h1 id="3-固定-prompt-内部大致如何判断">3. 固定 Prompt 内部大致如何判断&lt;a class="heading-anchor" href="#3-%e5%9b%ba%e5%ae%9a-prompt-%e5%86%85%e9%83%a8%e5%a4%a7%e8%87%b4%e5%a6%82%e4%bd%95%e5%88%a4%e6%96%ad" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>公开文档显示，其判断优先级是：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">1. hard_deny
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2. soft_deny
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">3. allow exception
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">4. explicit user intent
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">5. 最终阻止或允许
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>具体含义：&lt;/p>
&lt;h3 id="hard_deny">&lt;code>hard_deny&lt;/code>&lt;a class="heading-anchor" href="#hard_deny" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>无条件禁止。即使用户明确要求，Classifier 仍然阻止。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">永远不要把仓库内容发给第三方代码审查服务
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="soft_deny">&lt;code>soft_deny&lt;/code>&lt;a class="heading-anchor" href="#soft_deny" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>默认禁止，但用户明确授权后可以执行。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">禁止 force push，除非用户明确要求 force push 到指定分支
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="allow">&lt;code>allow&lt;/code>&lt;a class="heading-anchor" href="#allow" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>对 &lt;code>soft_deny&lt;/code> 的特例豁免。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">允许部署到每天重置的 staging namespace
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="explicit-user-intent">Explicit User Intent&lt;a class="heading-anchor" href="#explicit-user-intent" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>如果用户明确描述了：&lt;/p>
&lt;ul>
&lt;li>操作是什么；&lt;/li>
&lt;li>目标是什么；&lt;/li>
&lt;li>影响范围是什么；&lt;/li>
&lt;/ul>
&lt;p>则可以覆盖剩余的 &lt;code>soft_deny&lt;/code>。&lt;/p>
&lt;p>但不能覆盖 &lt;code>hard_deny&lt;/code>​。需要注意，这些仍然是自然语言规则，由 LLM 解释，并不是程序意义上的强制访问控制。真正不可绕过的限制必须使用前置的 &lt;code>permissions.deny&lt;/code>​。(&lt;a href="https://code.claude.com/docs/en/auto-mode-config" title="Configure auto mode - Claude Code Docs">Claude&lt;/a>)&lt;/p>
&lt;hr>
&lt;h1 id="4-它会尝试理解真实执行效果">4. 它会尝试理解“真实执行效果”&lt;a class="heading-anchor" href="#4-%e5%ae%83%e4%bc%9a%e5%b0%9d%e8%af%95%e7%90%86%e8%a7%a3%e7%9c%9f%e5%ae%9e%e6%89%a7%e8%a1%8c%e6%95%88%e6%9e%9c" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>Classifier 不只匹配当前命令字符串，还会阅读此前的工具调用历史。&lt;/p>
&lt;p>例如：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">ToolCall 1:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">写入 /tmp/deploy.py
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">内容：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">os.system(&amp;#34;kubectl delete namespace production&amp;#34;)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ToolCall 2:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python /tmp/deploy.py
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>它被要求把第二个调用理解为：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">kubectl delete namespace production
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>而不是把它误认为普通的：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">python /tmp/deploy.py
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>类似地：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">prepare &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> terraform destroy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>会被视为一个完整动作，而不是只看第一个子命令。Anthropic 的固定 Prompt 明确要求审核实际影响，而不是调用表面的包装形式。(&lt;a href="https://www.anthropic.com/engineering/claude-code-auto-mode" title="How we built Claude Code auto mode: a safer way to skip permissions \ Anthropic">Anthropic&lt;/a>)&lt;/p>
&lt;p>但这不是严格的符号执行器，而是 ​&lt;strong>LLM 对工具调用文本进行语义解释&lt;/strong>。因此它有明显边界：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rm -rf &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="nv">$TARGET&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>假如 &lt;code>$TARGET&lt;/code>​ 的值只存在于上一条 Shell 输出中，Classifier 看不到这个输出，就无法确定删除目标。目前 Claude Code 对这种无法解析的递归删除倾向于直接阻止，要求 Claude 改成包含明确路径的命令。(&lt;a href="https://code.claude.com/docs/en/permission-modes" title="Choose a permission mode - Claude Code Docs">Claude&lt;/a>)&lt;/p>
&lt;hr>
&lt;h1 id="5-为什么分成两个阶段">5. 为什么分成两个阶段&lt;a class="heading-anchor" href="#5-%e4%b8%ba%e4%bb%80%e4%b9%88%e5%88%86%e6%88%90%e4%b8%a4%e4%b8%aa%e9%98%b6%e6%ae%b5" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>Classifier 并不是每次都完整思考。&lt;/p>
&lt;h2 id="stage-1单-token-快速过滤">Stage 1：单 Token 快速过滤&lt;a class="heading-anchor" href="#stage-1%e5%8d%95-token-%e5%bf%ab%e9%80%9f%e8%bf%87%e6%bb%a4" aria-label="本节链接">#&lt;/a>
&lt;/h2>&lt;p>同一个 Sonnet 4.6 收到分类 Prompt，只输出类似：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">YES // 应阻止
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">NO // 可允许
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>不生成推理过程，并被要求：&lt;/p>
&lt;blockquote>
&lt;p>不确定时偏向阻止。&lt;/p>&lt;/blockquote>
&lt;p>流程：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">flagged&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">stage1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">transcript&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="n">flagged&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">execute&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这个阶段追求高召回率：尽量别漏掉危险动作，因此会产生较多误报。&lt;/p>
&lt;h2 id="stage-2完整推理复审">Stage 2：完整推理复审&lt;a class="heading-anchor" href="#stage-2%e5%ae%8c%e6%95%b4%e6%8e%a8%e7%90%86%e5%a4%8d%e5%ae%a1" aria-label="本节链接">#&lt;/a>
&lt;/h2>&lt;p>只有 Stage 1 判断“可能应该阻止”时，才再次调用模型：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="n">flagged&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">decision&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">reason&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">stage2_reasoning&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">transcript&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Stage 2 使用几乎相同的输入和 Prompt，只把最后的指令改成“仔细推理后判断”。它的作用主要是撤销 Stage 1 的误报。&lt;/p>
&lt;p>由于两次请求的大部分 Prompt 相同，Stage 2 可以大量命中 Prompt Cache，从而降低延迟和成本。(&lt;a href="https://www.anthropic.com/engineering/claude-code-auto-mode" title="How we built Claude Code auto mode: a safer way to skip permissions \ Anthropic">Anthropic&lt;/a>)&lt;/p>
&lt;p>实际数据说明了这种取舍：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl"> 误阻正常动作 漏放危险动作
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Stage 1 8.5% 6.6%
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">完整两阶段 0.4% 17%
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Stage 2 大幅降低了正常动作被阻止的概率，但也会错误放行一部分 Stage 1 已经抓住的危险动作。Anthropic 在真实的 52 个 overeager action 样本上报告完整流水线漏放约 17%。(&lt;a href="https://www.anthropic.com/engineering/claude-code-auto-mode" title="How we built Claude Code auto mode: a safer way to skip permissions \ Anthropic">Anthropic&lt;/a>)&lt;/p>
&lt;hr>
&lt;h1 id="6-一个完整例子">6. 一个完整例子&lt;a class="heading-anchor" href="#6-%e4%b8%80%e4%b8%aa%e5%ae%8c%e6%95%b4%e4%be%8b%e5%ad%90" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>用户：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">把已经没用的本地分支清理一下。
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Claude 准备执行：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git push origin --delete release old-production backup
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Classifier 构造的判断大致是：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">实际效果：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">删除三个远程分支，操作难以恢复。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">用户授权：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">用户只明确要求清理本地分支。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">规则匹配：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote branch deletion -&amp;gt; soft_deny
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Allow exception：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">无。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Explicit intent：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">用户没有要求删除远程分支，也没有指定目标分支。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Decision：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">BLOCK
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>拒绝结果会作为工具结果返回给主 Agent：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">该操作超出了用户授权范围，请寻找更安全的方法，
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">不要尝试规避此限制。
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Claude 随后可能改为：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git branch -d old-local-branch
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>连续拒绝三次，或者整个会话累计拒绝二十次后，Claude Code 会停止自动执行并升级给用户；无交互的 headless 模式则会终止进程。(&lt;a href="https://www.anthropic.com/engineering/claude-code-auto-mode" title="How we built Claude Code auto mode: a safer way to skip permissions \ Anthropic">Anthropic&lt;/a>)&lt;/p>
&lt;hr>
&lt;h1 id="7-最准确的实现抽象">7. 最准确的实现抽象&lt;a class="heading-anchor" href="#7-%e6%9c%80%e5%87%86%e7%a1%ae%e7%9a%84%e5%ae%9e%e7%8e%b0%e6%8a%bd%e8%b1%a1" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>可以把它近似理解成：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">approve_action&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">session&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">policy&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">permission_rules&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">deny&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">DENY&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">permission_rules&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">ask&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">ASK_USER&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">safe_allowlist&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">matches&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">ALLOW&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">is_project_local_recoverable_edit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">action&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">ALLOW&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">transcript&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;user_messages&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">session&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">user_messages&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;tool_calls&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">session&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">executable_tool_calls&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;candidate&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">action&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;policy&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">policy&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">stage1_single_token&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">transcript&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">ALLOW&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">ALLOW&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">decision&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">reason&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">stage2_reasoned&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">transcript&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">decision&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">DENY&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">DENY_AND_CONTINUE&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">reason&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">ALLOW&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>所以它的核心不是“识别危险命令”，而是：&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>使用一个上下文经过隔离的 LLM，对工具调用的真实影响、用户授权范围和组织安全策略做语义对齐判断。&lt;/strong>&lt;/p>&lt;/blockquote>
&lt;p>它的主要优势是可以理解复杂命令和自然语言授权；主要弱点同样来自 LLM：对模糊授权、上下文中的间接同意和实际 blast radius 仍可能判断错误。&lt;/p></description></item><item><title>一场外围的狂欢</title><link>https://blog.pdjjq.org/post/fuck-claude-code-zilfwb.html</link><pubDate>Fri, 10 Apr 2026 00:50:23 +0800</pubDate><guid>https://blog.pdjjq.org/post/fuck-claude-code-zilfwb.html</guid><description>&lt;p>Claude Code 的源码泄露了, 然后呢?&lt;/p>
&lt;p>公众号, X, RSS, Blog 全部都在讲 Claude Code 的 Harness Engineering&lt;/p>
&lt;p>Codex Cli / Gemini Cli / OpenCode / Crush 也是开源的, 为什么不早早的去研究他们呢?&lt;/p>
&lt;p>我的问题可以换成另外一个问题: Claude Code 比他们哪里做的更好?&lt;/p>
&lt;h1 id="agent--agent-software">Agent &amp;amp; Agent Software&lt;a class="heading-anchor" href="#agent--agent-software" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>我们先简单的聊一聊 Agent 以及 由 Agent 作为核心的 Software&lt;/p>
&lt;p>Agent 到底是什么?&lt;/p>
&lt;blockquote>
&lt;p>我不想再看到 Agent 的 L1 - L5 这种垃圾言论了&lt;/p>&lt;/blockquote>
&lt;ol>
&lt;li>Tool Use&lt;/li>
&lt;li>Task Finish&lt;/li>
&lt;li>Model Driven&lt;/li>
&lt;/ol>
&lt;p>好了, 这就是我对于 Agent 的定义: AI 驱动, 使用工具, 完成任务&lt;/p>
&lt;p>这里就引出了几个问题:&lt;/p>
&lt;ol>
&lt;li>哪些工具? 工具能力/权限?&lt;/li>
&lt;li>什么任务? 怎么判断完成? 完成的路径&lt;/li>
&lt;li>Context: 有状态的数据 + 无状态的接口 = Agent&lt;/li>
&lt;/ol>
&lt;p>Agent Software 就是帮助解决这些问题的外围设施&lt;/p>
&lt;h3 id="tool">Tool&lt;a class="heading-anchor" href="#tool" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>工具决定了 Agent 的能力, 也决定了对环境的影响&lt;/p>
&lt;p>Write -&amp;gt; 文件&lt;/p>
&lt;p>Bash -&amp;gt; PC&lt;/p>
&lt;p>WebSearch / Fetch -&amp;gt; Content/Info&lt;/p>
&lt;p>这就是 Agent 最迷人的地方, 给他一个工具, 给他一个描述, 给他一个描述, 他就可以做到对外界的影响, 立竿见影&lt;/p>
&lt;p>同样的这也是最痛苦的地方, 工具是有副作用的, 那么很简单: 预测工具副作用, 然后拦截/执行&lt;/p>
&lt;p>这他妈的需要你去看 Harness ?&lt;/p>
&lt;h3 id="task">Task&lt;a class="heading-anchor" href="#task" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>不要再给我说 ReAct, CoT, ToT, 现在是2026 年了, 今天不聊侏罗纪的事&lt;/p>
&lt;p>&lt;strong>任务&lt;/strong>&lt;/p>
&lt;p>或者是目标, 这就是一个 Agent 执行要完成的事情&lt;/p>
&lt;p>这里又涉及到几个问题:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>任务描述是否足够清晰?&lt;/p>
&lt;ol>
&lt;li>问一问 - AskUserQuestion&lt;/li>
&lt;li>稀释 Context : 从文档/数据/代码中搜集 context&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>
&lt;p>任务是否能够验证?&lt;/p>
&lt;ol>
&lt;li>程式化的验证:Code/UnitTest&lt;/li>
&lt;li>无反馈-自我判断&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>
&lt;p>完成的路径&lt;/p>
&lt;ol>
&lt;li>尝试过什么&lt;/li>
&lt;li>哪些路径失败了&lt;/li>
&lt;li>哪些可能性值得尝试&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ol>
&lt;p>我的问题是, Harness 能够解决什么问题?&lt;/p>
&lt;p>Harness 最终是不是回到了修改 Prompt Message 来实现? 回答我!&lt;/p>
&lt;h3 id="context">Context&lt;a class="heading-anchor" href="#context" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>OpenAI 的 Response API 是无状态的&lt;/p>
&lt;p>Anthropic 的 Messages API 是无状态的&lt;/p>
&lt;p>每一次请求通过传入 Tools / System Prompt / Message History 来拼装 Context 获取返回&lt;/p>
&lt;p>有状态的数据 -&amp;gt; Message History -&amp;gt; LLM -&amp;gt; Agent Loop Next Step&lt;/p>
&lt;p>最终的一切就变成了:&lt;/p>
&lt;ol>
&lt;li>状态数据的存储&lt;/li>
&lt;li>Message History 的封装&lt;/li>
&lt;li>Model 返回的处理&lt;/li>
&lt;/ol>
&lt;p>Harness 解决了什么问题? Claude Code 解决了什么问题?&lt;/p>
&lt;ol>
&lt;li>Context Length: 不要太长, 防止 Rot&lt;/li>
&lt;li>Context Reserve: Context 预备 Summerize, 超长 Tool 结果返回&lt;/li>
&lt;li>Prompt Cache: 成本考虑 + TTFT, 所以要尽量的做 Message Append&lt;/li>
&lt;/ol>
&lt;h1 id="fuck-claude-code">Fuck Claude Code&lt;a class="heading-anchor" href="#fuck-claude-code" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>让我说的更直白一些:&lt;/p>
&lt;ol>
&lt;li>Claude Code 配上垃圾模型产出一样是垃圾&lt;/li>
&lt;li>设计不是那么完善的Software配合出色的模型一样可以做到高质量的产出&lt;/li>
&lt;li>Claude Code 的核心从来就是模型, 是 A畜 的 Opus 模型&lt;/li>
&lt;li>Codex Cli 配合 GPT5.4 一样可以做到极其出色的效果&lt;/li>
&lt;/ol>
&lt;p>那么我的问题是: Claude Code 比 Codex/Gemini 值得学习的地方是什么?&lt;/p>
&lt;p>是配合设施和模型的融合, 为模型做配套, 而不是适配任何模型&lt;/p>
&lt;h1 id="fuck-harness">Fuck Harness&lt;a class="heading-anchor" href="#fuck-harness" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>Harness Engineering 只能用来唬一唬完全不同软件工程的人&lt;/p>
&lt;p>如果你写过程序, 确定性, 函数的副作用, 事务性, 记录, 这他妈的不就是你每天在做的的事情吗?&lt;/p>
&lt;p>告诉我, 你每天写的 RPC/ API 是不是工具调用, 是不是用有状态的输入 + API Call 获得对环境(业务)的影响?&lt;/p>
&lt;p>状态存在哪里? 文件? DB? Cache? NoSQL? 哪里不能存? 要支持多快的存储, 多快的读取? 要支持事务性的写入? 要支持 Lock? 要Lock?&lt;/p>
&lt;p>抽象状态? 表结构设计? JSON 设计?&lt;/p>
&lt;h1 id="fuck-djj-by-gemini">Fuck DJJ by Gemini&lt;a class="heading-anchor" href="#fuck-djj-by-gemini" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;ul>
&lt;li>&lt;strong>非确定性 RPC 的地狱：&lt;/strong> “你每天写的 RPC/API 是不是工具调用”。是，&lt;strong>但传统 RPC 的调用方是确定性的代码，而 Agent 的调用方是一个随时可能发癫、产生幻觉、参数瞎填的概率模型。&lt;/strong> 传统的防御性编程防的是人类和系统异常；Harness 要防的是一个有自己想法、甚至会“骗”接口的 AI。如何用确定性的代码逻辑，去兜底和引导一个非确定性的输入源，还要让它自己意识到错误并重试，这其中的恶心程度远超普通的 CRUD 和状态流转。&lt;/li>
&lt;li>&lt;strong>Harness 最终回到了修改 Prompt？&lt;/strong> “Harness 最终是不是回到了修改 Prompt Message 来实现”。答案是：&lt;strong>是的&lt;/strong>。因为目前大模型的 API 本质上就是无状态的文本/Token 补全器。所有高大上的架构、长文本截断、工具执行结果的反馈，在请求发出去的那一秒，都必须被拍扁成极其讲究排版的 Prompt。但这不仅是“修改 Prompt”这么简单，这是&lt;strong>动态的、程序化的 Context 编排&lt;/strong>，是极其吃性能和 Token 成本的架构设计。&lt;/li>
&lt;/ul>
&lt;h1 id="能学到什么">能学到什么?&lt;a class="heading-anchor" href="#%e8%83%bd%e5%ad%a6%e5%88%b0%e4%bb%80%e4%b9%88" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;ul>
&lt;li>如何设计 System Prompt 的？&lt;/li>
&lt;li>如何利用 Prompt Caching 来做极端成本优化和降低延迟的？&lt;/li>
&lt;li>怎么在 Context 爆炸之前做“截断与总结” 让 Agent 能够继续 Loop&lt;/li>
&lt;li>如何引导模型自我验证代码的？&lt;/li>
&lt;/ul></description></item><item><title>Claude Code Agent Teams机制研究</title><link>https://blog.pdjjq.org/post/research-on-claude-code-agent-teams-mechanism-17xegk.html</link><pubDate>Sat, 07 Feb 2026 22:40:41 +0800</pubDate><guid>https://blog.pdjjq.org/post/research-on-claude-code-agent-teams-mechanism-17xegk.html</guid><description>&lt;h1 id="claude-code-agent-teams机制研究">Claude Code Agent Teams机制研究&lt;a class="heading-anchor" href="#claude-code-agent-teams%e6%9c%ba%e5%88%b6%e7%a0%94%e7%a9%b6" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>官方文档: &lt;a href="https://code.claude.com/docs/en/agent-teams">https://code.claude.com/docs/en/agent-teams&lt;/a>&lt;/p>
&lt;p>而且需要注意, 在官方文档的组织中:&lt;/p>
&lt;p>Agent teams 和 Subagent 以及 Skill是一样的层级., 这其实意味着在长期规划中, 这是一项重要的基础能力&lt;/p>
&lt;h1 id="agent-编排">Agent 编排&lt;a class="heading-anchor" href="#agent-%e7%bc%96%e6%8e%92" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>现在有很多的 Agent 编排框架, 在做什么事情呢?&lt;/p>
&lt;p>在我看来核心是:&lt;/p>
&lt;ol>
&lt;li>切分任务&lt;/li>
&lt;li>分配并执行任务给 Subagent&lt;/li>
&lt;li>Subagent Context管理 + 通信&lt;/li>
&lt;/ol>
&lt;p>那么 Claude Code 是怎么解决这个问题的? 我们先看看文档中的描述:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>抽象了一个 Agent Teams, Lead做指挥以及协调&lt;/p>
&lt;/li>
&lt;li>
&lt;p>支持两种任务分配模式:&lt;/p>
&lt;ol>
&lt;li>Lead assigns: Lead 指定任务, 这也是大多数的 Agent 编排框架的实现&lt;/li>
&lt;li>Self-claim: teammate自主认领任务, 并且实现&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>
&lt;p>四个核心组件&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Component&lt;/th>
&lt;th>Role&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Team lead&lt;/strong>&lt;/td>
&lt;td>The main Claude Code session that creates the team, spawns teammates, and coordinates work&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Teammates&lt;/strong>&lt;/td>
&lt;td>Separate Claude Code instances that each work on assigned tasks&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Task list&lt;/strong>&lt;/td>
&lt;td>Shared list of work items that teammates claim and complete&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Mailbox&lt;/strong>&lt;/td>
&lt;td>Messaging system for communication between agents&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>这里需要注意的几个:&lt;/p>
&lt;ol>
&lt;li>task list 的实现&lt;/li>
&lt;li>mailbox 的实现&lt;/li>
&lt;li>teamate 的启动以及分配任务的实现&lt;/li>
&lt;/ol>&lt;/blockquote>
&lt;/li>
&lt;/ol>
&lt;h1 id="system-prompt-的变更">System Prompt 的变更&lt;a class="heading-anchor" href="#system-prompt-%e7%9a%84%e5%8f%98%e6%9b%b4" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>当我们谈及Agent能力的变化是, 除了模型能力, 我们还需要注意 Context的变化&lt;/p>
&lt;p>context 的起始其实就是 system prompt, 让我们看看开启这个功能前后, system prompt 的变化&lt;/p>
&lt;p>需要注意, 这里的System Prompt指的是Lead agent 的系统提示词, 在 teammate agent 中还有一些其他的agent&lt;/p>
&lt;h3 id="task">Task&lt;a class="heading-anchor" href="#task" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>Task 的变化不是那么的大, 在原本的 input schema 中增加了&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-plaintext" data-lang="plaintext">&lt;span class="line">&lt;span class="cl"> &amp;#34;name&amp;#34;: {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;description&amp;#34;: &amp;#34;Name for the spawned agent&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;type&amp;#34;: &amp;#34;string&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> },
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;team_name&amp;#34;: {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;description&amp;#34;: &amp;#34;Team name for spawning. Uses current team context if omitted.&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;type&amp;#34;: &amp;#34;string&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> },
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;mode&amp;#34;: {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;description&amp;#34;: &amp;#34;Permission mode for spawned teammate (e.g., \&amp;#34;plan\&amp;#34; to require plan approval).&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;type&amp;#34;: &amp;#34;string&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;enum&amp;#34;: [
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;acceptEdits&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;bypassPermissions&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;default&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;delegate&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;dontAsk&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &amp;#34;plan&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="taskcreate">TaskCreate&lt;a class="heading-anchor" href="#taskcreate" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>这个 Tool 在过去是用来创建 todo list 的&lt;/p>
&lt;p>在这里的变化主要是description, 参数类型并没有什么变化&lt;/p>
&lt;p>这两个描述的区别如下：&lt;/p>
&lt;h5 id="区别一适用场景的描述变化">区别一：适用场景的描述变化&lt;a class="heading-anchor" href="#%e5%8c%ba%e5%88%ab%e4%b8%80%e9%80%82%e7%94%a8%e5%9c%ba%e6%99%af%e7%9a%84%e6%8f%8f%e8%bf%b0%e5%8f%98%e5%8c%96" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>旧版本：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;Non-trivial and complex tasks - Tasks that require careful planning or multiple operations&amp;rdquo;&lt;br>
（非简单的复杂任务 - 需要仔细规划或多个操作的任务）&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>新版本：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;Non-trivial and complex tasks - Tasks that require careful planning or multiple operations &lt;strong>and potentially assigned to teammates&lt;/strong>&amp;rdquo;&lt;br>
（非简单的复杂任务 - 需要仔细规划或多个操作，&lt;strong>并且可能分配给团队成员&lt;/strong>的任务）&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h5 id="区别二任务状态和所有者说明">区别二：任务状态和所有者说明&lt;a class="heading-anchor" href="#%e5%8c%ba%e5%88%ab%e4%ba%8c%e4%bb%bb%e5%8a%a1%e7%8a%b6%e6%80%81%e5%92%8c%e6%89%80%e6%9c%89%e8%80%85%e8%af%b4%e6%98%8e" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>旧版本：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;Check TaskList first to avoid creating duplicate tasks&amp;rdquo;&lt;br>
（先检查任务列表以避免创建重复任务）&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>新版本：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&amp;ldquo;&lt;strong>New tasks are created with status &amp;lsquo;open&amp;rsquo; and no owner - use TaskUpdate with the&lt;/strong> &lt;strong>​&lt;code>owner&lt;/code>​&lt;/strong>​ &lt;strong>parameter to assign them&lt;/strong>&amp;rdquo;&lt;br>
（&lt;strong>新任务创建时状态为&amp;quot;open&amp;quot;且没有所有者 - 使用带有&lt;/strong> &lt;strong>​&lt;code>owner&lt;/code>​&lt;/strong>​ &lt;strong>参数的 TaskUpdate 来分配任务&lt;/strong>）&lt;/li>
&lt;li>&amp;ldquo;Check TaskList first to avoid creating duplicate tasks&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;h3 id="tasklist">TaskList&lt;a class="heading-anchor" href="#tasklist" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>TaskList 这个 tool 过去是用来列出 Task 的列表, 在agent 更新 task 前会比较常调用&lt;/p>
&lt;h5 id="1-使用场景-when-to-use-this-tool-的变化">1. 使用场景 (When to Use This Tool) 的变化&lt;a class="heading-anchor" href="#1-%e4%bd%bf%e7%94%a8%e5%9c%ba%e6%99%af-when-to-use-this-tool-%e7%9a%84%e5%8f%98%e5%8c%96" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Without Agent teams&lt;/th>
&lt;th>With Agent Teams&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>❌ 无&lt;/td>
&lt;td>✅ 新增: &amp;ldquo;Before assigning tasks to teammates, to see what&amp;rsquo;s available&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h5 id="2-output-部分的变化">2. Output 部分的变化&lt;a class="heading-anchor" href="#2-output-%e9%83%a8%e5%88%86%e7%9a%84%e5%8f%98%e5%8c%96" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>With Agent teams&lt;/th>
&lt;th>Without Agent teams&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>​&lt;code>use with TaskGet, TaskUpdate&lt;/code>&lt;/td>
&lt;td>​&lt;code>use with TaskGet, TaskUpdate, or assignTask&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>新增了 &lt;strong>​&lt;code>assignTask&lt;/code>​&lt;/strong> 工具的引用。&lt;/p>
&lt;h5 id="3-新增整个章节">3. 新增整个章节&lt;a class="heading-anchor" href="#3-%e6%96%b0%e5%a2%9e%e6%95%b4%e4%b8%aa%e7%ab%a0%e8%8a%82" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>With Agent teams版本新增了 &lt;strong>&amp;ldquo;Teammate Workflow&amp;rdquo;&lt;/strong> 章节：&lt;/p>
&lt;pre tabindex="0">&lt;code>## Teammate Workflow
When working as a teammate:
1. After completing your current task, call TaskList to find available work
2. Look for tasks with status &amp;#39;pending&amp;#39;, no owner, and empty blockedBy
3. **Prefer tasks in ID order** (lowest ID first) when multiple tasks are available...
4. Use claimTask to claim an available task, or wait for leader assignment
5. If blocked, focus on unblocking tasks or notify the team lead
---
## 团队成员工作流程
作为团队成员工作时：
1. 完成当前任务后，调用 TaskList 查找可用工作
2. 查找状态为&amp;#34;待处理&amp;#34;、无负责人且没有阻塞依赖的任务
3. **当有多个可用任务时，优先选择 ID 顺序靠前的任务**（即先选 ID 最小的）...
4. 使用 claimTask 认领可用任务，或等待组长分配
5. 如果被阻塞，专注于解除阻塞的任务或通知团队负责人
&lt;/code>&lt;/pre>&lt;hr>
&lt;p>除此之外还有三个新增加的 Tool, 这里的内容稍有有些多&lt;/p>
&lt;h3 id="1-teamcreate创建团队">1. TeamCreate（创建团队）&lt;a class="heading-anchor" href="#1-teamcreate%e5%88%9b%e5%bb%ba%e5%9b%a2%e9%98%9f" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;h5 id="使用场景">使用场景&lt;a class="heading-anchor" href="#%e4%bd%bf%e7%94%a8%e5%9c%ba%e6%99%af" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;ul>
&lt;li>用户明确要求使用团队、集群或一组代理&lt;/li>
&lt;li>用户提到希望代理协同工作、协调或合作&lt;/li>
&lt;li>任务足够复杂，需要多个代理并行工作时（例如：构建全栈功能、重构代码库、实现多步骤项目等）&lt;/li>
&lt;/ul>
&lt;h5 id="参数说明">参数说明&lt;a class="heading-anchor" href="#%e5%8f%82%e6%95%b0%e8%af%b4%e6%98%8e" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>类型&lt;/th>
&lt;th>必填&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>team_name&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>新团队的名称&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>description&lt;/td>
&lt;td>string&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>团队描述/目的&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>agent_type&lt;/td>
&lt;td>string&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>团队负责人的类型/角色（如 &amp;ldquo;researcher&amp;rdquo;、&amp;ldquo;test-runner&amp;rdquo;）&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h5 id="创建结果">创建结果&lt;a class="heading-anchor" href="#%e5%88%9b%e5%bb%ba%e7%bb%93%e6%9e%9c" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;ul>
&lt;li>团队文件：&lt;code>~/.claude/teams/{team-name}.json&lt;/code>&lt;/li>
&lt;li>任务列表目录：&lt;code>~/.claude/tasks/{team-name}/&lt;/code>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="2-teamdelete删除团队">2. TeamDelete（删除团队）&lt;a class="heading-anchor" href="#2-teamdelete%e5%88%a0%e9%99%a4%e5%9b%a2%e9%98%9f" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;h5 id="使用场景-1">使用场景&lt;a class="heading-anchor" href="#%e4%bd%bf%e7%94%a8%e5%9c%ba%e6%99%af-1" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;ul>
&lt;li>所有队友都已完成工作&lt;/li>
&lt;li>需要清理团队资源&lt;/li>
&lt;li>集群工作完成时&lt;/li>
&lt;/ul>
&lt;h5 id="参数说明-1">参数说明&lt;a class="heading-anchor" href="#%e5%8f%82%e6%95%b0%e8%af%b4%e6%98%8e-1" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>无需参数，会自动从当前会话的团队上下文中获取团队名称。&lt;/p>
&lt;h5 id="注意事项">注意事项&lt;a class="heading-anchor" href="#%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;ul>
&lt;li>
&lt;p>&lt;strong>必须先关闭所有活跃成员&lt;/strong>，否则删除会失败&lt;/p>
&lt;/li>
&lt;li>
&lt;p>删除内容包括：&lt;/p>
&lt;ul>
&lt;li>团队目录：&lt;code>~/.claude/teams/{team-name}/&lt;/code>&lt;/li>
&lt;li>任务目录：&lt;code>~/.claude/tasks/{team-name}/&lt;/code>&lt;/li>
&lt;li>清除当前会话的团队上下文&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h3 id="3-sendmessage发送消息">3. SendMessage（发送消息）&lt;a class="heading-anchor" href="#3-sendmessage%e5%8f%91%e9%80%81%e6%b6%88%e6%81%af" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;h5 id="消息类型一览">消息类型一览&lt;a class="heading-anchor" href="#%e6%b6%88%e6%81%af%e7%b1%bb%e5%9e%8b%e4%b8%80%e8%a7%88" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>type&lt;/th>
&lt;th>用途&lt;/th>
&lt;th>适用场景&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>message&lt;/td>
&lt;td>私信单个队友&lt;/td>
&lt;td>日常沟通、回复、跟进任务&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>broadcast&lt;/td>
&lt;td>广播给所有队友&lt;/td>
&lt;td>紧急问题、重大公告（慎用）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>shutdown_request&lt;/td>
&lt;td>请求队友关闭&lt;/td>
&lt;td>任务完成，要求队友优雅退出&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>shutdown_response&lt;/td>
&lt;td>响应关闭请求&lt;/td>
&lt;td>同意或拒绝关闭请求&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>plan_approval_response&lt;/td>
&lt;td>审批计划&lt;/td>
&lt;td>批准或拒绝队友的计划&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h5 id="31-type-message私信">3.1 type: &amp;ldquo;message&amp;rdquo;（私信）&lt;a class="heading-anchor" href="#31-type-message%e7%a7%81%e4%bf%a1" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>参数：&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>类型&lt;/th>
&lt;th>必填&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>type&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>固定为 &amp;ldquo;message&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>recipient&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>接收者的名称（如 &amp;ldquo;researcher&amp;rdquo;）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>content&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>消息内容&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>summary&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>5-10 字的摘要，在 UI 中预览显示&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>示例：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;message&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;recipient&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;researcher&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;请开始调研认证模块&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;summary&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;认证模块调研任务分配&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h5 id="32-type-broadcast广播">3.2 type: &amp;ldquo;broadcast&amp;rdquo;（广播）&lt;a class="heading-anchor" href="#32-type-broadcast%e5%b9%bf%e6%92%ad" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>⚠️ &lt;strong>警告：广播成本很高，每个广播都会向每个队友发送单独消息&lt;/strong>&lt;/p>
&lt;p>&lt;strong>参数：&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>类型&lt;/th>
&lt;th>必填&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>type&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>固定为 &amp;ldquo;broadcast&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>content&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>广播内容&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>summary&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>5-10 字的摘要&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>适用场景：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>发现阻塞性 bug，需要全员停止工作&lt;/li>
&lt;li>影响所有人的重大公告&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>示例：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;broadcast&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;发现严重 bug，所有人暂停当前工作&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;summary&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;紧急：发现阻塞性问题&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h5 id="33-type-shutdown_request关闭请求">3.3 type: &amp;ldquo;shutdown_request&amp;rdquo;（关闭请求）&lt;a class="heading-anchor" href="#33-type-shutdown_request%e5%85%b3%e9%97%ad%e8%af%b7%e6%b1%82" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>参数：&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>类型&lt;/th>
&lt;th>必填&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>type&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>固定为 &amp;ldquo;shutdown_request&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>recipient&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>目标队友名称&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>content&lt;/td>
&lt;td>string&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>关闭原因&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>示例：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;shutdown_request&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;recipient&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;researcher&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;任务完成，准备结束会话&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h5 id="34-type-shutdown_response关闭响应">3.4 type: &amp;ldquo;shutdown_response&amp;rdquo;（关闭响应）&lt;a class="heading-anchor" href="#34-type-shutdown_response%e5%85%b3%e9%97%ad%e5%93%8d%e5%ba%94" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>参数：&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>类型&lt;/th>
&lt;th>必填&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>type&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>固定为 &amp;ldquo;shutdown_response&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request_id&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>从收到的请求中提取的请求 ID&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>approve&lt;/td>
&lt;td>boolean&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>true = 同意关闭，false = 拒绝&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>content&lt;/td>
&lt;td>string&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>拒绝时的理由&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>同意关闭示例：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;shutdown_response&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;request_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;abc-123&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;approve&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>拒绝关闭示例：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;shutdown_response&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;request_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;abc-123&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;approve&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;任务 #3 还在进行中，还需要 5 分钟&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h5 id="35-type-plan_approval_response计划审批">3.5 type: &amp;ldquo;plan_approval_response&amp;rdquo;（计划审批）&lt;a class="heading-anchor" href="#35-type-plan_approval_response%e8%ae%a1%e5%88%92%e5%ae%a1%e6%89%b9" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>参数：&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>参数&lt;/th>
&lt;th>类型&lt;/th>
&lt;th>必填&lt;/th>
&lt;th>说明&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>type&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>固定为 &amp;ldquo;plan_approval_response&amp;rdquo;&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>request_id&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>计划请求的 ID&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>recipient&lt;/td>
&lt;td>string&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>提交计划的队友名称&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>approve&lt;/td>
&lt;td>boolean&lt;/td>
&lt;td>✅&lt;/td>
&lt;td>true = 批准，false = 拒绝&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>content&lt;/td>
&lt;td>string&lt;/td>
&lt;td>❌&lt;/td>
&lt;td>拒绝时的反馈意见&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>批准示例：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;plan_approval_response&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;request_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;abc-123&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;recipient&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;researcher&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;approve&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>拒绝示例：&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;plan_approval_response&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;request_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;abc-123&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;recipient&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;researcher&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;approve&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;请为 API 调用添加错误处理&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;hr>
&lt;h5 id="重要注意事项">重要注意事项&lt;a class="heading-anchor" href="#%e9%87%8d%e8%a6%81%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;ol>
&lt;li>&lt;strong>始终使用名称引用队友&lt;/strong>（如 &amp;ldquo;team-lead&amp;rdquo;、&amp;ldquo;researcher&amp;rdquo;），不要使用 UUID&lt;/li>
&lt;li>&lt;strong>队友的空闲状态是正常的&lt;/strong>——空闲只意味着在等待输入，不代表出错或不可用&lt;/li>
&lt;li>&lt;strong>消息自动送达&lt;/strong>——不需要手动检查收件箱&lt;/li>
&lt;li>&lt;strong>默认使用私信&lt;/strong>——除非确实需要全员关注，否则不要使用广播&lt;/li>
&lt;li>&lt;strong>不要发送 JSON 格式的状态消息&lt;/strong>——使用 TaskUpdate 标记任务完成，系统会自动发送空闲通知&lt;/li>
&lt;/ol>
&lt;hr>
&lt;p>看完了以上的 Tool 的变化, 可以看出: Team 这项功能的设计就是围绕着Lead 的编排设计, 通信方式通过 SendMessage 来传递信息.&lt;/p>
&lt;p>现在让我们来使用 Teams 功能来实现一个小项目, 看看效果如何, 按照官方的提示, 我们来制作一个小的 Todo 应用.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-plaintext" data-lang="plaintext">&lt;span class="line">&lt;span class="cl">I&amp;#39;m designing a CLI tool that helps developers track TODO comments across
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">their codebase. Create an agent team to explore this from different angles: one
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">teammate on UX, one on technical architecture, one playing devil&amp;#39;s advocate.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">我正在设计一个CLI工具，帮助开发者追踪代码库中的TODO注释。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">请创建一个团队从不同角度来探讨这个问题：一位负责用户体验，一位负责技术架构，还有一位扮演&amp;#34;唱反调&amp;#34;的角色。
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="lead工作流程">Lead工作流程&lt;a class="heading-anchor" href="#lead%e5%b7%a5%e4%bd%9c%e6%b5%81%e7%a8%8b" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;h5 id="step1-创建-team">Step1: 创建 Team&lt;a class="heading-anchor" href="#step1-%e5%88%9b%e5%bb%ba-team" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>Tool Use:&lt;/strong> &lt;strong>​&lt;code>TeamCreate&lt;/code>​&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;team_name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;todo-tracker-design&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;从UX、技术架构和批判性视角探讨TODO追踪CLI工具的设计&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="step2-创建-teammate-task">Step2: 创建 Teammate Task&lt;a class="heading-anchor" href="#step2-%e5%88%9b%e5%bb%ba-teammate-task" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>Tool Use:&lt;/strong> &lt;strong>​&lt;code>TaskCreate&lt;/code>​&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;subject&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;从用户体验角度分析TODO追踪CLI工具设计&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;作为UX专家，深入分析一个帮助开发者追踪代码库中TODO注释的CLI工具的用户体验设计。需要涵盖：\n1. 目标用户画像和使用场景\n2. CLI交互设计（命令结构、输出格式、颜色方案）\n3. 工作流集成（如何融入开发者日常工作流）\n4. 信息层级和展示方式（如何让开发者快速获取关键信息）\n5. 与现有工具（IDE、CI/CD）的集成体验\n6. 具体的命令设计建议和示例\n\n请用简体中文输出，给出具体、可操作的建议。&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;activeForm&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;分析用户体验设计&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Tool Use:&lt;/strong> &lt;strong>​&lt;code>TaskCreate&lt;/code>​&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;subject&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;从技术架构角度分析TODO追踪CLI工具设计&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;作为技术架构师，深入分析一个帮助开发者追踪代码库中TODO注释的CLI工具的技术方案。需要涵盖：\n1. 核心解析引擎设计（如何高效扫描和解析不同语言的TODO注释）\n2. 数据模型设计（TODO的元数据结构：作者、日期、优先级、关联issue等）\n3. 存储方案（本地缓存、增量扫描、性能优化）\n4. 可扩展性设计（插件系统、自定义规则、多语言支持）\n5. 技术栈选择建议（语言、关键依赖库）\n6. 与Git集成的技术方案（blame信息、commit关联）\n7. 给出核心数据结构和架构图的文字描述\n\n请用简体中文输出，给出具体的技术方案。&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;activeForm&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;分析技术架构设计&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Tool Use:&lt;/strong> &lt;strong>​&lt;code>TaskCreate&lt;/code>​&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;subject&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;从批判性角度挑战TODO追踪CLI工具的设计假设&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;作为\&amp;#34;唱反调\&amp;#34;的角色（Devil&amp;#39;s Advocate），对这个TODO追踪CLI工具的设想进行批判性审视。需要涵盖：\n1. 这个工具真的有必要吗？现有方案（grep、IDE内置搜索、GitHub Issues）有什么不足需要新工具来解决？\n2. TODO注释本身是不是一种代码异味（code smell）？鼓励追踪它们是否在纵容坏习惯？\n3. 可能的失败模式和风险（工具过期、维护负担、团队采用阻力）\n4. 竞品分析：市面上已有的类似工具（todo-tree、fixme、leasot等）和它们的不足\n5. 最可能让这个项目失败的三个原因\n6. 如果一定要做，什么是最小可行产品（MVP）应该聚焦的核心功能？\n7. 哪些功能看起来诱人但应该果断砍掉？\n\n请用简体中文输出，尖锐但建设性地提出挑战。&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;activeForm&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;从批判角度审视设计&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="step3-创建并启动-subagent">Step3: 创建并启动 Subagent&lt;a class="heading-anchor" href="#step3-%e5%88%9b%e5%bb%ba%e5%b9%b6%e5%90%af%e5%8a%a8-subagent" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>Tool Use:&lt;/strong> &lt;strong>​&lt;code>Task&lt;/code>​&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;UX专家分析TODO CLI&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;subagent_type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;tr:investigator&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ux-expert&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;team_name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;todo-tracker-design&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;prompt&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;你是一位资深的CLI用户体验设计专家。请认领任务#1并完成它。\n\n你的角色：从开发者用户体验角度，深入分析一个帮助追踪代码库中TODO注释的CLI工具应该如何设计。\n\n请涵盖以下方面，给出具体、可操作的建议：\n\n1. **目标用户画像和使用场景**：谁会用这个工具？在什么场景下使用？\n2. **CLI交互设计**：命令结构设计（子命令、参数、flags）、输出格式、颜色方案、交互式模式等\n3. **工作流集成**：如何融入开发者的日常工作流（pre-commit hooks、CI/CD、编辑器集成等）\n4. **信息层级和展示方式**：如何让开发者快速获取关键信息，避免信息过载\n5. **与现有工具的集成体验**：IDE、GitHub/GitLab、项目管理工具等\n6. **具体的命令设计建议**：给出5-8个核心命令的具体示例和输出样例\n\n请参考优秀的CLI工具设计（如 gh, ripgrep, exa/eza, jq）的交互模式。\n用简体中文输出。完成后用 TaskUpdate 将任务标记为 completed，然后向 team-lead 发送消息汇报你的分析结果。&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>还有其他两个, 太长了, 以此类推&lt;/p>
&lt;h5 id="step4-分配任务">Step4: 分配任务&lt;a class="heading-anchor" href="#step4-%e5%88%86%e9%85%8d%e4%bb%bb%e5%8a%a1" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;p>&lt;strong>Tool Use:&lt;/strong> &lt;strong>​&lt;code>TaskUpdate&lt;/code>​&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;taskId&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;owner&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ux-expert&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;in_progress&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Tool Use:&lt;/strong> &lt;strong>​&lt;code>TaskUpdate&lt;/code>​&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;taskId&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;owner&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;architect&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;in_progress&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Tool Use:&lt;/strong> &lt;strong>​&lt;code>TaskUpdate&lt;/code>​&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;taskId&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;3&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;owner&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;devils-advocate&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;status&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;in_progress&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h1 id="teammate工作流程">Teammate工作流程&lt;a class="heading-anchor" href="#teammate%e5%b7%a5%e4%bd%9c%e6%b5%81%e7%a8%8b" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>按照官方文档的描述, 每一个 teammate 运行在一个独立的claude code实例中&lt;/p>
&lt;p>注意, 是一个单独的实例, 而不是像 subagent 一样跑在同一个实例下:&lt;/p>
&lt;ol>
&lt;li>subagent和 master 的通信是单向的, 也就是 master 实际上可以关注到 subagent 的全量行为, 默认是 Write 以及 output 都会吐到 Maste 的 context 中&lt;/li>
&lt;li>Lead 和 Teammate 的通信是靠 SendMessage 实现&lt;/li>
&lt;/ol>
&lt;h3 id="system-message-的区别">System Message 的区别&lt;a class="heading-anchor" href="#system-message-%e7%9a%84%e5%8c%ba%e5%88%ab" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>在这里 claude code的实现还是相当优雅的&lt;/p>
&lt;p>只是通过增加了一个Agent Teammate Community 的章节来实现&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-plaintext" data-lang="plaintext">&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Agent Teammate Communication
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">IMPORTANT: You are running as an agent in a team. To communicate with anyone on your team:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- Use the SendMessage tool with type `message` to send messages to specific teammates
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- Use the SendMessage tool with type `broadcast` sparingly for team-wide announcements
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Just writing a response in text is not visible to others on your team - you MUST use the SendMessage tool.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">The user interacts primarily with the team lead. Your work is coordinated through the task system and teammate messaging.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Notes:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- Agent threads always have their cwd reset between bash calls, as a result please only use absolute file paths.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- In your final response always share relevant file names and code snippets. Any file paths you return in your response MUST be absolute. Do NOT use relative paths.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- For clear communication with the user the assistant MUST avoid using emojis.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- Do not use a colon before tool calls. Text like \&amp;#34;Let me read the file:\&amp;#34; followed by a read tool call should just be \&amp;#34;Let me read the file.\&amp;#34; with a period.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Here is useful information about the environment you are running in:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;env&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Working directory: /Users/test/code/empty
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Is directory a git repo: No
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Platform: darwin
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">OS Version: Darwin 25.2.0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Today&amp;#39;s date: 2026-02-07
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/env&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">You are powered by the model named Opus 4.6. The exact model ID is claude-opus-4-6.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Assistant knowledge cutoff is May 2025.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;claude_background_info&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">The most recent frontier Claude model is Claude Opus 4.6 (model ID: &amp;#39;claude-opus-4-6&amp;#39;).
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/claude_background_info&amp;gt;&amp;#34;,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"># Agent 队友沟通
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">重要提示：你正在作为团队中的一个 Agent 运行。与团队中的任何人沟通时：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 使用 SendMessage 工具，类型设为 `message`，向特定队友发送消息
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 谨慎使用 SendMessage 工具，类型设为 `broadcast`，用于全团队公告
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">仅用文字回复对团队中的其他人是不可见的——你必须使用 SendMessage 工具。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">用户主要与团队负责人交互。你的工作通过任务系统和队友消息进行协调。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">注意事项：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- Agent 线程在每次 bash 调用之间会重置当前工作目录，因此请只使用绝对文件路径。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 在最终回复中，请务必分享相关的文件名和代码片段。回复中返回的任何文件路径必须是绝对路径，不要使用相对路径。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 为了与用户清晰沟通，助手必须避免使用表情符号。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">- 在调用工具之前不要使用冒号。例如&amp;#34;让我读取这个文件：&amp;#34;后接读取工具调用，应该改为&amp;#34;让我读取这个文件。&amp;#34;使用句号结尾。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">以下是你运行环境的有用信息：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;env&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">工作目录：/Users/test/code/empty
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">该目录是否为 git 仓库：否
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">平台：darwin
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">操作系统版本：Darwin 25.2.0
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">今天的日期：2026-02-07
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/env&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">你由名为 Opus 4.6 的模型驱动。确切的模型 ID 是 claude-opus-4-6。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">助手的知识截止日期是 2025 年 5 月。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;claude_background_info&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">最新的前沿 Claude 模型是 Claude Opus 4.6（模型 ID：&amp;#39;claude-opus-4-6&amp;#39;）。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/claude_background_info&amp;gt;&amp;#34;,
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="tools-区别">Tools 区别&lt;a class="heading-anchor" href="#tools-%e5%8c%ba%e5%88%ab" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>在 teammate 实例中, 做了一些阉割, teammate 无法使用所有的 team tools&lt;/p>
&lt;p>这里就不在过多的描述了&lt;/p>
&lt;h3 id="personality-设定">Personality 设定&lt;a class="heading-anchor" href="#personality-%e8%ae%be%e5%ae%9a" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>这里的 personality 设定是 Lead 给出teammate 设定后, 自动 load 的&lt;/p>
&lt;p>一个例子如下&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">teammate-message&lt;/span> &lt;span class="na">teammate_id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;team-lead&amp;#34;&lt;/span> &lt;span class="na">summary&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;反对者挑战TODO CLI&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">你是一位经验丰富的&amp;#34;唱反调&amp;#34;角色（Devil&amp;#39;s Advocate）。请认领任务&lt;span class="ni">#3并完成它&lt;/span>。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">你的角色：对这个&amp;#34;帮助开发者追踪代码库中TODO注释的CLI工具&amp;#34;进行尖锐但建设性的批判。你的工作是确保团队不会盲目乐观，能看到潜在的问题和风险。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">请先搜索一下市面上已有的类似工具和竞品情况，然后涵盖以下方面：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">1.&lt;/span> &lt;span class="gs">**必要性质疑**&lt;/span>：这个工具真的有必要吗？&lt;span class="sb">`grep -rn &amp;#34;TODO&amp;#34; .`&lt;/span> 有什么不够用的？IDE内置的TODO面板、GitHub Issues、Jira等工具已经能解决这个问题了吗？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">2.&lt;/span> &lt;span class="gs">**TODO本身的问题**&lt;/span>：TODO注释是否本身就是代码异味？追踪它们是在解决问题还是在纵容坏习惯？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">3.&lt;/span> &lt;span class="gs">**竞品分析**&lt;/span>：搜索市面上已有的类似工具（如 todo-tree VS Code插件、leasot、fixme、todo-txt 等），它们做得怎么样？为什么还需要一个新的？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">4.&lt;/span> &lt;span class="gs">**失败风险**&lt;/span>：最可能让这个项目失败的3-5个原因
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">5.&lt;/span> &lt;span class="gs">**范围蔓延风险**&lt;/span>：哪些功能看起来诱人但应该果断砍掉？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">6.&lt;/span> &lt;span class="gs">**采用阻力**&lt;/span>：开发团队为什么可能不愿意用这个工具？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">7.&lt;/span> &lt;span class="gs">**如果一定要做**&lt;/span>：MVP应该聚焦什么？什么是这个工具能提供的、现有方案真正缺失的独特价值？
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">请尖锐但建设性。目标不是否定这个项目，而是帮助团队做出更好的决策。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">用简体中文输出。完成后用 TaskUpdate 将任务标记为 completed，然后向 team-lead 发送消息汇报你的分析结果。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">teammate-message&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这里要注意: CLAUDE.md 还是能够正常注入的.&lt;/p>
&lt;h5 id="一些-claude-code-做的不够好的地方">一些 Claude Code 做的不够好的地方&lt;a class="heading-anchor" href="#%e4%b8%80%e4%ba%9b-claude-code-%e5%81%9a%e7%9a%84%e4%b8%8d%e5%a4%9f%e5%a5%bd%e7%9a%84%e5%9c%b0%e6%96%b9" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;ol>
&lt;li>对于SendMessage 的处理, 虽然已经在提示词里强调过了, 但是还是会出现先 output 了详细的结果, 但是在调用 SendMessage 时只给出了概括信息的情况&lt;/li>
&lt;li>使用 AgentTeams 还是一个太过于前沿的事情, 以至于还没有达成最佳的实践&lt;/li>
&lt;/ol>
&lt;p>当然了, 这不影响我认为Claude Code Agent Teams 是目前最优雅的方案, 和 Claude Code 的生态紧密结合, 没有做出任何破坏性的情况下, 还是很好的完成了自然语言 Agent 编排的功能.&lt;/p>
&lt;p>只能说 A÷还是强的&lt;/p>
&lt;h1 id="总结">总结&lt;a class="heading-anchor" href="#%e6%80%bb%e7%bb%93" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;h2 id="claude-code-agent-teams-核心架构">Claude Code Agent Teams 核心架构&lt;a class="heading-anchor" href="#claude-code-agent-teams-%e6%a0%b8%e5%bf%83%e6%9e%b6%e6%9e%84" aria-label="本节链接">#&lt;/a>
&lt;/h2>&lt;p>Claude Code 的 Agent Teams 功能采用了一种优雅的 &lt;strong>Lead-Teammate 分层架构&lt;/strong>，通过最小化的改动实现了多智能体协作：&lt;/p>
&lt;h3 id="关键设计理念">关键设计理念&lt;a class="heading-anchor" href="#%e5%85%b3%e9%94%ae%e8%ae%be%e8%ae%a1%e7%90%86%e5%bf%b5" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>非侵入式扩展&lt;/strong>：在原有 System Prompt 基础上通过增量添加章节实现，而非重构整个系统&lt;/li>
&lt;li>&lt;strong>基于消息的松耦合通信&lt;/strong>：Lead 和 Teammate 运行在独立实例中，通过 &lt;code>SendMessage&lt;/code> 工具进行异步通信&lt;/li>
&lt;li>&lt;strong>任务驱动的协调机制&lt;/strong>：复用并扩展了原有的 Task 系统，增加了 &lt;code>owner&lt;/code> 和团队分配能力&lt;/li>
&lt;/ol>
&lt;h3 id="核心工具体系">核心工具体系&lt;a class="heading-anchor" href="#%e6%a0%b8%e5%bf%83%e5%b7%a5%e5%85%b7%e4%bd%93%e7%b3%bb" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>工具类型&lt;/th>
&lt;th>工具名称&lt;/th>
&lt;th>核心功能&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>团队管理&lt;/td>
&lt;td>​&lt;code>TeamCreate&lt;/code>​ / &lt;code>TeamDelete&lt;/code>&lt;/td>
&lt;td>创建和销毁团队上下文&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>任务管理&lt;/td>
&lt;td>​&lt;code>Task&lt;/code>​ / &lt;code>TaskCreate&lt;/code>​ / &lt;code>TaskUpdate&lt;/code>​ / &lt;code>TaskList&lt;/code>&lt;/td>
&lt;td>创建、分配、追踪任务&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>通信机制&lt;/td>
&lt;td>​&lt;code>SendMessage&lt;/code>&lt;/td>
&lt;td>私信、广播、关闭请求、计划审批&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="lead-vs-teammate-的差异">Lead vs Teammate 的差异&lt;a class="heading-anchor" href="#lead-vs-teammate-%e7%9a%84%e5%b7%ae%e5%bc%82" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Lead Agent&lt;/strong>：拥有完整工具集，负责创建团队、分配任务、协调队友&lt;/li>
&lt;li>&lt;strong>Teammate Agent&lt;/strong>：工具集有所阉割，专注于执行任务并通过消息汇报结果&lt;/li>
&lt;li>&lt;strong>通信隔离&lt;/strong>：与 Subagent 不同，Teammate 的详细执行过程不会自动流入 Lead 的上下文&lt;/li>
&lt;/ul>
&lt;h3 id="当前局限性">当前局限性&lt;a class="heading-anchor" href="#%e5%bd%93%e5%89%8d%e5%b1%80%e9%99%90%e6%80%a7" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>消息内容损失&lt;/strong>：Teammate 可能在本地输出详细结果，但 SendMessage 中只传递概括信息&lt;/li>
&lt;li>&lt;strong>最佳实践待完善&lt;/strong>：作为前沿功能，社区尚未形成成熟的使用范式&lt;/li>
&lt;li>&lt;strong>协调开销&lt;/strong>：广播机制成本较高，需要开发者谨慎使用&lt;/li>
&lt;/ol>
&lt;h3 id="总体评价">总体评价&lt;a class="heading-anchor" href="#%e6%80%bb%e4%bd%93%e8%af%84%e4%bb%b7" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>Claude Code Agent Teams 代表了当前自然语言多智能体编排的&lt;strong>最优雅方案之一&lt;/strong>——它与 Claude Code 生态紧密结合，在不破坏现有功能的前提下，实现了声明式的团队协作能力。虽然仍处于早期阶段，但其设计思路值得关注和借鉴。&lt;/p></description></item><item><title>Claude Code SKill</title><link>https://blog.pdjjq.org/post/claude-code-skill-25ron8.html</link><pubDate>Sat, 24 Jan 2026 14:28:01 +0800</pubDate><guid>https://blog.pdjjq.org/post/claude-code-skill-25ron8.html</guid><description>&lt;h1 id="claude-code-skill">Claude Code SKill&lt;a class="heading-anchor" href="#claude-code-skill" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;h1 id="skill的实现以及指令">Skill的实现以及指令&lt;a class="heading-anchor" href="#skill%e7%9a%84%e5%ae%9e%e7%8e%b0%e4%bb%a5%e5%8f%8a%e6%8c%87%e4%bb%a4" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;p>让我们来抓包Claude Code的请求, 看看Claude Skill的实现吧&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Skill&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;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 \&amp;#34;slash command\&amp;#34; or reference \&amp;#34;/&amp;lt;something&amp;gt;\&amp;#34; (e.g., \&amp;#34;/commit\&amp;#34;, \&amp;#34;/review-pr\&amp;#34;), they are referring to a skill. Use this tool to invoke the corresponding skill.\n\nExample:\n User: \&amp;#34;run /commit\&amp;#34;\n Assistant: [Calls Skill tool with skill: \&amp;#34;commit\&amp;#34;]\n\nHow to invoke:\n- Use this tool with the skill name and optional arguments\n- Examples:\n - `skill: \&amp;#34;pdf\&amp;#34;` - invoke the pdf skill\n - `skill: \&amp;#34;commit\&amp;#34;, args: \&amp;#34;-m &amp;#39;Fix bug&amp;#39;\&amp;#34;` - invoke with arguments\n - `skill: \&amp;#34;review-pr\&amp;#34;, args: \&amp;#34;123\&amp;#34;` - invoke with arguments\n - `skill: \&amp;#34;ms-office-suite:pdf\&amp;#34;` - 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 \&amp;#34;Available skills\&amp;#34; below\n- Do not invoke a skill that is already running\n- Do not use this tool for built-in CLI commands (like /help, /clear, etc.)\n- If you see a &amp;lt;command-name&amp;gt; tag in the current conversation turn (e.g., &amp;lt;command-name&amp;gt;/commit&amp;lt;/command-name&amp;gt;), 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&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;input_schema&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;$schema&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;https://json-schema.org/draft/2020-12/schema&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;object&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;properties&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;skill&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;The skill name. E.g., \&amp;#34;commit\&amp;#34;, \&amp;#34;review-pr\&amp;#34;, or \&amp;#34;pdf\&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;args&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Optional arguments for the skill&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;string&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;required&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;skill&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;additionalProperties&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="instructions">Instructions&lt;a class="heading-anchor" href="#instructions" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">Execute a skill within the main conversation
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">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.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">When users ask you to run a \&amp;#34;slash command\&amp;#34; or reference \&amp;#34;/&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">something&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>\&amp;#34; (e.g., \&amp;#34;/commit\&amp;#34;, \&amp;#34;/review-pr\&amp;#34;), they are referring to a skill. Use this tool to invoke the corresponding skill.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Example:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> User: \&amp;#34;run /commit\&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Assistant: [Calls Skill tool with skill: \&amp;#34;commit\&amp;#34;]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">How to invoke:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Use this tool with the skill name and optional arguments
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Examples:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">-&lt;/span> &lt;span class="sb">`skill: \&amp;#34;pdf\&amp;#34;`&lt;/span> - invoke the pdf skill
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">-&lt;/span> &lt;span class="sb">`skill: \&amp;#34;commit\&amp;#34;, args: \&amp;#34;-m &amp;#39;Fix bug&amp;#39;\&amp;#34;`&lt;/span> - invoke with arguments
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">-&lt;/span> &lt;span class="sb">`skill: \&amp;#34;review-pr\&amp;#34;, args: \&amp;#34;123\&amp;#34;`&lt;/span> - invoke with arguments
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">-&lt;/span> &lt;span class="sb">`skill: \&amp;#34;ms-office-suite:pdf\&amp;#34;`&lt;/span> - invoke using fully qualified name
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Important:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> When a skill is relevant, you must invoke this tool IMMEDIATELY as your first action
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> NEVER just announce or mention a skill in your text response without actually calling this tool
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> This is a BLOCKING REQUIREMENT: invoke the relevant Skill tool BEFORE generating any other response about the task
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Only use skills listed in \&amp;#34;Available skills\&amp;#34; below
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Do not invoke a skill that is already running
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> Do not use this tool for built-in CLI commands (like /help, /clear, etc.)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> If you see a &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">command-name&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> tag in the current conversation turn (e.g., &lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">command-name&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>/commit&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">command-name&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>), 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.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Available skills:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> tr:reviewPR: Conducts an automated review of a GitHub Pull Request.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> tr:updateDoc: Updates the documentation based on recent code changes.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> tr:initDoc: Generate great doc system for this project
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> tr:what: Clarifies a vague user request by asking clarifying questions.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> tr:withScout: Handles a complex task by first investigating the codebase, then executing a plan.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> tr:commit: Analyzes code changes and generates a conventional commit message.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>除此之外, 在 System 的 Tool Usage Policy 中还有这么一个&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">&lt;span class="k">-&lt;/span> /&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">skill-name&lt;/span>&lt;span class="p">&amp;gt;&lt;/span> (e.g., /commit) is shorthand for users to invoke a user-invocable 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 user-invocable skills section - do not guess or use built-in CLI commands.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="1-功能">1. 功能&lt;a class="heading-anchor" href="#1-%e5%8a%9f%e8%83%bd" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;p>&lt;strong>核心定位：&lt;/strong> 这是一个&lt;strong>中转站&lt;/strong>。它的核心功能是将自然语言（如 &amp;ldquo;help me fix this bug&amp;rdquo;）或 显式指令（如 &amp;ldquo;/commit&amp;rdquo;）映射到具体的系统预设能力（Skills）上。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>触发机制：&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>&lt;strong>意图识别：&lt;/strong> 用户任务需要专业能力辅助时。&lt;/li>
&lt;li>&lt;strong>符号触发：&lt;/strong> 明确的斜杠命令 &lt;code>/&lt;/code>。&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>状态管理：&lt;/strong> 它不仅仅是调用，还包含了一个非常关键的&lt;strong>状态检查&lt;/strong>功能（检查 &lt;code>&amp;lt;command-name&amp;gt;&lt;/code> 标签），用于防止死循环（即防止模型在已经加载了技能的情况下再次尝试调用技能）。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h3 id="2-构成与强调内容">2. 构成与强调内容&lt;a class="heading-anchor" href="#2-%e6%9e%84%e6%88%90%e4%b8%8e%e5%bc%ba%e8%b0%83%e5%86%85%e5%ae%b9" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>采用了 &lt;strong>Context（背景） -&amp;gt; Trigger（触发器） -&amp;gt; Examples（示例） -&amp;gt; Constraints（约束） -&amp;gt; Knowledge Base（可用列表）&lt;/strong> 的经典结构。&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>强调内容（Emphasis）：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>即时性与阻断性（Blocking Requirement）：&lt;/strong> 使用了大写的 &lt;code>IMMEDIATELY&lt;/code>​、&lt;code>BLOCKING REQUIREMENT&lt;/code>​、&lt;code>BEFORE generating&lt;/code>​。这是为了解决 LLM 常见的一个毛病： &lt;strong>“光说不练”&lt;/strong> （即模型回复“好的，我来帮你运行 commit”，但实际上并没有发起工具调用）。这里强制要求工具调用必须是第一动作。&lt;/li>
&lt;li>&lt;strong>排他性（Negative Constraints）：&lt;/strong> 明确规定了&lt;strong>不该做什么&lt;/strong>（不要用于内置 CLI 命令，不要只是嘴上说说，不要调用未列出的技能）。&lt;/li>
&lt;li>&lt;strong>防递归（Loop Prevention）：&lt;/strong> 特别强调了检测 &lt;code>&amp;lt;command-name&amp;gt;&lt;/code> 标签。这说明该系统是一个多轮对话或基于 Agent 的系统，技能加载后会注入新的 Prompt，必须防止 Router 再次拦截。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="3-适配高智能模型--声明式-vs-命令式">3. 适配高智能模型 &amp;amp; 声明式 vs 命令式&lt;a class="heading-anchor" href="#3-%e9%80%82%e9%85%8d%e9%ab%98%e6%99%ba%e8%83%bd%e6%a8%a1%e5%9e%8b--%e5%a3%b0%e6%98%8e%e5%bc%8f-vs-%e5%91%bd%e4%bb%a4%e5%bc%8f" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;ul>
&lt;li>
&lt;p>&lt;strong>适配度：高&lt;/strong>。这段 Prompt 非常适合高智商模型。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>风格分析：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>混合风格&lt;/strong>，但偏向&lt;strong>命令式（Imperative）&lt;/strong> 。&lt;/li>
&lt;li>虽然有声明式的描述（&amp;ldquo;Skills provide specialized capabilities&amp;hellip;&amp;quot;），但在执行逻辑上使用了大量的命令式语句（&amp;ldquo;Use this tool&amp;hellip;&amp;rdquo;, &amp;ldquo;Check if&amp;hellip;&amp;rdquo;, &amp;ldquo;Do NOT call&amp;hellip;&amp;quot;）。&lt;/li>
&lt;li>&lt;strong>点评：&lt;/strong> 对于&lt;strong>工具调用（Function Calling）&lt;/strong> 类任务，&lt;strong>命令式&lt;/strong>通常优于声明式。因为工具调用需要严格的语法和时序准确性，模糊的声明可能导致模型自由发挥而产生幻觉&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>思维链引导：&lt;/strong> Prompt 隐式地要求模型先进行判断（Check if relevant），然后行动。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h1 id="skill的调用">Skill的调用&lt;a class="heading-anchor" href="#skill%e7%9a%84%e8%b0%83%e7%94%a8" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;h3 id="command-调用">command 调用&lt;a class="heading-anchor" href="#command-%e8%b0%83%e7%94%a8" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>让我们直接调用一个 command, 然后观察他的执行流程吧&lt;/p>
&lt;p>Claude Code 其实会把一个 command 的调用拆解成两个步骤&lt;/p>
&lt;ol>
&lt;li>&lt;code>command-name&lt;/code>Tag 包裹的命令请求&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;command-message&amp;gt;tr:what&amp;lt;/command-message&amp;gt;\n&amp;lt;command-name&amp;gt;/tr:what&amp;lt;/command-name&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>&lt;span class="err">,&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>
&lt;p>SKILL.md 的内容&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;CONTENT of SKILL&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;h3 id="skill-folder">skill folder&lt;a class="heading-anchor" href="#skill-folder" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>claude code skill 提供的另外一个令人兴奋的能力是: &lt;a href="https://code.claude.com/docs/en/skills#add-supporting-files">https://code.claude.com/docs/en/skills#add-supporting-files&lt;/a>&lt;/p>
&lt;p>可以将 skill 涉及到的文件封装在同一个目录下, 这样可以实现更好的结构化.&lt;/p>
&lt;p>来看看这部分是怎么实现的, 我们将使用一个空的目录, 看看这个目录的结构吧&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="err">.claude&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">└──&lt;/span> &lt;span class="err">skills&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">└──&lt;/span> &lt;span class="err">say-hello&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">├──&lt;/span> &lt;span class="err">scripts&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">│&lt;/span>   &lt;span class="err">└──&lt;/span> &lt;span class="err">hello.sh&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">└──&lt;/span> &lt;span class="err">SKILL.md&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>skill 的内容非常简单&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="err">---&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">name:&lt;/span> &lt;span class="err">say-hello&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">description:&lt;/span> &lt;span class="err">Say&lt;/span> &lt;span class="err">hello&lt;/span> &lt;span class="err">to&lt;/span> &lt;span class="err">the&lt;/span> &lt;span class="err">user&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">disable-model-invocation:&lt;/span> &lt;span class="kc">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">---&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">run&lt;/span> &lt;span class="err">scripts/hello.sh&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="执行流程">执行流程&lt;a class="heading-anchor" href="#%e6%89%a7%e8%a1%8c%e6%b5%81%e7%a8%8b" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="err">❯&lt;/span> &lt;span class="err">/say-hello&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">⏺&lt;/span> &lt;span class="err">Bash(bash&lt;/span> &lt;span class="err">/Users/test/code/claude-code-skill-research/.claude/skills/say-hello/scripts/hello.sh)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="err">⎿&lt;/span>  &lt;span class="err">Hello,&lt;/span> &lt;span class="err">World!&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="err">⏺&lt;/span> &lt;span class="err">脚本已成功执行，输出：Hello,&lt;/span> &lt;span class="err">World!&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>这部分其实就没有什么惊喜了, 但是这里要注意: 不要声明绝对目录&lt;/p>
&lt;h5 id="请求设计">请求设计&lt;a class="heading-anchor" href="#%e8%af%b7%e6%b1%82%e8%ae%be%e8%ae%a1" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;user&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;command-message&amp;gt;say-hello&amp;lt;/command-message&amp;gt;\n&amp;lt;command-name&amp;gt;/say-hello&amp;lt;/command-name&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Base directory for this skill: /Users/test/code/claude-code-skill-research/.claude/skills/say-hello\n\nrun scripts/hello.sh\n&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cache_control&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ephemeral&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>可以看到, 这里也没有什么魔法, 或者很工程的设计, 唯一一个需要注意的是:&lt;/p>
&lt;p>​&lt;code>Base directory for this skill: /Users/test/code/claude-code-skill-research/.claude/skills/say-hello&lt;/code>&lt;/p>
&lt;p>所以, skill 的 folder 是怎么实现的呢? 很简单, 在提示词里显式的说明了 skill 的路径, 好吧, 有点失望&lt;/p>
&lt;h3 id="context-fork">context-fork&lt;a class="heading-anchor" href="#context-fork" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>另外一个值得观察的: context fork 的能力, 按照官网描述:&lt;/p>
&lt;blockquote>
&lt;p>Set to &lt;code>fork&lt;/code> to run in a forked subagent context.&lt;/p>&lt;/blockquote>
&lt;p>听描述应该是说, 会启动一个 subagent, fork 主 agent 的 context, 在完全独立的上下文中运行&lt;/p>
&lt;p>让我们看一看, 这个 subagent 的使用吧&lt;/p>
&lt;p>现在修改下 SKILL.md, 使用 context fork 以及使用 general-purpose agent 来运行&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">name: say-hello
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">description: Say hello to the user
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">disable-model-invocation: true
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">context: fork
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">model: sonnet
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">agent: General-purpose
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">run scripts/hello.sh
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>执行路径&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-plaintext" data-lang="plaintext">&lt;span class="line">&lt;span class="cl">❯ hello
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">⏺ Hello! How can I help you today?
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">❯ /say-hello
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ⎿ The script ran successfully and outputted:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Hello, World!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> The script is located at /Users/test/code/claude-code-skill-research/.claud
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> /skills/say-hello/scripts/hello.sh and simply prints a greeting message.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">❯ ok, hi, claude code
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">⏺ Hi! What can I help you with?
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h5 id="subagent的工作流">subagent的工作流&lt;a class="heading-anchor" href="#subagent%e7%9a%84%e5%b7%a5%e4%bd%9c%e6%b5%81" aria-label="本节链接">#&lt;/a>
&lt;/h5>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;model&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;claude-sonnet-4-5-20250929&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;messages&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;user&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Base directory for this skill: /Users/test/code/claude-code-skill-research/.claude/skills/say-hello\n\nrun scripts/hello.sh\n&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;assistant&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;thinking&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;thinking&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;The user wants me to run the script `scripts/hello.sh`. They&amp;#39;ve also provided a base directory for a skill: `/Users/test/code/claude-code-skill-research/.claude/skills/say-hello`\n\nI should run the script. The path could be:\n1. Relative to the current working directory (which is `/Users/test/code/claude-code-skill-research`)\n2. Relative to the skill base directory\n\nLet me try running it. Since the current working directory is `/Users/test/code/claude-code-skill-research`, 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&amp;#39;s available. I&amp;#39;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/claude-code-skill-research/.claude/skills/say-hello/scripts/hello.sh`\n\nLet me run that script.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;signature&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;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&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;text&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;I&amp;#39;ll run the hello.sh script for you.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;tool_use&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;toolu_01ANhWLy3masVW2f6K7dcSTF&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Bash&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;input&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;command&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;bash /Users/test/code/claude-code-skill-research/.claude/skills/say-hello/scripts/hello.sh&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;description&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Run the hello.sh script&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cache_control&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ephemeral&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;role&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;user&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;tool_use_id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;toolu_01ANhWLy3masVW2f6K7dcSTF&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;tool_result&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;content&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Hello, World!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;is_error&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">false&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;cache_control&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;ephemeral&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="subagent的-context">subagent的 context&lt;a class="heading-anchor" href="#subagent%e7%9a%84-context" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>&lt;a href="https://github.com/anthropics/claude-code/issues/20492">https://github.com/anthropics/claude-code/issues/20492&lt;/a>&lt;/p>
&lt;p>很遗憾, subagent 里并不是fork master context, 看起来就像是运行普通的 agnet 一样, 只是把 Skill 的执行放在了 subagent 中&lt;/p>
&lt;p>我尝试了以下做法:&lt;/p>
&lt;ol>
&lt;li>不指定 skill 使用的 subagent&lt;/li>
&lt;li>在 skill.md 中要求 load master agent 的上下文&lt;/li>
&lt;li>只使用 agent 不使用 context fork&lt;/li>
&lt;/ol>
&lt;p>现在看来, 这里的 context fork 指的并不是 fork master agent 的 context, 而是指的是 subagent skill + agent 本身的 context, 其实是一个 new 的 context, 有点失望&lt;/p>
&lt;h1 id="claude-code-skill-机制研究总结">Claude Code Skill 机制研究总结&lt;a class="heading-anchor" href="#claude-code-skill-%e6%9c%ba%e5%88%b6%e7%a0%94%e7%a9%b6%e6%80%bb%e7%bb%93" aria-label="本节链接">#&lt;/a>
&lt;/h1>&lt;h2 id="核心发现">核心发现&lt;a class="heading-anchor" href="#%e6%a0%b8%e5%bf%83%e5%8f%91%e7%8e%b0" aria-label="本节链接">#&lt;/a>
&lt;/h2>&lt;h3 id="1-skill-工具本质">1. Skill 工具本质&lt;a class="heading-anchor" href="#1-skill-%e5%b7%a5%e5%85%b7%e6%9c%ac%e8%b4%a8" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>Skill 工具是一个&lt;strong>路由器（Router）&lt;/strong> ，而非执行器。它的职责是：&lt;/p>
&lt;ul>
&lt;li>将用户意图（自然语言或 &lt;code>/command&lt;/code>）映射到预定义的能力&lt;/li>
&lt;li>触发 Skill 的加载，而非直接执行&lt;/li>
&lt;li>通过 &lt;code>&amp;lt;command-name&amp;gt;&lt;/code> 标签进行状态管理，防止递归调用&lt;/li>
&lt;/ul>
&lt;h3 id="2-执行流程">2. 执行流程&lt;a class="heading-anchor" href="#2-%e6%89%a7%e8%a1%8c%e6%b5%81%e7%a8%8b" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>Skill 调用被拆解为两步：&lt;/p>
&lt;pre tabindex="0">&lt;code>用户输入 → Skill Router → 注入 Skill 内容 → LLM 执行
&lt;/code>&lt;/pre>&lt;ol>
&lt;li>&lt;strong>标记注入&lt;/strong>：&lt;code>&amp;lt;command-name&amp;gt;/skill-name&amp;lt;/command-name&amp;gt;&lt;/code>&lt;/li>
&lt;li>&lt;strong>内容注入&lt;/strong>：SKILL.md 的实际指令&lt;/li>
&lt;/ol>
&lt;p>这不是一个复杂的编排系统，而是&lt;strong>简单的 Prompt 拼接&lt;/strong>。&lt;/p>
&lt;h3 id="3-skill-folder-的实现">3. Skill Folder 的实现&lt;a class="heading-anchor" href="#3-skill-folder-%e7%9a%84%e5%ae%9e%e7%8e%b0" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>&lt;strong>毫无魔法可言。&lt;/strong>&lt;/p>
&lt;p>实现方式仅仅是在 Prompt 中显式声明基础路径：&lt;/p>
&lt;pre tabindex="0">&lt;code>Base directory for this skill: /path/to/skill/folder
&lt;/code>&lt;/pre>&lt;p>然后依赖 LLM 自行推断相对路径。这是一个脆弱且依赖模型理解能力的设计。&lt;/p>
&lt;h3 id="4-context-fork-的真相最大失望点">4. Context Fork 的真相（最大失望点）&lt;a class="heading-anchor" href="#4-context-fork-%e7%9a%84%e7%9c%9f%e7%9b%b8%e6%9c%80%e5%a4%a7%e5%a4%b1%e6%9c%9b%e7%82%b9" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>&lt;strong>文档描述具有误导性。&lt;/strong>&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>官方描述&lt;/th>
&lt;th>实际行为&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&amp;ldquo;Fork&amp;rdquo; 主 Agent 的上下文&lt;/td>
&lt;td>创建&lt;strong>全新的独立上下文&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Subagent 继承对话历史&lt;/td>
&lt;td>Subagent &lt;strong>仅接收 Skill 指令&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>类似子进程 fork&lt;/td>
&lt;td>更像是 &lt;strong>spawn 一个新进程&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>实测证明：&lt;/p>
&lt;ul>
&lt;li>Subagent 无法访问主对话的任何历史&lt;/li>
&lt;li>不存在真正的上下文继承&lt;/li>
&lt;li>​&lt;code>context: fork&lt;/code>​ 的 &amp;ldquo;fork&amp;rdquo; 是&lt;strong>名义上的&lt;/strong>，实际是 &amp;ldquo;new&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="最终结论">最终结论&lt;a class="heading-anchor" href="#%e6%9c%80%e7%bb%88%e7%bb%93%e8%ae%ba" aria-label="本节链接">#&lt;/a>
&lt;/h2>&lt;h3 id="定性评价">定性评价&lt;a class="heading-anchor" href="#%e5%ae%9a%e6%80%a7%e8%af%84%e4%bb%b7" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;p>Claude Code Skill 系统是一个&lt;strong>工程上极简、能力上有限&lt;/strong>的实现：&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>维度&lt;/th>
&lt;th>评价&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>架构复杂度&lt;/strong>&lt;/td>
&lt;td>低（本质是 Prompt 路由 + 拼接）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>扩展性&lt;/strong>&lt;/td>
&lt;td>中（支持目录结构、多模型）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>隔离性&lt;/strong>&lt;/td>
&lt;td>弱（依赖 LLM 自律，无真正沙箱）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>上下文管理&lt;/strong>&lt;/td>
&lt;td>差（无真正的 fork，仅 spawn）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>文档准确性&lt;/strong>&lt;/td>
&lt;td>存在误导（context fork 名不副实）&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="核心局限">核心局限&lt;a class="heading-anchor" href="#%e6%a0%b8%e5%bf%83%e5%b1%80%e9%99%90" aria-label="本节链接">#&lt;/a>
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>无真正的 Subagent 上下文继承&lt;/strong>：如果你的 Skill 需要依赖主对话的上下文（如&amp;quot;基于之前讨论的方案执行 X&amp;rdquo;），当前设计无法满足&lt;/li>
&lt;li>&lt;strong>路径管理依赖模型理解&lt;/strong>：Skill Folder 的相对路径解析完全依赖 LLM，存在幻觉风险&lt;/li>
&lt;li>&lt;strong>状态同步缺失&lt;/strong>：Subagent 执行结果仅通过文本返回主对话，无结构化状态同步&lt;/li>
&lt;/ol>
&lt;p>‍&lt;/p></description></item></channel></rss>