<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DJJ</title>
    <link>https://blog.pdjjq.org/</link>
    <description>Recent content on DJJ</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sat, 09 May 2026 00:03:13 +0800</lastBuildDate><atom:link href="https://blog.pdjjq.org/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AI 工作流 V4</title>
      <link>https://blog.pdjjq.org/post/ai-workflow-v4-zj5hk2.html</link>
      <pubDate>Sat, 09 May 2026 00:03:13 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/ai-workflow-v4-zj5hk2.html</guid>
      <description>&lt;h1 id=&#34;ai-工作流-v4&#34;&gt;AI 工作流 V4&lt;/h1&gt;
&lt;p&gt;从 24 年开始,工作流写了三版:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.pdjjq.org/post/programmer-s-ai-workflow-dbpzt&#34;&gt;V1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.pdjjq.org/post/programmer-s-ai-workflow-v2-z1rp29o&#34;&gt;V2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.pdjjq.org/post/programmer-s-ai-workflow-v3-on4x8&#34;&gt;V3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但是时代变化太快了, 太快了, 快到我完全想不到的程度, 回看上一篇就像是看类人猿&lt;/p&gt;
&lt;p&gt;而且已经不能再写程序员的 AI 工作流, 因为我认为职业边界将进入彻底模糊的时代, 不会再有程序员了&lt;/p&gt;
&lt;h1 id=&#34;coding&#34;&gt;Coding&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;推荐且仅推荐 claude code 以及 codex cli&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;claude-code&#34;&gt;Claude Code&lt;/h3&gt;
&lt;p&gt;Claude Code , 沟槽的 A÷, 但是架不住模型确实屌, 工具确实全面&lt;/p&gt;
&lt;p&gt;开箱即用, 推荐, subagent 以及 agent teams 是很好的特性, plugin 生态也非常全面, 强烈推荐&lt;/p&gt;
&lt;h3 id=&#34;codex-cli&#34;&gt;Codex Cli&lt;/h3&gt;
&lt;p&gt;功能上来说是低配版的 Claude Code, 但是模型非常强劲, 5.5 是我心中的最佳编程模型&lt;/p&gt;
&lt;p&gt;除了上下文只有 258K, ☺️&lt;/p&gt;
&lt;h1 id=&#34;并行工作&#34;&gt;并行工作&lt;/h1&gt;
&lt;p&gt;这里要特别强调并行工作的重要性, 某种意义上也是 agent 编排的起点&lt;/p&gt;
&lt;h3 id=&#34;supersetsh&#34;&gt;superset.sh&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://superset.sh/&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.pdjjq.org/images/PixPin_2026-05-09_00-13-49-20260509001351-sqrhca2.png&#34; alt=&#34;PixPin_2026-05-09_00-13-49&#34;&gt;&lt;/p&gt;
&lt;p&gt;自动开启 worktree, 自动的 setup 环境, 一个窗口多开 claude code, codex&lt;/p&gt;
&lt;p&gt;这使得并行 10 个任务不是梦&lt;/p&gt;
&lt;h3 id=&#34;conductor&#34;&gt;conductor&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://www.conductor.build/&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;坦白说, superset 抄的 conductor, 但是功能相差无几的情况下, 我更喜欢开源项目&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;agent-tool&#34;&gt;Agent Tool&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;生产力 agent tool&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;llmdoc&#34;&gt;llmdoc&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/llmdoc&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;☺️ 排在第一, 就是屌, doc for agent, 立刻安装&lt;/p&gt;
&lt;h3 id=&#34;superpowers&#34;&gt;superpowers&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/obra/superpowers&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;现在有些臃肿了, 但是好用, 立刻安装&lt;/p&gt;
&lt;h3 id=&#34;happy-code&#34;&gt;happy code&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/slopus/happy&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;远程也能操作 claude code / codex , 好用, 建议安装&lt;/p&gt;
&lt;h3 id=&#34;trellis&#34;&gt;trellis&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/mindfold-ai/trellis&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;大型项目推荐使用, 但是侵入性很强&lt;/p&gt;
&lt;p&gt;llmdoc + superpower 的结合体&lt;/p&gt;
&lt;h3 id=&#34;pencildev&#34;&gt;pencil.dev&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://www.pencil.dev/&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;做 UI 蛮好的, 起码能看的过去了&lt;/p&gt;
&lt;h3 id=&#34;mcporter&#34;&gt;mcporter&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/openclaw/mcporter&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;强烈推荐!&lt;/p&gt;
&lt;p&gt;装几个 mcp 可能带来 100 个 tools, 太臃肿了&lt;/p&gt;
&lt;p&gt;放在 cli 里吧, cli 天生就是渐进式披露的, 你悟到了吗?&lt;/p&gt;
&lt;h1 id=&#34;自主-agent&#34;&gt;自主 Agent&lt;/h1&gt;
&lt;p&gt;这里只写两个, 部署一个吧, 提升幸福感&lt;/p&gt;
&lt;p&gt;以后你会看到漫天的自主 agent 的&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.openclaw.ai/&#34;&gt;openclaw&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://hermes-agent.nousresearch.com/docs/zh-Hans/getting-started/quickstart&#34;&gt;hermes-agent&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;agent-编排&#34;&gt;Agent 编排&lt;/h1&gt;
&lt;p&gt;我认为 Agent 的编排现在还不够成熟，原因主要有以下几点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用体验非常奇怪&lt;br&gt;
目前的编排工具要么需要一大堆极其琐碎的配置，要么就会出现各种乱七八糟的问题。比如 Agent 核心会突然断联，而断联后的恢复运行又是一个巨大的挑战，频繁的中断让人非常头疼。&lt;/li&gt;
&lt;li&gt;缺乏合理的任务拆解&lt;br&gt;
我实际上认为，如果你需要用到 Agent 编排，那大概率是因为你面对的是一个巨大的任务。这种情况下，必须先进行充分且合理的任务拆解，在拆解逻辑成立的前提下，才谈得上编排。&lt;/li&gt;
&lt;li&gt;验证机制缺失&lt;br&gt;
接下来是推进到 Agent 的验证，坦白讲，目前对于代码或程序产物的验证部分并没有被很好地解决。直到现在，AI 验证程序这件事依然众说纷纭，没有统一的标准或结果，甚至连生成一个基础的测试环境都非常麻烦。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所以在目前基础设施还不成熟的环境下，想要做好 Agent 的编排有点天方夜谭。&lt;/p&gt;
&lt;p&gt;Cloud Code 的 Agent Team 实际上在解决 Agent 之间的通信问题，但是，Agent 的通信和 Agent 的编排完全是两码事。&lt;/p&gt;
&lt;p&gt;所以这里就先简单放一个项目：&lt;/p&gt;
&lt;h3 id=&#34;ruflo&#34;&gt;ruflo&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ruvnet/ruflo&#34;&gt;链接&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;自己看吧, 一两句话说不明白&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;坦白说，从2024年7月到2025年7月，再到2026年的5月，我认为这个时代变化的速度太快了。快到我已经记不起来一两个月前的工作是什么样子，手写代码的能力下降得非常快。&lt;/p&gt;
&lt;p&gt;我现在去考察一些候选人，做技术面试的时候，我已经完全放开了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;我允许你使用 AI。&lt;/li&gt;
&lt;li&gt;我甚至鼓励你使用 AI 去解决一些开放性的问题，比如解决一个 GitHub issue 这样的问题。&lt;/li&gt;
&lt;li&gt;我认为抗拒使用 AI 的人是不行的。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一定要拥抱这种变化。只有这样，你才能够不成为原始人，不成为类人猿，不成为那种古老的东西。我觉得拥抱变化是一个人是否年轻的标志，不拥抱变化就会死亡。&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>context-mode 的分析与批评 by GPT5.5</title>
      <link>https://blog.pdjjq.org/post/analysis-and-criticism-of-contextmode-by-gpt55-z2ar75w.html</link>
      <pubDate>Thu, 07 May 2026 11:22:37 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/analysis-and-criticism-of-contextmode-by-gpt55-z2ar75w.html</guid>
      <description>&lt;h1 id=&#34;context-mode-的分析与批评-by-gpt55&#34;&gt;context-mode 的分析与批评 by GPT5.5&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/mksglu/context-mode&#34;&gt;repo&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;context-mode-实现方式与生产化评估&#34;&gt;Context Mode 实现方式与生产化评估&lt;/h1&gt;
&lt;h2 id=&#34;摘要&#34;&gt;摘要&lt;/h2&gt;
&lt;p&gt;Context Mode 的核心价值不是“把所有信息压缩成指针”，而是尽量避免大体量原始数据直接进入主 Agent 的上下文窗口。&lt;/p&gt;
&lt;p&gt;它更适合解决这类问题：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;原始数据很大，但真正需要交给主 Agent 的结论很小。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如日志分析、测试失败、构建错误、网页快照、文档检索、API 响应检查等场景。它的典型路径是：先把大输出留在外部环境里，再通过代码执行、索引检索或摘要提取，只把小规模结果返回给模型。&lt;/p&gt;
&lt;p&gt;但它并不是通用的上下文压缩方案。如果一个任务最终仍然需要主 Agent 读取完整材料，那么 Context Mode 只能延迟成本，不能真正消除成本。这个边界在生产环境里非常重要。&lt;/p&gt;
&lt;h2 id=&#34;当前方案的基本思路&#34;&gt;当前方案的基本思路&lt;/h2&gt;
&lt;p&gt;Context Mode 可以理解成一层运行在 Agent 和外部工具之间的“上下文保护层”。&lt;/p&gt;
&lt;p&gt;它主要做三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;拦截或提示那些容易产生大量输出的工具调用。&lt;/li&gt;
&lt;li&gt;把大输出保存在沙盒、文件或数据库里，而不是直接放进模型上下文。&lt;/li&gt;
&lt;li&gt;只把摘要、命中片段、统计结果或后续检索入口返回给主 Agent。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种设计并不会要求用户修改项目里的所有 shell 脚本，也不会替换系统里的原生命令。它主要影响的是 Agent 使用工具的方式。&lt;/p&gt;
&lt;p&gt;在支持 hooks 的平台上，它会通过工具调用前的钩子来引导 Agent：小输出和文件修改类命令可以继续走原生工具，而日志、测试、构建、网页抓取、长文档读取等容易爆上下文的操作，则会被引导到 Context Mode 提供的工具中执行。&lt;/p&gt;
&lt;h2 id=&#34;降低上下文占用的几个机制&#34;&gt;降低上下文占用的几个机制&lt;/h2&gt;
&lt;h3 id=&#34;1-让模型写代码分析而不是直接阅读大输出&#34;&gt;1. 让模型写代码分析，而不是直接阅读大输出&lt;/h3&gt;
&lt;p&gt;这是最有效的一类优化。&lt;/p&gt;
&lt;p&gt;传统方式是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;执行命令
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; 大量 stdout/stderr 进入上下文
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; 模型阅读并分析
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Context Mode 更推荐：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;执行命令或读取数据
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; 在沙盒里运行分析代码
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; 只打印关键结论
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; 主 Agent 只看到结论
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如，让脚本统计日志中最常见的错误、提取失败测试、解析 JSON 中异常字段、聚合访问日志状态码。这种情况下，原始数据不需要进入主 Agent 上下文，收益非常明显。&lt;/p&gt;
&lt;p&gt;这类机制的本质是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;用程序计算替代模型阅读。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-文件内容在外部加载只返回处理结果&#34;&gt;2. 文件内容在外部加载，只返回处理结果&lt;/h3&gt;
&lt;p&gt;对于日志、CSV、JSON、构建输出、浏览器快照等大文件，Context Mode 会让文件在外部环境中被读取和处理。模型不直接看到完整文件，只看到处理代码输出的摘要或结论。&lt;/p&gt;
&lt;p&gt;这对“分析文件”很有用，但不适合“编辑文件”的场景。如果 Agent 要修改代码，它仍然需要读取相关代码内容，否则无法安全编辑。&lt;/p&gt;
&lt;h3 id=&#34;3-大输出转成可检索资料而不是直接返回全文&#34;&gt;3. 大输出转成可检索资料，而不是直接返回全文&lt;/h3&gt;
&lt;p&gt;当某次命令或工具调用产生很大的输出时，Context Mode 会把它保存并切分成多个片段，然后建立全文检索索引。&lt;/p&gt;
&lt;p&gt;返回给主 Agent 的通常不是原始全文，而是类似这样的信息：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;内容已索引，共包含若干片段。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;如需细节，请使用指定查询继续检索。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果调用时已经给出了明确意图，它也可能直接返回少量命中片段，例如和“TypeScript 错误”“失败测试”“HTTP 500”相关的部分。&lt;/p&gt;
&lt;p&gt;这种方式能减少初始上下文占用，但它不是无成本的。如果 Agent 后续为了理解问题反复检索很多次，最终返回的片段总量仍然可能变大。&lt;/p&gt;
&lt;h3 id=&#34;4-批量执行和批量检索&#34;&gt;4. 批量执行和批量检索&lt;/h3&gt;
&lt;p&gt;Context Mode 也提供了批量执行能力：一次运行多条命令、统一保存输出、建立索引，并一次性用多个查询提取结果。&lt;/p&gt;
&lt;p&gt;这可以减少多轮工具调用，避免 Agent 一次查一个问题、反复进出工具的低效模式。&lt;/p&gt;
&lt;p&gt;不过，这仍然依赖 Agent 能提出相对合理的查询。如果 Agent 不知道该找什么，批量检索也可能漏掉真正重要的信息。&lt;/p&gt;
&lt;h3 id=&#34;5-会话恢复和历史信息检索&#34;&gt;5. 会话恢复和历史信息检索&lt;/h3&gt;
&lt;p&gt;在长会话中，模型上下文可能被压缩或清理。Context Mode 会把一部分会话事件保存在外部，并在恢复时只注入必要提示。&lt;/p&gt;
&lt;p&gt;详细历史不一次性塞回上下文，而是通过检索按需找回。&lt;/p&gt;
&lt;p&gt;这对保持长任务连续性有帮助，但同样依赖检索质量和事件记录质量。&lt;/p&gt;
&lt;h2 id=&#34;真实价值在哪里&#34;&gt;真实价值在哪里&lt;/h2&gt;
&lt;p&gt;Context Mode 最有效的场景是“大数据，小答案”。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从大量日志中找出错误类型和示例。&lt;/li&gt;
&lt;li&gt;从测试输出中提取失败用例和关键栈。&lt;/li&gt;
&lt;li&gt;从构建输出中找出真正导致失败的错误。&lt;/li&gt;
&lt;li&gt;从大型 JSON 或 API 响应中提取异常记录。&lt;/li&gt;
&lt;li&gt;从浏览器快照中提取表单、按钮、链接等结构化信息。&lt;/li&gt;
&lt;li&gt;从文档中检索少量相关代码示例。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些任务的共同点是：原始材料很大，但最终给主 Agent 的信息可以很小。&lt;/p&gt;
&lt;p&gt;如果能够在外部用确定性程序完成统计、过滤和提取，Context Mode 的收益会非常明显。&lt;/p&gt;
&lt;h2 id=&#34;主要问题和边界&#34;&gt;主要问题和边界&lt;/h2&gt;
&lt;h3 id=&#34;1-指针不等于压缩&#34;&gt;1. 指针不等于压缩&lt;/h3&gt;
&lt;p&gt;把大输出变成索引入口或引用，并不天然减少总信息量。&lt;/p&gt;
&lt;p&gt;如果主 Agent 最终还是需要读取完整内容，那么这些内容迟早还是要进入上下文。此时 Context Mode 只是把一次大读取变成多次小读取，甚至可能增加工具调用成本。&lt;/p&gt;
&lt;p&gt;因此，它的收益取决于一个前提：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;任务不需要主 Agent 阅读完整原文，只需要少量关键证据或结论。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-搜索不能替代理解&#34;&gt;2. 搜索不能替代理解&lt;/h3&gt;
&lt;p&gt;当前的检索更接近增强版全文搜索，而不是完整语义理解。&lt;/p&gt;
&lt;p&gt;它擅长匹配明确的错误码、文件名、函数名、关键词、日志级别、命令输出中的固定格式。但当 Agent 不知道该搜什么，或者问题隐藏在跨段落、跨时间线、跨多个片段的模式里，纯搜索就可能失效。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;关键问题不是某个错误词，而是一组事件的顺序。&lt;/li&gt;
&lt;li&gt;真正原因出现在日志前面，报错出现在日志后面。&lt;/li&gt;
&lt;li&gt;输出里没有明显关键词，但异常模式需要归纳。&lt;/li&gt;
&lt;li&gt;搜索词选错，导致命中片段看起来相关但不是根因。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是生产环境里最需要警惕的地方。&lt;/p&gt;
&lt;h3 id=&#34;3-反复检索可能抵消收益&#34;&gt;3. 反复检索可能抵消收益&lt;/h3&gt;
&lt;p&gt;如果 Agent 反复进行多次搜索，每次返回若干片段，最终累计上下文和工具调用成本可能并不低。&lt;/p&gt;
&lt;p&gt;这种情况下，使用一个便宜的长上下文模型或 Sub-agent 先做整体摘要，可能更快，也可能质量更好。&lt;/p&gt;
&lt;p&gt;换句话说：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;检索适合已知目标。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;摘要适合未知目标。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;4-切块会损失全局结构&#34;&gt;4. 切块会损失全局结构&lt;/h3&gt;
&lt;p&gt;把 Markdown、日志或命令输出切成多个片段有利于检索，但也会带来上下文断裂。&lt;/p&gt;
&lt;p&gt;一些问题需要跨片段理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;错误栈和根因分布在不同位置。&lt;/li&gt;
&lt;li&gt;测试失败摘要和详细断言不在同一块。&lt;/li&gt;
&lt;li&gt;日志需要按时间线关联。&lt;/li&gt;
&lt;li&gt;文档的解释需要多个章节连起来看。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，切块索引适合做证据定位，不应该被视为完整分析能力。&lt;/p&gt;
&lt;h3 id=&#34;5-系统复杂度较高&#34;&gt;5. 系统复杂度较高&lt;/h3&gt;
&lt;p&gt;Context Mode 引入了额外组件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MCP 服务。&lt;/li&gt;
&lt;li&gt;hooks 规则。&lt;/li&gt;
&lt;li&gt;沙盒执行。&lt;/li&gt;
&lt;li&gt;外部存储。&lt;/li&gt;
&lt;li&gt;全文索引。&lt;/li&gt;
&lt;li&gt;缓存和失效判断。&lt;/li&gt;
&lt;li&gt;会话恢复。&lt;/li&gt;
&lt;li&gt;安全策略。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些复杂度是否值得，取决于实际工作负载。如果团队主要处理大日志、大测试输出、大文档和长会话，它可能很有价值。如果任务大多是小规模代码编辑，它的收益会比较有限。&lt;/p&gt;
&lt;h2 id=&#34;更适合生产环境的改进方向&#34;&gt;更适合生产环境的改进方向&lt;/h2&gt;
&lt;h3 id=&#34;1-先过滤再搜索&#34;&gt;1. 先过滤，再搜索&lt;/h3&gt;
&lt;p&gt;对日志、测试输出、构建输出、CI 输出来说，第一步不应该总是全文检索，而应该先做确定性过滤和解析。&lt;/p&gt;
&lt;p&gt;更合理的流程是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;原始输出
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; 识别输出类型
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; 使用专门规则解析
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; 提取结构化错误和告警
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  -&amp;gt; 必要时再检索原文证据
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例如，一个构建输出可以先被解析成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;构建失败：发现 3 个 TypeScript 错误和 1 个缺失模块错误。&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;findings&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;severity&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;kind&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;typescript&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;Cannot find module &amp;#39;@/lib/db&amp;#39;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;location&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;相关模块的导入位置&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;evidence&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;构建输出中的对应片段&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;stats&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;errors&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#d3869b&#34;&gt;3&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;warnings&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#d3869b&#34;&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这种结构化结果通常比搜索片段更适合 Agent 使用，因为 Agent 不需要猜关键词，也不需要先判断哪段日志值得看。&lt;/p&gt;
&lt;h3 id=&#34;2-建立专用解析器&#34;&gt;2. 建立专用解析器&lt;/h3&gt;
&lt;p&gt;日志和构建输出往往有稳定格式，适合用硬编码规则先抽取高价值信息。&lt;/p&gt;
&lt;p&gt;优先级较高的解析对象包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TypeScript 编译错误。&lt;/li&gt;
&lt;li&gt;ESLint 输出。&lt;/li&gt;
&lt;li&gt;Jest 或 Vitest 测试失败。&lt;/li&gt;
&lt;li&gt;Python traceback。&lt;/li&gt;
&lt;li&gt;Java stack trace。&lt;/li&gt;
&lt;li&gt;通用异常栈。&lt;/li&gt;
&lt;li&gt;Docker 构建失败。&lt;/li&gt;
&lt;li&gt;Kubernetes Pod 状态和事件。&lt;/li&gt;
&lt;li&gt;HTTP access log。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每个解析器应尽量返回：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;严重级别。&lt;/li&gt;
&lt;li&gt;错误类别。&lt;/li&gt;
&lt;li&gt;错误消息。&lt;/li&gt;
&lt;li&gt;文件和行号。&lt;/li&gt;
&lt;li&gt;去重后的错误分组。&lt;/li&gt;
&lt;li&gt;原始证据位置。&lt;/li&gt;
&lt;li&gt;置信度。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样可以让主 Agent 优先看到最重要的信息，而不是从大量片段中自行判断。&lt;/p&gt;
&lt;h3 id=&#34;3-在检索层之上加入便宜模型或-sub-agent&#34;&gt;3. 在检索层之上加入便宜模型或 Sub-agent&lt;/h3&gt;
&lt;p&gt;对于无法靠规则稳定解析的输出，可以让便宜的长上下文模型或 Sub-agent 做一层外部摘要。&lt;/p&gt;
&lt;p&gt;推荐职责划分：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Context Mode：数据层
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;便宜模型或 Sub-agent：分析层
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 Agent：决策和执行层
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;数据层负责保存原文、建立索引、提供证据定位。&lt;/p&gt;
&lt;p&gt;分析层负责阅读过滤后的材料或必要的原文窗口，判断哪些信息重要，归纳根因，输出结构化结论。&lt;/p&gt;
&lt;p&gt;主 Agent 只消费最终摘要和关键证据，在需要确认时再回查原文。&lt;/p&gt;
&lt;p&gt;这种方式比让主 Agent 多轮搜索更稳定，因为第一轮处理是“判断信息价值”，而不是“关键词召回”。&lt;/p&gt;
&lt;h3 id=&#34;4-让搜索退居为证据回查机制&#34;&gt;4. 让搜索退居为证据回查机制&lt;/h3&gt;
&lt;p&gt;在更成熟的架构里，搜索不应该承担全部分析责任。&lt;/p&gt;
&lt;p&gt;更好的定位是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;先过滤。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;再摘要。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;最后按需回查证据。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;也就是说：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用规则或程序找出明显问题。&lt;/li&gt;
&lt;li&gt;再用便宜模型或 Sub-agent 判断重要性和可能根因。&lt;/li&gt;
&lt;li&gt;最后用搜索按需拉取精确原文证据。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样既保留了 Context Mode 防止上下文爆炸的优势，也减少了反复搜索带来的低效。&lt;/p&gt;
&lt;h3 id=&#34;5-调整评估指标&#34;&gt;5. 调整评估指标&lt;/h3&gt;
&lt;p&gt;不能只看“返回给主 Agent 的字节数减少了多少”。生产环境更关心整体效果。&lt;/p&gt;
&lt;p&gt;应该同时评估：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主 Agent 上下文是否减少。&lt;/li&gt;
&lt;li&gt;总工具调用次数是否增加。&lt;/li&gt;
&lt;li&gt;总耗时是否变长。&lt;/li&gt;
&lt;li&gt;总 token 成本是否下降。&lt;/li&gt;
&lt;li&gt;是否漏掉关键错误。&lt;/li&gt;
&lt;li&gt;摘要是否忠实。&lt;/li&gt;
&lt;li&gt;证据是否可追溯。&lt;/li&gt;
&lt;li&gt;多轮检索是否变成瓶颈。&lt;/li&gt;
&lt;li&gt;对真实修复任务是否有帮助。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只有这些指标一起改善，才能说明方案在生产环境中真正有效。&lt;/p&gt;
&lt;h2 id=&#34;推荐的混合架构&#34;&gt;推荐的混合架构&lt;/h2&gt;
&lt;p&gt;更稳妥的生产架构可以是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1. 捕获
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   保存原始输出，避免直接进入主 Agent 上下文。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;2. 分类
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   判断输出属于日志、测试、构建、JSON、文档还是网页快照。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;3. 过滤
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   使用确定性规则提取错误、告警、失败项和证据位置。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;4. 摘要
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   可选地让便宜模型或 Sub-agent 做语义总结和根因归纳。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;5. 返回
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   主 Agent 获取结构化结论、关键证据和建议动作。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;6. 回查
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   只有在需要确认细节时，才检索或读取原文片段。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个架构保留了 Context Mode 的核心优势：不让大输出污染主上下文。同时也补上了它当前最薄弱的部分：判断哪些内容真正重要。&lt;/p&gt;
&lt;h2 id=&#34;结论&#34;&gt;结论&lt;/h2&gt;
&lt;p&gt;Context Mode 在生产环境中有价值，但它更像底层数据管道，而不是完整的智能分析方案。&lt;/p&gt;
&lt;p&gt;它最适合负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;隔离大输出。&lt;/li&gt;
&lt;li&gt;保存原始证据。&lt;/li&gt;
&lt;li&gt;提供按需检索。&lt;/li&gt;
&lt;li&gt;支持会话连续性。&lt;/li&gt;
&lt;li&gt;防止主 Agent 上下文被 stdout、stderr、日志和网页快照淹没。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不擅长单独解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;判断哪些日志最重要。&lt;/li&gt;
&lt;li&gt;在未知目标下发现根因。&lt;/li&gt;
&lt;li&gt;跨大量片段做全局语义归纳。&lt;/li&gt;
&lt;li&gt;替代便宜模型或 Sub-agent 的摘要能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，更合理的方向不是让主 Agent 反复搜索所有索引内容，而是把 Context Mode 作为数据层，在它之上叠加过滤器、专用解析器、便宜模型摘要或 Sub-agent 分析。&lt;/p&gt;
&lt;p&gt;最终目标应该是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;大数据留在外部。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;确定性规则先过滤。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;便宜模型负责摘要。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;主 Agent 只处理决策和修复。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;需要证据时再回查原文。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</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;h1 id=&#34;一场外围的狂欢&#34;&gt;一场外围的狂欢&lt;/h1&gt;
&lt;p&gt;Claude Code 的源码泄露了, 然后呢?&lt;/p&gt;
&lt;p&gt;公众号, X, RSS, Blog 全部都在讲 Claude Code 的 Harness Engineering&lt;/p&gt;
&lt;p&gt;Codex Cli / Gemini Cli / OpenCode / Crush 也是开源的, 为什么不早早的去研究他们呢?&lt;/p&gt;
&lt;p&gt;我的问题可以换成另外一个问题: Claude Code 比他们哪里做的更好?&lt;/p&gt;
&lt;h1 id=&#34;agent--agent-software&#34;&gt;Agent &amp;amp; Agent Software&lt;/h1&gt;
&lt;p&gt;我们先简单的聊一聊 Agent 以及 由 Agent 作为核心的 Software&lt;/p&gt;
&lt;p&gt;Agent 到底是什么?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我不想再看到 Agent 的 L1 - L5 这种垃圾言论了&lt;/p&gt;&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Tool Use&lt;/li&gt;
&lt;li&gt;Task Finish&lt;/li&gt;
&lt;li&gt;Model Driven&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;好了, 这就是我对于 Agent 的定义: AI 驱动, 使用工具, 完成任务&lt;/p&gt;
&lt;p&gt;这里就引出了几个问题:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;哪些工具? 工具能力/权限?&lt;/li&gt;
&lt;li&gt;什么任务? 怎么判断完成? 完成的路径&lt;/li&gt;
&lt;li&gt;Context: 有状态的数据 + 无状态的接口 = Agent&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Agent Software 就是帮助解决这些问题的外围设施&lt;/p&gt;
&lt;h3 id=&#34;tool&#34;&gt;Tool&lt;/h3&gt;
&lt;p&gt;工具决定了 Agent 的能力, 也决定了对环境的影响&lt;/p&gt;
&lt;p&gt;Write -&amp;gt; 文件&lt;/p&gt;
&lt;p&gt;Bash -&amp;gt; PC&lt;/p&gt;
&lt;p&gt;WebSearch / Fetch -&amp;gt; Content/Info&lt;/p&gt;
&lt;p&gt;这就是 Agent 最迷人的地方, 给他一个工具, 给他一个描述, 给他一个描述, 他就可以做到对外界的影响, 立竿见影&lt;/p&gt;
&lt;p&gt;同样的这也是最痛苦的地方, 工具是有副作用的, 那么很简单: 预测工具副作用, 然后拦截/执行&lt;/p&gt;
&lt;p&gt;这他妈的需要你去看 Harness ?&lt;/p&gt;
&lt;h3 id=&#34;task&#34;&gt;Task&lt;/h3&gt;
&lt;p&gt;不要再给我说 ReAct, CoT, ToT, 现在是2026 年了, 今天不聊侏罗纪的事&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;任务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;或者是目标, 这就是一个 Agent 执行要完成的事情&lt;/p&gt;
&lt;p&gt;这里又涉及到几个问题:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;任务描述是否足够清晰?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;问一问 - AskUserQuestion&lt;/li&gt;
&lt;li&gt;稀释 Context : 从文档/数据/代码中搜集 context&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;任务是否能够验证?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;程式化的验证:Code/UnitTest&lt;/li&gt;
&lt;li&gt;无反馈-自我判断&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;完成的路径&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;尝试过什么&lt;/li&gt;
&lt;li&gt;哪些路径失败了&lt;/li&gt;
&lt;li&gt;哪些可能性值得尝试&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我的问题是, Harness 能够解决什么问题?&lt;/p&gt;
&lt;p&gt;Harness 最终是不是回到了修改 Prompt Message 来实现? 回答我!&lt;/p&gt;
&lt;h3 id=&#34;context&#34;&gt;Context&lt;/h3&gt;
&lt;p&gt;OpenAI 的 Response API 是无状态的&lt;/p&gt;
&lt;p&gt;Anthropic 的 Messages API 是无状态的&lt;/p&gt;
&lt;p&gt;每一次请求通过传入 Tools / System Prompt / Message History 来拼装 Context 获取返回&lt;/p&gt;
&lt;p&gt;有状态的数据 -&amp;gt; Message History -&amp;gt; LLM -&amp;gt; Agent Loop Next Step&lt;/p&gt;
&lt;p&gt;最终的一切就变成了:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;状态数据的存储&lt;/li&gt;
&lt;li&gt;Message History 的封装&lt;/li&gt;
&lt;li&gt;Model 返回的处理&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Harness 解决了什么问题? Claude Code 解决了什么问题?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Context Length: 不要太长, 防止 Rot&lt;/li&gt;
&lt;li&gt;Context Reserve: Context 预备 Summerize, 超长 Tool 结果返回&lt;/li&gt;
&lt;li&gt;Prompt Cache: 成本考虑 + TTFT, 所以要尽量的做 Message Append&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;fuck-claude-code&#34;&gt;Fuck Claude Code&lt;/h1&gt;
&lt;p&gt;让我说的更直白一些:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code 配上垃圾模型产出一样是垃圾&lt;/li&gt;
&lt;li&gt;设计不是那么完善的Software配合出色的模型一样可以做到高质量的产出&lt;/li&gt;
&lt;li&gt;Claude Code 的核心从来就是模型, 是 A畜 的 Opus 模型&lt;/li&gt;
&lt;li&gt;Codex Cli 配合 GPT5.4 一样可以做到极其出色的效果&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;那么我的问题是: Claude Code 比 Codex/Gemini 值得学习的地方是什么?&lt;/p&gt;
&lt;p&gt;是配合设施和模型的融合, 为模型做配套, 而不是适配任何模型&lt;/p&gt;
&lt;h1 id=&#34;fuck-harness&#34;&gt;Fuck Harness&lt;/h1&gt;
&lt;p&gt;Harness Engineering 只能用来唬一唬完全不同软件工程的人&lt;/p&gt;
&lt;p&gt;如果你写过程序, 确定性, 函数的副作用, 事务性, 记录, 这他妈的不就是你每天在做的的事情吗?&lt;/p&gt;
&lt;p&gt;告诉我, 你每天写的 RPC/ API 是不是工具调用, 是不是用有状态的输入 + API Call 获得对环境(业务)的影响?&lt;/p&gt;
&lt;p&gt;状态存在哪里? 文件? DB? Cache? NoSQL? 哪里不能存? 要支持多快的存储, 多快的读取? 要支持事务性的写入? 要支持 Lock? 要Lock?&lt;/p&gt;
&lt;p&gt;抽象状态? 表结构设计? JSON 设计?&lt;/p&gt;
&lt;h1 id=&#34;fuck-djj-by-gemini&#34;&gt;Fuck DJJ by Gemini&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;非确定性 RPC 的地狱：&lt;/strong&gt; “你每天写的 RPC/API 是不是工具调用”。是，&lt;strong&gt;但传统 RPC 的调用方是确定性的代码，而 Agent 的调用方是一个随时可能发癫、产生幻觉、参数瞎填的概率模型。&lt;/strong&gt;  传统的防御性编程防的是人类和系统异常；Harness 要防的是一个有自己想法、甚至会“骗”接口的 AI。如何用确定性的代码逻辑，去兜底和引导一个非确定性的输入源，还要让它自己意识到错误并重试，这其中的恶心程度远超普通的 CRUD 和状态流转。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Harness 最终回到了修改 Prompt？&lt;/strong&gt; “Harness 最终是不是回到了修改 Prompt Message 来实现”。答案是：&lt;strong&gt;是的&lt;/strong&gt;。因为目前大模型的 API 本质上就是无状态的文本/Token 补全器。所有高大上的架构、长文本截断、工具执行结果的反馈，在请求发出去的那一秒，都必须被拍扁成极其讲究排版的 Prompt。但这不仅是“修改 Prompt”这么简单，这是&lt;strong&gt;动态的、程序化的 Context 编排&lt;/strong&gt;，是极其吃性能和 Token 成本的架构设计。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;能学到什么&#34;&gt;能学到什么?&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;如何设计 System Prompt 的？&lt;/li&gt;
&lt;li&gt;如何利用 Prompt Caching 来做极端成本优化和降低延迟的？&lt;/li&gt;
&lt;li&gt;怎么在 Context 爆炸之前做“截断与总结” 让 Agent 能够继续 Loop&lt;/li&gt;
&lt;li&gt;如何引导模型自我验证代码的？&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>E2B &amp; FireCracker by GPT5.4</title>
      <link>https://blog.pdjjq.org/post/e2b-z1sb21m.html</link>
      <pubDate>Fri, 03 Apr 2026 00:17:48 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/e2b-z1sb21m.html</guid>
      <description>&lt;h1 id=&#34;e2b--firecracker-by-gpt54&#34;&gt;E2B &amp;amp; FireCracker by GPT5.4&lt;/h1&gt;
&lt;p&gt;如果你第一次接触 Firecracker，很容易陷入一种混乱：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KVM 是不是虚拟机？&lt;/li&gt;
&lt;li&gt;QEMU 和 KVM 到底是什么关系？&lt;/li&gt;
&lt;li&gt;Firecracker 是不是“替代了” QEMU？&lt;/li&gt;
&lt;li&gt;如果我要自己做一个 mini Firecracker，最小需要做什么？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我最近就是沿着这个问题一路往下挖，最后发现：&lt;br&gt;
&lt;strong&gt;这几个东西其实不是同一层的概念。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它们的关系，如果一句话概括，就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;KVM&lt;/strong&gt;：内核里的硬件虚拟化执行后端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QEMU&lt;/strong&gt;：用户态的通用 VMM / 设备模拟器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firecracker&lt;/strong&gt;：用户态的极简 VMM，建立在 KVM 之上&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;QEMU 和 Firecracker 都可以用 KVM。&lt;/strong&gt;&lt;br&gt;
它们真正的区别，不在“有没有 KVM”，而在于：&lt;strong&gt;谁来做 VMM，以及这个 VMM 做得多大、多复杂。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这篇文章我想把这件事彻底讲清楚。&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;一问题的起点为什么-firecracker-会存在&#34;&gt;一、问题的起点：为什么 Firecracker 会存在？&lt;/h1&gt;
&lt;p&gt;Firecracker 不是凭空出现的，它解决的是一个非常现实的问题：&lt;/p&gt;
&lt;p&gt;在云计算场景里，比如 AWS Lambda、Fargate、Serverless 平台，一台物理机上往往要同时运行大量来自不同用户的代码。&lt;/p&gt;
&lt;p&gt;这里有一个经典矛盾：&lt;/p&gt;
&lt;h2 id=&#34;容器很轻但隔离不够强&#34;&gt;容器很轻，但隔离不够强&lt;/h2&gt;
&lt;p&gt;Docker、containerd 这条路线有明显优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;启动快&lt;/li&gt;
&lt;li&gt;资源开销小&lt;/li&gt;
&lt;li&gt;编排成熟&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但容器共享宿主内核。&lt;br&gt;
这意味着：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;容器的隔离边界，本质上不是硬件级别的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只要内核、namespace、cgroup、runtime 某一层出了问题，就可能导致跨容器突破。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;传统虚拟机隔离强但太重&#34;&gt;传统虚拟机隔离强，但太重&lt;/h2&gt;
&lt;p&gt;另一边是传统 VM：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有自己的内核&lt;/li&gt;
&lt;li&gt;隔离边界更强&lt;/li&gt;
&lt;li&gt;更接近“真正的一台独立机器”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但问题也很明显：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;启动慢&lt;/li&gt;
&lt;li&gt;内存开销大&lt;/li&gt;
&lt;li&gt;设备模型复杂&lt;/li&gt;
&lt;li&gt;历史兼容包袱重&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是想跑一个很小的函数，或者一个短生命周期任务，传统 VM 往往过重。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;firecracker-的目标&#34;&gt;Firecracker 的目标&lt;/h2&gt;
&lt;p&gt;Firecracker 的目标可以理解为：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;用尽量小的开销，换取 VM 级别的隔离。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不是追求“模拟一台完整 PC”，而是追求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;少设备&lt;/li&gt;
&lt;li&gt;少功能&lt;/li&gt;
&lt;li&gt;少攻击面&lt;/li&gt;
&lt;li&gt;快启动&lt;/li&gt;
&lt;li&gt;小内存占用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以它本质上是一个：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;建立在 KVM 之上的极简 microVM VMM。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;二先把关系讲清楚kvmqemufirecracker-各自是什么&#34;&gt;二、先把关系讲清楚：KVM、QEMU、Firecracker 各自是什么？&lt;/h1&gt;
&lt;p&gt;这是最容易混的地方。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-kvm-是什么&#34;&gt;1. KVM 是什么？&lt;/h2&gt;
&lt;p&gt;KVM，&lt;code&gt;Kernel-based Virtual Machine&lt;/code&gt;，是 Linux 内核里的一套虚拟化能力。&lt;/p&gt;
&lt;p&gt;它不是完整虚拟机，也不是设备模拟器。&lt;br&gt;
它的核心职责很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建 VM&lt;/li&gt;
&lt;li&gt;创建 vCPU&lt;/li&gt;
&lt;li&gt;让 guest 指令直接在物理 CPU 上运行&lt;/li&gt;
&lt;li&gt;当 guest 发生 VM Exit 时，把控制权还给用户态 VMM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以可以把 KVM 理解成：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;内核提供的“虚拟 CPU 执行引擎”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“guest 代码怎么高效运行在硬件上？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-qemu-是什么&#34;&gt;2. QEMU 是什么？&lt;/h2&gt;
&lt;p&gt;QEMU 是用户态的 VMM / 模拟器。&lt;/p&gt;
&lt;p&gt;它做的事情是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;加载 kernel / initrd / BIOS&lt;/li&gt;
&lt;li&gt;布置 guest memory&lt;/li&gt;
&lt;li&gt;模拟磁盘、网卡、串口、时钟等设备&lt;/li&gt;
&lt;li&gt;处理 guest 的 I/O 行为&lt;/li&gt;
&lt;li&gt;提供完整的启动流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果&lt;strong&gt;不配 KVM&lt;/strong&gt;，QEMU 也能跑，但那是纯软件模拟，会很慢。&lt;br&gt;
如果&lt;strong&gt;配 KVM&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;qemu-system-x86_64 -accel kvm ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;那么就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QEMU 管机器&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KVM 管 CPU 执行&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;QEMU 不是 KVM 的替代品，而是 KVM 上层最常见的 VMM。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-firecracker-是什么&#34;&gt;3. Firecracker 是什么？&lt;/h2&gt;
&lt;p&gt;Firecracker 也是用户态 VMM，但和 QEMU 的理念完全不同。&lt;/p&gt;
&lt;p&gt;QEMU 的目标是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通用&lt;/li&gt;
&lt;li&gt;兼容很多硬件&lt;/li&gt;
&lt;li&gt;能模拟一大堆设备&lt;/li&gt;
&lt;li&gt;覆盖各种历史负担&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Firecracker 的目标是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只做 microVM 需要的最小集合&lt;/li&gt;
&lt;li&gt;设备尽量少&lt;/li&gt;
&lt;li&gt;启动路径尽量短&lt;/li&gt;
&lt;li&gt;安全面尽量小&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 Firecracker 不是“没有 KVM 的另一个东西”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Firecracker = 更小的 VMM + KVM&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;三最关键的一句话它们的边界在哪里&#34;&gt;三、最关键的一句话：它们的边界在哪里？&lt;/h1&gt;
&lt;p&gt;如果把一台虚拟机拆开看，可以粗暴分成两层：&lt;/p&gt;
&lt;h2 id=&#34;下层让-guest-cpu-跑起来&#34;&gt;下层：让 guest CPU 跑起来&lt;/h2&gt;
&lt;p&gt;这是 &lt;strong&gt;KVM&lt;/strong&gt; 解决的。&lt;/p&gt;
&lt;h2 id=&#34;上层让它看起来像一台机器&#34;&gt;上层：让它看起来像一台机器&lt;/h2&gt;
&lt;p&gt;这是 &lt;strong&gt;QEMU / Firecracker&lt;/strong&gt; 解决的。&lt;/p&gt;
&lt;p&gt;也就是说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KVM 管“执行”&lt;/li&gt;
&lt;li&gt;VMM 管“机器行为”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以你可以记一句很有用的话：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KVM 管 CPU，VMM 管设备和启动流程。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;四firecracker-每一层到底在解决什么问题&#34;&gt;四、Firecracker 每一层到底在解决什么问题？&lt;/h1&gt;
&lt;p&gt;如果从工程视角看，Firecracker 不是“一个大黑盒”，而是一层一层在解决问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-jailer先把-vmm-自己关进笼子&#34;&gt;1. Jailer：先把 VMM 自己关进笼子&lt;/h2&gt;
&lt;p&gt;问题是：&lt;/p&gt;
&lt;p&gt;即使 guest 被 KVM 隔离了，&lt;strong&gt;Firecracker 进程自己仍然运行在 host 上&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果 VMM 本身有 bug，被打穿，它依旧可能伤害宿主机。&lt;/p&gt;
&lt;p&gt;所以 Firecracker 在启动前先用 Jailer 做一层外部隔离：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;namespace&lt;/li&gt;
&lt;li&gt;cgroup&lt;/li&gt;
&lt;li&gt;chroot&lt;/li&gt;
&lt;li&gt;降权&lt;/li&gt;
&lt;li&gt;最小文件可见性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“谁来限制 VMM 自己？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-kvm-初始化让-guest-能真正跑起来&#34;&gt;2. KVM 初始化：让 guest 能真正跑起来&lt;/h2&gt;
&lt;p&gt;问题是：&lt;/p&gt;
&lt;p&gt;你需要一种方式，让 guest 不靠软件模拟，而是尽量直接使用硬件。&lt;/p&gt;
&lt;p&gt;KVM 提供的核心对象一般是三个 fd：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;KVM fd&lt;/li&gt;
&lt;li&gt;VM fd&lt;/li&gt;
&lt;li&gt;vCPU fd&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后用户态 VMM 负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;配 guest 内存&lt;/li&gt;
&lt;li&gt;创建 vCPU&lt;/li&gt;
&lt;li&gt;设寄存器&lt;/li&gt;
&lt;li&gt;调 &lt;code&gt;KVM_RUN&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“guest 指令到底怎么执行？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-内存映射guest-看到的物理内存从哪来&#34;&gt;3. 内存映射：guest 看到的物理内存从哪来？&lt;/h2&gt;
&lt;p&gt;Guest 以为自己有一块连续物理内存。&lt;br&gt;
实际上，这通常只是 host 上的一段 &lt;code&gt;mmap&lt;/code&gt; 区域。&lt;/p&gt;
&lt;p&gt;KVM 帮你把：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;guest physical address&lt;/li&gt;
&lt;li&gt;映射到 host 内存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“guest 看到的 RAM 是怎么伪造出来的？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-vcpu-线程guest-cpu-怎么持续运行&#34;&gt;4. vCPU 线程：guest CPU 怎么持续运行？&lt;/h2&gt;
&lt;p&gt;每个 vCPU 一般对应一个 host 线程。&lt;br&gt;
VMM 的典型主循环是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;调 &lt;code&gt;KVM_RUN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;guest 执行&lt;/li&gt;
&lt;li&gt;遇到 VM Exit&lt;/li&gt;
&lt;li&gt;VMM 处理退出原因&lt;/li&gt;
&lt;li&gt;再次进入 guest&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“guest 怎么在 host 上持续执行，同时还能被暂停、恢复和管理？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-设备模拟guest-怎么做-io&#34;&gt;5. 设备模拟：guest 怎么做 I/O？&lt;/h2&gt;
&lt;p&gt;Guest 不可能直接摸宿主机硬件。&lt;br&gt;
所以 VMM 需要提供设备。&lt;/p&gt;
&lt;p&gt;Firecracker 采取的是最小设备集：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;​&lt;code&gt;virtio-net&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;​&lt;code&gt;virtio-blk&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;​&lt;code&gt;serial&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;​&lt;code&gt;rng&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;​&lt;code&gt;vsock&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;​&lt;code&gt;balloon&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;等少量必需设备&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里关键点是：Firecracker 更喜欢 &lt;strong&gt;VirtIO&lt;/strong&gt;，而不是模拟传统 PC 硬件。&lt;br&gt;
因为 VirtIO 更简单、更快、攻击面更小。&lt;/p&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“guest 如何访问网络、磁盘、串口这些外设？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-api-server外部怎么控制-microvm&#34;&gt;6. API Server：外部怎么控制 microVM？&lt;/h2&gt;
&lt;p&gt;平台不可能手动敲命令控制 VM。&lt;br&gt;
需要一个控制接口。&lt;/p&gt;
&lt;p&gt;Firecracker 提供的是 Unix Socket 上的 API，分为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;preboot 配置&lt;/li&gt;
&lt;li&gt;runtime 操作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设置 kernel&lt;/li&gt;
&lt;li&gt;挂 drive&lt;/li&gt;
&lt;li&gt;设置网卡&lt;/li&gt;
&lt;li&gt;start&lt;/li&gt;
&lt;li&gt;pause&lt;/li&gt;
&lt;li&gt;snapshot&lt;/li&gt;
&lt;li&gt;restore&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“平台控制面如何管理 VM 生命周期？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-mmdsguest-如何拿到自己的-metadata&#34;&gt;7. MMDS：guest 如何拿到自己的 metadata？&lt;/h2&gt;
&lt;p&gt;在云环境里，guest 常常要知道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自己是谁&lt;/li&gt;
&lt;li&gt;配置是什么&lt;/li&gt;
&lt;li&gt;应该拿什么 token / credential&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Firecracker 提供 MMDS，模仿云平台元数据服务。&lt;/p&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“guest 如何拿到属于自己的配置元数据？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-seccomp最后一层防线&#34;&gt;8. Seccomp：最后一层防线&lt;/h2&gt;
&lt;p&gt;即使已经有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jailer&lt;/li&gt;
&lt;li&gt;KVM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;仍然还要防止 Firecracker 进程乱调用系统调用。&lt;/p&gt;
&lt;p&gt;所以不同线程会被挂上不同的 seccomp 白名单。&lt;/p&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“如果 VMM 出问题，如何进一步限制伤害范围？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-snapshot--restore解决冷启动&#34;&gt;9. Snapshot / Restore：解决冷启动&lt;/h2&gt;
&lt;p&gt;这是 Firecracker 在 Serverless 场景非常关键的一环。&lt;/p&gt;
&lt;p&gt;不是每次都从：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;启 kernel&lt;/li&gt;
&lt;li&gt;启 OS&lt;/li&gt;
&lt;li&gt;启 runtime&lt;/li&gt;
&lt;li&gt;加载应用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而是先启动一次，再保存快照，后续直接恢复。&lt;/p&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“如何把冷启动延迟压到毫秒级别？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-event-loop怎么把-api设备定时器vcpu-串起来&#34;&gt;10. Event Loop：怎么把 API、设备、定时器、vCPU 串起来？&lt;/h2&gt;
&lt;p&gt;VMM 要同时处理很多事件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 请求&lt;/li&gt;
&lt;li&gt;设备 I/O&lt;/li&gt;
&lt;li&gt;中断&lt;/li&gt;
&lt;li&gt;定时器&lt;/li&gt;
&lt;li&gt;guest 退出&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Firecracker 用基于 &lt;code&gt;epoll&lt;/code&gt; 的事件循环来组织这些事情。&lt;/p&gt;
&lt;p&gt;它解决的是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“如何高效协调整个 VMM 内部的事件流？”&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;五如果我只是想做一个-mini-版-firecracker最小需要什么&#34;&gt;五、如果我只是想做一个 mini 版 Firecracker，最小需要什么？&lt;/h1&gt;
&lt;p&gt;这个问题比“Firecracker 全量实现”更有意义。&lt;/p&gt;
&lt;p&gt;因为大多数人第一次做 microVM runtime，不应该一上来就做：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jailer&lt;/li&gt;
&lt;li&gt;seccomp&lt;/li&gt;
&lt;li&gt;snapshot&lt;/li&gt;
&lt;li&gt;mmds&lt;/li&gt;
&lt;li&gt;virtio-blk&lt;/li&gt;
&lt;li&gt;多 vCPU&lt;/li&gt;
&lt;li&gt;热插拔&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你会直接淹死在复杂度里。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一个真正最小可运行的目标应该是什么&#34;&gt;一个真正“最小可运行”的目标应该是什么？&lt;/h2&gt;
&lt;p&gt;比如下面这个闭环就很好：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;本地启动 &lt;code&gt;N&lt;/code&gt; 个 microVM&lt;/li&gt;
&lt;li&gt;每个 guest 能联网&lt;/li&gt;
&lt;li&gt;每个 guest 启动后访问 host API&lt;/li&gt;
&lt;li&gt;host API 收到请求后 &lt;code&gt;count + 1&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果以这个目标倒推，最小需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux host + &lt;code&gt;/dev/kvm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;1 个 vCPU&lt;/li&gt;
&lt;li&gt;guest memory&lt;/li&gt;
&lt;li&gt;kernel&lt;/li&gt;
&lt;li&gt;initramfs&lt;/li&gt;
&lt;li&gt;串口&lt;/li&gt;
&lt;li&gt;virtio-net&lt;/li&gt;
&lt;li&gt;tap / bridge&lt;/li&gt;
&lt;li&gt;host counter API&lt;/li&gt;
&lt;li&gt;一个简单 launcher&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最重要的简化先不要磁盘&#34;&gt;最重要的简化：先不要磁盘&lt;/h2&gt;
&lt;p&gt;第一版最值得做的简化是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不要 root disk，不要 virtio-blk，直接用 initramfs。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为这样 guest 启动后直接执行 &lt;code&gt;/init&lt;/code&gt;，你把最小用户态程序打进 initramfs 就行。&lt;/p&gt;
&lt;p&gt;guest 的 &lt;code&gt;/init&lt;/code&gt; 做三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;配网&lt;/li&gt;
&lt;li&gt;调 &lt;code&gt;http://host/incr&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;打日志然后关机&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样能少掉非常多复杂度。&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;六为什么我一开始选择了-qemu--kvm-而不是直接手搓-vmm&#34;&gt;六、为什么我一开始选择了 “QEMU + KVM” 而不是直接手搓 VMM？&lt;/h1&gt;
&lt;p&gt;因为如果你的目标是先跑通业务闭环，QEMU 非常适合作为过渡层。&lt;/p&gt;
&lt;p&gt;比如你只想验证：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;guest 能起来&lt;/li&gt;
&lt;li&gt;guest 能通过 virtio-net 出网&lt;/li&gt;
&lt;li&gt;guest 能请求 host API&lt;/li&gt;
&lt;li&gt;host count 能变成 N&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那一开始直接上自研 VMM，你会立刻被这些问题包围：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux boot protocol&lt;/li&gt;
&lt;li&gt;guest memory 布局&lt;/li&gt;
&lt;li&gt;vCPU 初始化&lt;/li&gt;
&lt;li&gt;serial 模拟&lt;/li&gt;
&lt;li&gt;virtio-net&lt;/li&gt;
&lt;li&gt;TAP 转发&lt;/li&gt;
&lt;li&gt;VM Exit 处理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些全都是对的，但&lt;strong&gt;不该同时做&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;所以我当时的工程判断是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;先用 QEMU 作为 VMM，把 control plane、network、guest workload 跑通。&lt;/strong&gt;&lt;br&gt;
然后再逐步把 QEMU 替换掉。&lt;/p&gt;
&lt;p&gt;这条路线的好处是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;验证闭环先成立&lt;/li&gt;
&lt;li&gt;排障基准先稳定&lt;/li&gt;
&lt;li&gt;以后替换 backend 时，CLI 和业务验收标准不变&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h1 id=&#34;七qemu-和-kvm-的关系最容易被误解的一点&#34;&gt;七、QEMU 和 KVM 的关系，最容易被误解的一点&lt;/h1&gt;
&lt;p&gt;很多人会说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“我都用 QEMU 了，那还跟 KVM 有什么关系？”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;答案是：关系非常大。&lt;/p&gt;
&lt;p&gt;如果你运行的是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;qemu-system-x86_64 -accel kvm ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;那么你的 guest CPU 其实就是跑在 KVM 上的。&lt;br&gt;
只是你没有自己写 &lt;code&gt;/dev/kvm&lt;/code&gt; 的 ioctl，而是让 QEMU 帮你做了。&lt;/p&gt;
&lt;p&gt;所以准确说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;QEMU without KVM&lt;/strong&gt;：软件模拟，慢&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QEMU + KVM&lt;/strong&gt;：QEMU 管机器，KVM 管执行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Firecracker + KVM&lt;/strong&gt;：Firecracker 管机器，KVM 管执行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Firecracker 和 QEMU 真正不同的，是 VMM 层，而不是 KVM 层。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;八如果要从-qemu-逐步走向自研-firecracker-风格-vmm应该怎么走&#34;&gt;八、如果要从 QEMU 逐步走向“自研 Firecracker 风格 VMM”，应该怎么走？&lt;/h1&gt;
&lt;p&gt;这是我现在觉得最靠谱的一条工程路线。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第一步把外部体验先做稳&#34;&gt;第一步：把外部体验先做稳&lt;/h2&gt;
&lt;p&gt;在你真正替换 backend 之前，先把这些做稳：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;配置文件&lt;/li&gt;
&lt;li&gt;启动命令&lt;/li&gt;
&lt;li&gt;环境诊断&lt;/li&gt;
&lt;li&gt;日志&lt;/li&gt;
&lt;li&gt;运行时目录&lt;/li&gt;
&lt;li&gt;错误提示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比如我们后来补了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;​&lt;code&gt;doctor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;​&lt;code&gt;minivm.toml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;交互式 &lt;code&gt;init&lt;/code&gt; 向导&lt;/li&gt;
&lt;li&gt;backend abstraction&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类改动表面看和 KVM 没关系，但其实非常关键。&lt;br&gt;
因为它们决定了你以后调试新 backend 时，外部世界是不是稳定的。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第二步把-backend-seam-抽出来&#34;&gt;第二步：把 backend seam 抽出来&lt;/h2&gt;
&lt;p&gt;如果 &lt;code&gt;launcher&lt;/code&gt; 直接依赖 QEMU 命令行，那后面会很难换。&lt;/p&gt;
&lt;p&gt;所以需要有一个明确的 backend 边界：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;launcher 管 orchestration&lt;/li&gt;
&lt;li&gt;backend 管 guest runtime&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样之后：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;​&lt;code&gt;qemu&lt;/code&gt; backend 继续可用&lt;/li&gt;
&lt;li&gt;​&lt;code&gt;kvm&lt;/code&gt; backend 可以逐步补&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第三步做-boot-only-kvm-backend&#34;&gt;第三步：做 boot-only KVM backend&lt;/h2&gt;
&lt;p&gt;真正自研 VMM 的第一步，不应该是网络。&lt;br&gt;
而应该是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;只让 guest kernel 跑起来，并且能输出串口。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为一旦串口稳定，你就有了最基础的调试手段。&lt;/p&gt;
&lt;p&gt;目标应该是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建 VM&lt;/li&gt;
&lt;li&gt;分配内存&lt;/li&gt;
&lt;li&gt;创建 1 个 vCPU&lt;/li&gt;
&lt;li&gt;加载 kernel/initramfs&lt;/li&gt;
&lt;li&gt;guest 串口打印&lt;/li&gt;
&lt;li&gt;guest halt&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;第四步再接-virtio-net&#34;&gt;第四步：再接 virtio-net&lt;/h2&gt;
&lt;p&gt;等 boot 和串口稳定后，再做网络。&lt;/p&gt;
&lt;p&gt;这样你只是在已有可观测 boot path 上增加一个设备，而不是同时调试整个世界。&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;九我对-firecracker-最大的理解转变&#34;&gt;九、我对 Firecracker 最大的理解转变&lt;/h1&gt;
&lt;p&gt;以前我总以为：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Firecracker 是一个特别厉害的虚拟机软件。”&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;后来我才意识到，这个理解太模糊了。&lt;/p&gt;
&lt;p&gt;更准确的理解应该是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Firecracker 不是在发明新的 CPU 虚拟化原理，它是在 KVM 之上做了一次非常克制、非常工程化的 VMM 裁剪。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它厉害的地方在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;知道什么必须有&lt;/li&gt;
&lt;li&gt;知道什么可以砍&lt;/li&gt;
&lt;li&gt;知道什么必须延后&lt;/li&gt;
&lt;li&gt;知道如何用多层隔离把风险压低&lt;/li&gt;
&lt;li&gt;知道如何把启动路径缩短到适合云场景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以如果你自己也想做一个 mini Firecracker，真正重要的不只是“会不会调 KVM ioctl”，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你有没有能力把问题拆成一条最短闭环。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;十结语&#34;&gt;十、结语&lt;/h1&gt;
&lt;p&gt;如果把这篇文章压缩成一句话，那就是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KVM 解决的是“guest 怎么高效运行”，QEMU 和 Firecracker 解决的是“guest 作为一台机器怎么存在”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而 Firecracker 的核心价值，不在于“替代 KVM”，而在于：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;在 KVM 之上，把 VMM 做到了极简、快速、可控、安全。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对我来说，真正的收获不是背下了这些名词，而是终于看清了这条演进路线：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用 QEMU + KVM 跑通业务闭环&lt;/li&gt;
&lt;li&gt;再抽出 backend 边界&lt;/li&gt;
&lt;li&gt;再逐步替换成自研 KVM boot path&lt;/li&gt;
&lt;li&gt;最后才是 virtio-net、快照、安全隔离这些更复杂的能力&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>VAST小记</title>
      <link>https://blog.pdjjq.org/post/vast-notes-1kbtpa.html</link>
      <pubDate>Wed, 25 Feb 2026 14:06:24 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/vast-notes-1kbtpa.html</guid>
      <description>&lt;h1 id=&#34;vast小记&#34;&gt;VAST小记&lt;/h1&gt;
&lt;p&gt;2.25是在 VAST 的最后一天, 办公室也只回了一半的人&lt;/p&gt;
&lt;p&gt;转眼一年半过去了&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;24年 接到 Alice 的 Offer Call 的时候, 我正在沂河边上钓鱼, 风吹着我有些听不清她的话&lt;/p&gt;
&lt;p&gt;鱼漂轻轻的抖动, 马上要中鱼了&lt;/p&gt;
&lt;p&gt;嘟囔了几句之后, 我说OK&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;刀削面确实好吃, 但是也架不住要每天吃&lt;/p&gt;
&lt;p&gt;我推荐你去吃汉堡王&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;山西帮被谋朝篡位数次, 最终变成了勾帮&lt;/p&gt;
&lt;p&gt;我也变成了鱼勾&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;我热爱我的工作, 我也为它付出了我的心血&lt;/p&gt;
&lt;p&gt;我没有什么后悔的, 为此感到骄傲&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;别人的烟确实更好抽, 星哥的烟更是好抽中的好抽&lt;/p&gt;
&lt;p&gt;但是最后我还是还了他一条, 希望星哥身体健康&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;一起按过摩才是真兄弟, 勾帮的兄弟们没几个好东西, 更不用提淫柱了&lt;/p&gt;
&lt;p&gt;哦, 还有一个干人事的&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;天下没有不散的筵席, 一顿饭到了结尾总是寡言少语的沉默&lt;/p&gt;
&lt;p&gt;这不是一个容易的决定, 是的, 这不是一个容易的决定&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;我希望所有人都能开心, 希望你们一切都好&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>从dolt到Prolly-Tree</title>
      <link>https://blog.pdjjq.org/post/from-dolt-to-prollytree-iqzpl.html</link>
      <pubDate>Sat, 21 Feb 2026 15:19:47 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/from-dolt-to-prollytree-iqzpl.html</guid>
      <description>&lt;h1 id=&#34;从dolt到prolly-tree&#34;&gt;从dolt到Prolly-Tree&lt;/h1&gt;
&lt;p&gt;起因是看到了一个 repo: &lt;a href=&#34;https://github.com/dolthub/dolt&#34;&gt;https://github.com/dolthub/dolt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;非常有意思的一个特点是: 能够像使用git一样, 对数据库做版本管理/Diff&lt;/p&gt;
&lt;p&gt;单就版本管理倒不是什么新鲜的事情, 一个让我很好奇的地方是: 是怎么做到快速的 Diff 呢?&lt;/p&gt;
&lt;h1 id=&#34;merkle-tree&#34;&gt;Merkle Tree&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://yeasy.gitbook.io/blockchain_guide/05_crypto/merkle_trie&#34;&gt;https://yeasy.gitbook.io/blockchain_guide/05_crypto/merkle_trie&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;prolly-tree-by-gemini&#34;&gt;Prolly Tree (by Gemini)&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.dolthub.com/architecture/storage-engine/prolly-tree&#34;&gt;Prolly Tree&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prolly Tree&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Prolly Tree（Probabilistic B-Tree 的缩写）是一种混合数据结构，它完美结合了 ​&lt;strong&gt;B-Tree&lt;/strong&gt;​（适合数据库的高效有序读写与自平衡）和 ​&lt;strong&gt;Merkle Tree&lt;/strong&gt;（基于内容寻址、支持快速校验）的特性。&lt;/p&gt;
&lt;p&gt;想要理解它为什么能做到快速 Diff，需要对比来看：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;为什么传统的 B-Tree 做不到快速 Diff？&lt;/strong&gt;&lt;br&gt;
B-Tree 的节点分裂和树的最终形态高度依赖于​&lt;strong&gt;数据的插入顺序&lt;/strong&gt;。即使两个数据库包含完全一模一样的数据，只要写入顺序不同，它们底层的 B-Tree 结构就会截然不同。如果两棵树形状不一样，Diff 时就只能做全量扫描，效率极低。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;为什么单纯的 Merkle Tree 也不够？&lt;/strong&gt;&lt;br&gt;
传统的 Merkle Tree 虽然能通过哈希快速比对，但在应对数据库高频的随机插入和删除时，很难像 B-Tree 那样维持动态的自平衡和高效的区间查询。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Prolly Tree：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;​&lt;strong&gt;概率性分块 (Probabilistic Chunking)&lt;/strong&gt; ​：&lt;br&gt;
Prolly Tree 放弃了 B-Tree 那种“节点写满就分裂”的固定规则，而是对写入的数据应用​&lt;strong&gt;滚动哈希（Rolling Hash）&lt;/strong&gt; 。当某条数据的哈希值满足特定概率条件（例如二进制末尾连续出现 N 个 0）时，就在这里强行划定一个节点边界（Chunk Boundary）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;​&lt;strong&gt;历史无关性 / 结构确定性 (History Independence)&lt;/strong&gt; ​：&lt;br&gt;
因为节点的边界完全是由&lt;strong&gt;数据内容本身&lt;/strong&gt;计算出来的，与插入的时间和顺序毫无关系。这就带来了一个极为震撼的特性：​&lt;strong&gt;只要两个数据库里的数据集合相同，无论它们是怎么一步步修改成现在的样子的，最终生成的 Prolly Tree 结构和所有节点的哈希值都完全一模一样&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;​&lt;strong&gt;O(差异量) 的极速 Diff&lt;/strong&gt;：&lt;br&gt;
由于具备了“历史无关性”，Diff 操作变得极其简单。比较两个版本的数据库时，只需要自顶向下比对树的哈希值：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;根节点哈希相同？说明数据完全一致，Diff 瞬间结束。&lt;/li&gt;
&lt;li&gt;根节点不同？继续比对子节点，​&lt;strong&gt;只顺着哈希值不同的分支往下找&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;那些没有被修改的数据块，它们的哈希和物理结构在两个版本间是&lt;strong&gt;完全共享&lt;/strong&gt;的（Structural Sharing），直接跳过。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就使得数据库的 Diff 速度只与&lt;strong&gt;被修改的数据量&lt;/strong&gt;成正比，哪怕在 TB 级别的数据量下，只要只改了几行数据，也能在毫秒级内完成比对！&lt;/p&gt;
&lt;h1 id=&#34;可视化学习by-claude-code&#34;&gt;可视化学习(by Claude Code)&lt;/h1&gt;
&lt;p&gt;Repo: &lt;a href=&#34;https://github.com/Disdjj/prolly-tree-learn&#34;&gt;https://github.com/Disdjj/prolly-tree-learn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在线查看: &lt;a href=&#34;https://disdjj.github.io/prolly-tree-learn/&#34;&gt;https://disdjj.github.io/prolly-tree-learn/&lt;/a&gt;&lt;/p&gt;
</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=&#34;claude-code-agent-teams机制研究&#34;&gt;Claude Code Agent Teams机制研究&lt;/h1&gt;
&lt;p&gt;官方文档: &lt;a href=&#34;https://code.claude.com/docs/en/agent-teams&#34;&gt;https://code.claude.com/docs/en/agent-teams&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;而且需要注意, 在官方文档的组织中:&lt;/p&gt;
&lt;p&gt;Agent teams 和 Subagent 以及 Skill是一样的层级., 这其实意味着在长期规划中, 这是一项重要的基础能力&lt;/p&gt;
&lt;h1 id=&#34;agent-编排&#34;&gt;Agent 编排&lt;/h1&gt;
&lt;p&gt;现在有很多的 Agent 编排框架, 在做什么事情呢?&lt;/p&gt;
&lt;p&gt;在我看来核心是:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;切分任务&lt;/li&gt;
&lt;li&gt;分配并执行任务给 Subagent&lt;/li&gt;
&lt;li&gt;Subagent Context管理 + 通信&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;那么 Claude Code 是怎么解决这个问题的? 我们先看看文档中的描述:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;抽象了一个 Agent Teams, Lead做指挥以及协调&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持两种任务分配模式:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lead assigns: Lead 指定任务, 这也是大多数的 Agent 编排框架的实现&lt;/li&gt;
&lt;li&gt;Self-claim: teammate自主认领任务, 并且实现&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;四个核心组件&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Component&lt;/th&gt;
          &lt;th&gt;Role&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Team lead&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;The main Claude Code session that creates the team, spawns teammates, and coordinates work&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Teammates&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Separate Claude Code instances that each work on assigned tasks&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Task list&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Shared list of work items that teammates claim and complete&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Mailbox&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Messaging system for communication between agents&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;这里需要注意的几个:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;task list 的实现&lt;/li&gt;
&lt;li&gt;mailbox 的实现&lt;/li&gt;
&lt;li&gt;teamate 的启动以及分配任务的实现&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;system-prompt-的变更&#34;&gt;System Prompt 的变更&lt;/h1&gt;
&lt;p&gt;当我们谈及Agent能力的变化是, 除了模型能力, 我们还需要注意 Context的变化&lt;/p&gt;
&lt;p&gt;context 的起始其实就是 system prompt, 让我们看看开启这个功能前后, system prompt 的变化&lt;/p&gt;
&lt;p&gt;需要注意, 这里的System Prompt指的是Lead agent 的系统提示词, 在 teammate agent 中还有一些其他的agent&lt;/p&gt;
&lt;h3 id=&#34;task&#34;&gt;Task&lt;/h3&gt;
&lt;p&gt;Task 的变化不是那么的大, 在原本的 input schema 中增加了&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;		  &amp;#34;name&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &amp;#34;description&amp;#34;: &amp;#34;Name for the spawned agent&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &amp;#34;type&amp;#34;: &amp;#34;string&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &amp;#34;team_name&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &amp;#34;description&amp;#34;: &amp;#34;Team name for spawning. Uses current team context if omitted.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &amp;#34;type&amp;#34;: &amp;#34;string&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &amp;#34;mode&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &amp;#34;type&amp;#34;: &amp;#34;string&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &amp;#34;enum&amp;#34;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &amp;#34;acceptEdits&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &amp;#34;bypassPermissions&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &amp;#34;default&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &amp;#34;delegate&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &amp;#34;dontAsk&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &amp;#34;plan&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            ]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;taskcreate&#34;&gt;TaskCreate&lt;/h3&gt;
&lt;p&gt;这个 Tool 在过去是用来创建 todo list 的&lt;/p&gt;
&lt;p&gt;在这里的变化主要是description, 参数类型并没有什么变化&lt;/p&gt;
&lt;p&gt;这两个描述的区别如下：&lt;/p&gt;
&lt;h5 id=&#34;区别一适用场景的描述变化&#34;&gt;区别一：适用场景的描述变化&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;旧版本：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Non-trivial and complex tasks - Tasks that require careful planning or multiple operations&amp;rdquo;&lt;br&gt;
（非简单的复杂任务 - 需要仔细规划或多个操作的任务）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;新版本：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Non-trivial and complex tasks - Tasks that require careful planning or multiple operations &lt;strong&gt;and potentially assigned to teammates&lt;/strong&gt;&amp;rdquo;&lt;br&gt;
（非简单的复杂任务 - 需要仔细规划或多个操作，&lt;strong&gt;并且可能分配给团队成员&lt;/strong&gt;的任务）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h5 id=&#34;区别二任务状态和所有者说明&#34;&gt;区别二：任务状态和所有者说明&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;旧版本：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Check TaskList first to avoid creating duplicate tasks&amp;rdquo;&lt;br&gt;
（先检查任务列表以避免创建重复任务）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;新版本：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;&lt;strong&gt;New tasks are created with status &amp;lsquo;open&amp;rsquo; and no owner - use TaskUpdate with the&lt;/strong&gt; &lt;strong&gt;​&lt;code&gt;owner&lt;/code&gt;​&lt;/strong&gt;​ &lt;strong&gt;parameter to assign them&lt;/strong&gt;&amp;rdquo;&lt;br&gt;
（&lt;strong&gt;新任务创建时状态为&amp;quot;open&amp;quot;且没有所有者 - 使用带有&lt;/strong&gt; &lt;strong&gt;​&lt;code&gt;owner&lt;/code&gt;​&lt;/strong&gt;​ &lt;strong&gt;参数的 TaskUpdate 来分配任务&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Check TaskList first to avoid creating duplicate tasks&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tasklist&#34;&gt;TaskList&lt;/h3&gt;
&lt;p&gt;TaskList 这个 tool 过去是用来列出 Task 的列表, 在agent 更新 task 前会比较常调用&lt;/p&gt;
&lt;h5 id=&#34;1-使用场景-when-to-use-this-tool-的变化&#34;&gt;1. 使用场景 (When to Use This Tool) 的变化&lt;/h5&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Without Agent teams&lt;/th&gt;
          &lt;th&gt;With Agent Teams&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;❌ 无&lt;/td&gt;
          &lt;td&gt;✅ 新增: &amp;ldquo;Before assigning tasks to teammates, to see what&amp;rsquo;s available&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id=&#34;2-output-部分的变化&#34;&gt;2. Output 部分的变化&lt;/h5&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;With Agent teams&lt;/th&gt;
          &lt;th&gt;Without Agent teams&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;​&lt;code&gt;use with TaskGet, TaskUpdate&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;​&lt;code&gt;use with TaskGet, TaskUpdate, or assignTask&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;新增了 &lt;strong&gt;​&lt;code&gt;assignTask&lt;/code&gt;​&lt;/strong&gt; 工具的引用。&lt;/p&gt;
&lt;h5 id=&#34;3-新增整个章节&#34;&gt;3. 新增整个章节&lt;/h5&gt;
&lt;p&gt;With Agent teams版本新增了  &lt;strong&gt;&amp;ldquo;Teammate Workflow&amp;rdquo;&lt;/strong&gt;  章节：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;## 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&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;p&gt;除此之外还有三个新增加的 Tool, 这里的内容稍有有些多&lt;/p&gt;
&lt;h3 id=&#34;1-teamcreate创建团队&#34;&gt;1. TeamCreate（创建团队）&lt;/h3&gt;
&lt;h5 id=&#34;使用场景&#34;&gt;使用场景&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;用户明确要求使用团队、集群或一组代理&lt;/li&gt;
&lt;li&gt;用户提到希望代理协同工作、协调或合作&lt;/li&gt;
&lt;li&gt;任务足够复杂，需要多个代理并行工作时（例如：构建全栈功能、重构代码库、实现多步骤项目等）&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;参数说明&#34;&gt;参数说明&lt;/h5&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;参数&lt;/th&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;必填&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;team_name&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;新团队的名称&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;description&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;团队描述/目的&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;agent_type&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;团队负责人的类型/角色（如 &amp;ldquo;researcher&amp;rdquo;、&amp;ldquo;test-runner&amp;rdquo;）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h5 id=&#34;创建结果&#34;&gt;创建结果&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;团队文件：&lt;code&gt;~/.claude/teams/{team-name}.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;任务列表目录：&lt;code&gt;~/.claude/tasks/{team-name}/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;2-teamdelete删除团队&#34;&gt;2. TeamDelete（删除团队）&lt;/h3&gt;
&lt;h5 id=&#34;使用场景-1&#34;&gt;使用场景&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;所有队友都已完成工作&lt;/li&gt;
&lt;li&gt;需要清理团队资源&lt;/li&gt;
&lt;li&gt;集群工作完成时&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;参数说明-1&#34;&gt;参数说明&lt;/h5&gt;
&lt;p&gt;无需参数，会自动从当前会话的团队上下文中获取团队名称。&lt;/p&gt;
&lt;h5 id=&#34;注意事项&#34;&gt;注意事项&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;必须先关闭所有活跃成员&lt;/strong&gt;，否则删除会失败&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;删除内容包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;团队目录：&lt;code&gt;~/.claude/teams/{team-name}/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;任务目录：&lt;code&gt;~/.claude/tasks/{team-name}/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;清除当前会话的团队上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&#34;3-sendmessage发送消息&#34;&gt;3. SendMessage（发送消息）&lt;/h3&gt;
&lt;h5 id=&#34;消息类型一览&#34;&gt;消息类型一览&lt;/h5&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;type&lt;/th&gt;
          &lt;th&gt;用途&lt;/th&gt;
          &lt;th&gt;适用场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;message&lt;/td&gt;
          &lt;td&gt;私信单个队友&lt;/td&gt;
          &lt;td&gt;日常沟通、回复、跟进任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;broadcast&lt;/td&gt;
          &lt;td&gt;广播给所有队友&lt;/td&gt;
          &lt;td&gt;紧急问题、重大公告（慎用）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;shutdown_request&lt;/td&gt;
          &lt;td&gt;请求队友关闭&lt;/td&gt;
          &lt;td&gt;任务完成，要求队友优雅退出&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;shutdown_response&lt;/td&gt;
          &lt;td&gt;响应关闭请求&lt;/td&gt;
          &lt;td&gt;同意或拒绝关闭请求&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;plan_approval_response&lt;/td&gt;
          &lt;td&gt;审批计划&lt;/td&gt;
          &lt;td&gt;批准或拒绝队友的计划&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h5 id=&#34;31-type-message私信&#34;&gt;3.1 type: &amp;ldquo;message&amp;rdquo;（私信）&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;参数：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;参数&lt;/th&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;必填&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;type&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;固定为 &amp;ldquo;message&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;recipient&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;接收者的名称（如 &amp;ldquo;researcher&amp;rdquo;）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;content&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;消息内容&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;summary&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;5-10 字的摘要，在 UI 中预览显示&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;示例：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;recipient&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;researcher&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;请开始调研认证模块&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;认证模块调研任务分配&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h5 id=&#34;32-type-broadcast广播&#34;&gt;3.2 type: &amp;ldquo;broadcast&amp;rdquo;（广播）&lt;/h5&gt;
&lt;p&gt;⚠️ &lt;strong&gt;警告：广播成本很高，每个广播都会向每个队友发送单独消息&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;参数：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;参数&lt;/th&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;必填&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;type&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;固定为 &amp;ldquo;broadcast&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;content&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;广播内容&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;summary&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;5-10 字的摘要&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;适用场景：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;发现阻塞性 bug，需要全员停止工作&lt;/li&gt;
&lt;li&gt;影响所有人的重大公告&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;示例：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;broadcast&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;发现严重 bug，所有人暂停当前工作&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;summary&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;紧急：发现阻塞性问题&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h5 id=&#34;33-type-shutdown_request关闭请求&#34;&gt;3.3 type: &amp;ldquo;shutdown_request&amp;rdquo;（关闭请求）&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;参数：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;参数&lt;/th&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;必填&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;type&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;固定为 &amp;ldquo;shutdown_request&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;recipient&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;目标队友名称&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;content&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;关闭原因&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;示例：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;shutdown_request&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;recipient&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;researcher&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;任务完成，准备结束会话&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h5 id=&#34;34-type-shutdown_response关闭响应&#34;&gt;3.4 type: &amp;ldquo;shutdown_response&amp;rdquo;（关闭响应）&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;参数：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;参数&lt;/th&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;必填&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;type&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;固定为 &amp;ldquo;shutdown_response&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;request_id&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;从收到的请求中提取的请求 ID&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;approve&lt;/td&gt;
          &lt;td&gt;boolean&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;true = 同意关闭，false = 拒绝&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;content&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;拒绝时的理由&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;同意关闭示例：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;shutdown_response&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;request_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;abc-123&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;approve&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#fe8019&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;拒绝关闭示例：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;shutdown_response&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;request_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;abc-123&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;approve&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#fe8019&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;任务 #3 还在进行中，还需要 5 分钟&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h5 id=&#34;35-type-plan_approval_response计划审批&#34;&gt;3.5 type: &amp;ldquo;plan_approval_response&amp;rdquo;（计划审批）&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;参数：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;参数&lt;/th&gt;
          &lt;th&gt;类型&lt;/th&gt;
          &lt;th&gt;必填&lt;/th&gt;
          &lt;th&gt;说明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;type&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;固定为 &amp;ldquo;plan_approval_response&amp;rdquo;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;request_id&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;计划请求的 ID&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;recipient&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;提交计划的队友名称&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;approve&lt;/td&gt;
          &lt;td&gt;boolean&lt;/td&gt;
          &lt;td&gt;✅&lt;/td&gt;
          &lt;td&gt;true = 批准，false = 拒绝&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;content&lt;/td&gt;
          &lt;td&gt;string&lt;/td&gt;
          &lt;td&gt;❌&lt;/td&gt;
          &lt;td&gt;拒绝时的反馈意见&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;批准示例：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;plan_approval_response&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;request_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;abc-123&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;recipient&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;researcher&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;approve&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#fe8019&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;拒绝示例：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;plan_approval_response&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;request_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;abc-123&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;recipient&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;researcher&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;approve&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#fe8019&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;请为 API 调用添加错误处理&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h5 id=&#34;重要注意事项&#34;&gt;重要注意事项&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;始终使用名称引用队友&lt;/strong&gt;（如 &amp;ldquo;team-lead&amp;rdquo;、&amp;ldquo;researcher&amp;rdquo;），不要使用 UUID&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;队友的空闲状态是正常的&lt;/strong&gt;——空闲只意味着在等待输入，不代表出错或不可用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;消息自动送达&lt;/strong&gt;——不需要手动检查收件箱&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;默认使用私信&lt;/strong&gt;——除非确实需要全员关注，否则不要使用广播&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不要发送 JSON 格式的状态消息&lt;/strong&gt;——使用 TaskUpdate 标记任务完成，系统会自动发送空闲通知&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;看完了以上的 Tool 的变化, 可以看出: Team 这项功能的设计就是围绕着Lead 的编排设计, 通信方式通过 SendMessage 来传递信息.&lt;/p&gt;
&lt;p&gt;现在让我们来使用 Teams 功能来实现一个小项目, 看看效果如何, 按照官方的提示, 我们来制作一个小的 Todo 应用.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;I&amp;#39;m designing a CLI tool that helps developers track TODO comments across
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;their codebase. Create an agent team to explore this from different angles: one
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;teammate on UX, one on technical architecture, one playing devil&amp;#39;s advocate.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;我正在设计一个CLI工具，帮助开发者追踪代码库中的TODO注释。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;请创建一个团队从不同角度来探讨这个问题：一位负责用户体验，一位负责技术架构，还有一位扮演&amp;#34;唱反调&amp;#34;的角色。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;lead工作流程&#34;&gt;Lead工作流程&lt;/h1&gt;
&lt;h5 id=&#34;step1-创建-team&#34;&gt;Step1: 创建 Team&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;Tool Use:&lt;/strong&gt;  &lt;strong&gt;​&lt;code&gt;TeamCreate&lt;/code&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;team_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;todo-tracker-design&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;从UX、技术架构和批判性视角探讨TODO追踪CLI工具的设计&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;step2-创建-teammate-task&#34;&gt;Step2: 创建 Teammate Task&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;Tool Use:&lt;/strong&gt;  &lt;strong&gt;​&lt;code&gt;TaskCreate&lt;/code&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;subject&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;从用户体验角度分析TODO追踪CLI工具设计&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;作为UX专家，深入分析一个帮助开发者追踪代码库中TODO注释的CLI工具的用户体验设计。需要涵盖：\n1. 目标用户画像和使用场景\n2. CLI交互设计（命令结构、输出格式、颜色方案）\n3. 工作流集成（如何融入开发者日常工作流）\n4. 信息层级和展示方式（如何让开发者快速获取关键信息）\n5. 与现有工具（IDE、CI/CD）的集成体验\n6. 具体的命令设计建议和示例\n\n请用简体中文输出，给出具体、可操作的建议。&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;activeForm&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;分析用户体验设计&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Tool Use:&lt;/strong&gt;  &lt;strong&gt;​&lt;code&gt;TaskCreate&lt;/code&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;subject&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;从技术架构角度分析TODO追踪CLI工具设计&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;作为技术架构师，深入分析一个帮助开发者追踪代码库中TODO注释的CLI工具的技术方案。需要涵盖：\n1. 核心解析引擎设计（如何高效扫描和解析不同语言的TODO注释）\n2. 数据模型设计（TODO的元数据结构：作者、日期、优先级、关联issue等）\n3. 存储方案（本地缓存、增量扫描、性能优化）\n4. 可扩展性设计（插件系统、自定义规则、多语言支持）\n5. 技术栈选择建议（语言、关键依赖库）\n6. 与Git集成的技术方案（blame信息、commit关联）\n7. 给出核心数据结构和架构图的文字描述\n\n请用简体中文输出，给出具体的技术方案。&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;activeForm&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;分析技术架构设计&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Tool Use:&lt;/strong&gt;  &lt;strong&gt;​&lt;code&gt;TaskCreate&lt;/code&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;subject&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;从批判性角度挑战TODO追踪CLI工具的设计假设&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;activeForm&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;从批判角度审视设计&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;step3-创建并启动-subagent&#34;&gt;Step3: 创建并启动 Subagent&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;Tool Use:&lt;/strong&gt;  &lt;strong&gt;​&lt;code&gt;Task&lt;/code&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;UX专家分析TODO CLI&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;subagent_type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;tr:investigator&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;ux-expert&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;team_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;todo-tracker-design&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;还有其他两个, 太长了, 以此类推&lt;/p&gt;
&lt;h5 id=&#34;step4-分配任务&#34;&gt;Step4: 分配任务&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;Tool Use:&lt;/strong&gt;  &lt;strong&gt;​&lt;code&gt;TaskUpdate&lt;/code&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;taskId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;owner&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;ux-expert&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;in_progress&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Tool Use:&lt;/strong&gt;  &lt;strong&gt;​&lt;code&gt;TaskUpdate&lt;/code&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;taskId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;owner&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;architect&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;in_progress&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Tool Use:&lt;/strong&gt;  &lt;strong&gt;​&lt;code&gt;TaskUpdate&lt;/code&gt;​&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;taskId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;3&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;owner&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;devils-advocate&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;in_progress&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;teammate工作流程&#34;&gt;Teammate工作流程&lt;/h1&gt;
&lt;p&gt;按照官方文档的描述, 每一个 teammate 运行在一个独立的claude code实例中&lt;/p&gt;
&lt;p&gt;注意, 是一个单独的实例, 而不是像 subagent 一样跑在同一个实例下:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;subagent和 master 的通信是单向的, 也就是 master 实际上可以关注到 subagent 的全量行为, 默认是 Write 以及 output 都会吐到 Maste 的 context 中&lt;/li&gt;
&lt;li&gt;Lead 和 Teammate 的通信是靠 SendMessage 实现&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;system-message-的区别&#34;&gt;System Message 的区别&lt;/h3&gt;
&lt;p&gt;在这里 claude code的实现还是相当优雅的&lt;/p&gt;
&lt;p&gt;只是通过增加了一个Agent Teammate Community 的章节来实现&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# Agent Teammate Communication
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IMPORTANT: You are running as an agent in a team. To communicate with anyone on your team:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Use the SendMessage tool with type `message` to send messages to specific teammates
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Use the SendMessage tool with type `broadcast` sparingly for team-wide announcements
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Just writing a response in text is not visible to others on your team - you MUST use the SendMessage tool.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The user interacts primarily with the team lead. Your work is coordinated through the task system and teammate messaging.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Notes:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Agent threads always have their cwd reset between bash calls, as a result please only use absolute file paths.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- 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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- For clear communication with the user the assistant MUST avoid using emojis.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- 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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Here is useful information about the environment you are running in:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;env&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Working directory: /Users/test/code/empty
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Is directory a git repo: No
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Platform: darwin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;OS Version: Darwin 25.2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Today&amp;#39;s date: 2026-02-07
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/env&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;You are powered by the model named Opus 4.6. The exact model ID is claude-opus-4-6.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Assistant knowledge cutoff is May 2025.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;claude_background_info&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The most recent frontier Claude model is Claude Opus 4.6 (model ID: &amp;#39;claude-opus-4-6&amp;#39;).
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/claude_background_info&amp;gt;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# Agent 队友沟通
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;重要提示：你正在作为团队中的一个 Agent 运行。与团队中的任何人沟通时：
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- 使用 SendMessage 工具，类型设为 `message`，向特定队友发送消息
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- 谨慎使用 SendMessage 工具，类型设为 `broadcast`，用于全团队公告
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;仅用文字回复对团队中的其他人是不可见的——你必须使用 SendMessage 工具。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;用户主要与团队负责人交互。你的工作通过任务系统和队友消息进行协调。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;注意事项：
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- Agent 线程在每次 bash 调用之间会重置当前工作目录，因此请只使用绝对文件路径。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- 在最终回复中，请务必分享相关的文件名和代码片段。回复中返回的任何文件路径必须是绝对路径，不要使用相对路径。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- 为了与用户清晰沟通，助手必须避免使用表情符号。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;- 在调用工具之前不要使用冒号。例如&amp;#34;让我读取这个文件：&amp;#34;后接读取工具调用，应该改为&amp;#34;让我读取这个文件。&amp;#34;使用句号结尾。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;以下是你运行环境的有用信息：
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;env&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;工作目录：/Users/test/code/empty
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;该目录是否为 git 仓库：否
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;平台：darwin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;操作系统版本：Darwin 25.2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;今天的日期：2026-02-07
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/env&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;你由名为 Opus 4.6 的模型驱动。确切的模型 ID 是 claude-opus-4-6。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;助手的知识截止日期是 2025 年 5 月。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;claude_background_info&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;最新的前沿 Claude 模型是 Claude Opus 4.6（模型 ID：&amp;#39;claude-opus-4-6&amp;#39;）。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/claude_background_info&amp;gt;&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;tools-区别&#34;&gt;Tools 区别&lt;/h3&gt;
&lt;p&gt;在 teammate 实例中, 做了一些阉割, teammate 无法使用所有的 team tools&lt;/p&gt;
&lt;p&gt;这里就不在过多的描述了&lt;/p&gt;
&lt;h3 id=&#34;personality-设定&#34;&gt;Personality 设定&lt;/h3&gt;
&lt;p&gt;这里的 personality 设定是 Lead 给出teammate 设定后, 自动 load 的&lt;/p&gt;
&lt;p&gt;一个例子如下&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#fb4934&#34;&gt;teammate-message&lt;/span&gt; &lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;teammate_id&lt;/span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;team-lead&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;summary&lt;/span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;反对者挑战TODO CLI&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;你是一位经验丰富的&amp;#34;唱反调&amp;#34;角色（Devil&amp;#39;s Advocate）。请认领任务&lt;span style=&#34;color:#fabd2f&#34;&gt;#3并完成它&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;你的角色：对这个&amp;#34;帮助开发者追踪代码库中TODO注释的CLI工具&amp;#34;进行尖锐但建设性的批判。你的工作是确保团队不会盲目乐观，能看到潜在的问题和风险。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;请先搜索一下市面上已有的类似工具和竞品情况，然后涵盖以下方面：
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;1.&lt;/span&gt; **必要性质疑**：这个工具真的有必要吗？&lt;span style=&#34;color:#b8bb26&#34;&gt;`grep -rn &amp;#34;TODO&amp;#34; .`&lt;/span&gt; 有什么不够用的？IDE内置的TODO面板、GitHub Issues、Jira等工具已经能解决这个问题了吗？
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;2.&lt;/span&gt; **TODO本身的问题**：TODO注释是否本身就是代码异味？追踪它们是在解决问题还是在纵容坏习惯？
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;3.&lt;/span&gt; **竞品分析**：搜索市面上已有的类似工具（如 todo-tree VS Code插件、leasot、fixme、todo-txt 等），它们做得怎么样？为什么还需要一个新的？
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;4.&lt;/span&gt; **失败风险**：最可能让这个项目失败的3-5个原因
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;5.&lt;/span&gt; **范围蔓延风险**：哪些功能看起来诱人但应该果断砍掉？
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;6.&lt;/span&gt; **采用阻力**：开发团队为什么可能不愿意用这个工具？
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;7.&lt;/span&gt; **如果一定要做**：MVP应该聚焦什么？什么是这个工具能提供的、现有方案真正缺失的独特价值？
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;请尖锐但建设性。目标不是否定这个项目，而是帮助团队做出更好的决策。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;用简体中文输出。完成后用 TaskUpdate 将任务标记为 completed，然后向 team-lead 发送消息汇报你的分析结果。
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#fb4934&#34;&gt;teammate-message&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里要注意: CLAUDE.md 还是能够正常注入的.&lt;/p&gt;
&lt;h5 id=&#34;一些-claude-code-做的不够好的地方&#34;&gt;一些 Claude Code 做的不够好的地方&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;对于SendMessage 的处理, 虽然已经在提示词里强调过了, 但是还是会出现先 output 了详细的结果, 但是在调用 SendMessage 时只给出了概括信息的情况&lt;/li&gt;
&lt;li&gt;使用 AgentTeams 还是一个太过于前沿的事情, 以至于还没有达成最佳的实践&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当然了, 这不影响我认为Claude Code Agent Teams 是目前最优雅的方案, 和 Claude Code 的生态紧密结合, 没有做出任何破坏性的情况下, 还是很好的完成了自然语言 Agent 编排的功能.&lt;/p&gt;
&lt;p&gt;只能说 A÷还是强的&lt;/p&gt;
&lt;h1 id=&#34;总结&#34;&gt;总结&lt;/h1&gt;
&lt;h2 id=&#34;claude-code-agent-teams-核心架构&#34;&gt;Claude Code Agent Teams 核心架构&lt;/h2&gt;
&lt;p&gt;Claude Code 的 Agent Teams 功能采用了一种优雅的 &lt;strong&gt;Lead-Teammate 分层架构&lt;/strong&gt;，通过最小化的改动实现了多智能体协作：&lt;/p&gt;
&lt;h3 id=&#34;关键设计理念&#34;&gt;关键设计理念&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;非侵入式扩展&lt;/strong&gt;：在原有 System Prompt 基础上通过增量添加章节实现，而非重构整个系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;基于消息的松耦合通信&lt;/strong&gt;：Lead 和 Teammate 运行在独立实例中，通过 &lt;code&gt;SendMessage&lt;/code&gt; 工具进行异步通信&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任务驱动的协调机制&lt;/strong&gt;：复用并扩展了原有的 Task 系统，增加了 &lt;code&gt;owner&lt;/code&gt; 和团队分配能力&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;核心工具体系&#34;&gt;核心工具体系&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具类型&lt;/th&gt;
          &lt;th&gt;工具名称&lt;/th&gt;
          &lt;th&gt;核心功能&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;团队管理&lt;/td&gt;
          &lt;td&gt;​&lt;code&gt;TeamCreate&lt;/code&gt;​ / &lt;code&gt;TeamDelete&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;创建和销毁团队上下文&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;任务管理&lt;/td&gt;
          &lt;td&gt;​&lt;code&gt;Task&lt;/code&gt;​ / &lt;code&gt;TaskCreate&lt;/code&gt;​ / &lt;code&gt;TaskUpdate&lt;/code&gt;​ / &lt;code&gt;TaskList&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;创建、分配、追踪任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;通信机制&lt;/td&gt;
          &lt;td&gt;​&lt;code&gt;SendMessage&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;私信、广播、关闭请求、计划审批&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;lead-vs-teammate-的差异&#34;&gt;Lead vs Teammate 的差异&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lead Agent&lt;/strong&gt;：拥有完整工具集，负责创建团队、分配任务、协调队友&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Teammate Agent&lt;/strong&gt;：工具集有所阉割，专注于执行任务并通过消息汇报结果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;通信隔离&lt;/strong&gt;：与 Subagent 不同，Teammate 的详细执行过程不会自动流入 Lead 的上下文&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;当前局限性&#34;&gt;当前局限性&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;消息内容损失&lt;/strong&gt;：Teammate 可能在本地输出详细结果，但 SendMessage 中只传递概括信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最佳实践待完善&lt;/strong&gt;：作为前沿功能，社区尚未形成成熟的使用范式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协调开销&lt;/strong&gt;：广播机制成本较高，需要开发者谨慎使用&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;总体评价&#34;&gt;总体评价&lt;/h3&gt;
&lt;p&gt;Claude Code Agent Teams 代表了当前自然语言多智能体编排的&lt;strong&gt;最优雅方案之一&lt;/strong&gt;——它与 Claude Code 生态紧密结合，在不破坏现有功能的前提下，实现了声明式的团队协作能力。虽然仍处于早期阶段，但其设计思路值得关注和借鉴。&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>llmdoc viewer</title>
      <link>https://blog.pdjjq.org/post/llmdoc-viewer-scqzo.html</link>
      <pubDate>Mon, 26 Jan 2026 23:39:44 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/llmdoc-viewer-scqzo.html</guid>
      <description>&lt;p&gt;在之前的一个&lt;a href=&#34;https://linux.do/t/topic/1508439&#34;&gt;帖子&lt;/a&gt;以及&lt;a href=&#34;https://blog.pdjjq.org/post/llmdoc-solving-the-last-100-meters-of-ai-coding-z2tuegp.html&#34;&gt;博客&lt;/a&gt;中, 已经比较系统的讲述了llmdoc的诞生以及设计思路&lt;/p&gt;
&lt;p&gt;也收到了很多人的支持和鼓励, 让我觉得我的工作很有价值&lt;/p&gt;
&lt;p&gt;今天再给大家介绍下, 一个适配的工具, 把llmdoc直接转为可读的文档系统&lt;/p&gt;
&lt;h3 id=&#34;llmdoc-viewer&#34;&gt;llmdoc viewer&lt;/h3&gt;
&lt;p&gt;repo地址: &lt;a href=&#34;https://github.com/Disdjj/llmdoc-viewer&#34;&gt;https://github.com/Disdjj/llmdoc-viewer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在线访问: &lt;a href=&#34;https://llmdoc.tokenroll.ai/&#34;&gt;https://llmdoc.tokenroll.ai/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;示例: &lt;a href=&#34;https://llmdoc.tokenroll.ai/Disdjj/llmdoc-viewer&#34;&gt;https://llmdoc.tokenroll.ai/Disdjj/llmdoc-viewer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.pdjjq.org/images/PixPin_2026-01-26_23-55-02-20260126235503-cxo83c2.png&#34; alt=&#34;PixPin_2026-01-26_23-55-02&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.pdjjq.org/images/PixPin_2026-01-26_23-55-11-20260126235517-ib779mj.png&#34; alt=&#34;PixPin_2026-01-26_23-55-11&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;目的&#34;&gt;目的&lt;/h3&gt;
&lt;p&gt;启动这个项目实在比较久之前了, 当时的目的是发现llmdoc虽然是给llm看的, 但是在llmdoc的设计之处, 是非常强调文档架构的合理性以及可读性&lt;/p&gt;
&lt;p&gt;所以, 后面会发现, 如果把&lt;code&gt;llmdoc&lt;/code&gt;拿出来作为文档系统也远超 90% 开源项目的文档建设&lt;/p&gt;
&lt;p&gt;这也是一个比较惊喜的发现: 至少在2026年, 人能够非常好理解的结构, 对于AI来说是更好理解的&lt;/p&gt;
&lt;h3 id=&#34;实现&#34;&gt;实现&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;完全没有服务端存储, 部署在cloud flare pages上&lt;/li&gt;
&lt;li&gt;项目代码完全公开, 任何人都可以贡献&lt;/li&gt;
&lt;li&gt;目前只能获取开源项目的llmdoc&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;使用方式&#34;&gt;使用方式&lt;/h3&gt;
&lt;p&gt;你可以自部署或者使用我已经部署的pages&lt;/p&gt;
&lt;h5 id=&#34;访问主页&#34;&gt;访问主页&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://llmdoc.tokenroll.ai/&#34;&gt;https://llmdoc.tokenroll.ai/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.pdjjq.org/images/PixPin_2026-01-26_23-58-56-20260126235857-n3f890v.png&#34; alt=&#34;PixPin_2026-01-26_23-58-56&#34;&gt;&lt;/p&gt;
&lt;h5 id=&#34;输入repo链接&#34;&gt;输入repo链接&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;例如:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Disdjj/llmdoc-viewer&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Disdjj/llmdoc-viewer&#34;&gt;https://github.com/Disdjj/llmdoc-viewer&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;然后就可以开始愉快的看文档了&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.pdjjq.org/images/PixPin_2026-01-26_23-59-46-20260126235947-jfr5uja.png&#34; alt=&#34;PixPin_2026-01-26_23-59-46&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.pdjjq.org/images/PixPin_2026-01-27_00-00-03-20260127000005-c6g9que.png&#34; alt=&#34;PixPin_2026-01-27_00-00-03&#34;&gt;&lt;/p&gt;
</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=&#34;claude-code-skill&#34;&gt;Claude Code SKill&lt;/h1&gt;
&lt;h1 id=&#34;skill的实现以及指令&#34;&gt;Skill的实现以及指令&lt;/h1&gt;
&lt;p&gt;让我们来抓包Claude Code的请求, 看看Claude Skill的实现吧&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;Skill&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;input_schema&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;$schema&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;https://json-schema.org/draft/2020-12/schema&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;skill&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;args&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;Optional arguments for the skill&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;required&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;skill&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;additionalProperties&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#fe8019&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;instructions&#34;&gt;Instructions&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Execute a skill within the main conversation
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;When users ask you to run a \&amp;#34;slash command\&amp;#34; or reference \&amp;#34;/&amp;lt;&lt;span style=&#34;color:#fb4934&#34;&gt;something&lt;/span&gt;&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.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Example:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  User: \&amp;#34;run /commit\&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  Assistant: [Calls Skill tool with skill: \&amp;#34;commit\&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;How to invoke:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; Use this tool with the skill name and optional arguments
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; Examples:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#b8bb26&#34;&gt;`skill: \&amp;#34;pdf\&amp;#34;`&lt;/span&gt; - invoke the pdf skill
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#b8bb26&#34;&gt;`skill: \&amp;#34;commit\&amp;#34;, args: \&amp;#34;-m &amp;#39;Fix bug&amp;#39;\&amp;#34;`&lt;/span&gt; - invoke with arguments
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#b8bb26&#34;&gt;`skill: \&amp;#34;review-pr\&amp;#34;, args: \&amp;#34;123\&amp;#34;`&lt;/span&gt; - invoke with arguments
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#b8bb26&#34;&gt;`skill: \&amp;#34;ms-office-suite:pdf\&amp;#34;`&lt;/span&gt; - invoke using fully qualified name
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Important:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; When a skill is relevant, you must invoke this tool IMMEDIATELY as your first action
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; NEVER just announce or mention a skill in your text response without actually calling this tool
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; This is a BLOCKING REQUIREMENT: invoke the relevant Skill tool BEFORE generating any other response about the task
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; Only use skills listed in \&amp;#34;Available skills\&amp;#34; below
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; Do not invoke a skill that is already running
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; Do not use this tool for built-in CLI commands (like /help, /clear, etc.)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; If you see a &amp;lt;&lt;span style=&#34;color:#fb4934&#34;&gt;command-name&lt;/span&gt;&amp;gt; tag in the current conversation turn (e.g., &amp;lt;&lt;span style=&#34;color:#fb4934&#34;&gt;command-name&lt;/span&gt;&amp;gt;/commit&amp;lt;/&lt;span style=&#34;color:#fb4934&#34;&gt;command-name&lt;/span&gt;&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.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Available skills:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; tr:reviewPR: Conducts an automated review of a GitHub Pull Request.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; tr:updateDoc: Updates the documentation based on recent code changes.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; tr:initDoc: Generate great doc system for this project
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; tr:what: Clarifies a vague user request by asking clarifying questions.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; tr:withScout: Handles a complex task by first investigating the codebase, then executing a plan.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; tr:commit: Analyzes code changes and generates a conventional commit message.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;除此之外, 在 System 的 Tool Usage Policy 中还有这么一个&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; /&amp;lt;&lt;span style=&#34;color:#fb4934&#34;&gt;skill-name&lt;/span&gt;&amp;gt; (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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;1-功能&#34;&gt;1. 功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;核心定位：&lt;/strong&gt;  这是一个&lt;strong&gt;中转站&lt;/strong&gt;。它的核心功能是将自然语言（如 &amp;ldquo;help me fix this bug&amp;rdquo;）或 显式指令（如 &amp;ldquo;/commit&amp;rdquo;）映射到具体的系统预设能力（Skills）上。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;触发机制：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;意图识别：&lt;/strong&gt;  用户任务需要专业能力辅助时。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;符号触发：&lt;/strong&gt;  明确的斜杠命令 &lt;code&gt;/&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;状态管理：&lt;/strong&gt;  它不仅仅是调用，还包含了一个非常关键的&lt;strong&gt;状态检查&lt;/strong&gt;功能（检查 &lt;code&gt;&amp;lt;command-name&amp;gt;&lt;/code&gt; 标签），用于防止死循环（即防止模型在已经加载了技能的情况下再次尝试调用技能）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-构成与强调内容&#34;&gt;2. 构成与强调内容&lt;/h3&gt;
&lt;p&gt;采用了 &lt;strong&gt;Context（背景） -&amp;gt; Trigger（触发器） -&amp;gt; Examples（示例） -&amp;gt; Constraints（约束） -&amp;gt; Knowledge Base（可用列表）&lt;/strong&gt;  的经典结构。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;强调内容（Emphasis）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;即时性与阻断性（Blocking Requirement）：&lt;/strong&gt;  使用了大写的 &lt;code&gt;IMMEDIATELY&lt;/code&gt;​、&lt;code&gt;BLOCKING REQUIREMENT&lt;/code&gt;​、&lt;code&gt;BEFORE generating&lt;/code&gt;​。这是为了解决 LLM 常见的一个毛病： &lt;strong&gt;“光说不练”&lt;/strong&gt; （即模型回复“好的，我来帮你运行 commit”，但实际上并没有发起工具调用）。这里强制要求工具调用必须是第一动作。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;排他性（Negative Constraints）：&lt;/strong&gt;  明确规定了&lt;strong&gt;不该做什么&lt;/strong&gt;（不要用于内置 CLI 命令，不要只是嘴上说说，不要调用未列出的技能）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防递归（Loop Prevention）：&lt;/strong&gt;  特别强调了检测 &lt;code&gt;&amp;lt;command-name&amp;gt;&lt;/code&gt; 标签。这说明该系统是一个多轮对话或基于 Agent 的系统，技能加载后会注入新的 Prompt，必须防止 Router 再次拦截。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-适配高智能模型--声明式-vs-命令式&#34;&gt;3. 适配高智能模型 &amp;amp; 声明式 vs 命令式&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;适配度：高&lt;/strong&gt;。这段 Prompt 非常适合高智商模型。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;风格分析：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;混合风格&lt;/strong&gt;，但偏向&lt;strong&gt;命令式（Imperative）&lt;/strong&gt; 。&lt;/li&gt;
&lt;li&gt;虽然有声明式的描述（&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&gt;
&lt;li&gt;&lt;strong&gt;点评：&lt;/strong&gt;  对于&lt;strong&gt;工具调用（Function Calling）&lt;/strong&gt; 类任务，&lt;strong&gt;命令式&lt;/strong&gt;通常优于声明式。因为工具调用需要严格的语法和时序准确性，模糊的声明可能导致模型自由发挥而产生幻觉&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;思维链引导：&lt;/strong&gt;  Prompt 隐式地要求模型先进行判断（Check if relevant），然后行动。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;skill的调用&#34;&gt;Skill的调用&lt;/h1&gt;
&lt;h3 id=&#34;command-调用&#34;&gt;command 调用&lt;/h3&gt;
&lt;p&gt;让我们直接调用一个 command, 然后观察他的执行流程吧&lt;/p&gt;
&lt;p&gt;Claude Code 其实会把一个 command 的调用拆解成两个步骤&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;command-name&lt;/code&gt;Tag 包裹的命令请求&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;SKILL.md 的内容&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;CONTENT of SKILL&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;skill-folder&#34;&gt;skill folder&lt;/h3&gt;
&lt;p&gt;claude code skill 提供的另外一个令人兴奋的能力是: &lt;a href=&#34;https://code.claude.com/docs/en/skills#add-supporting-files&#34;&gt;https://code.claude.com/docs/en/skills#add-supporting-files&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;可以将 skill 涉及到的文件封装在同一个目录下, 这样可以实现更好的结构化.&lt;/p&gt;
&lt;p&gt;来看看这部分是怎么实现的, 我们将使用一个空的目录, 看看这个目录的结构吧&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.claude
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── skills
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    └── say-hello
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        ├── scripts
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        │   └── hello.sh
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        └── SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;skill 的内容非常简单&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;name: say-hello
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description: Say hello to the user
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;disable-model-invocation: &lt;span style=&#34;color:#fe8019&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;run scripts/hello.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;执行流程&#34;&gt;执行流程&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❯ /say-hello                                                                                                                                                                               
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏺ Bash(bash /Users/test/code/claude-code-skill-research/.claude/skills/say-hello/scripts/hello.sh)                                                                                         
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ⎿  Hello, World!                                                                                                                                                                         
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                                                                                                           
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏺ 脚本已成功执行，输出：Hello, World!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这部分其实就没有什么惊喜了, 但是这里要注意: 不要声明绝对目录&lt;/p&gt;
&lt;h5 id=&#34;请求设计&#34;&gt;请求设计&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;cache_control&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;ephemeral&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到, 这里也没有什么魔法, 或者很工程的设计, 唯一一个需要注意的是:&lt;/p&gt;
&lt;p&gt;​&lt;code&gt;Base directory for this skill: /Users/test/code/claude-code-skill-research/.claude/skills/say-hello&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;所以, skill 的 folder 是怎么实现的呢? 很简单, 在提示词里显式的说明了 skill 的路径, 好吧, 有点失望&lt;/p&gt;
&lt;h3 id=&#34;context-fork&#34;&gt;context-fork&lt;/h3&gt;
&lt;p&gt;另外一个值得观察的: context fork 的能力, 按照官网描述:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Set to &lt;code&gt;fork&lt;/code&gt; to run in a forked subagent context.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;听描述应该是说, 会启动一个 subagent, fork 主 agent 的 context, 在完全独立的上下文中运行&lt;/p&gt;
&lt;p&gt;让我们看一看, 这个 subagent 的使用吧&lt;/p&gt;
&lt;p&gt;现在修改下 SKILL.md, 使用 context fork 以及使用 general-purpose agent 来运行&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;name: say-hello
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;description: Say hello to the user
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;disable-model-invocation: true
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;context: fork
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;model: sonnet
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;agent: General-purpose
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;run scripts/hello.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;执行路径&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-plaintext&#34; data-lang=&#34;plaintext&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❯  hello                                                                        
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏺ Hello! How can I help you today?                                              
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❯ /say-hello                                                                    
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ⎿  The script ran successfully and outputted:                                 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     Hello, World!                                                              
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     The script is located at /Users/test/code/claude-code-skill-research/.claud
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     /skills/say-hello/scripts/hello.sh and simply prints a greeting message.   
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;❯ ok, hi, claude code                                                           
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;⏺ Hi! What can I help you with? 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;subagent的工作流&#34;&gt;subagent的工作流&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;model&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;claude-sonnet-4-5-20250929&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;assistant&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;thinking&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;thinking&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;signature&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&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&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;I&amp;#39;ll run the hello.sh script for you.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;tool_use&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;toolu_01ANhWLy3masVW2f6K7dcSTF&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;Bash&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;bash /Users/test/code/claude-code-skill-research/.claude/skills/say-hello/scripts/hello.sh&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;Run the hello.sh script&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;cache_control&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;ephemeral&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;user&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;tool_use_id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;toolu_01ANhWLy3masVW2f6K7dcSTF&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;tool_result&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;is_error&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#fe8019&#34;&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;cache_control&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#fb4934&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#b8bb26&#34;&gt;&amp;#34;ephemeral&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;subagent的-context&#34;&gt;subagent的 context&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/anthropics/claude-code/issues/20492&#34;&gt;https://github.com/anthropics/claude-code/issues/20492&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;很遗憾, subagent 里并不是fork master context, 看起来就像是运行普通的 agnet 一样, 只是把 Skill 的执行放在了 subagent 中&lt;/p&gt;
&lt;p&gt;我尝试了以下做法:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不指定 skill 使用的 subagent&lt;/li&gt;
&lt;li&gt;在 skill.md 中要求 load master agent 的上下文&lt;/li&gt;
&lt;li&gt;只使用 agent 不使用 context fork&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在看来, 这里的 context fork 指的并不是 fork master agent 的 context, 而是指的是 subagent skill + agent 本身的 context, 其实是一个 new 的 context, 有点失望&lt;/p&gt;
&lt;h1 id=&#34;claude-code-skill-机制研究总结&#34;&gt;Claude Code Skill 机制研究总结&lt;/h1&gt;
&lt;h2 id=&#34;核心发现&#34;&gt;核心发现&lt;/h2&gt;
&lt;h3 id=&#34;1-skill-工具本质&#34;&gt;1. Skill 工具本质&lt;/h3&gt;
&lt;p&gt;Skill 工具是一个&lt;strong&gt;路由器（Router）&lt;/strong&gt; ，而非执行器。它的职责是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将用户意图（自然语言或 &lt;code&gt;/command&lt;/code&gt;）映射到预定义的能力&lt;/li&gt;
&lt;li&gt;触发 Skill 的加载，而非直接执行&lt;/li&gt;
&lt;li&gt;通过 &lt;code&gt;&amp;lt;command-name&amp;gt;&lt;/code&gt; 标签进行状态管理，防止递归调用&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-执行流程&#34;&gt;2. 执行流程&lt;/h3&gt;
&lt;p&gt;Skill 调用被拆解为两步：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;用户输入 → Skill Router → 注入 Skill 内容 → LLM 执行
&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;标记注入&lt;/strong&gt;：&lt;code&gt;&amp;lt;command-name&amp;gt;/skill-name&amp;lt;/command-name&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内容注入&lt;/strong&gt;：SKILL.md 的实际指令&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这不是一个复杂的编排系统，而是&lt;strong&gt;简单的 Prompt 拼接&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;3-skill-folder-的实现&#34;&gt;3. Skill Folder 的实现&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;毫无魔法可言。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;实现方式仅仅是在 Prompt 中显式声明基础路径：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Base directory for this skill: /path/to/skill/folder
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;然后依赖 LLM 自行推断相对路径。这是一个脆弱且依赖模型理解能力的设计。&lt;/p&gt;
&lt;h3 id=&#34;4-context-fork-的真相最大失望点&#34;&gt;4. Context Fork 的真相（最大失望点）&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;文档描述具有误导性。&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;官方描述&lt;/th&gt;
          &lt;th&gt;实际行为&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&amp;ldquo;Fork&amp;rdquo; 主 Agent 的上下文&lt;/td&gt;
          &lt;td&gt;创建&lt;strong&gt;全新的独立上下文&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Subagent 继承对话历史&lt;/td&gt;
          &lt;td&gt;Subagent &lt;strong&gt;仅接收 Skill 指令&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;类似子进程 fork&lt;/td&gt;
          &lt;td&gt;更像是 &lt;strong&gt;spawn 一个新进程&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;实测证明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Subagent 无法访问主对话的任何历史&lt;/li&gt;
&lt;li&gt;不存在真正的上下文继承&lt;/li&gt;
&lt;li&gt;​&lt;code&gt;context: fork&lt;/code&gt;​ 的 &amp;ldquo;fork&amp;rdquo; 是&lt;strong&gt;名义上的&lt;/strong&gt;，实际是 &amp;ldquo;new&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;最终结论&#34;&gt;最终结论&lt;/h2&gt;
&lt;h3 id=&#34;定性评价&#34;&gt;定性评价&lt;/h3&gt;
&lt;p&gt;Claude Code Skill 系统是一个&lt;strong&gt;工程上极简、能力上有限&lt;/strong&gt;的实现：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;维度&lt;/th&gt;
          &lt;th&gt;评价&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;架构复杂度&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;低（本质是 Prompt 路由 + 拼接）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;扩展性&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;中（支持目录结构、多模型）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;隔离性&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;弱（依赖 LLM 自律，无真正沙箱）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;上下文管理&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;差（无真正的 fork，仅 spawn）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;文档准确性&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;存在误导（context fork 名不副实）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;核心局限&#34;&gt;核心局限&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;无真正的 Subagent 上下文继承&lt;/strong&gt;：如果你的 Skill 需要依赖主对话的上下文（如&amp;quot;基于之前讨论的方案执行 X&amp;rdquo;），当前设计无法满足&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;路径管理依赖模型理解&lt;/strong&gt;：Skill Folder 的相对路径解析完全依赖 LLM，存在幻觉风险&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;状态同步缺失&lt;/strong&gt;：Subagent 执行结果仅通过文本返回主对话，无结构化状态同步&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;‍&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>llmdoc: 解决AI Coding的最后100米</title>
      <link>https://blog.pdjjq.org/post/llmdoc-solving-the-last-100-meters-of-ai-coding-z2tuegp.html</link>
      <pubDate>Sat, 24 Jan 2026 02:44:29 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/llmdoc-solving-the-last-100-meters-of-ai-coding-z2tuegp.html</guid>
      <description>&lt;h1 id=&#34;llmdoc-解决ai-coding的最后100米&#34;&gt;llmdoc: 解决AI Coding的最后100米&lt;/h1&gt;
&lt;p&gt;在过去一年半的时间里, 我的工作流有了巨大的变化, 也亲眼见证了 AI Coding从兴起到现在的全面铺开, 个人工作模式已经被彻底颠覆了&lt;/p&gt;
&lt;p&gt;当我们回顾 2025 年的变化, 从年初的 gemini 2.5 到 sonnet 4.5, gpt-5-codex, opus 4.5, gemini 3, gpt-5.2-codex.&lt;/p&gt;
&lt;p&gt;我们应该认为: 模型的能力进步速度没有变得缓慢, 而且Cursor / Claude Code / OpenCode这类Coding Agent 的兴起, ToD 的应用也以令人难以预料的速度推进.&lt;/p&gt;
&lt;p&gt;随之而来的有另一个问题: Context, 是的上下文构建, 而且我想要说的是在严肃的面向生产的环境中的 Context, 这不是 chatbot 中用personality 这种可以糊弄过去的, 代码更新留下了遗漏是真的会出现线上故障的.&lt;/p&gt;
&lt;p&gt;让我们再看一下现在的这些Coding Agent 提供的能力吧:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AGENTS.md / CLAUDE.md: 注入到 User Message 满足 Context定制化的需求&lt;/li&gt;
&lt;li&gt;SubAgent / Fork-Context: 通过增加并行度实现 Task 的更快解决&lt;/li&gt;
&lt;li&gt;Skill / Command / Workflow: 虽然都在鼓吹 Skill 的渐进式披露, 但是我认为对于编程这种极度明确的场景太多的 Skill只会让你的模型编程笨蛋&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;但是, 还差了一些东西, Agent 实际上并不了解你的仓库, 我这里的了解指的是 Agent 实际上是通过Claude.md + 大量阅读代码文件才感知到了当前的环境.&lt;/p&gt;
&lt;p&gt;这是正常的工作模式, 我们也习惯于这一点, 但是这不是一个好的路径, 如果使用 codex-cli 的人对此应该深有感触: 不断的不断的阅读代码文件, 甚至是完全不需要阅读的代码文件, 在 Context 足够解决问题的时候, 才开始解决问题.&lt;/p&gt;
&lt;h1 id=&#34;context-floor&#34;&gt;Context Floor&lt;/h1&gt;
&lt;p&gt;我个人会把 &amp;ldquo;满足 Agent 解决需求的 context 的丰富度&amp;rdquo; 称之为: &lt;strong&gt;Context Floor&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;调用了多少工具&lt;/li&gt;
&lt;li&gt;占用了多少 Token&lt;/li&gt;
&lt;li&gt;关键信息的密度&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现在让我们回过头来看, 一些经典的解决方案:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LSP MCP: 通过提升关键Symbol密度 + 大量的工具调用 实现快速到达context floor&lt;/li&gt;
&lt;li&gt;ACE / RAG: 通过少量的工具调用 + 稀疏的关键信息密度, 很难保证信息的关联性和有效性&lt;/li&gt;
&lt;li&gt;Agentic RAG: 让 Agent 做一次信息的搜集, 提供一份概要, 一般使用 SubAgent, 在 claude code 中的&lt;code&gt;explorer&lt;/code&gt;就是承担了类似的作用, 虽然 subagent 执行任务可以保证 master agent 上下文足够干净, token 占用量也不高, 关键信息密度也很高, 但是耗时太久了 TTCR (Time to Context Floor)实在是难以忍受&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;那么, 有没有一个解决方案足够快, 信息密度足够高, 主Agent的Token 占用足够少, 信息和任务存在强关联而且有效呢?&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id=&#34;我的解决方案&#34;&gt;我的解决方案&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/cc-plugin&#34;&gt;https://github.com/TokenRollAI/cc-plugin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;调试了一个月, 在公司内验证了3 个月之后,我觉得在现在时间节点的 SOTA 模型的加持下, 这套方案足够满足需求了&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;llmdoc + subagnet RAG&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;过去我有几个帖子说名字他的诞生的思考过程, 这里就不在详细的介绍&lt;/p&gt;
&lt;h3 id=&#34;llmdoc&#34;&gt;llmdoc&lt;/h3&gt;
&lt;p&gt;一个在设计之处就用来解决AI 快速获取高密度信息 + 人类可读性的文档系统&lt;/p&gt;
&lt;p&gt;脱胎于 &lt;a href=&#34;https://diataxis.fr/&#34;&gt;diataxis&lt;/a&gt;, 做了些微不足道的改动&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.pdjjq.org/images/image-20260124033626-85hggq2.png&#34; alt=&#34;image&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;利用 Agent 能够快速批量 Read的能力, 文档中保留最关键的文件路径+负责的模块说明&lt;/li&gt;
&lt;li&gt;项目概览 + 架构 + 通过主题串联的 guides + refrence&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以上作为基础, 在代码库中插入一个 llmdoc, 满足人类可读性 + Agent 可读性&lt;/p&gt;
&lt;p&gt;示例: &lt;a href=&#34;https://github.com/TokenRollAI/minicc/tree/main/llmdoc&#34;&gt;https://github.com/TokenRollAI/minicc/tree/main/llmdoc&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;subagent-rag&#34;&gt;subagent RAG&lt;/h3&gt;
&lt;p&gt;为了解决并行度的问题, 必须要引入 subagent, 但是 subagent 用来做什么呢?&lt;/p&gt;
&lt;p&gt;主要是两件事情:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;调研: 基于 llmdoc + 现有的代码文件, 调研拆解后的任务作为前置条件&lt;/li&gt;
&lt;li&gt;记录: 在完成了编码任务之后, 自动的更新维护 llmdoc&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;问题&#34;&gt;问题&lt;/h1&gt;
&lt;p&gt;效果当然非常好, 或者说, 自从有了这一套解决方案之后我没有再使用过其他乱七八糟的 plugin&lt;/p&gt;
&lt;p&gt;但是有一个问题: &lt;strong&gt;贵&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而且不是有点贵, 大概是用1.5倍的价钱完成了从 85 分 -&amp;gt; 90 分的效果, 在一些简单的项目中, 效果一般, 但是越复杂的项目收益越好.&lt;/p&gt;
&lt;h1 id=&#34;效果&#34;&gt;效果&lt;/h1&gt;
&lt;p&gt;在我们公司的线上业务中, 后端代码仓库大概有 10W 行代码, 这套系统工作出色, 在几乎所有的情况下, 都能够准确的完成需求.&lt;/p&gt;
&lt;p&gt;在建立了 llmdoc 的基础上, 根据需求的大小, 需求完成的成本大概在 1 - 5 刀, 而且最关键的是: 人类介入的次数大大降低, 只需要 Review 代码, 以及执行少量的修改后, 就能够放心交付.&lt;/p&gt;
&lt;p&gt;现在也在我们的前端团队内开始推进, 效果依然出色.&lt;/p&gt;
&lt;p&gt;我推荐大家使用 cc-plugin, 强烈推荐!&lt;/p&gt;
&lt;p&gt;‍&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>2025 of DJJ</title>
      <link>https://blog.pdjjq.org/post/2025-of-djj-zbsyqf.html</link>
      <pubDate>Sun, 11 Jan 2026 12:50:59 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/2025-of-djj-zbsyqf.html</guid>
      <description>&lt;h1 id=&#34;工作&#34;&gt;工作&lt;/h1&gt;
&lt;p&gt;工作要分为两部分, 上半年忙碌充实, 下半年迷茫懒惰&lt;/p&gt;
&lt;p&gt;&amp;ldquo;迷茫懒惰&amp;rdquo; 是伴随我一生的诅咒, 一旦失去挑战, 失去兴趣, 我就会迷茫, 就会懒惰&lt;/p&gt;
&lt;p&gt;对待爱情, 对待工作都是一样的, 这可能是我跳槽频率这么高的一种解释&lt;/p&gt;
&lt;p&gt;我接受不了做平庸的无聊的事情&lt;/p&gt;
&lt;p&gt;可是, 一个问题是: 如果每一次对自己的工作评价都是平庸无聊, 真的是这个工作本身的问题吗?&lt;/p&gt;
&lt;p&gt;不完全是, 我觉得有几个主要的原因:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;能力不足, 无法承担最核心最具有挑战性的事情, 在职业生涯的早期尤为明显, 野心太大, 但是能力不足以支撑, 而且缺少耐心&lt;/li&gt;
&lt;li&gt;自我总结, 对于失败的总结不够彻底, 对于工作的总结不够, 自我反省缺失, 如果不知道自己为什么失败就永远不能成功&lt;/li&gt;
&lt;li&gt;岗位职责, 在第一线会有很好的嗅觉, 但是如果一直在第一线实际上会导致自己对于行业更高级信息的缺失&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;github&#34;&gt;Github&lt;/h1&gt;
&lt;p&gt;从2024年起, 一个很大的变化是, 我开始大量的阅读源码, 然后大量的写代码, 写自己想要做的项目, 来发泄自己的精力.&lt;/p&gt;
&lt;p&gt;我觉得做的还不错, 至少在下班之后我终于可以充分的释放自己的精力了&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/Disdjj&#34;&gt;https://github.com/Disdjj&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;ai&#34;&gt;AI&lt;/h1&gt;
&lt;p&gt;我悲观的认为两年之后, 传统的程序员就消失掉了&lt;/p&gt;
&lt;p&gt;Anthropic的ToD策略非常的成功, 几乎所有的模型厂家都想要抓住这个市场&lt;/p&gt;
&lt;p&gt;我认为一定会出现一个串联全部开发流程的产品, 有着极高的自定义程度以及可以连接产品从0-1的所有平台的&amp;quot;工具&amp;quot;&lt;/p&gt;
&lt;p&gt;然后彻底干掉程序员, 干掉那些懒惰的不愿意改变的人&lt;/p&gt;
&lt;p&gt;时代变了, 现在这个时代是: &lt;em&gt;&lt;strong&gt;不改变, 不追求改变, 那就会被迅速的淘汰掉. 而且我悲观的认为, 一旦被淘汰掉, 就会彻底被淘汰掉&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h1 id=&#34;next&#34;&gt;Next&lt;/h1&gt;
&lt;p&gt;产品的更迭速度会变的更快, 而且会越来越快&lt;/p&gt;
&lt;p&gt;在这种情况下, 我认为现在全世界都缺少的两种人:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;运营, 高效的和社区建立联系, 及时的收集用户反馈, 在社交媒体, KOL联系, 广告投放, SEO, GEO都了解的人, 不一定是人, 但是一定要能够用最高的效率把这些事情全部建立起来的人&lt;/li&gt;
&lt;li&gt;Productive Dev, 能够敏锐发觉需求, 并且能够快速的构建demo, 以及最快速的验证, 我认为这可能比做出产品更加重要&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我认为我后续最重要的几个工作:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;对AI驱动的社区运营, 社媒运营, SEO以及GEO的了解和实践&lt;/li&gt;
&lt;li&gt;更多的使用AI产品, 以及在现在的基础上获取更多的信息, 并且充分的使用这些信息和经验&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我认为在LLM Coding的帮助下, 我已经完成了所有技术上的准备.&lt;/p&gt;
&lt;p&gt;自大的说, 在过去一年的实践里, 我确认了自己的技术能力边界, 我可以实现我想做的任何事情, 可能很粗糙, 可能不够健壮. 但是足够了.&lt;/p&gt;
&lt;p&gt;是时候去往下一个阶段了, 不管是不是准备好了, 必须要出发了&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>代洪全之死</title>
      <link>https://blog.pdjjq.org/post/death-of-dai-hongquan-tdmhu.html</link>
      <pubDate>Tue, 30 Dec 2025 15:41:20 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/death-of-dai-hongquan-tdmhu.html</guid>
      <description>&lt;h1 id=&#34;代洪全之死&#34;&gt;代洪全之死&lt;/h1&gt;
&lt;p&gt;代洪全做了几十年的祗客(也说是纸客), 这是一个美化的说法. 其实就是在白事中主持仪式, 安抚亡人的角色.&lt;/p&gt;
&lt;p&gt;再更早的时间里, 这不是一个光彩的角色, 最近十几年带着一些神秘的色彩, 反而愈发敬重他了.&lt;/p&gt;
&lt;p&gt;但是毕竟做了几十年, 家家户户也都有些人情往来.&lt;/p&gt;
&lt;p&gt;出殡的早晨, 行人情的人把十字路口堵满了, 他们也确实留下了几滴真切的眼泪.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;我其实做过了心理建设, 一个88岁, 罹患癌症, 肺炎每年都要得两次的老年人. 料想也不会活的太久.&lt;/p&gt;
&lt;p&gt;但是, 活着就比总比死了强&lt;/p&gt;
&lt;p&gt;活着我回家还能逗逗你, 死了我就只能和坟头说话&lt;/p&gt;
&lt;p&gt;他的生死观念是极为奔放的: 一把火昂了, 你们姊妹也不用为我难受, 这个年纪是好死&lt;/p&gt;
&lt;p&gt;我也把这个混账话给我爸说了: &amp;ldquo;等你死了, 我也一把火昂了, 哭两天&amp;rdquo;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;代洪全一生养育了五个女儿, 一个儿子&lt;/p&gt;
&lt;p&gt;她们健康成长, 渡过了贫困的童年, 有一技之长, 现在都不会为生活而难过&lt;/p&gt;
&lt;p&gt;代洪全死前所有的子女都在身边, 他最后在镇静剂的帮助下, 安详的走了&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;代洪全是我的爷爷, 他死在了2025年12月26日&lt;/p&gt;
&lt;p&gt;他塑造了我性格和精神的底色, 我是他在新世纪的投射&lt;/p&gt;
&lt;p&gt;痛苦是来自于爱, 我爱你, 我也痛苦着&lt;/p&gt;
&lt;p&gt;我永远爱你, 我也会永远痛苦.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>我草这个世界</title>
      <link>https://blog.pdjjq.org/post/i-mess-with-this-world-1drsao.html</link>
      <pubDate>Mon, 15 Dec 2025 03:04:51 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/i-mess-with-this-world-1drsao.html</guid>
      <description>&lt;p&gt;我草这个世界, 我草我自己&lt;/p&gt;
&lt;p&gt;我做了非常傻逼的事情, 把自己的apikey暴露到了github上, 然后被爽蹬50刀&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.pdjjq.org/images/PixPin_2025-12-15_03-08-59-20251215030905-9k3mekx.png&#34; alt=&#34;PixPin_2025-12-15_03-08-59&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/t3day/blob/992d2d4a4eb9833ccd5233020b262ba14205924b/scripts/test-gemini.ts#L8&#34;&gt;暴露的文件&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其实被蹬了50刀也不是什么大不了的事情, 确实是做了傻逼事情, 我也认了&lt;/p&gt;
&lt;p&gt;但是这个畜生, 蹬了我50刀也没给我star&lt;/p&gt;
&lt;p&gt;我草这个世界, 这个世界上还有好人吗&lt;/p&gt;
&lt;p&gt;😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡😡&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>最近在做啥 (2025.11 - 2025.12)</title>
      <link>https://blog.pdjjq.org/post/what-are-you-doing-recently-202511-202512-z198jyj.html</link>
      <pubDate>Tue, 09 Dec 2025 09:35:52 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/what-are-you-doing-recently-202511-202512-z198jyj.html</guid>
      <description>&lt;p&gt;​#最近在做啥#&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://today.tokenroll.ai/&#34;&gt;today-3d&lt;/a&gt;: 今日3D, 结合当下最强的AI技术: gemini3 , nano banana , tripo 3.0 制作每日最有趣的内容&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://children-of-god.pdjjq.org/&#34;&gt;神的孩子们&lt;/a&gt;: 沉浸式体验山上彻也的人生&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/miniCC&#34;&gt;minicc&lt;/a&gt;: 实现一个最简单版本的Cloud Code&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/rs-agent-gear&#34;&gt;agent-gear&lt;/a&gt;: 超高性能的agent basic tools&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/webhooker&#34;&gt;webhooker&lt;/a&gt;: 转发连接任意IM Webhook&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/curl-resume&#34;&gt;curl-resume&lt;/a&gt;: 一个炫酷的终端动画项目 &lt;code&gt;curl -N me.pdjjq.org&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/CR-template&#34;&gt;Claude Code CR&lt;/a&gt;: 基于 Claude Code 的自动化 PR 代码审查的Github action 模版&lt;/p&gt;
&lt;p&gt;‍&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>agent-gear: LLM Tools 开发的瑞士军刀</title>
      <link>https://blog.pdjjq.org/post/agentgear-swiss-army-knife-by-llm-tools-zjfx9w.html</link>
      <pubDate>Sun, 30 Nov 2025 01:32:15 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/agentgear-swiss-army-knife-by-llm-tools-zjfx9w.html</guid>
      <description>&lt;h1 id=&#34;agent-gear-llm-tools-开发的瑞士军刀&#34;&gt;agent-gear: LLM Tools 开发的瑞士军刀&lt;/h1&gt;
&lt;p&gt;​#LLM#​ #Agent#​ #AI#​ #Rust#​ #Python#&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/rs-agent-gear&#34;&gt;Repo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://llmdoc.tokenroll.ai/TokenRollAI/rs-agent-gear&#34;&gt;agent-gear在线文档&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;背景&#34;&gt;背景&lt;/h1&gt;
&lt;p&gt;最近在开发&lt;a href=&#34;https://github.com/TokenRollAI/miniCC&#34;&gt;&lt;code&gt;minicc&lt;/code&gt;&lt;/a&gt;​ , 在为minicc提供tools时, 发现一件怪事. 整个项目的有效代码 2千行, &lt;a href=&#34;https://github.com/TokenRollAI/minicc/blob/main/minicc/tools.py&#34;&gt;tools&lt;/a&gt;的实现竟然占了快一半.&lt;/p&gt;
&lt;p&gt;为什么? 有一半的代码是在处理 filesystem&lt;/p&gt;
&lt;p&gt;今天在查看&lt;a href=&#34;https://github.com/langchain-ai/deepagents/blob/master/libs/deepagents/deepagents/backends/filesystem.py&#34;&gt;deepagents&lt;/a&gt;的源码, 实现的也相当丑陋. 大量的使用了 os / shutil / glob这些标准库. 总给人一种裸奔的感觉.&lt;/p&gt;
&lt;p&gt;直觉上觉得: 现在需要一个成熟的包库, 用来给Agnet System提供基本能力. 而不是让每个Agent系统都要手动写一遍tools, 这简直是一种折磨.&lt;/p&gt;
&lt;h1 id=&#34;tools&#34;&gt;Tools&lt;/h1&gt;
&lt;p&gt;LLM 或者说 Agent, 至少要有哪些工具?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;TODO&lt;/li&gt;
&lt;li&gt;AskUserQuestions&lt;/li&gt;
&lt;li&gt;SubAgent&lt;/li&gt;
&lt;li&gt;Net: WebSearch / WebFetch&lt;/li&gt;
&lt;li&gt;FileSystem: Read / Write / Edit / Search(Grep) / Glob / List&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;先列到这里, 这里我觉得应该能够看出来, 对于一个Agent, 或者说对于一个典型的Coding Agent系统来说.&lt;/p&gt;
&lt;p&gt;FileSystem是最基本而且最重要的操作, 那我们就从这里开始&lt;/p&gt;
&lt;h1 id=&#34;架构&#34;&gt;架构&lt;/h1&gt;
&lt;p&gt;如果追求简单, 我们可以直接放在一个python中, 糊上500行代码, 然后直接push pypi就好了&lt;/p&gt;
&lt;p&gt;但是既然做这件事情, 不如做的出色一点, 比如说把性能做的好一些.&lt;/p&gt;
&lt;p&gt;怎么把性能做的好呢? 别烧脑了, &lt;a href=&#34;https://gemini.google.com/app/4bed3596cc3d5b05&#34;&gt;问问gemini吧&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最后我的解决思路是:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pyo3 + Maturin: Rust 写核心代码, python封装&lt;/li&gt;
&lt;li&gt;内存文件树 + FS Notify: 把list/glob操作变成纯内存查找, 不经过OS&lt;/li&gt;
&lt;li&gt;ripgrep + globset: 直接使用性能出色稳定的三方库&lt;/li&gt;
&lt;li&gt;Batch: 提供batch操作, 少次多量的获取文件.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;思路非常棒, 唯一的问题是: 我不会写Rust, 上一次写还是3年前, WTF?!&lt;/p&gt;
&lt;p&gt;但是不要紧, 我们有伟大的Vibe Coding!&lt;/p&gt;
&lt;h1 id=&#34;实现&#34;&gt;实现&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;在Plan模式下, 把完整的需求发给Claude Code, 生成一份计划书.&lt;/li&gt;
&lt;li&gt;Review Plan: 不错&lt;/li&gt;
&lt;li&gt;开始写: 撒泡尿, 回来review代码 (你又看不懂你Review你🐴呢)&lt;/li&gt;
&lt;li&gt;到Context限制了, 保存下进度, 保留TODO, 已实现的内容. 记录到&lt;code&gt;llmdoc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;/clear, 继续写&lt;/li&gt;
&lt;li&gt;Claude code写完了, 写单元测试, 开始改bug&lt;/li&gt;
&lt;li&gt;bug改完, 写benchmark, 开始提升性能&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/TokenRollAI/rs-agent-gear?tab=readme-ov-file#performance&#34;&gt;性能不错&lt;/a&gt;, 找codex + gemini 开始review实现, 然后狂改&lt;/li&gt;
&lt;li&gt;好, 提交到Pypi, 配置CICD&lt;/li&gt;
&lt;li&gt;CI改了他妈的10轮, 终于跑通了, 我草这个世界.&lt;/li&gt;
&lt;li&gt;完成&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最后性能平均只是提升了 2 -3 倍左右, 感觉有点低于预期, 不是说用Rust之后就秒天秒地吗? 我觉得至少应该有个数量级的提升吧. ☺️&lt;/p&gt;
&lt;p&gt;python标准库的实现性能相当可以, 而且考虑到LLM的特性, Filesystem的交互并不是性能瓶颈, 但是无所谓, 写都已经写完了&lt;/p&gt;
&lt;p&gt;一共用了多久呢? 写代码只用了30分钟, 调试/Debug/Perf 用来1个小时, 修复傻逼的github CI 用了一个半小时!&lt;/p&gt;
&lt;h1 id=&#34;总结&#34;&gt;总结&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;最底层的包库写完了, 接下来给minicc来个瘦身计划, 把tools的实现用agent-gear改一遍 , minicc的核心功能实现已经OK了, 接下里把边角料的 slash command / file import / TUI 美化 这些功能实现, 一个教学用的claude code基本就差不多了&lt;/li&gt;
&lt;li&gt;已经到了这样一个时代了: 你有点子, 那就意味着你实现了它, 想象力和视野可能是最重要的事情&lt;/li&gt;
&lt;li&gt;优化最核心的性能, 而不是优化边缘的性能, 除了带来虚假的满足感之外, 没有解决任何问题.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>BLOG迁移: 从Halo &#43; CF Tunnel 到 Hugo &#43; github &#43; Cloudflare page</title>
      <link>https://blog.pdjjq.org/post/blog-migration-from-halo-cf-tunnel-to-hugo-github-cloudflare-page-drhlk.html</link>
      <pubDate>Tue, 25 Nov 2025 01:03:22 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/blog-migration-from-halo-cf-tunnel-to-hugo-github-cloudflare-page-drhlk.html</guid>
      <description>&lt;h1 id=&#34;blog迁移-从halo--cf-tunnel-到-hugo--github--cloudflare-page&#34;&gt;BLOG迁移: 从Halo + CF Tunnel 到 Hugo + github + Cloudflare page&lt;/h1&gt;
&lt;h1 id=&#34;背景&#34;&gt;背景&lt;/h1&gt;
&lt;p&gt;前一段时间, 我的blog数据丢了&lt;/p&gt;
&lt;p&gt;其实算不上彻底丢了, 原始的blog内容还存储在思源笔记上, 甚至发布记录都有, 所以本质上的数据确实没有丢&lt;/p&gt;
&lt;p&gt;过去blog是用docker部署在我的ubuntu小主机上, 用cf tunnel暴露服务到公网. 但是那天晚上, 我失心疯一样想要重装系统.&lt;/p&gt;
&lt;p&gt;于是, 所有的磁盘数据都清掉了.&lt;/p&gt;
&lt;p&gt;等我反应过来在这个主机上还有没迁移完的数据的时候, 新版本的ubuntu在冲我笑.&lt;/p&gt;
&lt;h1 id=&#34;halo--cf-tunnel&#34;&gt;Halo + CF Tunnel&lt;/h1&gt;
&lt;p&gt;halo是一个好东西, 开箱即用, 功能丰富&lt;/p&gt;
&lt;p&gt;但是太笨重了, 而且过去是部署在我的迷你主机 + cloudflare tunnel 暴露服务&lt;/p&gt;
&lt;p&gt;好处是, 确实很方便&lt;/p&gt;
&lt;p&gt;坏处是: 偶尔停一次电就无法访问了, cf tunnel 访问起来确实不够快.&lt;/p&gt;
&lt;p&gt;在频繁的被提醒blog宕机之后, 我厌倦了重启halo + cf tunnel&lt;/p&gt;
&lt;h1 id=&#34;hugo--github--cf-page&#34;&gt;Hugo + Github + CF Page&lt;/h1&gt;
&lt;p&gt;我要用一个最简单的方式实现blog的部署&lt;/p&gt;
&lt;p&gt;这一套方案应该是最简单的方案了.&lt;/p&gt;
&lt;p&gt;在思源里写笔记, 持久化存储, 然后通过部署插件推送commit到github, CF中配置github连接, master改动自动打包部署, 渲染使用hugo + 主题插件.&lt;/p&gt;
&lt;p&gt;当然了, 也会有很多人好奇: 这是不是不够先进?&lt;/p&gt;
&lt;p&gt;坦白说, 确实. hugo确实是个老东西了. 但是我觉得无所谓.&lt;/p&gt;
&lt;p&gt;因为够简单, 没有什么大的bug, 打包结果全部是静态资源扔在cf上&lt;/p&gt;
&lt;p&gt;主题是基于&lt;a href=&#34;https://themes.gohugo.io/themes/hugo-texify3/&#34;&gt;hugo-texify3&lt;/a&gt; 用gemini + claude code 魔改的&lt;/p&gt;
&lt;p&gt;目前移植过来运行了大概2周, 运行很稳定, 我还比较满意.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>gemini3.0 以及 antigravity</title>
      <link>https://blog.pdjjq.org/post/gemini30-and-antigravity-2vujk8.html</link>
      <pubDate>Wed, 19 Nov 2025 15:00:43 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/gemini30-and-antigravity-2vujk8.html</guid>
      <description>&lt;h1 id=&#34;antigravity&#34;&gt;Antigravity&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Coding流程的思路很好, 专门做了一个review模式, 在完成plan之后, 可以comment , 继续修改plan, 在完成walkthrouth之后, 同样也会review. 非常有价值.&lt;/li&gt;
&lt;li&gt;browser use 做的非常出色, 能够直接和浏览器交互, debug / 调整UI更加方便, 非常有价值&lt;/li&gt;
&lt;li&gt;交互做的非常粗糙, 各种意想不到的UI元素, 奇怪的不统一的配色&lt;/li&gt;
&lt;li&gt;负载压力巨大, 莫名其妙的就限量了, 然后回退到使用sonnet 4.5, 想不到为什么要这么做&lt;/li&gt;
&lt;li&gt;内置的rules的遵循能力差, 还不确定在提示词的组合方式, 但是现在肯定是有问题的&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;gemini-30-pro&#34;&gt;Gemini 3.0 Pro&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;审美很好, 小段代码能力很好&lt;/li&gt;
&lt;li&gt;很懒, 如果不十分强调输出完整性的话, 非常容易漏东西, 怀疑其长文本输出的能力&lt;/li&gt;
&lt;li&gt;聪明, 本质上是聪明的, 但是没有表现出如跑分一样断档的聪明&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>一些关于AI Coding的经验</title>
      <link>https://blog.pdjjq.org/post/some-experiences-about-ai-coding-zaz65l.html</link>
      <pubDate>Sun, 02 Nov 2025 21:56:06 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/some-experiences-about-ai-coding-zaz65l.html</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;在线查看: &lt;a href=&#34;https://ai-coding-showcase.pdjjq.org/&#34;&gt;https://ai-coding-showcase.pdjjq.org/&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h1 id=&#34;attention&#34;&gt;Attention&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;写代码&amp;quot;的门槛非常低, 收益非常的可观 &lt;a href=&#34;https://www-cdn.anthropic.com/58284b19e702b49db9302d5b6f135ad8871e7658.pdf&#34;&gt;Anthropic是怎么使用Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;写代码 != 产出高质量软件&lt;/li&gt;
&lt;li&gt;需求的实现成本/难度 &lt;strong&gt;下降&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;不要为LLM的发展焦虑, 但不要做 coding义和团&lt;sup&gt;（指 本质正义, 工具落后, 顽固守旧的人）&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;基座模型&#34;&gt;基座模型&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;至少到2025年年底, 我们应该认识到: 基础模型进步带来的收益时最大的&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;在任何生产力场景下, 应该总是选择SOTA模型&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;基本性能要求&#34;&gt;基本性能要求&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;一行代码约 10 Token &lt;a href=&#34;https://platform.openai.com/tokenizer&#34;&gt;Token 计算器&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;上下文: 128K+ (最好能够到200K) Token&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.claude.com/pricing#api&#34;&gt;成本&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;输出的速度/质量&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;输出速度: 60 Token/s&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;智力水平: &lt;a href=&#34;https://www.swebench.com/&#34;&gt;SWE-Bench &lt;/a&gt; 70% (With Thinking) 60% (Low Think / No Think)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其他特性:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ToolUse / Function Call&lt;/li&gt;
&lt;li&gt;Prompt Cache&lt;/li&gt;
&lt;li&gt;Reasoning&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;主流的模型&#34;&gt;主流的模型&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;美国: Anthropic / OpenAI / Google Gemini / &lt;del&gt;Grok&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;中国: Qwen / GLM / Kimi / MiniMax / DeepSeek&lt;/p&gt;&lt;/blockquote&gt;
&lt;h5 id=&#34;anthropic-地域黑权限狗&#34;&gt;Anthropic (地域黑/权限狗)&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;对中国用户不友好 , 挂VPN也能封号, 策略最严格 之 &amp;laquo;封号斗罗&amp;raquo;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;目前最强的Agent Model:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;***&lt;a href=&#34;https://www.anthropic.com/claude/opus&#34;&gt;旗舰 Opus&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: 主要使用的Coding模型&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&#34;https://www.anthropic.com/news/claude-sonnet-4-5&#34;&gt;次旗舰 Sonnet&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;: 在很长的一段时间内, sonnet都是一个全能的模型&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.anthropic.com/news/claude-haiku-4-5&#34;&gt;狗屎 Haiku&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;openai-closeai&#34;&gt;OpenAI (CloseAI)&lt;/h5&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&#34;https://openai.com/zh-Hant/index/introducing-gpt-5-2-codex/&#34;&gt;gpt-5.2-codex&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;  &lt;em&gt;&lt;strong&gt;:  修改准确, 调查充分, 但是耗时过长, 非常适合修复BUG&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h5 id=&#34;gemini-google大善人&#34;&gt;Gemini (Google大善人)&lt;/h5&gt;
&lt;p&gt;&lt;a href=&#34;https://aistudio.google.com/models/gemini-3&#34;&gt;Gemini 3.0 pro&lt;/a&gt;: 史上最佳的对话模型&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://blog.google/products/gemini/gemini-3-flash/&#34;&gt;Gemin 3.0 Flash&lt;/a&gt;: 我们到现在都不知道Google是怎么做到的&lt;/p&gt;
&lt;h5 id=&#34;qwen-真正的openai&#34;&gt;Qwen (真正的OpenAI)&lt;/h5&gt;
&lt;p&gt;&lt;a href=&#34;https://qwen.ai/blog?id=72071a922385147be2ca81cdfaa50035db6e85d0&amp;amp;from=research.research-list&#34;&gt;qwen3 Max&lt;/a&gt; : 中国特色gemini&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&#34;https://qwenlm.github.io/blog/qwen3-coder/&#34;&gt;qwen3 coder plus&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;  &lt;em&gt;&lt;strong&gt;: 狗都不用, 但是必要的时候可以当狗&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h5 id=&#34;glm-kimi-minimax-整挺好&#34;&gt;GLM Kimi MiniMax (整挺好)&lt;/h5&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&#34;https://docs.z.ai/guides/llm/glm-4.6&#34;&gt;glm4.6&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;  &lt;em&gt;&lt;strong&gt;: 能力很好,&lt;/strong&gt;&lt;/em&gt;  &lt;em&gt;&lt;strong&gt;&lt;a href=&#34;https://z.ai/subscribe&#34;&gt;Coding Plan&lt;/a&gt;&lt;em&gt;&lt;strong&gt;​&lt;/strong&gt;&lt;/em&gt;也很好, 但是最近在降智&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.minimax.io/news/minimax-m2&#34;&gt;Minimax-M2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://moonshotai.github.io/Kimi-K2/&#34;&gt;Kimi K2&lt;/a&gt;&lt;/p&gt;
&lt;h5 id=&#34;deepseek-我卡呢&#34;&gt;&lt;strong&gt;DeepSeek (我卡呢?)&lt;/strong&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;大家举起双手把力量借给DeepSeek 👐👐👐&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://api-docs.deepseek.com/zh-cn/news/news251201&#34;&gt;DeepSeek-V3.2&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;主流的ai-coding工具&#34;&gt;主流的AI Coding工具&lt;/h1&gt;
&lt;p&gt;我们可以按照交互的形式主要分为三类&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VsCode-Fork: GUI Local, Fork VsCode 的发行版 , 使用 OpenVSX 作为插件来源 , 集成AI能力增强代码编写体验&lt;/li&gt;
&lt;li&gt;CLI: 在命令行中与Agent进行交互, 对运行环境有最好的支持, 一般能够轻易的在CICD 中集成, 配合前后端分离的架构可以配合VSCode插件使用&lt;/li&gt;
&lt;li&gt;Web/Remote Agent: 提供最开箱即用的能力, 开发环境完全托管远程, 控制能力较弱, 价格较贵&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;vscode-fork&#34;&gt;VsCode-Fork&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;赞美VsCode, 你是IDE的终点, 你是AIDE的起点. GUI &amp;gt; CLI !!!&lt;/p&gt;
&lt;p&gt;V门&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;大部分耳熟能详的AI IDE都是基于VsCode来做, 包括但不限于:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;***&lt;a href=&#34;https://cursor.com/&#34;&gt;Cursor&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: 最流行的AI Coding工具, 开箱即用, 最好的complete功能, 定价变化大&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;***&lt;a href=&#34;https://antigravity.google/&#34;&gt;Antigravity&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: Google出品, 目前提供的额度比较高, 原生连接Chrome, Agent pannel&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://windsurf.com/&#34;&gt;Windsurf&lt;/a&gt;: 无功无过&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://trae.ai/&#34;&gt;Trae&lt;/a&gt;: 字节出品, 做的不错, 重新设计过UI, 有SOLO模式, 创新不大&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qoder.com/&#34;&gt;Qoder&lt;/a&gt;: 阿里出品&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.codebuddy.com/&#34;&gt;CodeBuddy&lt;/a&gt;: 腾讯出品&lt;/li&gt;
&lt;li&gt;开源: &lt;a href=&#34;https://voideditor.com/&#34;&gt;Void&lt;/a&gt;(不再维护了)&lt;/li&gt;
&lt;li&gt;开源Coding插件: &lt;a href=&#34;https://cline.bot/&#34;&gt;Cline&lt;/a&gt; / &lt;a href=&#34;https://roocode.com/&#34;&gt;Roo Code&lt;/a&gt; / &lt;a href=&#34;https://kilocode.ai/&#34;&gt;Kilo Code&lt;/a&gt; / &lt;a href=&#34;https://www.continue.dev/&#34;&gt;continue.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最大的优势是: 用户习惯迁移非常方便&lt;/p&gt;
&lt;p&gt;缺点是: 同质化非常严重&lt;/p&gt;
&lt;h3 id=&#34;auto-complete&#34;&gt;Auto Complete&lt;/h3&gt;
&lt;p&gt;快速自动补全是所有的AI IDE的最基本功能之一, 由此演变来的功能一般还有:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://forum.cursor.com/t/cursors-multiline-edit-feautre/45880/4&#34;&gt;Multi line edits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.augmentcode.com/using-augment/next-edit&#34;&gt;Next Edit&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当然了, 有&lt;a href=&#34;https://github.com/continuedev/continue&#34;&gt;开源的项目&lt;/a&gt;提供了类似的能力, 一般支持&lt;a href=&#34;https://medium.com/@SymeCloud/what-is-fim-and-why-does-it-matter-in-llm-based-ai-53f33385585b&#34;&gt;FIM的小模型&lt;/a&gt;都能够顾胜任此工作&lt;/p&gt;
&lt;h3 id=&#34;commit-message&#34;&gt;Commit Message&lt;/h3&gt;
&lt;p&gt;根据代码变更自动生成Commit Message&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Disdjj/siyuan-pic/main/PixPin_2025-11-03_17-45-41-20251103174548-s4f3k66.gif&#34; alt=&#34;PixPin_2025-11-03_17-45-41&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;coding-agent&#34;&gt;Coding Agent&lt;/h3&gt;
&lt;p&gt;这部分的实现和交互和CLI Agent比较类似, 会在下一个大节详细描述&lt;/p&gt;
&lt;h2 id=&#34;cli&#34;&gt;CLI&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;CLI交互天生就有一种严肃性, 同时CLI也有最广泛的适用性&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&#34;https://www.claude.com/product/claude-code&#34;&gt;Cluade Code&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;  &lt;em&gt;&lt;strong&gt;: 目前最强大 特性最丰富 普适性最强的的Coding工具&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&#34;https://developers.openai.com/codex/cli/&#34;&gt;Codex CLI&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;  &lt;em&gt;&lt;strong&gt;: 功能非常简陋, 纯靠模型能力硬顶&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;***&lt;a href=&#34;https://opencode.ai/&#34;&gt;OpenCode&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: 拥有目前最出色的Plugin设计, 我会逐渐的迁移到OpenCode&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;***&lt;a href=&#34;https://iflow.cn/&#34;&gt;iflow&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: 国产CC&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/google-gemini/gemini-cli&#34;&gt;gemini cli&lt;/a&gt; : 做的也很简陋, 但是更新迭代速度比较快&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://docs.augmentcode.com/cli/overview&#34;&gt;auggie&lt;/a&gt; / &lt;a href=&#34;https://cursor.com/cli&#34;&gt;cursor cli&lt;/a&gt;: 狗屎&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;webremote-agnt&#34;&gt;Web/Remote Agnt&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;非专业开发人员的福音:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;几乎没有环境依赖&lt;/li&gt;
&lt;li&gt;一般配有 在线预览 + 快速部署的功能&lt;/li&gt;
&lt;li&gt;非常适合做DEMO验证&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://v0.dev/&#34;&gt;v0.dev&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://lovable.dev/?utm_feeditemid=&amp;amp;utm_device=c&amp;amp;utm_term=loveable&amp;amp;utm_source=google&amp;amp;utm_medium=ppc&amp;amp;utm_campaign=US+-+Search+-+Lovable+-+CORE&amp;amp;campaignid=23072209374&amp;amp;devicetype=c&amp;amp;gclid=CjwKCAiAwqHIBhAEEiwAx9cTeXrxCTihhEasA3K6V3Ol8z0L3FKJF7-ptX6gsrE8xNRMHFvZNXr8ThoCndwQAvD_BwE&amp;amp;creativeid=777017041384&amp;amp;gad_source=1&amp;amp;gad_campaignid=23072209374&amp;amp;gbraid=0AAAAA-iIxGdzRbJfuyfceh8ZUw2kAlW3F&#34;&gt;lovable&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://aistudio.google.com/apps&#34;&gt;Google AI Studio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://bolt.new/&#34;&gt;bolt.new&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;个人使用经验&#34;&gt;个人使用经验&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;提升AI Coding质量的最有效方法:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;提供高质量 高相关度的上下文, 至少是包含相关的上下文&lt;/li&gt;
&lt;li&gt;合理的划分任务, 每次专注于一个任务&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;claudemd--agentsmd&#34;&gt;CLAUDE.md / AGENTS.md&lt;/h3&gt;
&lt;p&gt;CLAUDE.md 和 AGENTS.md本质上都是注入到Context里的提示词, 在claude code的实现中,  会将 User / Project 的CLAUDE.md 都插入到Context中.&lt;/p&gt;
&lt;h5 id=&#34;实现原理&#34;&gt;实现原理&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#fb4934&#34;&gt;system-reminder&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;As you answer the user&amp;#39;s questions, you can use the following context:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;# claudeMd
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;&lt;/span&gt;Codebase and user instructions are shown below. Be sure to adhere to these instructions. IMPORTANT: These instructions OVERRIDE any default behavior and you MUST follow them exactly as written.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#fb4934&#34;&gt;system-reminder&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Disdjj/siyuan-pic/main/PixPin_2025-11-08_20-28-26-20251108202828-tiyz2ko.png&#34; alt=&#34;PixPin_2025-11-08_20-28-26&#34;&gt;&lt;/p&gt;
&lt;h5 id=&#34;如何使用&#34;&gt;如何使用?&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;/init&lt;/code&gt;初始化Claude.md&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;# content&lt;/code&gt;添加到Claude.md&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;记录什么东西&#34;&gt;记录什么东西&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;DO NOT xxx, because xxx&lt;/li&gt;
&lt;li&gt;Always use xxx to do xxx&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{项目概况: 名称/技术栈/架构}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;## 核心技术栈
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;## 项目架构
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;## 开发命令
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;## 关键配置
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;## 开发注意事项
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;chat-more-before-coding&#34;&gt;&lt;strong&gt;Chat more before coding&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;这是最简单的最推荐的提升AI Coding质量的方法, 多聊几轮&lt;/p&gt;
&lt;p&gt;如果有Plan模式, 那么先使用Plan模式, 直到AI能够彻底理解你的需求, 并且给出了合理的方案&lt;/p&gt;
&lt;p&gt;或者说 并不是 &amp;ldquo;Chat More&amp;rdquo; 而是 &amp;ldquo;先调查, 再规划, 再写代码&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Disdjj/siyuan-pic/main/20251104011708.png&#34; alt=&#34;Cursor切换Plan&#34; title=&#34;Cursor切换模式&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Disdjj/siyuan-pic/main/20251104011830.png&#34; alt=&#34;Claude Code 中通过Shift + Tab切换Pland模式&#34; title=&#34;Claude Code 中通过Shift + Tab切换Pland模式&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;sop-coding&#34;&gt;SOP Coding&lt;/h3&gt;
&lt;p&gt;重复自己是最无聊的事情&lt;/p&gt;
&lt;p&gt;如果在堆积业务代码, 非常推荐整理出一个SOP, 后续再开发的时候 让AI Follow 这个SOP进行编程.&lt;/p&gt;
&lt;p&gt;有两种办法:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在commit之前, 让AI总结操作步骤, 并且写入到项目的文档目录中, 做持久化管理&lt;/li&gt;
&lt;li&gt;使用&lt;a href=&#34;https://recorder.tokenroll.ai/&#34;&gt;recorder&lt;/a&gt; 自动记录你的操作行为成日志, 生成操作文档&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;option-coding&#34;&gt;Option Coding&lt;/h3&gt;
&lt;p&gt;在Claude Code的 &lt;a href=&#34;https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2021&#34;&gt;2.0.21&lt;/a&gt;的更新中, 引入了一个新的功能: &lt;code&gt;interactive question tool&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;简单来说: AI可以主动向你发文, 你可以做选项回复.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Disdjj/siyuan-pic/main/PixPin_2025-11-05_02-50-06-20251105025012-e7nfejb.gif&#34; alt=&#34;PixPin_2025-11-05_02-50-06&#34;&gt;&lt;/p&gt;
&lt;p&gt;对于懒得打字的朋友们来说, 简直是福音.&lt;/p&gt;
&lt;p&gt;做选择题, 总是要比做填空题爽是不是?&lt;/p&gt;
&lt;p&gt;一般来说在plan模式下, 会更加主动的调用&lt;code&gt;AskUserQuestion&lt;/code&gt;这个工具, 来让用户进行选择.&lt;/p&gt;
&lt;p&gt;所以, Enjoy yourself&lt;/p&gt;
&lt;h3 id=&#34;llmdoc&#34;&gt;llmdoc&lt;/h3&gt;
&lt;p&gt;文档系统在AI Coding中只会越来越重要.&lt;/p&gt;
&lt;p&gt;LLM没有长期记忆, 全部依赖于Context, 文档系统本质上就是外挂了一个持久化数据层.&lt;/p&gt;
&lt;p&gt;帮助AI快速获取充分的信息.&lt;/p&gt;
&lt;p&gt;我这里以我们后端系统的文档建设举例.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Disdjj/siyuan-pic/main/20251105025559.png&#34; alt=&#34;image&#34;&gt;&lt;/p&gt;
&lt;p&gt;当然了, 全部都是AI生成的, by &lt;a href=&#34;https://github.com/TokenRollAI/cc-plugin&#34;&gt;cc-plugin&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;mcp&#34;&gt;MCP&lt;/h3&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Disdjj/siyuan-pic/main/PixPin_2025-11-05_01-33-04-20251105013334-cjlpjfc.gif&#34; alt=&#34;PixPin_2025-11-05_01-33-04&#34;&gt;&lt;/p&gt;
&lt;h5 id=&#34;寻找mcp&#34;&gt;寻找MCP&lt;/h5&gt;
&lt;p&gt;现在几乎所有主流的AI SaaS服务都有提供MCP, 如果你感兴趣可以在这里主流的平台中寻找MCP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/modelcontextprotocol/servers&#34;&gt;官方收录MCP Servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/punkpeye/awesome-mcp-servers&#34;&gt;Awsome MCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://smithery.ai/&#34;&gt;smithery.ai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mcp.so/zh&#34;&gt;mcp.so&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.modelscope.cn/mcp&#34;&gt;魔塔MCP广场&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;常用mcp&#34;&gt;常用MCP&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ChromeDevTools/chrome-devtools-mcp&#34;&gt;chrome-devtools-mcp&lt;/a&gt;: Browser use, 谷歌出品, 调用浏览器, 获取Console/网络请求 日志&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;***&lt;a href=&#34;https://help.figma.com/hc/en-us/articles/32132100833559-Guide-to-the-Figma-MCP-server&#34;&gt;figma&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: 尽管我几乎不使用figma, 但是由于figma巨大的影响力, 还是加上, 防止有些人竟然不知道&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/containers/kubernetes-mcp-server&#34;&gt;K8S&lt;/a&gt;: 注意要使用 &lt;a href=&#34;https://github.com/containers/kubernetes-mcp-server#:~:text=table&#34;&gt;readonly模式&lt;/a&gt;%20(default%20%22table%22)-,%2D%2Dread%2Donly,-If%20set%2C%20the)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/github/github-mcp-server&#34;&gt;github&lt;/a&gt;: 和Github交互 (虽然我认为使用 &lt;a href=&#34;https://cli.github.com/&#34;&gt;&lt;code&gt;gh&lt;/code&gt;&lt;/a&gt; cli + Bash Tool 是更好的解决方案)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/upstash/context7&#34;&gt;context7&lt;/a&gt;: 虽然我认为用处不大, 但是推荐尝试&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://ref.tools/&#34;&gt;ref&lt;/a&gt;: 提供准确的文档, Better than context7 贵的东西的缺点只有贵 :(&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;不要使用的mcp&#34;&gt;不要使用的MCP&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/oraios/serena&#34;&gt;serena&lt;/a&gt;: 太多的重复功能, 不稳定的LSP, 你不会需要这个的.&lt;/li&gt;
&lt;li&gt;所有超过10个tools的MCP, 只会让你的Coding Agent变成&lt;del&gt;笨蛋&lt;/del&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;不要使用mcp&#34;&gt;不要使用MCP&lt;/h5&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Disdjj/siyuan-pic/main/20251105003958.png&#34; alt=&#34;image&#34; title=&#34;图源: Manus 分享 Context Engineering for AI Agents&#34;&gt;&lt;/p&gt;
&lt;p&gt;使用Tools是有代价的, Tools并不是LLM天生就会的事情.&lt;/p&gt;
&lt;p&gt;从&lt;a href=&#34;https://react-lm.github.io/&#34;&gt;ReAct&lt;/a&gt;开始, 工具调用能力被认为是提升Agent解决问题的能力重要组成部分, 在2025年, 号称是 &amp;ldquo;?Agent元年&amp;rdquo;, 几乎所有的模型都在强调工具调用能力, 就像是人使用手一样&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://modelcontextprotocol.io/docs/getting-started/intro&#34;&gt;MCP&lt;/a&gt;带来的最重要的进步: 一个更容易接入,实现更自由的, 平台框架解耦的&lt;a href=&#34;https://platform.openai.com/docs/guides/function-calling&#34;&gt;Function Call&lt;/a&gt; / &lt;a href=&#34;https://claude.com/blog/tool-use-ga&#34;&gt;Tools&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但是MCP是有代价的, 而且是昂贵的代价, 每一个MCP Tools都占用一个昂贵的&lt;code&gt;Tool&lt;/code&gt;的位置, Claude Code为了能够强化其ToolUse的能力, 在System提示词中做了巨大的强调 (530 Token, 约25%)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#ebdbb2;background-color:#282828;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;# Tool usage policy
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b8bb26;font-weight:bold&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; When doing file search, prefer to use the Task tool in order to reduce context usage.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; You should proactively use the Task tool with specialized agents when the task at hand matches the agent&amp;#39;s description.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; A custom slash command is a user-defined operation that starts with /, like /commit. When executed, the slash command gets expanded to a full prompt. Use the Skill tool to execute them. IMPORTANT: Only use Skill for commands listed in its Available Commands section - do not guess or use built-in CLI commands.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; When WebFetch returns a message about a redirect to a different host, you should immediately make a new WebFetch request with the redirect URL provided in the response.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; You can call multiple tools in a single response. If you intend to call multiple tools and there are no dependencies between them, make all independent tool calls in parallel. Maximize use of parallel tool calls where possible to increase efficiency. However, if some tool calls depend on previous calls to inform dependent values, do NOT call these tools in parallel and instead call them sequentially. For instance, if one operation must complete before another starts, run these operations sequentially instead. Never use placeholders or guess missing parameters in tool calls.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; If the user specifies that they want you to run tools \&amp;#34;in parallel\&amp;#34;, you MUST send a single message with multiple tool use content blocks. For example, if you need to launch multiple agents in parallel, send a single message with multiple Task tool calls.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; Use specialized tools instead of bash commands when possible, as this provides a better user experience. For file operations, use dedicated tools: Read for reading files instead of cat/head/tail, Edit for editing instead of sed/awk, and Write for creating files instead of cat with heredoc or echo redirection. Reserve bash tools exclusively for actual system commands and terminal operations that require shell execution. NEVER use bash echo or other command-line tools to communicate thoughts, explanations, or instructions to the user. Output all communication directly in your response text instead.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#fe8019&#34;&gt;-&lt;/span&gt; VERY IMPORTANT: When exploring the codebase to gather context or to answer a question that is not a needle query for a specific file/class/function, it is CRITICAL that you use the Task tool with subagent_type=Explore instead of running search commands directly.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#fb4934&#34;&gt;example&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user: Where are errors from the client handled?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;assistant: [Uses the Task tool with subagent_type=Explore to find the files that handle client errors instead of using Glob or Grep directly]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#fb4934&#34;&gt;example&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#fb4934&#34;&gt;example&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user: What is the codebase structure?
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;assistant: [Uses the Task tool with subagent_type=Explore]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#fb4934&#34;&gt;example&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;又是policy, 又是few shot, 然后一个 &lt;code&gt;mcp add&lt;/code&gt; 引入了20个额外的tools + 巨大的无聊的Description , 完全没有经过设计的Response, context 已经完全不够用了!!!!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我建议你只使用0-2个MCP, 在不需要的时候及时关掉&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;唯一推荐的使用方式是, 在支持多Agent的工具中, 为每个Agent开启一个MCP, 例如Claude Code Subagent.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;下图为我在&lt;a href=&#34;https://github.com/CherryHQ/cherry-studio&#34;&gt;CherryStudio&lt;/a&gt;中使用MCP, 尽量让一个Agent做一件事情, 专注于使用一类工具.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/Disdjj/siyuan-pic/main/20251105013708.png&#34; alt=&#34;image&#34;&gt;&lt;/p&gt;
&lt;p&gt;MCP是灾难, 调休也是.&lt;/p&gt;
&lt;h1 id=&#34;我还使用哪些ai工具&#34;&gt;我还使用哪些AI工具&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;***&lt;a href=&#34;https://github.com/CherryHQ/cherry-studio&#34;&gt;Cherry Studio&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: 桌面AI工具, 好用, 强烈推荐&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;***&lt;a href=&#34;http://gemini.google.com/&#34;&gt;Gemini&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: 我是Gemini的付费Pro会员, 强烈推荐&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;***&lt;a href=&#34;https://aihubmix.com/models&#34;&gt;AIHubMix&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: AI代理提供商, 提供几乎所有的主流模型, 强烈推荐&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;***&lt;a href=&#34;https://notebooklm.google/&#34;&gt;notebooklm&lt;/a&gt;***​ &lt;em&gt;&lt;strong&gt;: Google出品, 我一般用来做知识库使用, 强烈推荐&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dify.ai/&#34;&gt;Dify&lt;/a&gt;: 懒得写代码的时候我会直接用Dify接一些简单的功能, 比如说简单的Chat之类的工作. 比如说这里的 &lt;a href=&#34;https://dify.pdjjq.org/completion/QkoqxPlW2UDYqTPa&#34;&gt;面试官小工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://zread.ai/&#34;&gt;zread&lt;/a&gt; / &lt;a href=&#34;https://deepwiki.com/&#34;&gt;deepwiki&lt;/a&gt;: LLM帮你分析开源repo&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;上下文工程&#34;&gt;上下文工程&lt;/h1&gt;
&lt;p&gt;这里要讲的东西有点太多了, 根本说不完.&lt;/p&gt;
&lt;p&gt;这里给出我认为非常适合学习的材料, 感兴趣的可以自行阅读&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/langgptai/LangGPT&#34;&gt;结构化提示词&lt;/a&gt; : 一个入门教程&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://manus.im/zh-cn/blog/Context-Engineering-for-AI-Agents-Lessons-from-Building-Manus&#34;&gt;AI代理的上下文工程：构建Manus的经验教训&lt;/a&gt; : Agent必吃榜第一&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://drive.google.com/file/d/1QGJ-BrdiTGslS71sYH4OJoidsry3Ps9g/view&#34;&gt;Manus AI Agent 分享PPT&lt;/a&gt; : Agent必吃榜第二&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://research.trychroma.com/context-rot&#34;&gt;Context Rot&lt;/a&gt;: More Input, More Stupid&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://nrehiew.github.io/blog/long_context/&#34;&gt;评估LLM的上下文能力&lt;/a&gt;: 1M上下文是童话故事&lt;/p&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.anthropic.com/engineering/multi-agent-research-system&#34;&gt;Anthropic | How we built our multi-agent research system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents&#34;&gt;Anthropic | Effective context engineering for AI agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.anthropic.com/engineering/building-agents-with-the-claude-agent-sdk&#34;&gt;Anthropic | Building agents with the Claude Agent SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.anthropic.com/engineering/writing-tools-for-agents&#34;&gt;Anthropic | Writing effective tools for agents — with agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.anthropic.com/engineering/multi-agent-research-system&#34;&gt;Anthropic | How we built our multi-agent research system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.anthropic.com/engineering/building-effective-agents&#34;&gt;Anthropic | Building effective agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cognition.ai/blog/dont-build-multi-agents&#34;&gt;Cognition | Don’t Build Multi-Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.letta.com/blog/guide-to-context-engineering&#34;&gt;Letta | Anatomy of a Context Window: A Guide to Context Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.letta.com/blog/agent-memory&#34;&gt;Letta | Agent Memory: How to Build Agents that Learn and Remember&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.letta.com/blog/memory-blocks&#34;&gt;Letta | Memory Blocks: The Key to Agentic Context Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.letta.com/blog/rag-vs-agent-memory&#34;&gt;Letta | RAG is not Agent Memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.langchain.com/the-rise-of-context-engineering/&#34;&gt;LangChain | The rise of &amp;ldquo;context engineering&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/langchain-ai/context_engineering&#34;&gt;LangChain | Context Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.langchain.com/agent-middleware/&#34;&gt;LangChain | Agent Middleware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.langchain.com/context-engineering-for-agents/&#34;&gt;LangChain | Context Engineering for Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/davidkimai/Context-Engineering&#34;&gt;Github | Context Engineering Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/humanlayer/12-factor-agents&#34;&gt;Github | 12 Factor Agents: Principles for building reliable LLM applications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://rlancemartin.github.io/2025/06/23/context_engineering/&#34;&gt;Context Engineering for Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.promptingguide.ai/guides/context-engineering-guide&#34;&gt;Context Engineering Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://research.trychroma.com/context-rot&#34;&gt;Context Rot: How Increasing Input Tokens Impacts LLM Performance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.dbreunig.com/2025/06/26/how-to-fix-your-context.html&#34;&gt;How to Fix Your Context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.iamdave.ai/blog/what-is-context-engineering-and-how-it-differs-from-prompt-engineering&#34;&gt;What is Context Engineering and How It Differs from Prompt Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://medium.com/ai-artistry/context-engineering-with-agents-using-langgraph-a-guide-for-modern-ai-development-7434ffec3aa8&#34;&gt;Context Engineering with Agents using LangGraph: A Guide for Modern AI Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.decodingai.com/p/context-engineering-2025s-1-skill&#34;&gt;Context Engineering Skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.llamaindex.ai/blog/context-engineering-what-it-is-and-techniques-to-consider?utm_source=socials&amp;amp;utm_medium=li_social#knowledge-base-or-tool-selection&#34;&gt;Context Engineering - What it is, and techniques to consider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/karpathy/status/1937902205765607626?ref=blog.langchain.com&#34;&gt;Andrej Karpathy on X: &amp;ldquo;+1 for &amp;ldquo;context engineering&amp;rdquo; over &amp;ldquo;prompt engineering&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/tobi/status/1935533422589399127&#34;&gt;Tobi Lutke tweet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/addyosmani/status/1966752236249202743&#34;&gt;Free ~14 minute talk on Context Engineering tips &amp;amp; tricks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/_mohansolo/status/1899630246862966837?ref=blog.langchain.com&#34;&gt;Windsurf: Windsurf’s context retrieval&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/ai_for_success/status/1966874686283018565&#34;&gt;CodeRabbit: Context Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/akshay_pachaar/status/1970493414795079904&#34;&gt;Context engineering, clearly explained!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/PawelHuryn/status/1949925078562721863&#34;&gt;Context Engineering for PMs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://x.com/_avichawla/status/1966228573414633743&#34;&gt;How to build a context engineering workflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=_IlTcWciEC4&#34;&gt;Context Engineering for Agents - Lance Martin, LangChain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=5Bym0ffALaU&#34;&gt;Context Engineering with DSPy - the fully hands-on Basics to Pro course&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;一些暴论&#34;&gt;一些暴论&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Get Hands Dirty , 动手做比什么都重要&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;想象力 &amp;gt; 行动力 &amp;gt; 编程能力&lt;sup&gt;（一切都建立在有软件工程的基本素质）&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;领域的融合, 狭窄深邃不再是无法克服的问题&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
    <item>
      <title>Agent之殇</title>
      <link>https://blog.pdjjq.org/post/the-sorrow-of-agent-zofe1e.html</link>
      <pubDate>Tue, 14 Oct 2025 23:21:31 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/the-sorrow-of-agent-zofe1e.html</guid>
      <description>&lt;h1 id=&#34;agent之殇&#34;&gt;Agent之殇&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;速度, 效果, 成本 这三者不可能同时达成.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;速度&#34;&gt;速度&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;增加任务并发度&lt;/li&gt;
&lt;li&gt;使用更小的模型&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;效果&#34;&gt;效果&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;使用超量的上下文&lt;/li&gt;
&lt;li&gt;使用紧凑高密度的上下文&lt;/li&gt;
&lt;li&gt;使用超量的SubAgent&lt;/li&gt;
&lt;li&gt;使用更好的模型&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;成本&#34;&gt;成本&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;少的上下文&lt;/li&gt;
&lt;li&gt;少的模型调用次数&lt;/li&gt;
&lt;li&gt;廉价的模型&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Cheap Context and Expensive Context</title>
      <link>https://blog.pdjjq.org/post/cheap-context-and-expensive-context-z1nszbd.html</link>
      <pubDate>Tue, 14 Oct 2025 22:37:45 +0800</pubDate>
      
      <guid>https://blog.pdjjq.org/post/cheap-context-and-expensive-context-z1nszbd.html</guid>
      <description>&lt;h1 id=&#34;cheap-context-and-expensive-context&#34;&gt;Cheap Context and Expensive Context&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/TokenRollAI/cc-plugin&#34;&gt;Repo&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;cheap-context&#34;&gt;Cheap Context&lt;/h1&gt;
&lt;p&gt;SubAgent的Context是廉价的而且是一次性的&lt;/p&gt;
&lt;p&gt;或者可以称之为 &lt;code&gt;intern context&lt;/code&gt; 像实习生一样非常的廉价, 执行一次性任务, 而且受限于传入上下文的限制, 显得有些笨&lt;/p&gt;
&lt;p&gt;在这种执行环境受限的情况下, 应该用: 明确的任务划分+明确的输出 + 廉价的上下文(廉价模型)&lt;/p&gt;
&lt;h1 id=&#34;expensive-context&#34;&gt;Expensive Context&lt;/h1&gt;
&lt;p&gt;主Agent的Context是昂贵的:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一旦压缩一定会出现执行漂移.&lt;/li&gt;
&lt;li&gt;高性能大模型昂贵的价格&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;主agent&#34;&gt;主Agent&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;负责调度的Agent&lt;/li&gt;
&lt;li&gt;负责任务解决的Agent&lt;/li&gt;
&lt;li&gt;负责核心输出的Agent&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id=&#34;体验一下&#34;&gt;体验一下&lt;/h1&gt;
&lt;p&gt;在claude中&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# 添加 TokenRoll 插件市场
/plugin marketplace add https://github.com/TokenRollAI/cc-plugin

# 下载tr插件
/plugin install tr@cc-plugin


# 强调使用bg-worker
# Always consider use bg-worker to solve simple task
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;solution&#34;&gt;Solution&lt;/h1&gt;
&lt;p&gt;在&lt;a href=&#34;https://github.com/TokenRollAI/cc-plugin&#34;&gt;cc-plugin&lt;/a&gt;的bg-worker中, 解决方案十分粗暴, 毫无技术含量.&lt;/p&gt;
&lt;p&gt;SubAgent + 明确的任务划分+明确的输出 + 廉价的上下文 来换取 主Agent上下文的紧凑 + 总成本的降低&lt;/p&gt;
&lt;h2 id=&#34;效果&#34;&gt;效果&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;使用的Repo: &lt;a href=&#34;https://github.com/zeromicro/go-zero&#34;&gt;https://github.com/zeromicro/go-zero&lt;/a&gt;&lt;br&gt;
需求: 告诉我这个项目的结构如何?&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;省流&#34;&gt;省流&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Context 和 Cost 节省效果明显&lt;/p&gt;&lt;/blockquote&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;normal:    27.4k    $0.1304
bg-worker: 16.2k    $0.0867
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;发展方向&#34;&gt;发展方向&lt;/h2&gt;
&lt;p&gt;并发的使用廉价模型SubAgent 为 主Agent提供紧凑高密度上下文&lt;br&gt;
主Agent的作用: 任务划分/总结/判断 + 核心内容输出&lt;/p&gt;
&lt;h1 id=&#34;实验对比&#34;&gt;实验对比&lt;/h1&gt;
&lt;h3 id=&#34;1-不使用bg-worker&#34;&gt;1. 不使用bg-worker&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;
 ▐▛███▜▌   Claude Code v2.0.14
▝▜█████▛▘  Sonnet 4.5 · API Usage Billing
  ▘▘ ▝▝    /home/djj/code/go-zero

&amp;gt; 告诉我这个项目的结构如何? do not use bg-worker / scout agent

● 我来帮你分析这个项目的结构。让我先查看项目的根目录结构。

● Bash(ls -la /home/djj/code/go-zero)
  ⎿  total 156
     drwxr-xr-x 12 djj djj  4096 Oct 13 22:19 .
     drwxr-xr-x 17 djj djj  4096 Oct 13 21:17 ..
     … +22 lines (ctrl+o to expand)

● Bash(find /home/djj/code/go-zero -maxdepth 1 -type d | head -20)
  ⎿  /home/djj/code/go-zero
     /home/djj/code/go-zero/gateway
     /home/djj/code/go-zero/internal
     … +8 lines (ctrl+o to expand)

● Read(README.md)
  ⎿  Error reading file

● Read(readme.md)
  ⎿  Read 253 lines

● Bash(ls -la /home/djj/code/go-zero/core)
  ⎿  total 192
     drwxr-xr-x 48 djj djj 4096 Oct 13 21:17 .
     drwxr-xr-x 12 djj djj 4096 Oct 13 22:19 ..
     … +46 lines (ctrl+o to expand)

● Bash(ls -la /home/djj/code/go-zero/rest)
  ⎿  total 124
     drwxr-xr-x 12 djj djj  4096 Oct 14 02:11 .
     drwxr-xr-x 12 djj djj  4096 Oct 13 22:19 ..
     … +18 lines (ctrl+o to expand)

● Bash(ls -la /home/djj/code/go-zero/zrpc)
  ⎿  total 60
     drwxr-xr-x  4 djj djj 4096 Oct 13 21:17 .
     drwxr-xr-x 12 djj djj 4096 Oct 13 22:19 ..
     … +10 lines (ctrl+o to expand)

● Bash(ls -la /home/djj/code/go-zero/tools)
  ⎿  total 12
     drwxr-xr-x  3 djj djj 4096 Oct 13 21:17 .
     drwxr-xr-x 12 djj djj 4096 Oct 13 22:19 ..
     drwxr-xr-x 25 djj djj 4096 Oct 13 21:17 goctl

● Bash(ls -la /home/djj/code/go-zero/gateway)
  ⎿  total 44
     drwxr-xr-x  3 djj djj 4096 Oct 13 21:17 .
     drwxr-xr-x 12 djj djj 4096 Oct 13 22:19 ..
     … +5 lines (ctrl+o to expand)

● Read(go.mod)
  ⎿  Read 125 lines

● 根据我的分析,这是 go-zero 项目的结构概述:

  项目简介

  go-zero 是一个集成了各种工程实践的 Go 语言 web 和 rpc 框架,被 CNCF 云原生生态收录。它专注于高并发服务的稳定性,具有弹性设计理念。

  核心目录结构

  1. core/ - 核心功能库(48个子模块)

  这是框架的核心,包含各种基础工具和组件:
  - conf - 配置管理
  - breaker - 熔断器
  - limit - 限流器
  - load - 负载均衡/自适应降载
  - bloom - 布隆过滤器
  - collection - 集合工具
  - stores - 数据存储(redis/sql/mongo等)
  - logx - 日志系统
  - trace - 链路追踪
  - metric/prometheus - 监控指标
  - mr - MapReduce并发工具
  - threading/syncx - 并发控制
  - service - 服务基础组件
  - discov - 服务发现
  - 其他 - hash、queue、codec、fx、executors等工具

  2. rest/ - REST API框架

  HTTP服务相关功能:
  - engine.go/server.go - HTTP服务引擎
  - router/ - 路由管理
  - handler/ - 请求处理器
  - httpx/ - HTTP工具
  - httpc/ - HTTP客户端
  - middleware/ - 中间件
  - chain/ - 中间件链
  - pathvar/ - 路径参数
  - token/ - Token处理

  3. zrpc/ - RPC框架

  gRPC服务相关功能:
  - client.go/server.go - RPC客户端和服务端
  - config.go - RPC配置
  - resolver/ - 服务解析
  - internal/ - 内部实现

  4. tools/goctl/ - 代码生成工具

  命令行工具,用于从 .api 文件生成代码:
  - 支持生成 Go、Java、TypeScript、Dart、JavaScript 等多种语言代码
  - 自动生成项目骨架
  - API 语法定义和解析

  5. gateway/ - API 网关

  HTTP API 网关功能:
  - server.go - 网关服务器
  - config.go - 网关配置
  - internal/ - 内部实现

  6. internal/ - 内部实现

  框架的私有实现细节

  7. mcp/ - MCP相关功能

  技术栈特点

  - Go 1.21+
  - 支持 etcd 服务发现
  - 集成 Prometheus 监控
  - OpenTelemetry 链路追踪(Jaeger/Zipkin)
  - 支持 Redis、MySQL、PostgreSQL、MongoDB
  - Kubernetes 集成

  核心特性

  1. 高可用性 - 熔断器、限流、负载均衡、自适应降载
  2. 微服务治理 - 服务发现、链路追踪、监控指标
  3. 并发控制 - 内置并发控制、超时控制
  4. 代码生成 - 通过 goctl 工具自动生成代码
  5. 容错设计 - 面向失败的编程理念

  这是一个典型的微服务框架项目结构,分层清晰:底层核心库(core) + HTTP框架(rest) + RPC框架(zrpc) + 代码生成工具(goctl) + API网关(gateway)。

&amp;gt; /cost
  ⎿  Total cost:            $0.1304
     Total duration (API):  1m 5s
     Total duration (wall): 14m 59s
     Total code changes:    0 lines added, 0 lines removed
     Usage by model:
         claude-3-5-haiku:  5.9k input, 251 output, 0 cache read, 0 cache write ($0.0058)
            claude-sonnet:  3.2k input, 1.8k output, 60.9k cache read, 18.6k cache write ($0.1246)

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
&amp;gt; 
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   Model: Sonnet 4.5  Ctx: 27.4k  Ctx: 13.7%  ⎇ master  (+146,-12)  Cost: $0.13
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;2-使用bg-worker&#34;&gt;2. 使用bg-worker&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;
 ▐▛███▜▌   Claude Code v2.0.14
▝▜█████▛▘  Sonnet 4.5 · API Usage Billing
  ▘▘ ▝▝    /home/djj/code/go-zero

&amp;gt; use bg-worker to 告诉我这个项目的结构如何?

● 我会使用 bg-worker agent 来分析这个项目的结构。

● tr:bg-worker(分析 go-zero 项目结构)
  ⎿  Done (5 tool uses · 18.8k tokens · 40.8s)

● 根据分析，这是 go-zero 项目的结构概览：

  📁 主要目录结构

  核心组件

  1. core/ - 框架核心功能库
    - 包含 timex, conf, iox, naming, netx, mathx, collection 等工具包
    - 提供并发控制、配置处理、网络工具等基础设施
  2. rest/ - RESTful API 服务
    - 中间件(middleware)、路由(router)、处理器(handler)
    - 支持完整的 HTTP 服务功能
  3. zrpc/ - RPC 服务组件
    - 基于 gRPC 的 RPC 服务实现
    - 包含解析器和内部实现
  4. tools/goctl/ - 代码生成工具
    - 快速生成微服务代码的 CLI 工具
    - 支持多语言客户端代码生成
  5. gateway/ - API 网关服务
  6. internal/ - 内部工具组件
    - 编码、mock、性能分析等功能

  🛠️ 技术栈

  - 语言: Go 1.21+
  - 服务发现: etcd
  - 监控追踪: Prometheus, OpenTelemetry
  - 数据存储: MySQL, Redis, MongoDB
  - 认证: JWT
  - 容器编排: Kubernetes

  🏗️ 架构特点

  - ✅ 微服务架构设计
  - ✅ 高性能、高并发
  - ✅ 内置熔断、限流等弹性设计
  - ✅ 自动代码生成 (goctl)
  - ✅ 丰富的中间件支持
  - ✅ 分布式链路追踪
  - ✅ 自动参数验证

  总结: go-zero 是一个生产级的 Go 微服务框架，专注于工程实践和开箱即用的企业级特性。

&amp;gt; /cost
  ⎿  Total cost:            $0.0867
     Total duration (API):  1m 18s
     Total duration (wall): 11m 47s
     Total code changes:    0 lines added, 0 lines removed
     Usage by model:
         claude-3-5-haiku:  10.0k input, 1.2k output, 50.3k cache read, 10.5k cache write ($0.0272)
            claude-sonnet:  8 input, 920 output, 20.9k cache read, 10.5k cache write ($0.0595)

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
&amp;gt; 
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   Model: Sonnet 4.5  Ctx: 16.2k  Ctx: 8.1%  ⎇ master  (+146,-12)  Cost: $0.09 
  ⏵⏵ accept edits on (shift+tab to cycle)
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;使用multi-bg-worker&#34;&gt;使用multi bg-worker&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;gt; use multi bg-worker to 告诉我这个项目的结构如何?

● 我将使用多个 bg-worker 代理并行分析这个项目的结构。

● tr:bg-worker(分析项目根目录结构)
  ⎿  Done (3 tool uses · 16.1k tokens · 16.1s)

● tr:bg-worker(分析主要代码目录)
  ⎿  Done (5 tool uses · 9.2k tokens · 34.4s)

● tr:bg-worker(分析核心包结构)
  ⎿  Done (4 tool uses · 10.7k tokens · 25.2s)

● tr:bg-worker(分析工具和命令)
  ⎿  Done (6 tool uses · 10.0k tokens · 27.5s)

● tr:bg-worker(分析测试和文档)
  ⎿  Done (3 tool uses · 8.7k tokens · 14.4s)

● 根据多个 bg-worker 代理的并行分析，这个项目的结构如下：

  📋 项目概述

  项目名称: go-zero模块: github.com/zeromicro/go-zero类型: Go 语言微服务框架Go 版本: 1.21+

  🏗️ 目录结构

  1. core/ - 核心基础库（最重要的部分）

  包含 30+ 个子模块，提供微服务开发的基础设施：

  系统工具类:
  - utils, lang, stringx, mathx, timex, codec, hash

  并发与系统:
  - threading, syncx, proc, executors, contextx

  网络与服务:
  - netx, naming, service, discov, configcenter

  存储与数据:
  - stores, collection, queue

  日志与监控:
  - logx, logc, metric, prometheus, trace

  稳定性保障:
  - limit(限流), breaker(熔断), rescue(异常恢复)

  其他工具:
  - bloom, jsonx, mapping, validation 等

  2. tools/goctl/ - 代码生成工具

  强大的命令行工具，支持：
  - API 代码生成（Go, Java, Dart, TypeScript 等）
  - RPC 服务生成
  - 数据模型生成（SQL, MongoDB）
  - Docker/Kubernetes 配置生成
  - 项目迁移和环境管理

  3. internal/ - 内部实现

  包含 encoding, mock, profiling, trace, health 等内部模块

  4. gateway/ - 网关相关功能

  5. rest/ - REST API 框架

  （从 git status 看到有 rest/middleware/ 未提交文件）

  📊 项目规模

  - 测试文件: 373 个 *_test.go 文件
  - 文档文件: 25 个 Markdown 文件
  - 核心代码: 约 467 个 Go 文件（仅 core 目录）

  🎯 核心特性

  1. 微服务架构: 完整的微服务解决方案
  2. 服务治理: 服务发现、负载均衡、熔断、限流
  3. 可观测性: 集成 OpenTelemetry、Prometheus 监控
  4. 多存储支持: Redis、MySQL、MongoDB
  5. 代码生成: 通过 goctl 快速生成项目脚手架
  6. 高性能: 适合高并发场景

  📝 架构特点

  - 模块化设计: 每个目录职责明确
  - 库项目: 主要作为框架库使用，而非独立应用
  - 完善的测试: 大量单元测试覆盖
  - 文档分布式: 各模块都有独立的 README

  这是一个成熟的、生产级别的 Go 微服务框架，提供了从基础工具到服务治理的完整解决方案。

&amp;gt; /cost
  ⎿  Total cost:            $0.1845
     Total duration (API):  3m 8s
     Total duration (wall): 3m 27s
     Total code changes:    0 lines added, 0 lines removed
     Usage by model:
         claude-3-5-haiku:  20.6k input, 4.9k output, 171.0k cache read, 52.5k cache write ($0.1024)
            claude-sonnet:  8 input, 1.9k output, 20.9k cache read, 12.7k cache write ($0.0820)

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
&amp;gt; 
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   Model: Sonnet 4.5  Ctx: 18.4k  Ctx: 9.2%  ⎇ master  (+146,-12)  Cost: $0.18 
  ⏵⏵ accept edits on (shift+tab to cycle)
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;缺陷&#34;&gt;缺陷&lt;/h1&gt;
&lt;p&gt;真的有如同看起来这么美妙吗?&lt;/p&gt;
&lt;p&gt;NO! NO! NO!&lt;/p&gt;
&lt;p&gt;至少目前看有这么几个问题:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如果使用并发模式来调用bg-worker的话, 如果认为划分的过于简单, 会出现主Agent的输出 + 读取成本高于bg-worker的运行节省的成本, 尽管还是可以节省主Agent的Token, 但是不再具备成本优势&lt;/li&gt;
&lt;li&gt;bg-worker执行的任务越复杂,越具备成本优势,执行效果越差.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    
  </channel>
</rss>
