<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Claude on 鬼哥的空间</title><link>https://guige.ai/tags/claude/</link><description>Recent content in Claude on 鬼哥的空间</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 09 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://guige.ai/tags/claude/index.xml" rel="self" type="application/rss+xml"/><item><title>别让 Fable/Opus 干杂活：Agent 系统的省钱架构</title><link>https://guige.ai/p/fable-opus-agent-cost/</link><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/fable-opus-agent-cost/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post 别让 Fable/Opus 干杂活：Agent 系统的省钱架构" /&gt;&lt;p&gt;你开发 Agent 的时候，是不是也干过这种事：&lt;/p&gt;
&lt;p&gt;不管任务大还是小，先把 Fable/Opus 请出来，一路从查网页、搬数据、整理表格，撸到最后写报告。&lt;/p&gt;
&lt;p&gt;鬼哥以前也经常这么干。刚开始是图省事，也确实希望结果尽量好。至于更深层的原因，大概是经验不足，手艺还菜，这句不要外传。&lt;/p&gt;
&lt;p&gt;直到后来看到 API 账单，整个人就清醒了。&lt;/p&gt;
&lt;p&gt;开法拉利去跑货拉拉，当然快。但快归快，油钱是真的遭不住。&lt;/p&gt;
&lt;p&gt;用 Fable/Opus 去读网页、搬资料、整理表格，也有点像拿炮弹打苍蝇。不是打不中，而是太贵、太吵，还容易把桌子一起掀了。&lt;/p&gt;
&lt;p&gt;所以我最近翻了几篇 Anthropic 关于 Advisor Tool、Managed Agents 和 multi-agent workflow 的技术文章，发现它们表面上是在讲 Claude 的新能力，底层其实在讲一件更工程化的事：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Agent 系统的成本，不只取决于你用了哪个模型，更取决于你有没有把任务拆对。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="别让 Fable/Opus 干杂活" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/fable-opus-agent-cost/cover.webp" srcset="https://guige.ai/p/fable-opus-agent-cost/cover_hu_59cb2e9020a7aed5.webp 800w, https://guige.ai/p/fable-opus-agent-cost/cover.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;p&gt;这篇文章不做文档复读。我们直接把它抽象成一套可复用的 Agent 省钱架构。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="先看一个调研任务拿-opus-打苍蝇是怎么发生的"&gt;先看一个调研任务：拿 Opus 打苍蝇是怎么发生的
&lt;/h2&gt;&lt;p&gt;假设你要做一个知识调研：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;对比 10 个 AI 编程工具的 Agent 架构、定价、上下文管理、工具调用能力，并给出选型建议。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;很多人的第一反应是：直接丢给 Fable/Opus。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Fable/Opus 单体 Agent：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;搜索网页 -&amp;gt; 阅读文档 -&amp;gt; 抽取事实 -&amp;gt; 整理表格 -&amp;gt; 对比分析 -&amp;gt; 写最终报告
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这当然能做。&lt;/p&gt;
&lt;p&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;是否值得用 Fable/Opus&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;/td&gt;
 &lt;td&gt;不太值&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;读取定价页&lt;/td&gt;
 &lt;td&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;/td&gt;
 &lt;td&gt;不太值&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;交叉验证来源&lt;/td&gt;
 &lt;td&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;/td&gt;
 &lt;td&gt;值&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;识别长期风险&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;80% 的 token 可能烧在“搬信息”上，但真正需要 Fable/Opus 的，是最后 20% 的判断。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;更合理的拆法应该是这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sonnet coordinator：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 设计调研维度，拆分任务，规定输出格式，验收结果
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Haiku / cheaper workers：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 并行搜索、读取网页、抽取事实、保留来源
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sonnet executor：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 合并结构化结果，发现冲突，要求补查
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Fable/Opus advisor：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 在最终选型、风险分析、架构判断时介入
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img alt="单体 Agent 过载" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/fable-opus-agent-cost/monolith-agent.webp" srcset="https://guige.ai/p/fable-opus-agent-cost/monolith-agent_hu_47bb3ba924abda40.webp 800w, https://guige.ai/p/fable-opus-agent-cost/monolith-agent.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;p&gt;这不是为了“少用好模型”，而是为了&lt;strong&gt;把好模型用在刀刃上&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Fable/Opus 应该像会议室里最后拍板的专家，而不是从早到晚跑腿打印材料的人。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="advisor-toolsonnet-干活fableopus-把关"&gt;Advisor Tool：Sonnet 干活，Fable/Opus 把关
&lt;/h2&gt;&lt;p&gt;第一种实现手段，是 Advisor Tool。&lt;/p&gt;
&lt;p&gt;它的模式很简单：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sonnet executor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; 遇到复杂判断
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; 调用 Fable/Opus advisor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; Sonnet 继续执行
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这像什么？&lt;/p&gt;
&lt;p&gt;像一个靠谱的项目经理在推进日常工作，遇到架构选型、安全边界、产品取舍这种“错了会很贵”的节点，再把资深专家叫进来。&lt;/p&gt;
&lt;p&gt;Advisor 不是另一个执行员，也不是全程陪跑的老板。它更像&lt;strong&gt;关键决策时被请进会议室的人&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;适合它的任务有几类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sonnet 能稳定推进，但中间有少数非显然设计决策&lt;/li&gt;
&lt;li&gt;任务链很长，全程用 Fable/Opus 成本过高&lt;/li&gt;
&lt;li&gt;需要在关键节点做风险审查、策略纠偏、方案选择&lt;/li&gt;
&lt;li&gt;coding agent、computer use、多步研究这类“执行量大、判断点少”的任务&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;任务太小，advisor 调用成本超过收益&lt;/li&gt;
&lt;li&gt;executor 还没收集上下文，就急着问 advisor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Advisor 模式" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/fable-opus-agent-cost/advisor-pattern.webp" srcset="https://guige.ai/p/fable-opus-agent-cost/advisor-pattern_hu_945280f1de1a7ba0.webp 800w, https://guige.ai/p/fable-opus-agent-cost/advisor-pattern.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;p&gt;这里最重要的实践不是“能不能调用更强模型”，而是&lt;strong&gt;什么时候调用&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;我的判断标准是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;如果这个决策错了，后面会产生大量返工，就值得问 Fable/Opus；如果只是搬资料、改格式、补字段，交给 Sonnet 或更便宜的模型就够了。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Advisor Tool 的价值，正在于它把模型能力做了纵向分层：&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;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Executor&lt;/td&gt;
 &lt;td&gt;Sonnet&lt;/td&gt;
 &lt;td&gt;推进任务、调用工具、落地修改&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Advisor&lt;/td&gt;
 &lt;td&gt;Fable/Opus&lt;/td&gt;
 &lt;td&gt;复杂判断、风险提示、策略纠偏&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;User&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;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Sonnet 负责把车开起来，Fable/Opus 负责在岔路口提醒你别开进沟里。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="managed-agents把一个大任务拆成一支小队"&gt;Managed Agents：把一个大任务拆成一支小队
&lt;/h2&gt;&lt;p&gt;第二种实现手段，是 Managed Agents。&lt;/p&gt;
&lt;p&gt;Advisor 是纵向升级，Managed Agents 是横向分工。&lt;/p&gt;
&lt;p&gt;它的基本结构是：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Sonnet coordinator
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; research worker A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; research worker B
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; validation worker C
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; review worker D
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -&amp;gt; coordinator 综合结果
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每个 worker 有自己的上下文、工具和任务边界。它不需要知道全局目标的所有细节，只要把自己那一小块做好。&lt;/p&gt;
&lt;p&gt;这件事非常关键。&lt;/p&gt;
&lt;p&gt;很多单体 Agent 的失败，不是因为模型笨，而是因为上下文被污染了：&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;Managed Agents 的价值，不是“模型数量变多所以更聪明”，而是三件事：&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;/td&gt;
 &lt;td&gt;每个 worker 只看自己需要看的材料&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&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;调研 worker 不一定需要写文件，代码 worker 不一定需要外网&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img alt="Managed Agents 分工" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/fable-opus-agent-cost/managed-agents.webp" srcset="https://guige.ai/p/fable-opus-agent-cost/managed-agents_hu_91b19821e2325a28.webp 800w, https://guige.ai/p/fable-opus-agent-cost/managed-agents.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;p&gt;回到前面的 AI 编程工具调研案例。&lt;/p&gt;
&lt;p&gt;你可以让每个 worker 只负责两个工具：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Worker A：调研 Cursor、Windsurf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Worker B：调研 Claude Code、Codex
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Worker C：调研 Devin、OpenHands
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Worker D：调研 Replit Agent、Gemini CLI
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Worker E：交叉检查定价和上下文窗口
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每个 worker 的输出必须结构化，比如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;工具名称：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;官方链接：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Agent 架构：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;上下文管理：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;工具调用能力：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;定价：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;适合人群：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;不确定点：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;引用来源：
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这样 coordinator 拿到的不是一堆网页碎片，而是一组可比较的事实卡片。&lt;/p&gt;
&lt;p&gt;这就是多 Agent 的正确姿势：&lt;strong&gt;worker 负责吞吐，coordinator 负责验收，不要让最终答案变成 worker 摘要的简单拼接。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="plan-big-execute-small真正值得偷走的范式"&gt;Plan Big, Execute Small：真正值得偷走的范式
&lt;/h2&gt;&lt;p&gt;第三篇 cookbook 里最值得记住的，不是那个具体案例，而是它背后的范式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Plan Big：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Sonnet / Fable / Opus 制定计划、定义维度、设计验收标准
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Execute Small：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Haiku / cheaper workers 并行搜索、读取、抽取、验证
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Review Hard：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Sonnet 汇总冲突，Fable/Opus 做最终判断或策略建议
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;翻译成人话就是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;大模型负责问题定义，小模型负责信息吞吐，强模型负责判断和验收。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&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;/ul&gt;
&lt;p&gt;它为什么有效？&lt;/p&gt;
&lt;p&gt;因为很多复杂任务的成本结构并不均匀。&lt;/p&gt;
&lt;p&gt;你以为最难的是“写最终报告”，其实最费 token 的往往是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把 20 个网页读完&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;这些事情需要耐心、覆盖率和结构化输出，但不一定需要 Fable/Opus 级别的判断力。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Plan Big Execute Small" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/fable-opus-agent-cost/plan-big-execute-small.webp" srcset="https://guige.ai/p/fable-opus-agent-cost/plan-big-execute-small_hu_64246e85fd5bb9e1.webp 800w, https://guige.ai/p/fable-opus-agent-cost/plan-big-execute-small.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;p&gt;不过，多 Agent 也不是银弹。&lt;/p&gt;
&lt;p&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;/td&gt;
 &lt;td&gt;调度成本超过收益&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;worker 输出太自由&lt;/td&gt;
 &lt;td&gt;coordinator 难以比较和验收&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;coordinator 只拼接&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;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以，Plan Big, Execute Small 不是“把任务随便丢给一堆小模型”，而是要先设计好三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;拆分边界&lt;/strong&gt;：每个 worker 负责什么，不负责什么。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出格式&lt;/strong&gt;：worker 必须交付什么字段、证据和不确定性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验收标准&lt;/strong&gt;：coordinator 如何发现冲突、追问缺口、决定是否升级给 Fable/Opus。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="怎么选架构别先问模型先问任务"&gt;怎么选架构：别先问模型，先问任务
&lt;/h2&gt;&lt;p&gt;很多人在设计 Agent 系统时，第一句就是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;我该用 Sonnet，还是直接上 Opus？&lt;/p&gt;

 &lt;/blockquote&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;li&gt;worker 的输出如何验收？&lt;/li&gt;
&lt;li&gt;如果判断错了，返工成本高不高？&lt;/li&gt;
&lt;li&gt;Fable/Opus 应该在哪些位置介入，才最值？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&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;/td&gt;
 &lt;td&gt;直接 Sonnet 或 Fable/Opus&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;普通工具执行 + 少数复杂判断&lt;/td&gt;
 &lt;td&gt;Sonnet executor + Fable/Opus advisor&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;大量网页、文件、事实调研&lt;/td&gt;
 &lt;td&gt;Sonnet coordinator + cheaper workers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;高价值研究报告&lt;/td&gt;
 &lt;td&gt;Sonnet coordinator + workers + Fable/Opus final review&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;代码库大规模扫描&lt;/td&gt;
 &lt;td&gt;Coordinator + specialized workers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;每一步都需要深推理&lt;/td&gt;
 &lt;td&gt;直接 Fable/Opus，少拆&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;小任务&lt;/td&gt;
 &lt;td&gt;不要多 Agent，调度成本不值&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里的关键不是“多 Agent 一定比单 Agent 好”，而是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;当任务可以拆、证据可以结构化、验收标准可以定义时，多 Agent 才有意义。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;如果任务本身是连续推理，比如数学证明、复杂算法设计、哲学论证，你硬拆成一堆 worker，反而可能把思路打碎。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="真正的省钱架构让每个模型做它最值钱的事"&gt;真正的省钱架构：让每个模型做它最值钱的事
&lt;/h2&gt;&lt;p&gt;回到开头那个比喻。&lt;/p&gt;
&lt;p&gt;Fable/Opus 当然可以读网页、搬资料、整理表格。就像炮弹当然可以打苍蝇。&lt;/p&gt;
&lt;p&gt;问题是：&lt;strong&gt;你为什么要这么打？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;好的 Agent 系统，不是把所有事情都交给最强模型，而是把任务拆成三层：&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;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;吞吐层&lt;/td&gt;
 &lt;td&gt;搜索、读取、抽取、初步整理&lt;/td&gt;
 &lt;td&gt;Haiku / cheaper workers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;执行层&lt;/td&gt;
 &lt;td&gt;调度、工具调用、合并、落地&lt;/td&gt;
 &lt;td&gt;Sonnet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;判断层&lt;/td&gt;
 &lt;td&gt;架构取舍、风险分析、最终审查&lt;/td&gt;
 &lt;td&gt;Fable/Opus&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最后留下一个很实用的判断：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;如果一个步骤没有明显的判断成本，就不要默认交给最贵的模型。&lt;br&gt;
如果一个决策会影响后面大量工作，就不要吝啬请 Fable/Opus 把关。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这才是 Agent 系统真正的省钱架构。&lt;/p&gt;
&lt;p&gt;不是不用强模型，而是让强模型出现在它最值钱的位置。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool" target="_blank" rel="noopener"
 &gt;Anthropic Docs: Advisor tool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://platform.claude.com/docs/en/managed-agents/multi-agent" target="_blank" rel="noopener"
 &gt;Anthropic Docs: Multi-agent sessions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/anthropics/claude-cookbooks/blob/main/managed_agents/CMA_plan_big_execute_small.ipynb" target="_blank" rel="noopener"
 &gt;Anthropic Cookbook: CMA_plan_big_execute_small.ipynb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>别再调教模型了：聪明人都在设计循环</title><link>https://guige.ai/p/designing-agent-loops/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/designing-agent-loops/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post 别再调教模型了：聪明人都在设计循环" /&gt;&lt;p&gt;Anthropic 的工程师 Boris Cherny 有一句话被反复引用：&lt;strong&gt;「我的工作就是写循环（My job is to write loops）。」&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这句话第一次听像段子，听第二遍你会发现它在描述一个范式转移。过去我们用大模型，本能是去「调教」它——改 prompt、加 few-shot、写一长串「你必须……你不能……」的规则。但当模型本身已经足够强，真正决定产出质量的，往往不再是你怎么&lt;em&gt;指挥&lt;/em&gt;它，而是你给它套了一个什么样的&lt;strong&gt;循环&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Anthropic 的 Lance Martin 最近分享了他用新一代 Claude 模型（内部代号 Fable 5，Mythos 级别）做实验的两个心得。两个都不是 prompt 技巧，而是关于怎么&lt;strong&gt;设计循环&lt;/strong&gt;。下面我把它整理成中文，并加上我自己的一些体感。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Designing loops with Fable 5" class="gallery-image" data-flex-basis="600px" data-flex-grow="250" height="832" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/designing-agent-loops/cover.webp" srcset="https://guige.ai/p/designing-agent-loops/cover_hu_f3f285b3c85f4a8b.webp 800w, https://guige.ai/p/designing-agent-loops/cover_hu_f6df640e5223bea7.webp 1600w, https://guige.ai/p/designing-agent-loops/cover.webp 2080w" width="2080"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="为什么是循环而不是prompt"&gt;为什么是「循环」，而不是「prompt」
&lt;/h2&gt;&lt;p&gt;先说清楚这个范式差在哪。&lt;/p&gt;
&lt;p&gt;传统用法是&lt;strong&gt;一次性&lt;/strong&gt;的：你写一个尽可能完美的 prompt，模型吐一个答案，好不好全看这一发。这本质上是在赌模型的「直觉」。&lt;/p&gt;
&lt;p&gt;循环用法是&lt;strong&gt;迭代式&lt;/strong&gt;的：你不再追求一发命中，而是给模型套一个「跑 → 拿反馈 → 自我纠正 → 再跑」的环，让它在一个评判标准（goal 或 rubric）上不断爬坡，直到达标才停。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;一次性 prompt&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;prompt 本身&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;/td&gt;
 &lt;td&gt;反复试错、自我修正&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;决定质量的关键&lt;/td&gt;
 &lt;td&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;/td&gt;
 &lt;td&gt;长程、可验证、能爬坡&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Claude Code 里的 &lt;code&gt;/goal&lt;/code&gt; 和 Claude Managed Agents（CMA）里的 Outcomes，就是把这套通用配方变成了你能直接用的原语。&lt;strong&gt;它们的本质都是：给环境注入一个反馈信号，让模型自己跟这个信号死磕。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第一招自我纠正循环"&gt;第一招：自我纠正循环
&lt;/h2&gt;&lt;p&gt;新模型一个被反复验证的特性是——&lt;strong&gt;它特别擅长在循环里自我纠正&lt;/strong&gt;。一个设计良好的 goal 或 rubric，相当于给 Claude 运行的环境加了一个反馈源：它跑一轮、通过 goal/rubric 收集反馈、修正自己，然后继续，直到标准被满足。&lt;/p&gt;
&lt;p&gt;这里有一个&lt;strong&gt;最容易被忽略、却最关键的点：谁来当裁判。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;直觉上你可能觉得，让模型自己检查自己的输出不就行了？但 Anthropic 的实验反复发现，&lt;strong&gt;模型在「自我批判」上是有系统性缺陷的&lt;/strong&gt;——它很难客观地挑自己输出的毛病（Prithvi Rajasekaran 在 Anthropic 工程博客里专门写过这个现象）。&lt;/p&gt;
&lt;p&gt;解法是：&lt;strong&gt;用一个独立的 verifier 子 agent 来打分，而不是让主 agent 自我批判。&lt;/strong&gt; 因为打分是在一个&lt;strong&gt;独立的上下文窗口&lt;/strong&gt;里完成的，不受主 agent 思路的污染，效果明显更好。CMA 的 Outcomes 就是帮你自动 spawn 一个 grader 子 agent 来做这件事。&lt;/p&gt;
&lt;p&gt;下面这张表把两种实现方式拆得很清楚——无论是 Claude Code 的 &lt;code&gt;/goal&lt;/code&gt; 还是 CMA 的 Outcomes，骨架都是一样的五件套：目标、裁判、循环、边界、退出条件。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Goal-driven loops 的两种实现对比" class="gallery-image" data-flex-basis="525px" data-flex-grow="218" height="1040" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/designing-agent-loops/goal-driven-loops.webp" srcset="https://guige.ai/p/designing-agent-loops/goal-driven-loops_hu_88fa692449be2739.webp 800w, https://guige.ai/p/designing-agent-loops/goal-driven-loops_hu_de19fd5bcd9d435b.webp 1600w, https://guige.ai/p/designing-agent-loops/goal-driven-loops.webp 2276w" width="2276"&gt;&lt;/p&gt;
&lt;p&gt;注意「裁判（The judge）」这一行：&lt;code&gt;/goal&lt;/code&gt; 用一个独立的 grader 模型（Haiku），CMA 用一个独立的 grader 子 agent——&lt;strong&gt;两者都刻意把评判放到了主流程之外。&lt;/strong&gt; 这不是实现细节，这是这套方法能 work 的核心原因。&lt;/p&gt;
&lt;h3 id="parameter-golf一个能跑-8-小时的玩具实验"&gt;Parameter Golf：一个能跑 8 小时的玩具实验
&lt;/h3&gt;&lt;p&gt;Lance 用了一个开源的 ML 工程挑战 &lt;strong&gt;Parameter Golf&lt;/strong&gt; 来测试：在 8 张 H100 上、10 分钟内，训练出一个能塞进 16MB 的最强模型。&lt;/p&gt;
&lt;p&gt;这个挑战很像 Karpathy 的 autoresearch 项目——它考验的不是模型会不会写代码，而是一个 agent 能不能&lt;strong&gt;像研究员一样工作&lt;/strong&gt;：改训练代码（一个 &lt;code&gt;train_gpt.py&lt;/code&gt; 文件）、启动训练、轮询日志、读分数、然后决定下一个实验做什么。这是一个典型的长程、可验证、能爬坡的任务，正好是循环的主场。&lt;/p&gt;
&lt;p&gt;他给了一个有 9 条可检查标准的 rubric（比如「跑一个 baseline」「跑 20 个实验」），让 Parameter Golf 最多跑 8 小时，由 Outcomes 的 grader 确认所有标准都满足后才允许 Claude 停手。结果：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Parameter Golf：Fable 5 vs Opus 4.7" class="gallery-image" data-flex-basis="408px" data-flex-grow="170" height="1226" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/designing-agent-loops/parameter-golf.webp" srcset="https://guige.ai/p/designing-agent-loops/parameter-golf_hu_c6f23f454667600d.webp 800w, https://guige.ai/p/designing-agent-loops/parameter-golf_hu_2e170007532a821e.webp 1600w, https://guige.ai/p/designing-agent-loops/parameter-golf.webp 2088w" width="2088"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fable 5 把训练 pipeline 优化了约 6 倍于 Opus 4.7。&lt;/strong&gt; 但比这个数字更有意思的是两个模型的&lt;strong&gt;实验风格差异&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fable 5&lt;/strong&gt; 敢下「结构性」的大注（比如改架构：&lt;code&gt;TRAIN_SEQ_LEN=2048&lt;/code&gt; 带来 −0.0179、overlapped sliding-window eval 带来 −0.0207），而且有韧性——它甚至顶着一次量化回退继续推，最后拿到了最大的一次提升。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opus 4.7&lt;/strong&gt; 第一个实验拿了个小赢，然后&lt;strong&gt;几乎所有后续实验都在复制同一个模板&lt;/strong&gt;：调一个标量、测一下、有正收益就留下。稳，但天花板低。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;看图里那条蓝线（Fable 5）是怎么一个台阶一个台阶往下砸的，红线（Opus 4.7）则基本是平的——这就是「敢赌结构性改动」和「只敢调标量」的区别。&lt;strong&gt;循环给了模型试错的空间，而更强的模型会用这个空间去下更大的注。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="第二招记忆跨会话的外层循环"&gt;第二招：记忆——跨会话的外层循环
&lt;/h2&gt;&lt;p&gt;如果说自我纠正是&lt;strong&gt;单次会话内&lt;/strong&gt;的内层循环，那记忆就是&lt;strong&gt;跨会话&lt;/strong&gt;的外层循环：Claude 在一次会话里把经验写进记忆，这些记忆能在未来的会话里被取回。&lt;/p&gt;
&lt;p&gt;Lance 用 Continual Learning Bench 1.0 里的一个任务来测：给 agent 一个 SQL 数据库，让它回答一连串问题。&lt;strong&gt;每个问题是一个独立的 agent 会话&lt;/strong&gt;，会话之间靠记忆来传递经验。他用 CMA 的记忆功能给每个 agent 挂载一个可跨会话共享的文件系统。&lt;/p&gt;
&lt;p&gt;他观察到，&lt;strong&gt;有效使用记忆是有梯度的&lt;/strong&gt;，从低到高是这么一条进阶链：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;失败（fail）&lt;/strong&gt;：做错了，把它记下来&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;调查（investigate）&lt;/strong&gt;：在继续之前，搞清楚为什么错&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证（verify）&lt;/strong&gt;：把诊断变成一个被核实过的事实&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提炼（distill）&lt;/strong&gt;：把验证结果升华成一条通用规则&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;查阅（consult）&lt;/strong&gt;：下次直接读这条规则，而不是重新推导一遍&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;三个模型卡在了不同的台阶上，差距非常直观：&lt;/p&gt;
&lt;p&gt;&lt;img alt="Continual Learning Bench 1.0：记忆的三模型对比" class="gallery-image" data-flex-basis="485px" data-flex-grow="202" height="1048" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/designing-agent-loops/continual-learning-bench.webp" srcset="https://guige.ai/p/designing-agent-loops/continual-learning-bench_hu_a4a0f43406f74d02.webp 800w, https://guige.ai/p/designing-agent-loops/continual-learning-bench_hu_c9dc94796914af41.webp 1600w, https://guige.ai/p/designing-agent-loops/continual-learning-bench.webp 2120w" width="2120"&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;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Sonnet 4.6&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;第 1 步（失败）&lt;/td&gt;
 &lt;td&gt;记忆只是一堆失败笔记和没验证的猜测（「也许是 prc 不是 prc_usd？」），几乎不回头查阅。得分 0.330，跟无记忆的 baseline 几乎没差&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Opus 4.7&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;第 3 步（验证）&lt;/td&gt;
 &lt;td&gt;会建带不确定标记的 schema 参考（「可能是以分为单位？待验证」），但验证覆盖率低，只有 7–33%（中位数约 17%）。得分 0.700&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Fable 5&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;走完全程&lt;/td&gt;
 &lt;td&gt;最强的几次运行里验证覆盖率高达 73%（30 题里验证了 22 题），并能把学到的东西提炼成通用规则，反哺未来任务。得分 0.839&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;看右边那张收敛曲线特别有感觉：&lt;strong&gt;带记忆的实线和无记忆的虚线，差距随着问题数累积越拉越大。&lt;/strong&gt; 记忆不是「记下来」就完事了，关键在于你的 agent 能不能走完「失败 → 调查 → 验证 → 提炼 → 查阅」这条链。&lt;strong&gt;Sonnet 4.6 停在记笔记，Fable 5 在建知识库——这就是 0.330 和 0.839 的差距。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个实操提醒：如果你的模型只走到第 1 步（像 Sonnet 4.6 那样），你需要给它&lt;strong&gt;针对具体任务的记忆指令&lt;/strong&gt;来往上推。记忆这东西，模型越弱越需要你手把手教它怎么用。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="我的体感这其实是在重新分配智能"&gt;我的体感：这其实是在重新分配「智能」
&lt;/h2&gt;&lt;p&gt;整理完这两个实验，我自己最大的感受是：&lt;strong&gt;Agent 工程正在从「怎么问」转向「怎么搭环境」。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;过去一年我自己用 Claude Code 的体验也印证了这点。早期我花大量时间打磨 prompt，恨不得把每一步都写死。但模型一强，这套做法的边际收益就崩了——你写的规则越细，反而越限制它。真正让产出质变的，是另外两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;给它一个可验证的目标&lt;/strong&gt;，然后闭嘴让它自己跑。&lt;code&gt;/goal&lt;/code&gt; 这类原语的价值就在这——你定义「什么叫做完了」，剩下的交给循环。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;让它管理自己的上下文&lt;/strong&gt;，包括往记忆里写、从记忆里读。你不需要每次都把背景重新喂一遍。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lance 那句话我很认同：&lt;strong&gt;与其直接 prompt 和 steer 模型，不如设计循环，让模型自己根据环境反馈做自我纠正（比如 &lt;code&gt;/goal&lt;/code&gt; 或 Outcomes），并管理自己的上下文（比如记忆）。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;换个角度说，你作为工程师的「智能」，正在从「写在 prompt 里」迁移到「写在循环结构里」。前者是一次性的指令，后者是可复利的系统。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="takeaway下次构建-agent先问自己四个问题"&gt;Takeaway：下次构建 Agent，先问自己四个问题
&lt;/h2&gt;&lt;p&gt;如果你也想用循环的思路构建 agent，把下面四个问题贴在显示器上：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;目标可验证吗？&lt;/strong&gt; 能不能写出一个 rubric / goal，让一个独立的裁判明确判断「做完了没有」？如果不能，先把任务拆到能验证为止。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;裁判独立吗？&lt;/strong&gt; 千万别让主 agent 自我批判。用一个独立的 grader 模型或子 agent，在干净的上下文里打分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;循环有边界吗？&lt;/strong&gt; &lt;code&gt;max_iterations&lt;/code&gt;、时间上限、退出条件——别让它无限跑。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;记忆走完链路了吗？&lt;/strong&gt; 检查你的 agent 是停在「记笔记」，还是真的在「失败 → 调查 → 验证 → 提炼 → 查阅」。停在第一步的记忆约等于没有。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;想上手的话，可以直接问最新版的 Claude Code——它能用内置的 &lt;code&gt;/claude-api&lt;/code&gt; skill 告诉你 Fable 5 的 prompting 最佳实践、&lt;code&gt;/goal&lt;/code&gt;、Claude Managed Agents 这些 API 特性怎么用。&lt;/p&gt;
&lt;p&gt;说到底，&lt;strong&gt;写 prompt 是在赌一次直觉，设计循环是在搭一套能自我改进的系统。&lt;/strong&gt; 模型越强，后者的回报越高。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原推文：&lt;a class="link" href="https://x.com/RLanceMartin/status/2064397389189071163" target="_blank" rel="noopener"
 &gt;Lance Martin (@RLanceMartin) — Designing loops with Fable 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Parameter Golf：开源 ML 工程挑战（16MB 模型，10 分钟，8×H100）&lt;/li&gt;
&lt;li&gt;Continual Learning Bench 1.0：跨会话记忆基准&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Claude-Cookbooks 全景导航：被 README 藏起来的另一半</title><link>https://guige.ai/p/claude-cookbooks-index/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/claude-cookbooks-index/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post Claude-Cookbooks 全景导航：被 README 藏起来的另一半" /&gt;&lt;p&gt;最近 AI 的发展真的是日行千里。&lt;/p&gt;
&lt;p&gt;每天打开手机开源社区、翻公众号、过一遍 GitHub Trending——新模型、新工具、新系统、新应用，再加上无数业内高人分享的实践经验，内容浩如烟海，&lt;strong&gt;百家争鸣，百家齐放&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;说实话，我自己看着都眼花缭乱。有时候晚上躺下想到&amp;quot;今天又没来得及看那几篇论文、那几个新项目&amp;quot;，连睡觉都觉得是在浪费学习时间。&lt;/p&gt;
&lt;p&gt;这种状态持续久了，人是会焦虑的。鬼哥每天拼命学习, 拼命实践, 都快忘了自己还是个吉他手, 也得花时间练琴了.&lt;/p&gt;
&lt;p&gt;但前阵子我沉下心来，花了一段时间认真翻了一遍 Anthropic 官方的这份 &lt;a class="link" href="https://github.com/anthropics/claude-cookbooks" target="_blank" rel="noopener"
 &gt;claude-cookbooks&lt;/a&gt;——翻完之后我反倒松了一口气。&lt;/p&gt;
&lt;p&gt;这份仓库里的内容，&lt;strong&gt;积累了 Anthropic 工程师过去三年对 AI 工程化的思考&lt;/strong&gt;。覆盖面非常全：从 API 最基础的用法，到 Prompt Caching 的成本优化，到 Tool Use 的各种进阶模式，再到 Agent SDK、Managed Agents、Skills 这些最近才成型的产品形态——几乎把&amp;quot;怎么用好 Claude 做一个能上生产的 AI 应用&amp;quot;这件事，从头到尾挨个讲了一遍。&lt;/p&gt;
&lt;p&gt;宝藏是真的多，内容也真的多。想用一两篇文章讲清楚根本不现实。&lt;/p&gt;
&lt;p&gt;所以我决定先写这一篇——&lt;strong&gt;给这份指南做一个大致的梳理，整理出一份索引地图。&lt;/strong&gt; 后面每个具体话题，再单独开长文展开。&lt;/p&gt;
&lt;p&gt;也建议你把这份 cookbook 当作一份&lt;strong&gt;可以反复查、反复学的学习地图&lt;/strong&gt;：不需要一次读完，但值得在接下来几个月里反复回来翻。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;你打开 &lt;a class="link" href="https://github.com/anthropics/claude-cookbooks" target="_blank" rel="noopener"
 &gt;anthropics/claude-cookbooks&lt;/a&gt; 的 README，看到的大概是十几条链接——分类、RAG、摘要、几个 tool use 示例、一篇 prompt caching。&lt;/p&gt;
&lt;p&gt;如果你只看 README，会以为这就是一份写了两年没人管的老项目。&lt;/p&gt;
&lt;p&gt;但你往目录里翻一下就会发现——&lt;strong&gt;这份仓库里塞着接近一百篇 notebook，README 里能看到的，大概只占三分之一。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;被 README 藏起来的另一半，恰恰是这两年 Anthropic 官方重点推进的东西：Claude Agent SDK 教程、Managed Agents 的 CMA 系列、Skills 技能包、Tool Use 的进阶玩法、Extended Thinking 和 Tool Search 的新模式……这些内容散落在 &lt;code&gt;claude_agent_sdk/&lt;/code&gt;、&lt;code&gt;managed_agents/&lt;/code&gt;、&lt;code&gt;skills/&lt;/code&gt;、&lt;code&gt;patterns/agents/&lt;/code&gt; 这些 README 完全没提的目录下。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/cover.webp" srcset="https://guige.ai/p/claude-cookbooks-index/cover_hu_53cbe1068ad82fe6.webp 800w, https://guige.ai/p/claude-cookbooks-index/cover_hu_929032a06d32b24c.webp 1600w, https://guige.ai/p/claude-cookbooks-index/cover_hu_1d8f6eabb53c4602.webp 2400w, https://guige.ai/p/claude-cookbooks-index/cover.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;p&gt;这篇文章做的事很简单：&lt;strong&gt;把这份 repo 按主题重新整理成一张可以反复查的索引地图。&lt;/strong&gt; 每个模块一句话定位、列出具体 notebook 文件名、说清楚什么时候该看它——后面想逐篇深入的时候，翻这一页就知道从哪下手。&lt;/p&gt;
&lt;p&gt;不做深度拆解，只做导航。真正的&amp;quot;为什么要这么设计&amp;quot;那种长文，留给后面每个主题单开一篇来写。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一先把这份-repo-的定位搞清楚"&gt;一、先把这份 repo 的定位搞清楚
&lt;/h2&gt;&lt;p&gt;在往下看之前，先明确一件事：&lt;strong&gt;claude-cookbooks 不是文档的补充，而是可跑的工程示例库。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anthropic 官方的内容资源现在大致分成三层：&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;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a class="link" href="https://docs.claude.com" target="_blank" rel="noopener"
 &gt;docs.claude.com&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;权威文档&lt;/td&gt;
 &lt;td&gt;查 API 参数、模型特性&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a class="link" href="https://github.com/anthropics/courses" target="_blank" rel="noopener"
 &gt;anthropics/courses&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;入门课程&lt;/td&gt;
 &lt;td&gt;第一次接触 API 的开发者&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a class="link" href="https://github.com/anthropics/claude-cookbooks" target="_blank" rel="noopener"
 &gt;anthropics/claude-cookbooks&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;工程菜谱&lt;/td&gt;
 &lt;td&gt;已经会调 API、想把某个具体场景做好的人&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Cookbook 是&amp;quot;可执行的最佳实践&amp;quot;：每个 notebook 就是一个最小可跑的场景，装完依赖、填上 API key 就能复现。它的价值不在于&amp;quot;教你 Claude 是什么&amp;quot;，而在于&amp;quot;别人做过这件事，代码给你抄走&amp;quot;。&lt;/p&gt;
&lt;p&gt;换句话说，文档告诉你&lt;strong&gt;某个 API 参数是什么意思&lt;/strong&gt;，cookbook 告诉你&lt;strong&gt;在真实场景里这个参数应该怎么配、还要和哪几件事配合用&lt;/strong&gt;。这两者是互补的——文档适合查细节，cookbook 适合找套路。&lt;/p&gt;
&lt;p&gt;这也解释了为什么它的更新节奏跟着 Anthropic 的产品线走——&lt;strong&gt;每出一个新产品或新能力，这里就会多一个目录&lt;/strong&gt;。Claude Agent SDK 发布之后有了 &lt;code&gt;claude_agent_sdk/&lt;/code&gt;，Managed Agents 发布之后有了 &lt;code&gt;managed_agents/&lt;/code&gt;，Skills 功能上线之后有了 &lt;code&gt;skills/&lt;/code&gt;。所以它也是观察 Anthropic 官方工程重点转向的一个风向标。&lt;/p&gt;
&lt;p&gt;一个小提醒：README 里的链接还是旧的 &lt;code&gt;anthropic-cookbook&lt;/code&gt; 仓库路径（目录名对，仓库名已改成 &lt;code&gt;claude-cookbooks&lt;/code&gt;）。clone 的时候用新名字，跟着链接点进去会被 GitHub 自动重定向，不影响看内容，但会让你怀疑自己是不是 clone 错了库。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二一张总览图20-多个目录怎么归类"&gt;二、一张总览图：20 多个目录怎么归类
&lt;/h2&gt;&lt;p&gt;仓库里大大小小二十多个目录，我按&amp;quot;使用场景&amp;quot;把它们重新归了一下组：&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;/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;&lt;code&gt;capabilities/&lt;/code&gt; &lt;code&gt;multimodal/&lt;/code&gt; &lt;code&gt;extended_thinking/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Claude API 开箱即用能做的事&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Tool Use&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;tool_use/&lt;/code&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;&lt;code&gt;misc/&lt;/code&gt;（caching/batch 部分） &lt;code&gt;observability/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Prompt caching、批处理、用量监控&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Agent 三条路径&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;patterns/agents/&lt;/code&gt; &lt;code&gt;claude_agent_sdk/&lt;/code&gt; &lt;code&gt;managed_agents/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;从模式→SDK→托管运行时的递进&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Skills 技能包&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;skills/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;打包专业能力给 Claude 调用&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;code&gt;third_party/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Pinecone / Voyage / Mongo / Wolfram 等八家&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;code&gt;tool_evaluation/&lt;/code&gt; &lt;code&gt;finetuning/&lt;/code&gt; &lt;code&gt;misc/building_evals.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Prompt eval、工具 eval、Bedrock 微调&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;工程实践（meta）&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;整个仓库的组织方式&lt;/td&gt;
 &lt;td&gt;uv / ruff / registry / slash commands&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/overview.webp" srcset="https://guige.ai/p/claude-cookbooks-index/overview_hu_30e715d96f70a7a.webp 800w, https://guige.ai/p/claude-cookbooks-index/overview_hu_d2028a1bd822e71e.webp 1600w, https://guige.ai/p/claude-cookbooks-index/overview_hu_61f12447a251cb2d.webp 2400w, https://guige.ai/p/claude-cookbooks-index/overview.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;p&gt;接下来按这个骨架一层层往里翻。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三基础能力层claude-api-开箱即用能做什么"&gt;三、基础能力层：Claude API 开箱即用能做什么
&lt;/h2&gt;&lt;h3 id="31-capabilities--经典的-nlp-任务"&gt;3.1 &lt;code&gt;capabilities/&lt;/code&gt; — 经典的 NLP 任务
&lt;/h3&gt;&lt;p&gt;这是整个 cookbook 里最&amp;quot;传统&amp;quot;的一块，也是大部分教程会从这里开始的原因——这些任务不依赖任何高级特性，一个 API key 就能跑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;classification/&lt;/code&gt;&lt;/strong&gt; — 文本分类。几个 prompt 模式对比，从 zero-shot 到 few-shot 到带 chain-of-thought 的长 prompt。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;summarization/&lt;/code&gt;&lt;/strong&gt; — 摘要。包括长文分块摘要、多文档合并摘要、以及&amp;quot;按角色视角写摘要&amp;quot;这种进阶玩法。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;retrieval_augmented_generation/&lt;/code&gt;&lt;/strong&gt; — RAG。从最基础的&amp;quot;向量检索 + 拼 prompt&amp;quot;到带 rerank、混合检索的几种设计。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;contextual-embeddings/&lt;/code&gt;&lt;/strong&gt; — 这是比较新的一篇，讲 Anthropic 自己提出的&amp;quot;给每个 chunk 加一段上下文描述再 embed&amp;quot;的做法，在某些场景上能显著提升召回。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;text_to_sql/&lt;/code&gt;&lt;/strong&gt; — 自然语言转 SQL，包括 schema 注入、错误恢复、结果校验。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;knowledge_graph/&lt;/code&gt;&lt;/strong&gt; — 用 Claude 从文本抽取三元组、构建图谱。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是刚开始用 Claude API 做项目，这块是&amp;quot;背景知识&amp;quot;——不是每篇都要精读，但至少扫一遍标题，知道什么场景能在这里找到参考实现。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;contextual-embeddings/&lt;/code&gt; 这篇值得单独提一下。传统 RAG 的 embedding 过程是直接把 chunk 扔进 embedding 模型，但很多 chunk 脱离上下文后其实没法检索——比如一段&amp;quot;它在第三季度增长了 12%&amp;quot;，没有&amp;quot;哪家公司 / 哪个产品&amp;quot;的上下文，embedding 向量就很泛。Anthropic 的做法是先用 Claude 给每个 chunk 生成一段上下文描述（&amp;ldquo;这段来自 XXX 公司 2024 Q3 财报的营收章节&amp;rdquo;），再和原文拼在一起去 embed。实测在有些场景上能把召回率提升 35% 以上，代价是 embedding 阶段的 prompt caching 必须做好，不然成本会飙。&lt;/p&gt;
&lt;h3 id="32-multimodal--视觉能力"&gt;3.2 &lt;code&gt;multimodal/&lt;/code&gt; — 视觉能力
&lt;/h3&gt;&lt;p&gt;Claude 的 vision 能力现在已经是基础配置，这个目录把&amp;quot;怎么用好它&amp;quot;讲了一圈：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;getting_started_with_vision.ipynb&lt;/code&gt;&lt;/strong&gt; — 入门。base64 编码、URL 传图、多图一起传的几种姿势。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;best_practices_for_vision.ipynb&lt;/code&gt;&lt;/strong&gt; — 最佳实践。图片放在 prompt 的哪个位置、多图之间怎么编号、什么时候该先 OCR 再喂文字。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;reading_charts_graphs_powerpoints.ipynb&lt;/code&gt;&lt;/strong&gt; — 图表解读。财报柱状图、流程图、PPT 截图的实战。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;how_to_transcribe_text.ipynb&lt;/code&gt;&lt;/strong&gt; — 表单/手写稿 OCR。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;crop_tool.ipynb&lt;/code&gt;&lt;/strong&gt; — 让 Claude 自己决定&amp;quot;先裁图再看细节&amp;quot;的分步处理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;using_sub_agents.ipynb&lt;/code&gt;&lt;/strong&gt; — 用 Haiku 做前置视觉处理，Opus 做最终决策的 sub-agent 模式。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="33-extended_thinking--让模型想得更久"&gt;3.3 &lt;code&gt;extended_thinking/&lt;/code&gt; — 让模型&amp;quot;想得更久&amp;quot;
&lt;/h3&gt;&lt;p&gt;Extended Thinking 是 Claude 4 系列引入的能力，让模型在给出答案前先做一段内部推理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;extended_thinking.ipynb&lt;/code&gt;&lt;/strong&gt; — 基础用法。怎么打开、thinking budget 怎么设、拿到的 thinking block 长什么样。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;extended_thinking_with_tool_use.ipynb&lt;/code&gt;&lt;/strong&gt; — 和 tool use 结合。这个组合比较微妙——model 在 tool call 之间保留 thinking context 的方式跟普通对话不一样，这一篇讲清楚了边界。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="四tool-use-专题整个-cookbook-最密的一块"&gt;四、Tool Use 专题：整个 cookbook 最密的一块
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;tool_use/&lt;/code&gt; 目录是更新最频繁、内容也最厚的一块。里面的 notebook 粗粗可以分成&amp;quot;基础用法&amp;quot;和&amp;quot;进阶玩法&amp;quot;两层：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基础几篇，先过一遍：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;calculator_tool.ipynb&lt;/code&gt; — 第一次接触 tool use 必看，一个最简单的计算器示例。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_choice.ipynb&lt;/code&gt; — &lt;code&gt;auto&lt;/code&gt; / &lt;code&gt;any&lt;/code&gt; / &lt;code&gt;tool&lt;/code&gt;（强制某个具体工具）三种模式的区别。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;parallel_tools.ipynb&lt;/code&gt; — 一次响应里并发调多个工具。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;extracting_structured_json.ipynb&lt;/code&gt; — 用 tool use 强制返回结构化 JSON，比裸 prompt 稳定得多。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_use_with_pydantic.ipynb&lt;/code&gt; — 直接用 Pydantic 模型定义 tool schema。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;customer_service_agent.ipynb&lt;/code&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;&lt;strong&gt;&lt;code&gt;memory_cookbook.ipynb&lt;/code&gt; + &lt;code&gt;memory_tool.py&lt;/code&gt;&lt;/strong&gt; — Claude 的 memory tool，让模型能读写自己的记忆文件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;programmatic_tool_calling_ptc.ipynb&lt;/code&gt;&lt;/strong&gt; — PTC（Programmatic Tool Calling）。让 Claude 生成一段小代码来决定怎么调用一组工具，而不是一个个手动编排。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;automatic-context-compaction.ipynb&lt;/code&gt;&lt;/strong&gt; — 自动上下文压缩。长对话里如何在触发上限前让模型自己&amp;quot;总结前面然后丢掉&amp;quot;。这一篇和我之前写过的 &lt;a class="link" href="https://luoli523.github.io/p/claude-code-session-management/" target="_blank" rel="noopener"
 &gt;Session 管理文章&lt;/a&gt; 其实是同一套思路的底层实现。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tool_search_with_embeddings.ipynb&lt;/code&gt; + &lt;code&gt;tool_search_alternate_approaches.ipynb&lt;/code&gt;&lt;/strong&gt; — 工具太多塞不进 prompt 的时候怎么办。用 embedding 召回最相关的工具再喂给模型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vision_with_tools.ipynb&lt;/code&gt;&lt;/strong&gt; — 把 vision 输入和 tool use 混在一起用的注意事项。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;threat_intel_enrichment_agent.ipynb&lt;/code&gt;&lt;/strong&gt; — 威胁情报富化 Agent，一个比较完整的垂直场景实战。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;context_engineering/&lt;/code&gt;&lt;/strong&gt; 子目录 — 专门讲上下文工程的一组 notebook，是相对独立的小专题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个目录是我个人会反复回来查的。基本上做任何一个需要&amp;quot;让模型调用外部能力&amp;quot;的项目，都能在这里找到至少一个相近的参考实现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特别想点名 PTC 和 Tool Search 这两篇。&lt;/strong&gt; PTC（Programmatic Tool Calling）解决的是&amp;quot;工具编排逻辑比工具本身还复杂&amp;quot;的场景——比如你有 10 个工具需要按特定顺序调用并做中间结果处理，与其让模型一轮一轮 tool call，不如让它一次性生成一段编排代码，由你在沙箱里执行。这种做法在复杂工作流里能把 round-trip 次数从十几轮压到两三轮，延迟和成本都是数量级的改善。&lt;/p&gt;
&lt;p&gt;Tool Search 解决的是另一类问题：&lt;strong&gt;工具数量多到塞不进 prompt&lt;/strong&gt;。一个大型 Agent 系统可能挂了几百个 MCP 工具，全部塞进去既超 token 又污染模型判断。用 embedding 预先对工具做语义索引，按用户 query 召回 top-K 工具再喂给模型，是目前比较成熟的解法。这一篇讲清楚了实现细节和几种 trade-off。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/tool-use.webp" srcset="https://guige.ai/p/claude-cookbooks-index/tool-use_hu_e6dfd6544783b5d6.webp 800w, https://guige.ai/p/claude-cookbooks-index/tool-use_hu_e4d5b93d38434ff6.webp 1600w, https://guige.ai/p/claude-cookbooks-index/tool-use_hu_1065b15c30b97f93.webp 2400w, https://guige.ai/p/claude-cookbooks-index/tool-use.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五性能与成本优化"&gt;五、性能与成本优化
&lt;/h2&gt;&lt;p&gt;做 Demo 的时候钱和速度都不敏感，但一旦到线上，&lt;strong&gt;成本和延迟立刻就会成为第一优先级问题。&lt;/strong&gt; 这块内容散落在几个目录里，我挑出来单独放一节：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/prompt_caching.ipynb&lt;/code&gt;&lt;/strong&gt; — Prompt caching 的基础用法。配合我之前那篇 &lt;a class="link" href="https://luoli523.github.io/p/llm-prompt-caching-explained/" target="_blank" rel="noopener"
 &gt;Prompt Caching 深度拆解&lt;/a&gt; 一起看效果最好：那篇讲&amp;quot;为什么要这么做&amp;quot;和底层 KV cache 原理，这篇告诉你&amp;quot;具体几行代码怎么写&amp;quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/speculative_prompt_caching.ipynb&lt;/code&gt;&lt;/strong&gt; — 推测式缓存。不等用户发消息，提前把可能的下一轮 prompt 预热进缓存。在某些低延迟场景下能把首 token 延迟打下去很多。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/batch_processing.ipynb&lt;/code&gt;&lt;/strong&gt; — Message Batches API。离线批处理的价格是实时请求的 50%，跑评测、做回填数据时能省很多。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/session_memory_compaction.ipynb&lt;/code&gt;&lt;/strong&gt; — 会话记忆压缩。和 tool use 里的 automatic-context-compaction 是配套关系，一个讲工具侧，一个讲消息侧。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;observability/usage_cost_api.ipynb&lt;/code&gt;&lt;/strong&gt; — Usage &amp;amp; Cost API。用来做团队用量看板、成本归因报表。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/using_citations.ipynb&lt;/code&gt;&lt;/strong&gt; — Citations 功能。让 Claude 在回答里标注&amp;quot;这句话来自文档的哪一段&amp;quot;，做 RAG 产品时非常有用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/sampling_past_max_tokens.ipynb&lt;/code&gt;&lt;/strong&gt; — 当输出被 max_tokens 截断时怎么优雅续写。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这几篇单独看每一个都不长，但组合起来基本就是一个&amp;quot;线上项目优化清单&amp;quot;。上线前对着这张清单过一遍，能省下不少成本和踩坑时间。&lt;/p&gt;
&lt;p&gt;有一个非常容易被忽略的组合用法：&lt;strong&gt;prompt caching + batch processing&lt;/strong&gt;。Batch API 本身就打 5 折，再加上 caching 命中的部分又打 1 折左右，叠加下来做离线大规模推理时的成本可以比天真实现低 85% 以上。如果你在做评估、数据标注、回填历史数据这类离线任务，这个组合的经济性优势非常大，但大多数人做 MVP 时根本不会想到要用它。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六agent-的三条进阶路径"&gt;六、Agent 的三条进阶路径
&lt;/h2&gt;&lt;p&gt;这是整个 cookbook 里我认为&lt;strong&gt;最值得花时间的一块&lt;/strong&gt;，也是 README 最没讲清楚的一块。&lt;/p&gt;
&lt;p&gt;Anthropic 把&amp;quot;怎么构建 Agent&amp;quot;拆成了三个层次递进的目录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;patterns/agents/ ← 模式层：概念和套路（轻量）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude_agent_sdk/ ← SDK 层：用 Agent SDK 自己组装（中等）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;managed_agents/ ← 托管层：用 Managed Agents 托管运行时（重型）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;从左到右是&amp;quot;自由度递减、工程量递减&amp;quot;的关系。&lt;/strong&gt; 哪一层适合你，取决于你要做的系统规模和运行需求。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/agents-layers.webp" srcset="https://guige.ai/p/claude-cookbooks-index/agents-layers_hu_f3490ccceed35968.webp 800w, https://guige.ai/p/claude-cookbooks-index/agents-layers_hu_f705429a21435e12.webp 1600w, https://guige.ai/p/claude-cookbooks-index/agents-layers_hu_5220f69a14a1d93b.webp 2400w, https://guige.ai/p/claude-cookbooks-index/agents-layers.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;h3 id="61-模式层-patternsagents--先把套路搞清楚"&gt;6.1 模式层 &lt;code&gt;patterns/agents/&lt;/code&gt; — 先把套路搞清楚
&lt;/h3&gt;&lt;p&gt;这个目录对应的是 Anthropic 那篇著名博客 &lt;a class="link" href="https://www.anthropic.com/research/building-effective-agents" target="_blank" rel="noopener"
 &gt;&lt;em&gt;Building Effective Agents&lt;/em&gt;&lt;/a&gt; 里提的几种基础模式的&lt;strong&gt;可运行版本&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;basic_workflows.ipynb&lt;/code&gt;&lt;/strong&gt; — Prompt chaining / Routing / Parallelization 三种基础工作流模式。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;evaluator_optimizer.ipynb&lt;/code&gt;&lt;/strong&gt; — 评估者-优化者模式。一个 Agent 输出、另一个 Agent 打分并反馈，循环到满足条件为止。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;orchestrator_workers.ipynb&lt;/code&gt;&lt;/strong&gt; — 编排者-工人模式。主 Agent 拆任务，子 Agent 并发执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这三篇是&amp;quot;概念打底&amp;quot;。哪怕你最后不用 Agent SDK，看一遍这三个模式，再去评估任何第三方 Agent 框架的设计，心里都会有一把尺子。&lt;/p&gt;
&lt;h3 id="62-sdk-层-claude_agent_sdk--官方的-agent-教程"&gt;6.2 SDK 层 &lt;code&gt;claude_agent_sdk/&lt;/code&gt; — 官方的 Agent 教程
&lt;/h3&gt;&lt;p&gt;这是 Anthropic 最近重点推进的一块，基于 &lt;a class="link" href="https://github.com/anthropics/claude-agent-sdk-python" target="_blank" rel="noopener"
 &gt;claude-agent-sdk-python&lt;/a&gt;，六篇 notebook 是一条渐进式的教学路径：&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;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;00&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;00_The_one_liner_research_agent.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;一行 &lt;code&gt;query()&lt;/code&gt; 起一个研究 Agent，理解异步迭代和基础概念&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;01&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;01_The_chief_of_staff_agent.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CEO 助理 Agent——Memory、Output Styles、Plan Mode、Slash Commands、Hooks、子 Agent 编排全家桶&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;02&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;02_The_observability_agent.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;可观测性 Agent，需要 GitHub Token + Docker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;03&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;03_The_site_reliability_agent.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SRE Agent，处理告警和事故&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;04&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;04_migrating_from_openai_agents_sdk.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;从 OpenAI Agents SDK 迁移过来的映射指南——&lt;strong&gt;有存量代码的团队重点看这篇&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;05_Building_a_session_browser.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Session 浏览器 demo，可视化 Agent 会话&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这一条路径的隐含逻辑是：&amp;ldquo;你如果已经在用 Claude Code，那 Claude Code 背后的 Agent 内核就是 Agent SDK，你可以用同样的工具链做任何 Agent 应用，而不只是软件开发&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;01 这篇 Chief of Staff 我单独推荐——它是整个教程里&lt;strong&gt;最接近&amp;quot;生产级 Agent 到底长什么样&amp;quot;的那篇&lt;/strong&gt;。里面把持久化记忆（CLAUDE.md 机制）、输出风格切换（给 CEO 发邮件 vs 给团队发内部备忘是两种语气）、Plan Mode（复杂任务先产出方案再执行）、Slash Commands（把高频操作做成可复用快捷方式）、Hooks（每次工具调用都自动写审计日志）、Subagent 编排（法务/财务/战略三个专项 Agent 分工协作）这一整套都串起来了。看完之后你会意识到，&lt;strong&gt;&amp;ldquo;Agent&amp;rdquo; 这个概念背后其实是一组工程约束的组合&lt;/strong&gt;，单独拎出任何一个都不够，组合起来才是真正可以上生产的东西。&lt;/p&gt;
&lt;h3 id="63-托管层-managed_agents--claude-managed-agents-cma"&gt;6.3 托管层 &lt;code&gt;managed_agents/&lt;/code&gt; — Claude Managed Agents (CMA)
&lt;/h3&gt;&lt;p&gt;Managed Agents 是 Anthropic 相对较新的一个产品形态：&lt;strong&gt;服务端托管的 Agent 运行时&lt;/strong&gt;，带沙箱、会话持久化、文件状态保留，你只要定义 Agent 和环境，剩下的交给托管服务。&lt;/p&gt;
&lt;p&gt;这个目录分成两组：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三个应用型示例&lt;/strong&gt;（适合先看，建立直觉）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data_analyst_agent.ipynb&lt;/code&gt; — CSV 进、HTML 分析报告出的数据分析 Agent。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;slack_data_bot.ipynb&lt;/code&gt; — 把上面那个分析 Agent 包成 Slack Bot。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sre_incident_responder.ipynb&lt;/code&gt; — 告警→调查→PR→人审→合并的完整 SRE 流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;六个教程型 notebook&lt;/strong&gt;（以 &lt;code&gt;CMA_&lt;/code&gt; 开头，建议按顺序读）：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Notebook&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;code&gt;CMA_iterate_fix_failing_tests.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;入门。引入 agent / environment / session、文件挂载、流式事件循环&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_orchestrate_issue_to_pr.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;issue → 修复 → PR → CI → 人审 → 合并的完整编排&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_explore_unfamiliar_codebase.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;在陌生代码库里探索，含&amp;quot;过期文档陷阱&amp;quot;演示&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_gate_human_in_the_loop.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;人类审批关卡，用自定义工具的 &lt;code&gt;decide()&lt;/code&gt; / &lt;code&gt;escalate()&lt;/code&gt; 模式&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_prompt_versioning_and_rollback.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;提示词版本化与回滚&lt;/strong&gt;——生产 Agent 的脆弱环节，中文圈讲得很少&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_operate_in_production.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;生产部署：MCP 工具集、vault 存 per-user 凭证、webhook idle 模式&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这一组是目前 cookbook 里&lt;strong&gt;最贴近&amp;quot;企业级 Agent 运营&amp;quot;的内容&lt;/strong&gt;。如果你在做 B 端 Agent 产品，哪怕不用 Managed Agents，也强烈建议看一遍 prompt versioning 和 operate in production 这两篇——它们把&amp;quot;Agent 上线之后你还要做哪些事&amp;quot;讲得最清楚。&lt;/p&gt;
&lt;p&gt;稍微展开一下 &lt;code&gt;CMA_prompt_versioning_and_rollback.ipynb&lt;/code&gt; 为什么特别值得看：传统软件工程里代码改动有 Git、有 CI、有灰度发布，但 &lt;strong&gt;prompt 的改动目前很多团队还靠 Excel 或 Notion 维护&lt;/strong&gt;。Prompt 不是代码但比代码更脆弱——同一个字改一下，模型行为可能完全变样。这篇 notebook 给出的答案是把 prompt 也纳入版本化体系：服务端存版本、每个 session 可以绑定到特定版本、用标注过的测试集做版本对比、发现回归可以按 session ID 批量回滚。这套工作流不依赖 Managed Agents 本身也能借鉴——核心思路是&lt;strong&gt;把 prompt 当成一等公民的配置来治理&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="七skills-技能包"&gt;七、Skills 技能包
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;skills/&lt;/code&gt; 目录对应的是 Claude 的 Skills 功能——&lt;strong&gt;打包好的&amp;quot;专业能力&amp;quot;&lt;/strong&gt;，Claude 在需要的时候自动发现并加载。&lt;/p&gt;
&lt;p&gt;核心理念是 &lt;strong&gt;Progressive Disclosure&lt;/strong&gt;：技能定义不在每轮对话里都加载，只在模型判断&amp;quot;这个任务需要 Excel 能力&amp;quot;时才把 Excel skill 拉进来，从而节省 token。&lt;/p&gt;
&lt;p&gt;这个目录下有三篇 notebook：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;notebooks/01_skills_introduction.ipynb&lt;/code&gt; — 基础：加 beta header、创建第一个 Excel/PPT/PDF。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;notebooks/02_skills_financial_applications.ipynb&lt;/code&gt; — 金融场景：投资组合报告、多格式工作流（CSV → Excel → PPT → PDF）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;notebooks/03_skills_custom_development.ipynb&lt;/code&gt; — 自定义 skill 开发：金融比率计算器、品牌指南 skill。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills 这个功能对应的是你在 Claude.ai 里看到的&amp;quot;Claude 帮你直接生成 Excel/PPT&amp;quot;那个能力。如果你想做类似的&amp;quot;让 Claude 产出真正可用的办公文档&amp;quot;的产品，这是唯一的官方路径。&lt;/p&gt;
&lt;p&gt;Progressive Disclosure 这个机制值得单独理解一下。传统做法里，你要给模型扩展能力，通常是把所有工具定义、system prompt、知识都塞进每一轮对话——结果是&lt;strong&gt;你挂的能力越多，token 成本越高，而且大部分 token 根本用不上&lt;/strong&gt;。Skills 的思路是把能力拆成有元数据的&amp;quot;技能包&amp;quot;，只在模型判断当前任务需要时才动态加载对应的代码和指令，本质上是一种 &lt;strong&gt;lazy loading + capability routing&lt;/strong&gt;。这个设计思路在做大型 Agent 平台时非常关键，哪怕你不用 Skills 产品本身，理解它的机制对你设计自己的能力注入系统也有参考价值。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="八第三方集成一览"&gt;八、第三方集成一览
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;third_party/&lt;/code&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;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Pinecone/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;向量数据库&lt;/td&gt;
 &lt;td&gt;RAG 召回&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;VoyageAI/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Embedding 模型&lt;/td&gt;
 &lt;td&gt;RAG、语义搜索&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MongoDB/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文档数据库 + 向量搜索&lt;/td&gt;
 &lt;td&gt;一体化 RAG 后端&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;LlamaIndex/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;RAG 框架&lt;/td&gt;
 &lt;td&gt;和 Claude 一起用的完整 pipeline&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Wikipedia/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;知识源&lt;/td&gt;
 &lt;td&gt;实时查询百科做事实补充&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WolframAlpha/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;计算/数学&lt;/td&gt;
 &lt;td&gt;精确数值计算、公式求解&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Deepgram/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;语音转文字&lt;/td&gt;
 &lt;td&gt;音频输入场景&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ElevenLabs/&lt;/code&gt;&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;/p&gt;
&lt;hr&gt;
&lt;h2 id="九评估与微调"&gt;九、评估与微调
&lt;/h2&gt;&lt;p&gt;这两块相对偏&amp;quot;工程化&amp;quot;，但一旦你开始做严肃点的 AI 产品就绕不过去：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/building_evals.ipynb&lt;/code&gt;&lt;/strong&gt; — 自动化评估。用 Claude 当 judge 给自己的 prompt 打分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/generate_test_cases.ipynb&lt;/code&gt;&lt;/strong&gt; — 用 Claude 生成测试用例来做对抗性评估。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tool_evaluation/tool_evaluation.ipynb&lt;/code&gt;&lt;/strong&gt; — 工具级评估。Agent 系统里每个 tool 调用是否正确、参数是否合理的专项评估。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/metaprompt.ipynb&lt;/code&gt;&lt;/strong&gt; — Metaprompt：让 Claude 帮你写/优化 prompt。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/building_moderation_filter.ipynb&lt;/code&gt;&lt;/strong&gt; — 用 Claude 搭内容审核过滤器。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;finetuning/finetuning_on_bedrock.ipynb&lt;/code&gt;&lt;/strong&gt; — 在 AWS Bedrock 上微调 Claude，附 &lt;code&gt;datasets/&lt;/code&gt; 示例数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;微调这块目前官方只出了 Bedrock 路径的教程，直接从 Anthropic API 做 fine-tuning 目前还不是公开能力。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十仓库工程实践这本身就是一份怎么管理-notebook-项目的样板"&gt;十、仓库工程实践：这本身就是一份&amp;quot;怎么管理 Notebook 项目&amp;quot;的样板
&lt;/h2&gt;&lt;p&gt;这一节是给另一类读者的——&lt;strong&gt;那些在自己团队里也要维护大量 notebook / 示例代码的工程师。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;claude-cookbooks 这个 repo 本身的组织方式，其实是一份挺成熟的范本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用 &lt;code&gt;uv&lt;/code&gt; 做包管理&lt;/strong&gt;。有 &lt;code&gt;uv.lock&lt;/code&gt; 和 &lt;code&gt;uv.toml&lt;/code&gt;，&lt;code&gt;uv sync --all-extras&lt;/code&gt; 一键把所有依赖装齐。相比 &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;，速度快一个数量级，也更容易复现。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ruff&lt;/code&gt; 做 lint 和 format&lt;/strong&gt;。行长 100、双引号。Notebook 里放宽了 E402（中间 import）、F811（重定义）、N803/N806（变量命名），这几条放宽对 notebook 写作很实用——Jupyter 里本来就会有大量这种&amp;quot;不优雅但可读&amp;quot;的写法。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;pre-commit&lt;/code&gt; + &lt;code&gt;Makefile&lt;/code&gt; + &lt;code&gt;tox&lt;/code&gt;&lt;/strong&gt;。&lt;code&gt;make check&lt;/code&gt; / &lt;code&gt;make fix&lt;/code&gt; / &lt;code&gt;make test&lt;/code&gt; 三条命令覆盖日常。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;registry.yaml&lt;/code&gt; + &lt;code&gt;authors.yaml&lt;/code&gt;&lt;/strong&gt;。每篇 notebook 在 &lt;code&gt;registry.yaml&lt;/code&gt; 里登记标题、路径、作者、分类，方便后续站点化检索。这是一个很聪明的做法——&lt;strong&gt;内容和元数据分离&lt;/strong&gt;，让 notebook 集合可以被当成一个可查询的数据库来对待。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;.claude/&lt;/code&gt; 目录 + 自定义 slash commands&lt;/strong&gt;。&lt;code&gt;/notebook-review&lt;/code&gt;（检查 notebook 质量）、&lt;code&gt;/model-check&lt;/code&gt;（校验模型 ID 是不是用了非推荐的日期版本）、&lt;code&gt;/link-review&lt;/code&gt;（检查死链）。这几个 slash command 既给人用，也给 CI 用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;lychee.toml&lt;/code&gt;&lt;/strong&gt;。专门的死链检查配置，比自己手写正则靠谱。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 里写死模型 ID 规范&lt;/strong&gt;。明确规定&lt;strong&gt;永远用非日期别名&lt;/strong&gt;（如 &lt;code&gt;claude-sonnet-4-6&lt;/code&gt;）而不是 &lt;code&gt;claude-sonnet-4-6-20250514&lt;/code&gt;。这种小约定写在 CLAUDE.md 里，让 Claude Code 或其他 Agent 在写示例代码时不会跑偏。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/engineering.webp" srcset="https://guige.ai/p/claude-cookbooks-index/engineering_hu_20e96aab13bf3de9.webp 800w, https://guige.ai/p/claude-cookbooks-index/engineering_hu_1827c5387705f6a2.webp 1600w, https://guige.ai/p/claude-cookbooks-index/engineering_hu_afecf6a7cba2650a.webp 2400w, https://guige.ai/p/claude-cookbooks-index/engineering.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;p&gt;这些细节如果你自己维护过一个 notebook 集合，应该能立刻 get 到它们的价值。我之前维护过几套内部示例代码，最大的痛点就是&lt;strong&gt;时间一长没人管，示例里的 API 调用方式和模型名全都过时了&lt;/strong&gt;。claude-cookbooks 用 CI + slash command + 自动化校验把这件事从&amp;quot;靠人自觉&amp;quot;变成&amp;quot;靠流程保证&amp;quot;，是很值得抄的做法。&lt;/p&gt;
&lt;p&gt;另一个细节是 &lt;code&gt;registry.yaml&lt;/code&gt; 里每篇 notebook 都登记了分类标签和作者。这看起来只是一个 meta 索引文件，但它背后其实是一个&lt;strong&gt;内容运营思路&lt;/strong&gt;：让示例集合既能被人读，也能被机器查询。未来如果要做一个&amp;quot;按类目筛选的交互式站点&amp;quot;或者&amp;quot;根据用户目标推荐 notebook 的 Agent&amp;quot;，&lt;code&gt;registry.yaml&lt;/code&gt; 就是现成的数据源。把内容和元数据分开，永远比把元数据硬编码进 README 要更灵活。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十一我接下来会按什么顺序往里钻"&gt;十一、我接下来会按什么顺序往里钻
&lt;/h2&gt;&lt;p&gt;最后给自己留一份阅读路线图，也供参考：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你是第一次用 Claude API：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;misc/prompt_caching.ipynb&lt;/code&gt; — 先把成本大头的底子打好&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_use/calculator_tool.ipynb&lt;/code&gt; + &lt;code&gt;tool_choice.ipynb&lt;/code&gt; — Tool use 基础&lt;/li&gt;
&lt;li&gt;&lt;code&gt;capabilities/retrieval_augmented_generation/&lt;/code&gt; — 如果你要做 RAG&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multimodal/getting_started_with_vision.ipynb&lt;/code&gt; — 如果涉及图像&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;如果你已经在用 Claude Code，想扩展到自定义 Agent：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;patterns/agents/&lt;/code&gt; 三篇 — 先把概念过一遍&lt;/li&gt;
&lt;li&gt;&lt;code&gt;claude_agent_sdk/00&lt;/code&gt; → &lt;code&gt;01&lt;/code&gt; → &lt;code&gt;04&lt;/code&gt; — 沿着教程走&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_use/memory_cookbook.ipynb&lt;/code&gt; + &lt;code&gt;automatic-context-compaction.ipynb&lt;/code&gt; — 长会话 Agent 必备&lt;/li&gt;
&lt;li&gt;&lt;code&gt;managed_agents/CMA_operate_in_production.ipynb&lt;/code&gt; — 想上线再看这篇&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;如果你在做 B 端 Agent 产品：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;managed_agents/&lt;/code&gt; 全套六篇 CMA 教程&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_evaluation/tool_evaluation.ipynb&lt;/code&gt; + &lt;code&gt;misc/building_evals.ipynb&lt;/code&gt; — 评估不能缺&lt;/li&gt;
&lt;li&gt;&lt;code&gt;observability/usage_cost_api.ipynb&lt;/code&gt; — 成本监控&lt;/li&gt;
&lt;li&gt;&lt;code&gt;managed_agents/CMA_prompt_versioning_and_rollback.ipynb&lt;/code&gt; — 运营侧&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/roadmap.webp" srcset="https://guige.ai/p/claude-cookbooks-index/roadmap_hu_1d416a2740308291.webp 800w, https://guige.ai/p/claude-cookbooks-index/roadmap_hu_4d9e6d16e7eafd7.webp 1600w, https://guige.ai/p/claude-cookbooks-index/roadmap_hu_b6dc883e03637fbb.webp 2400w, https://guige.ai/p/claude-cookbooks-index/roadmap.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="结尾这只是起点"&gt;结尾：这只是起点
&lt;/h2&gt;&lt;p&gt;写到这里回头看，这份 cookbook 里随便挑一个模块展开，都够单独写一篇长文：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent SDK 的六篇 notebook 值得一篇一篇拆，特别是 Chief of Staff 那篇里塞了一整套生产级 Agent 该有的能力&lt;/li&gt;
&lt;li&gt;Managed Agents 这个新产品形态本身就值得一篇&amp;quot;它和 Agent SDK 到底什么区别&amp;quot;的分析&lt;/li&gt;
&lt;li&gt;Tool Use 里的 PTC、Tool Search with Embeddings、Memory Tool 每一个单拿出来都能写一篇技术拆解&lt;/li&gt;
&lt;li&gt;Skills 的 Progressive Disclosure 机制和它对 token 经济的影响，是个完整的专题&lt;/li&gt;
&lt;li&gt;&lt;code&gt;patterns/agents/&lt;/code&gt; 对应的那三种设计模式，配合实际项目经验聊一聊会很有意思&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些我都打算一篇一篇写。这份导航文章就当是书签——&lt;strong&gt;以后每完成一篇深度拆解，就回来把对应的链接加上&lt;/strong&gt;，让这里慢慢长成一张真正可用的学习路线图。&lt;/p&gt;
&lt;p&gt;如果你也在看这份 cookbook，欢迎告诉我你最关心哪个模块，我排序的时候可以参考一下。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/anthropics/claude-cookbooks" target="_blank" rel="noopener"
 &gt;anthropics/claude-cookbooks&lt;/a&gt; — 本文索引的主体&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/anthropics/claude-agent-sdk-python" target="_blank" rel="noopener"
 &gt;anthropics/claude-agent-sdk-python&lt;/a&gt; — Agent SDK 本体&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/anthropics/courses" target="_blank" rel="noopener"
 &gt;anthropics/courses&lt;/a&gt; — 如果你还在更早的阶段，先看这个&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.anthropic.com/research/building-effective-agents" target="_blank" rel="noopener"
 &gt;Building Effective Agents&lt;/a&gt; — Anthropic 官方 Agent 设计方法论&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills" target="_blank" rel="noopener"
 &gt;Equipping agents for the real world with Skills&lt;/a&gt; — Skills 的设计理念&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Claude Managed Agents：从聊天机器人到自主 Agent 的一步之遥</title><link>https://guige.ai/p/managed-agents-intro/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/managed-agents-intro/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post Claude Managed Agents：从聊天机器人到自主 Agent 的一步之遥" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;150 行代码就能造一个&amp;quot;数字分身&amp;quot;，但它只会聊天，不会做事。&lt;/p&gt;
&lt;p&gt;如果它能帮你写代码、搜资料、跑脚本呢？&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;两个月前，我给博客做了一个 AI 数字分身——&lt;a class="link" href="https://github.com/luoli523/guige_avatar" target="_blank" rel="noopener"
 &gt;guige_avatar&lt;/a&gt;。访客点击右下角的聊天按钮，就能和&amp;quot;鬼哥&amp;quot;的 AI 分身聊技术、聊 AI、聊生活。&lt;/p&gt;
&lt;p&gt;整个后端只有 &lt;strong&gt;150 行 JavaScript&lt;/strong&gt;，部署在 Vercel 上，用的是 OpenAI 的 GPT-4.1-nano。它很轻量，也确实能用——但说实话，它&lt;strong&gt;只是一个穿了马甲的 Chat Completion API&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;2026 年 4 月，Anthropic 推出了 &lt;a class="link" href="https://platform.claude.com/docs/en/managed-agents/overview" target="_blank" rel="noopener"
 &gt;Claude Managed Agents&lt;/a&gt;——一个托管式的 Agent 运行时平台。看完文档后我意识到：&lt;strong&gt;如果用 Managed Agents 重构鬼哥分身，它能从一个只会聊天的机器人，进化成一个真正能做事的自主 Agent。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本文就以这个真实案例为主线，带你理解 Managed Agents 到底是什么、能做什么、以及什么时候该用它。&lt;/p&gt;
&lt;p&gt;&lt;img alt="封面" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/managed-agents-intro/cover.webp" srcset="https://guige.ai/p/managed-agents-intro/cover_hu_620005b34563ee68.webp 800w, https://guige.ai/p/managed-agents-intro/cover_hu_bfb5e493a5abda79.webp 1600w, https://guige.ai/p/managed-agents-intro/cover_hu_4610a2e67a5696ef.webp 2400w, https://guige.ai/p/managed-agents-intro/cover.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一手搓版guige_avatar-架构剖析"&gt;一、手搓版：guige_avatar 架构剖析
&lt;/h2&gt;&lt;p&gt;先看看现在的数字分身长什么样。注意截图右下角那个小对话气泡——那就是访客与鬼哥 AI 分身聊天的入口。&lt;/p&gt;
&lt;p&gt;&lt;img alt="鬼哥博客首页，右下角的聊天气泡就是数字分身的入口" class="gallery-image" data-flex-basis="456px" data-flex-grow="190" height="1504" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/managed-agents-intro/guige-page.webp" srcset="https://guige.ai/p/managed-agents-intro/guige-page_hu_cceadf3dd8d252db.webp 800w, https://guige.ai/p/managed-agents-intro/guige-page_hu_794cc983d27f907c.webp 1600w, https://guige.ai/p/managed-agents-intro/guige-page_hu_f561722c567c0cf3.webp 2400w, https://guige.ai/p/managed-agents-intro/guige-page.webp 2860w" width="2860"&gt;&lt;/p&gt;
&lt;h3 id="11-整体架构"&gt;1.1 整体架构
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;访客浏览器 Vercel Serverless
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;┌─────────────┐ POST ┌──────────────────┐ ┌─────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 博客首页 │ ─────────→ │ api/chat.js │ ───→ │ OpenAI │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 聊天面板(JS) │ ←───────── │ (~150 行) │ ←─── │ API │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└─────────────┘ JSON │ │ └─────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ ↓ fire-and-forget│
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ Telegram 通知 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └──────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↑
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; data/persona.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; (人设 YAML ~200行)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="12-核心代码就这么简单"&gt;1.2 核心代码：就这么简单
&lt;/h3&gt;&lt;p&gt;后端的核心逻辑可以浓缩成这几步：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 1. 加载人设 YAML → 构建 system prompt
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;persona&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;yaml&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;readFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;data/persona.yaml&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;systemPrompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;buildSystemPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;persona&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 2. 拼接历史（最多 10 轮）+ 当前消息
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;system&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;systemPrompt&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;history&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;userMessage&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 3. 一次 API 调用，返回结果
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kr"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;gpt-4.1-nano&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;messages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;没有 agent loop，没有工具调用，没有自主决策。&lt;strong&gt;每次请求就是一次单轮 LLM 推理。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="13-人设工程它的真正价值"&gt;1.3 人设工程：它的真正价值
&lt;/h3&gt;&lt;p&gt;guige_avatar 最精巧的部分不是代码，而是 &lt;code&gt;persona.yaml&lt;/code&gt;——一个约 200 行的人设定义文件：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;personality&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;traits&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;技术极客&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;偶尔幽默&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;喜欢深度思考&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;speaking_style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;口语化但有技术深度&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;knowledge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;expertise&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;大数据&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;AI/LLM&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;分布式系统&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;current_projects&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Claude Code 源码分析&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;博客写作&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;boundaries&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;forbidden_topics&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;政治敏感&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;个人隐私&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;fallback&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;这个话题我不太方便聊，换个有趣的话题吧？&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种&amp;quot;人设工程&amp;quot;确实让对话体验很自然。但问题是——&lt;strong&gt;人设再好，它也只能聊天，不能做事。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="手搓版架构" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/managed-agents-intro/handcraft-arch.webp" srcset="https://guige.ai/p/managed-agents-intro/handcraft-arch_hu_22ab63d93d1de2c2.webp 800w, https://guige.ai/p/managed-agents-intro/handcraft-arch_hu_663f8fdd5e8a695e.webp 1600w, https://guige.ai/p/managed-agents-intro/handcraft-arch_hu_3dd5c9597b6ba3fe.webp 2400w, https://guige.ai/p/managed-agents-intro/handcraft-arch.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;h3 id="14-手搓版的天花板"&gt;1.4 手搓版的天花板
&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;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&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;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&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;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&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;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;自主完成任务&lt;/td&gt;
 &lt;td&gt;❌ 无 agent loop&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;hr&gt;
&lt;h2 id="二managed-agents它到底是什么"&gt;二、Managed Agents：它到底是什么？
&lt;/h2&gt;&lt;h3 id="21-一句话定义"&gt;2.1 一句话定义
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Managed Agents = Anthropic 托管的 Agent 运行时。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你不需要自己搭 agent loop、沙箱、工具执行层。Anthropic 提供一个完整的云端容器环境，Claude 在里面自主运行 bash、读写文件、搜索网页、执行代码。&lt;/p&gt;
&lt;p&gt;如果 Messages API 是&amp;quot;你调用模型，模型返回文本&amp;quot;，那 Managed Agents 就是&amp;quot;你定义 Agent，Agent 自主完成任务&amp;quot;。&lt;/p&gt;
&lt;h3 id="22-与-messages-api-的定位差异"&gt;2.2 与 Messages API 的定位差异
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Messages API&lt;/th&gt;
 &lt;th&gt;Managed Agents&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;直接模型调用&lt;/td&gt;
 &lt;td&gt;预构建的 Agent 运行时&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;适合&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;自定义 agent loop、精细控制&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;你的代码负责执行&lt;/td&gt;
 &lt;td&gt;Anthropic 云端容器执行&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;类比&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;买 CPU 自己组电脑&lt;/td&gt;
 &lt;td&gt;买整机开箱即用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="23-核心概念四件套"&gt;2.3 核心概念四件套
&lt;/h3&gt;&lt;p&gt;Managed Agents 的整个模型围绕四个概念：&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;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Agent&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;模型 + system prompt + 工具 + MCP servers&lt;/td&gt;
 &lt;td&gt;一个人的&amp;quot;能力定义&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Environment&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;云端容器模板：预装包、网络规则&lt;/td&gt;
 &lt;td&gt;这个人的&amp;quot;工作环境&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Session&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;运行中的 Agent 实例，绑定 Agent + Environment&lt;/td&gt;
 &lt;td&gt;一次具体的&amp;quot;工作会话&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Events&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;应用与 Agent 之间的消息流（SSE）&lt;/td&gt;
 &lt;td&gt;你和这个人之间的&amp;quot;对话&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;工作流程：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;创建 Agent（一次性） → 创建 Environment（一次性）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↘ ↙
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 创建 Session（每次任务）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 发送 Event（用户消息）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 流式接收 Agent 响应（SSE）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 可中途引导或中断
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="三case-study数字分身-v1手搓vs-v2managed-agents"&gt;三、Case Study：数字分身 v1（手搓）vs v2（Managed Agents）
&lt;/h2&gt;&lt;p&gt;这是本文最核心的部分。我们来看，如果用 Managed Agents 重构鬼哥分身，会发生什么变化。&lt;/p&gt;
&lt;p&gt;&lt;img alt="v1 vs v2 对比" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/managed-agents-intro/v1-vs-v2.webp" srcset="https://guige.ai/p/managed-agents-intro/v1-vs-v2_hu_64057650187a708d.webp 800w, https://guige.ai/p/managed-agents-intro/v1-vs-v2_hu_d5d73ff2fe15b9be.webp 1600w, https://guige.ai/p/managed-agents-intro/v1-vs-v2_hu_746c7c151d2c65db.webp 2400w, https://guige.ai/p/managed-agents-intro/v1-vs-v2.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;h3 id="31-对话--能动手工具能力"&gt;3.1 对话 → 能动手：工具能力
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;v1（手搓版）&lt;/strong&gt;：只能基于 system prompt 中的静态知识回答。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;访客：你最近写了什么文章？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;鬼哥分身：我最近在写 Agent Skills 和 Gemma 4 的分析文章...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;（这是 persona.yaml 里预写的，不是实时查的）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;v2（Managed Agents 版）&lt;/strong&gt;：有完整的工具链。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;访客：你最近写了什么文章？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;鬼哥分身：[使用 bash] ls content/post/ | tail -5
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [使用 read] 读取最近 5 篇文章的 frontmatter
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 我最近写了这些文章：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1. Agent Skills 深度解析（4月7日）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2. Gemma 4 深度分析（4月5日）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3. Karpathy 的 LLM Wiki（4月2日）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ...每篇都有链接，要看哪篇？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Managed Agents 的内置工具：&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;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Bash&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;执行 shell 命令&lt;/td&gt;
 &lt;td&gt;列出文章、统计数据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Read / Write / Edit&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;文件读写&lt;/td&gt;
 &lt;td&gt;查看博客内容、生成草稿&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Glob / Grep&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;文件搜索&lt;/td&gt;
 &lt;td&gt;搜索特定话题的文章&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Web Search / Fetch&lt;/strong&gt;&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;h3 id="32-内存级历史--持久化会话"&gt;3.2 内存级历史 → 持久化会话
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;v1&lt;/strong&gt;：对话历史存在前端 JavaScript 内存中，刷新页面就没了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// v1：前端维护历史，刷新即丢失
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;history&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt; &lt;span class="c1"&gt;// 🔥 页面刷新 = 失忆
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;v2&lt;/strong&gt;：Session 天然持久化，Event 历史服务端保存。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# v2：Session 持久化，随时可恢复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sessions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;avatar_agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;environment_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;访客 A 的对话&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 下次访问，用同一个 session_id 继续&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 完整的对话历史都在服务端&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;更关键的是，Managed Agents 有 &lt;strong&gt;Memory（研究预览阶段）&lt;/strong&gt;——跨会话的长期记忆。这意味着鬼哥分身可以记住：&amp;ldquo;上次这个访客问过 Spark 调优，他应该是做大数据的。&amp;rdquo;&lt;/p&gt;
&lt;h3 id="33-单轮推理--多步-agent-loop"&gt;3.3 单轮推理 → 多步 Agent Loop
&lt;/h3&gt;&lt;p&gt;这是最本质的差异。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;v1&lt;/strong&gt;：一问一答，没有中间推理步骤。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;用户消息 → LLM 生成回复 → 返回
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;v2&lt;/strong&gt;：Agent 可以自主规划多步执行。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;用户消息 → Claude 思考 → 调用工具 A → 分析结果 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; → 调用工具 B → 综合判断 → 生成回复 → 返回
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;比如访客问&amp;quot;帮我分析一下你这个博客的技术栈&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;v1：只能背 persona.yaml 里预写的答案&lt;/li&gt;
&lt;li&gt;v2：&lt;code&gt;grep -r &amp;quot;hugo&amp;quot; config/&lt;/code&gt; → &lt;code&gt;cat themes/hugo-theme-stack/...&lt;/code&gt; → &lt;code&gt;ls layouts/&lt;/code&gt; → 基于实际代码给出准确分析&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="34-无沙盒--云端容器"&gt;3.4 无沙盒 → 云端容器
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;v1&lt;/strong&gt;：代码在 Vercel Serverless Function 里跑，只有 150ms 的冷启动预算，不能装额外的包。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;v2&lt;/strong&gt;：完整的云端容器。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;environment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environments&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;guige-avatar-env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;cloud&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;networking&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;unrestricted&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 可以预装任何包&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Python, Node.js, Go, Hugo...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;容器意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以预装 Hugo 来本地构建预览&lt;/li&gt;
&lt;li&gt;可以跑 Python 脚本分析数据&lt;/li&gt;
&lt;li&gt;可以 git clone 仓库来读取最新代码&lt;/li&gt;
&lt;li&gt;网络不受限，可以访问外部 API&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="35-单-agent--多-agent-编排"&gt;3.5 单 Agent → 多 Agent 编排
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;v1&lt;/strong&gt;：一个 function 处理所有事情。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;v2&lt;/strong&gt;：可以按职责拆分为多个专精 Agent。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 主 Agent：鬼哥分身（对话协调者）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;avatar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;鬼哥分身&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;claude-sonnet-4-6&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;你是鬼哥的数字分身...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_toolset_20260401&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;callable_agents&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blog_agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;code_agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Sub-Agent 1：博客助手（搜索和推荐文章）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;blog_agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;博客助手&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;claude-haiku-4-5&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 用小模型节省成本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;你负责搜索和推荐鬼哥的博客文章...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_toolset_20260401&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Sub-Agent 2：代码助手（分析代码、写 demo）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;code_agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;代码助手&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;claude-sonnet-4-6&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;你负责帮访客分析代码和写 demo...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_toolset_20260401&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;当访客问文章相关的问题时，主 Agent 委托给博客助手；问代码问题时，委托给代码助手。&lt;strong&gt;各司其职，成本可控。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="多 Agent 编排" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/managed-agents-intro/multi-agent.webp" srcset="https://guige.ai/p/managed-agents-intro/multi-agent_hu_aa670aa6c4ed5388.webp 800w, https://guige.ai/p/managed-agents-intro/multi-agent_hu_43412c256babf6b2.webp 1600w, https://guige.ai/p/managed-agents-intro/multi-agent_hu_cf4b3beb83e4114b.webp 2400w, https://guige.ai/p/managed-agents-intro/multi-agent.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四完整对比手搓-vs-托管"&gt;四、完整对比：手搓 vs 托管
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th&gt;v1 手搓版&lt;/th&gt;
 &lt;th&gt;v2 Managed Agents&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;Chat Completion 包装器&lt;/td&gt;
 &lt;td&gt;自主 Agent 平台&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Agent Loop&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;无，单轮 request-response&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;无&lt;/td&gt;
 &lt;td&gt;Bash、文件操作、Web 搜索、MCP&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;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;前端内存，刷新丢失&lt;/td&gt;
 &lt;td&gt;服务端持久化 Session&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;td&gt;Memory（研究预览）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;多 Agent&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;不可能&lt;/td&gt;
 &lt;td&gt;Coordinator + Sub-agents&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;后端代码&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;~150 行 JS&lt;/td&gt;
 &lt;td&gt;~50 行 Python（SDK 调用）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;基础设施&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Vercel function（自己维护）&lt;/td&gt;
 &lt;td&gt;Anthropic 全托管&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;模型&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;GPT-4.1-nano（OpenAI）&lt;/td&gt;
 &lt;td&gt;Claude Sonnet/Haiku（Anthropic）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;成本&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;API 调用费 + Vercel 免费层&lt;/td&gt;
 &lt;td&gt;API 调用费 + Session 运行费&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;开发周期&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;1 天&lt;/td&gt;
 &lt;td&gt;1 天（SDK 很简洁）&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;td&gt;需要工具和自主性的场景&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="五sdk-实战5-分钟跑通-managed-agents"&gt;五、SDK 实战：5 分钟跑通 Managed Agents
&lt;/h2&gt;&lt;h3 id="51-安装"&gt;5.1 安装
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install anthropic
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;your-key&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="52-创建-agent--environment--session"&gt;5.2 创建 Agent + Environment + Session
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;anthropic&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Anthropic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Anthropic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 创建 Agent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;鬼哥分身 v2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;claude-sonnet-4-6&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;你是鬼哥（luoli523）的数字分身。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;性格：技术极客，偶尔幽默，喜欢深度思考。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;擅长：大数据、AI/LLM、分布式系统、Claude Code。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;说话风格：口语化但有技术深度，喜欢用类比解释复杂概念。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;你可以使用工具来查看博客文章、搜索信息、执行代码。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;当访客问到你不确定的事情时，先搜索再回答，不要编造。&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_toolset_20260401&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 创建 Environment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;environment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environments&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;avatar-env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;cloud&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;networking&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;unrestricted&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3. 创建 Session&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sessions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;environment_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;environment&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;访客对话&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Agent: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;agent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Environment: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;environment&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Session: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="53-发消息--流式接收"&gt;5.3 发消息 + 流式接收
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sessions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 发送用户消息&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sessions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;user.message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;帮我看看你博客最近写了什么文章&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 流式处理响应&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;match&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent.message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent.tool_use&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;[🔧 使用工具: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;]&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;session.status_idle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;✅ 完成&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;输出可能长这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;让我看看最近的文章...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[🔧 使用工具: bash]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[🔧 使用工具: read]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;最近写了这几篇：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1. **Agent Skills 深度解析**（4月7日）— 拆解 Addy Osmani 的 19 个 AI Agent skill
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2. **Gemma 4 深度分析**（4月5日）— Google 开源模型的架构和应用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3. **Karpathy 的 LLM Wiki**（4月2日）— 从零理解 LLM 的百科全书
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;要看哪篇的详细内容？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;✅ 完成
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="54-typescript-版本"&gt;5.4 TypeScript 版本
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;span class="lnt"&gt;23
&lt;/span&gt;&lt;span class="lnt"&gt;24
&lt;/span&gt;&lt;span class="lnt"&gt;25
&lt;/span&gt;&lt;span class="lnt"&gt;26
&lt;/span&gt;&lt;span class="lnt"&gt;27
&lt;/span&gt;&lt;span class="lnt"&gt;28
&lt;/span&gt;&lt;span class="lnt"&gt;29
&lt;/span&gt;&lt;span class="lnt"&gt;30
&lt;/span&gt;&lt;span class="lnt"&gt;31
&lt;/span&gt;&lt;span class="lnt"&gt;32
&lt;/span&gt;&lt;span class="lnt"&gt;33
&lt;/span&gt;&lt;span class="lnt"&gt;34
&lt;/span&gt;&lt;span class="lnt"&gt;35
&lt;/span&gt;&lt;span class="lnt"&gt;36
&lt;/span&gt;&lt;span class="lnt"&gt;37
&lt;/span&gt;&lt;span class="lnt"&gt;38
&lt;/span&gt;&lt;span class="lnt"&gt;39
&lt;/span&gt;&lt;span class="lnt"&gt;40
&lt;/span&gt;&lt;span class="lnt"&gt;41
&lt;/span&gt;&lt;span class="lnt"&gt;42
&lt;/span&gt;&lt;span class="lnt"&gt;43
&lt;/span&gt;&lt;span class="lnt"&gt;44
&lt;/span&gt;&lt;span class="lnt"&gt;45
&lt;/span&gt;&lt;span class="lnt"&gt;46
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Anthropic&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;@anthropic-ai/sdk&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Anthropic&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 创建 Agent
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;鬼哥分身 v2&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;claude-sonnet-4-6&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;system&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;你是鬼哥的数字分身...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="kr"&gt;type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_toolset_20260401&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 创建 Environment
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;avatar-env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="kr"&gt;type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;cloud&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;networking&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="kr"&gt;type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;unrestricted&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 创建 Session
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;agent&lt;/span&gt;: &lt;span class="kt"&gt;agent.id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;environment_id&lt;/span&gt;: &lt;span class="kt"&gt;env.id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 发消息 + 流式响应
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;events&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;events&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;events&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;user.message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="kr"&gt;type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;你最近在研究什么？&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent.message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;block&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;block&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent.tool_use&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="sb"&gt;n[🔧 &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;]`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;session.status_idle&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;\n\n✅ Done&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="六工具配置精细控制"&gt;六、工具配置：精细控制
&lt;/h2&gt;&lt;p&gt;默认的 &lt;code&gt;agent_toolset_20260401&lt;/code&gt; 启用全部工具。但你也可以按需开关：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 只开 bash 和文件操作，关掉网络&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;安全受限的分身&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;claude-sonnet-4-6&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_toolset_20260401&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;default_config&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;configs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;bash&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;read&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;glob&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;grep&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# web_fetch 和 web_search 保持关闭&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;还支持&lt;strong&gt;自定义工具&lt;/strong&gt;——你定义接口，Claude 决定何时调用，你的代码执行后把结果返回：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;带自定义工具的分身&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;claude-sonnet-4-6&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;agent_toolset_20260401&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;custom&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;get_blog_stats&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;获取博客的访问统计数据&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;input_schema&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;object&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;period&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;统计周期：today, week, month&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;required&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;period&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="七手搓-vs-托管什么时候用哪个"&gt;七、手搓 vs 托管：什么时候用哪个？
&lt;/h2&gt;&lt;p&gt;这两种方案不是非此即彼的关系，而是&lt;strong&gt;不同复杂度和需求下的最优选择&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="用手搓版messages-api--自建"&gt;用手搓版（Messages API / 自建）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;需求简单&lt;/strong&gt;：纯聊天，不需要工具调用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;成本敏感&lt;/strong&gt;：Vercel 免费层 + 便宜的小模型就够了&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完全控制&lt;/strong&gt;：你需要自定义每一个细节&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;已有基础设施&lt;/strong&gt;：你的团队已经有成熟的 agent 框架&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;离线场景&lt;/strong&gt;：需要本地部署&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="用-managed-agents"&gt;用 Managed Agents
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;需要工具能力&lt;/strong&gt;：Agent 需要执行代码、搜索网页、读写文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;长时间任务&lt;/strong&gt;：任务可能运行几分钟甚至几小时&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;零基础设施&lt;/strong&gt;：不想自己维护沙盒和 agent loop&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多 Agent 编排&lt;/strong&gt;：任务需要多个专精 Agent 协作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持久化会话&lt;/strong&gt;：需要跨请求保持上下文和文件状态&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="混合方案最佳实践"&gt;混合方案：最佳实践
&lt;/h3&gt;&lt;p&gt;实际上，鬼哥分身最可能的进化路径是&lt;strong&gt;混合方案&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;访客消息
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;前端（博客首页）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;轻量网关（Vercel / Cloudflare Worker）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── 简单闲聊 → 直接 Messages API（省钱）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── 复杂任务 → 转发到 Managed Agents Session
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;简单问答（&amp;ldquo;你是谁？&amp;ldquo;&amp;ldquo;你喜欢什么？&amp;quot;）走便宜的 Messages API；需要搜索、执行代码、多步推理的任务走 Managed Agents。&lt;strong&gt;按需升级，不浪费。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="实战架构" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/managed-agents-intro/practice-arch.webp" srcset="https://guige.ai/p/managed-agents-intro/practice-arch_hu_daefceaeebc9ccd4.webp 800w, https://guige.ai/p/managed-agents-intro/practice-arch_hu_f7dc5814f962696e.webp 1600w, https://guige.ai/p/managed-agents-intro/practice-arch_hu_65478ca9d4d45495.webp 2400w, https://guige.ai/p/managed-agents-intro/practice-arch.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="八beta-注意事项"&gt;八、Beta 注意事项
&lt;/h2&gt;&lt;p&gt;Managed Agents 目前是 &lt;strong&gt;Beta 状态&lt;/strong&gt;（&lt;code&gt;managed-agents-2026-04-01&lt;/code&gt;），几个关键信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;所有 API 账户默认可用&lt;/strong&gt;，无需单独申请&lt;/li&gt;
&lt;li&gt;SDK 自动设置 beta header，直接用就行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Research Preview 功能&lt;/strong&gt;（Outcomes、Multi-agent、Memory）需要&lt;a class="link" href="https://claude.com/form/claude-managed-agents" target="_blank" rel="noopener"
 &gt;单独申请&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rate Limit：创建操作 60 req/min，读取操作 600 req/min&lt;/li&gt;
&lt;li&gt;支持 &lt;strong&gt;7 种 SDK&lt;/strong&gt;：Python、TypeScript、Go、Java、C#、Ruby、PHP&lt;/li&gt;
&lt;li&gt;还有 CLI 工具 &lt;code&gt;ant&lt;/code&gt;（Homebrew 安装）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;品牌规范提醒&lt;/strong&gt;：如果你在产品中集成 Managed Agents，可以用 &amp;ldquo;Claude Agent&amp;rdquo; 命名，但&lt;strong&gt;不能用&lt;/strong&gt; &amp;ldquo;Claude Code&amp;rdquo; 或 &amp;ldquo;Claude Cowork&amp;rdquo; 的名称和视觉元素。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;从 guige_avatar 到 Managed Agents，本质上是从 &lt;strong&gt;&amp;ldquo;调用模型生成文本&amp;rdquo;&lt;/strong&gt; 到 &lt;strong&gt;&amp;ldquo;委托 Agent 完成任务&amp;rdquo;&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;Chat Completion&lt;/td&gt;
 &lt;td&gt;Agent Session&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;单轮推理&lt;/td&gt;
 &lt;td&gt;多步 Agent Loop&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;无工具&lt;/td&gt;
 &lt;td&gt;Bash + 文件 + Web + 自定义&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;前端内存&lt;/td&gt;
 &lt;td&gt;服务端持久化&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;单一 Agent&lt;/td&gt;
 &lt;td&gt;多 Agent 编排&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&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;Managed Agents 本质上是 &amp;ldquo;Claude Code as a Service&amp;rdquo;&lt;/strong&gt;——把 Claude Code 的核心能力（bash、文件操作、web 搜索、agent loop）包装成云端 API，让开发者在自己的产品中嵌入 Claude 级别的 Agent 能力。&lt;/p&gt;
&lt;p&gt;对于鬼哥分身来说，150 行手搓版已经够用了。但当某天访客说&amp;quot;帮我写一个 Spark 调优的 demo&amp;quot;时，Managed Agents 版本会回答：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;好的，让我帮你写一个...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[🔧 使用工具: write] 创建 spark_tuning_demo.py
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[🔧 使用工具: bash] python spark_tuning_demo.py
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;脚本已经写好并测试通过了，关键的调优点是...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;从&amp;quot;我告诉你&amp;quot;到&amp;quot;我帮你做&amp;rdquo;——这就是一步之遥。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://platform.claude.com/docs/en/managed-agents/overview" target="_blank" rel="noopener"
 &gt;Claude Managed Agents 官方文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://platform.claude.com/docs/en/managed-agents/quickstart" target="_blank" rel="noopener"
 &gt;Managed Agents Quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://platform.claude.com/docs/en/managed-agents/tools" target="_blank" rel="noopener"
 &gt;Managed Agents 工具配置&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://platform.claude.com/docs/en/managed-agents/multi-agent" target="_blank" rel="noopener"
 &gt;Multi-agent Sessions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/luoli523/guige_avatar" target="_blank" rel="noopener"
 &gt;guige_avatar 源码&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>