📚 首页 / 08-agents / README.md

模块 8 — 智能体

目标:以官方文章 Building Effective Agents 为骨架,建立本仓库最核心的架构判断力之一——什么时候用工作流 (Workflow)、什么时候必须上智能体 (Agent),并逐个掌握编排模式。前置:模块 04 的工具回路——agent 的全部「行动」都走那条回路,本模块只是把回路的控制权交给模型。

📘 重要英语词汇表


0. 本模块的权威骨架与时效说明

🎯 学习重点:必考的是区分「稳定的模式分类法」与「会随产品演进的具体工具」,引用时必须带来源日期。

本模块的骨架来自 Anthropic 工程博客 Building Effective Agents(2024-12 发表,Erik Schluntz & Barry Zhang)。截至 2026-08-30 核验:该文仍在官方现行参考位置,但页首已新增编者注——「文中描述的工具生态自 2024 年 12 月以来已发生很大变化,现行做法见 Managed Agents 工程文与其文档」(来源: https://www.anthropic.com/engineering/building-effective-agents(访问于 2026-08-30))。

这意味着两件事:

  1. 模式分类法仍然有效:workflow vs agent 的定义、五种编排模式、决策框架没有被官方推翻,仍被后续官方文章反复引用(来源: https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents(访问于 2026-08-30))。
  2. 涉及具体工具/框架/产品时以较新源为准:例如「自己搭 agent loop」之外,2026 年多了官方托管的 Claude Managed Agents(beta)。本模块对这类内容双源并记(见 §3.9 与 §8)。

另一条必须记住的现行口径:Anthropic 后来的官方文章给过更简洁的 agent 定义——「LLMs autonomously using tools in a loop」(在循环中自主使用工具的 LLM)(来源: https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents(访问于 2026-08-30);同一定义也出现在多智能体系统一文中:https://www.anthropic.com/engineering/multi-agent-research-system(访问于 2026-08-30))。Agent SDK 文档则从产品角度定义:「agent 是通过规划自己的步骤并调用读写文件、执行命令、编辑代码的工具来完成任务的应用」(来源: https://code.claude.com/docs/en/agent-sdk/overview(访问于 2026-08-30))。


1. 本质区别:工作流 vs 智能体

🎯 学习重点:高频判断只看控制流归属——预定义代码路径是 workflow,模型运行时决定路径才是 agent。

官方把两者统称为智能体系统,但给出一条清晰的架构分界(来源: Building Effective Agents,访问于 2026-08-30):

- 工作流:LLM 和工具通过预定义的代码路径被编排的系统。 - 智能体:LLM 动态指挥自己的流程和工具使用、对「如何完成任务」保持控制的系统。

一句话抓住本质:「下一步做什么」由谁决定。Workflow 里,控制流是你写的代码(if/else、for 循环、DAG);agent 里,控制流是模型在运行时自己生成的。这也解释了官方的另一句提醒:agentic 系统常用延迟和成本换取更好的任务表现,所以「值不值得换」永远是架构问题,不是技术炫技问题。

flowchart TB subgraph W ["Workflow:控制流 = 你写的代码"] direction LR I[输入] --> C1["LLM 调用 1<br/>(分类)"] C1 --> G{"代码 gate<br/>(确定性 if/else)"} G -->|A 类| C2["LLM 调用 2<br/>专用 prompt"] G -->|B 类| C3["LLM 调用 3<br/>专用 prompt"] C2 --> O[输出] C3 --> O end subgraph A ["Agent:控制流 = 模型运行时生成"] direction LR G2[目标 Goal] --> L{"模型决定下一步<br/>(推理 + 规划)"} L -->|"tool_use"| T[应用执行工具] T -->|"tool_result 观察"| L L -->|"停止条件满足"| F[最终回答] end
维度WorkflowAgent
控制流预定义代码路径模型动态指挥
可预测性高(路径可枚举、可测试)低(路径开放,同一输入可走不同路)
延迟/成本可预算(调用次数已知)开放式(多轮循环,成本上限靠停止条件兜底)
适用步骤可预先分解的明确任务开放式问题,步数无法预测、无法硬编码路径
失败模式单步失败,局部重试错误复合:小错在多轮中滚雪球
测试单元测试每步需要 sandbox 环境中大量试跑 + guardrails

(来源: Building Effective Agents「When (and when not) to use agents」,访问于 2026-08-30)

🧨 犀利细节|成本上界必须由代码给出:固定工作流有 N 次模型调用时,单请求调用数上界就是 N(不计显式重试);agent 若只写「直到完成」则没有可计算上界。正解是同时设置最大迭代数、预算上限、超时和人工检查点,并以最先触发者终止;只在 prompt 里要求模型「节省调用」不是控制面。

2. 智能体循环

🎯 学习重点:必背五要素 Goal–Reasoning–Planning–Action–Observation,并能说明停止条件为何属于应用层。

官方对 agent 运行方式的描述(来源: Building Effective Agents,访问于 2026-08-30):agent 以人类指令或交互讨论开场;任务明确后独立规划并执行,必要时回到人类处索取信息或判断;执行中每一步都要从环境获取 ground truth(工具调用结果、代码执行结果)来评估进展;可以在检查点或遇到阻塞时暂停等待人类反馈;任务完成即终止,但通常还要配置停止条件(如最大迭代次数)来保持控制。

拆成五要素(考试友好版):

要素英文干什么
目标Goal用户给的任务与成功标准
推理Reasoning理解输入、消化观察、评估当前状态(thinking 的用武之地)
规划Planning把目标分解为下一步行动(选哪个工具、传什么参数)
行动Action发出 tool_use,由应用执行(模块 04 的完整回路)
观察Observation拿回 tool_result——环境的 ground truth,喂给下一轮推理
stateDiagram-v2 [*] --> Goal: 用户任务/讨论明确任务 Goal --> Reasoning: 理解输入、评估上下文 Reasoning --> Planning: 分解子目标、决定下一步 Planning --> Action: 选择工具 (tool_use) Action --> Observation: 应用执行、回传 tool_result Observation --> Reasoning: 未完成(ground truth 反馈) Observation --> Done: 停止条件满足 Planning --> HumanCheckpoint: 遇阻塞/不可逆操作 HumanCheckpoint --> Reasoning: 人类反馈/批准 Done --> [*]: 最终回答

停止条件 至少要有:① 任务完成(模型判断 + 可验证的成功标准);② 最大迭代次数/轮数上限(官方点名的例子);③ 预算/成本上限;④ 人工检查点(不可逆操作前暂停);⑤ 阻塞升级(连续失败 N 次转人工)。没有 ②③ 的 agent loop 是生产事故预备役。

与模块 04 的精确衔接:模块 04 的工具回路是「User → Claude → tool_use → 应用执行 → tool_result → Claude → 回答」。那是一个单圈回路,圈数由你的应用代码写死(while 循环几轮、每轮干什么,都是开发者定的)。Agent = 工具回路 + 控制权转移:还是那个回路,但「要不要再转一圈、下一圈调哪个工具、什么时候停」由模型在运行时决定。你的代码退到外层,只保留三样确定性职责:执行工具、权限门、停止条件——这三样永远不能交给模型(呼应模块 04 的判断:什么由 Claude 决定、什么由确定性代码决定)。

🧨 犀利细节|重试也消耗迭代预算:工具超时、参数校验失败、权限拒绝都应作为 observation 回传,但不能因此绕过计数器。反模式是「成功调用才算一轮」,它会让持续失败的工具形成无限重试侧门;正解是每次模型决策/工具尝试均记账,连续同类失败达到阈值就升级人工。

3. 编排模式逐个讲

🎯 学习重点:考试不只背模式名,更要用「步骤是否固定、子任务是否独立、评估标准是否清晰」完成选型。

官方的递进顺序:先给基础积木,再从简单组合式 workflow 走到自主 agent(来源: Building Effective Agents「Building blocks, workflows, and agents」,访问于 2026-08-30)。

3.0 基础积木:增强型 LLM (Augmented LLM)

🎯 学习重点:易错点是 augmented LLM 不等于 agent;接了检索、工具或记忆仍可能只是单次调用。

一切 agentic 系统的积木:LLM + 检索、工具、记忆等增强。现役模型能主动使用这些能力——自己生成搜索查询、自己选工具、自己决定保留什么信息。实现上关注两点:把增强能力裁剪到你的用例,并给模型易于使用、文档清晰的接口(BEA 提到 MCP 是集成第三方工具生态的一种方式——模块 06 主题)。

3.1 路由

🎯 学习重点:类别边界清晰且可可靠分类时选 routing,并记住可按难度路由到不同成本模型。

定义:对输入分类,导向专门的后续任务(专用 prompt、工具集、甚至更便宜的模型)。价值:关注点分离——不为迁就一类输入而牺牲另一类。官方例:客服查询分类(普通咨询 / 退款 / 技术支持)走不同下游;简单常见问题路由给低成本模型、困难罕见问题路由给更强模型。适用信号:存在清晰类别、且分类可被准确执行(LLM 或传统分类器都行)。

3.2 提示链

🎯 学习重点:prompt chaining 的标准考法是固定顺序分解,并明确「用串行延迟换准确率」。

定义:任务分解为固定步骤序列,每次 LLM 调用处理上一步的输出;可在任意中间步加程序化检查——文中所谓 gate。核心交易:用延迟换准确率,每步都变成更简单的任务。官方例:生成营销文案→翻译成另一语言;先写文档大纲→校验大纲满足标准→按大纲写全文。

🧨 犀利细节|链路尾延迟会累加:串行 k 步的端到端耗时近似为各步模型耗时、工具耗时与排队耗时之和;任一步重试都会继续放大尾延迟。正解是在 gate 处尽早失败、缓存可复用中间结果,并只把确有依赖的步骤串起来。

3.3 并行化

🎯 学习重点:必分清 sectioning(独立子任务)与 voting(同题多次尝试),聚合规则必须由代码定义。

定义:多个 LLM 同时工作,输出由程序聚合。两个变体:

官方例:guardrails 与主回答分两个实例并行(比同一调用又答又审更稳);自动化 evals 每个调用评估一个维度;代码漏洞审查用多个不同 prompt 各审一遍再聚合投票。适用信号:子任务可并行提速,或需要多视角/多次尝试提高置信度。

🧨 犀利细节|并行不等于免费提速:理想延迟受最慢分支约束,但 token 与请求数按分支数增加,还可能撞上速率限制;若分支之间共享可变状态或存在先后依赖,硬并行会制造竞态。先证明任务独立,再设并发上限、单分支超时和部分失败的聚合策略。

3.4 评估器-优化器

🎯 学习重点:高频适用条件是「清晰 rubric + 反馈确实能改进输出」,缺一不可。

定义:一个 LLM 调用生成回答,另一个在循环中评估并给反馈。适用信号:有清晰的评估标准,且迭代精修有可度量价值;两个好迹象——人类 articulated 的反馈能显著改进输出、且 LLM 自己能给出这种反馈(类比人类作者的反复修改)。官方例:文学翻译(评估器抓细微语感);需要多轮搜索-分析的复杂检索任务(评估器判断是否还需要再搜)。

3.5 规划器-执行器

🎯 学习重点:易错点是该名称并非 BEA 官方五模式;用「计划是否中途动态改写」与 orchestrator-workers 区分。

BEA 的五种模式清单里没有单列这个术语——它是编排器-工人(3.6)的「先规划、后执行」显式化变体,也是业界通用叫法:一个 Planner 先产出任务分解/计划(往往一次性),Executor(可以是自己、另一 LLM 或确定性代码)照单执行,计划本身通常不再随观察动态改写。官方叙事里的对应物:Agent SDK 把「planning its own steps」直接写进 agent 定义(来源: https://code.claude.com/docs/en/agent-sdk/overview(访问于 2026-08-30));Claude Code 的 plan-first 工作方式(模块 09 展开)。与 3.6 的关键差别:计划是静态契约还是随环境反馈动态再规划——考试用「计划是否可被中途修改」来区分。

3.6 编排器-工人 / 管理者-工人

🎯 学习重点:必考区分点是子任务集合由编排器按输入动态产生,而不是开发者预先枚举。

定义:中央 LLM(编排器)动态分解任务、委托给工人 LLM(workers)、再综合结果。与并行化的本质区别:子任务不是预定义的,由编排器按具体输入现场决定——灵活性与不可预测性同时上升。管理者-工人是同族叫法,BEA 官方词汇是 Orchestrator-Workers。官方例:需要改多个文件的编码产品(改哪些文件取决于任务);跨多信源收集分析信息的搜索任务。Anthropic 自己的多智能体研究系统就自述采用 orchestrator-worker pattern:主 agent 分析查询、制定策略、生成并行 subagent 检索,再由主 agent 汇总(来源: https://www.anthropic.com/engineering/multi-agent-research-system(访问于 2026-08-30))。

flowchart TD U[用户请求] --> O["编排器 Orchestrator<br/>LLM 动态分解任务"] O -->|子任务 1| W1["Worker 1<br/>独立上下文窗口"] O -->|子任务 2| W2["Worker 2<br/>独立上下文窗口"] O -->|子任务 N| WN["Worker N"] W1 --> S["编排器综合结果"] W2 --> S WN --> S S --> R[最终回答]

3.7 多智能体系统

🎯 学习重点:牢记官方量化结论 90.2%、4×/15× 与最多 90%,并能说明高收益来自规模化 token 与并行搜索。

多个 agent(各自「在循环中自主使用工具」)协同工作。官方实测结论(均来源: multi-agent research system 一文,访问于 2026-08-30):

🧨 犀利细节|先算单位价值再扩 agent 数:官方数据给出的约 15× chat token 是架构级成本信号,不是「多 agent 一定更聪明」的保证。反模式是为每个请求固定启动同样多的 subagent;正解是按问题复杂度动态分配投入,并让编排器在边际信息增益不足时停止扩展。

3.8 记忆

🎯 学习重点:必背 compaction、structured notes、subagents 三件套,以及 memory tool 的 client-side 与路径边界。

长时程任务超过上下文窗口时,官方工程文给出三件套(来源: https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents(访问于 2026-08-30)):

产品化落点是平台 memory tool:{"type": "memory_20250818", "name": "memory"} 一行即可启用;Claude 在 /memories 目录下创建/读取/更新/删除文件,跨会话积累知识;client-side 执行——Claude 只发起请求,存储由你的应用控制(可映射到数据库/对象存储),必须做路径穿越防护(拒绝 /memories 之外的路径);Claude 4 及以后模型可用(来源: https://platform.claude.com/docs/en/agents-and-tools/tool-use/memory-tool(访问于 2026-08-30))。设计哲学是及时上下文:平时只维护轻量标识符(文件路径、查询、链接),运行时按需加载,而不是预先把一切塞进窗口。

3.9 2026 年的新选项:Claude Managed Agents

🎯 学习重点:掌握 Messages API 与 Managed Agents 的控制权取舍,并记住 session 不等于 context window。

较新源(双源并记):官方托管服务 Claude Managed Agents(beta,header managed-agents-2026-04-01)——你不自建 agent loop / 工具执行 / 运行时,官方提供 harness 与基础设施(内置 bash、文件操作、web search/fetch、MCP),适合长时程异步任务;核心概念 Agent / Environment / Session / Events(来源: https://platform.claude.com/docs/en/managed-agents/overview(访问于 2026-08-30))。其工程文展示了 2026 年官方对 agent 系统的架构观:把 agent 虚拟化为 session(只追加事件日志——明确说「session 不是 Claude 的上下文窗口」)、harness(调 Claude 并路由工具调用的循环)、sandbox(执行环境)三个可独立替换的接口;「大脑」与「手」解耦后,容器从 pet 变 cattle,TTFT p50 降约 60%、p95 降超 90%;安全上凭证永远不可从 sandbox 触达(git token 在沙箱初始化时注入 remote;MCP 凭证存 vault、经代理调用)(来源: https://www.anthropic.com/engineering/managed-agents(访问于 2026-08-30))。官方选型口径:Messages API = 自定义 agent loop、细粒度控制;Managed Agents = 长时程/异步、不想自建基础设施。


4. 决策框架:workflow 还是 agent

🎯 学习重点:场景题先走「单次调用 → workflow → agent → multi-agent」复杂度阶梯,只有可度量收益才升级。

官方决策阶梯(来源: Building Effective Agents「When (and when not) to use agents」,访问于 2026-08-30):

  1. 先找最简单的可行方案。很多应用「单次 LLM 调用 + 检索 + 上下文内示例」就够了——不上 agentic 系统本身就是选项。
  2. 复杂度确实需要时,well-defined 任务用 workflow(换来可预测性与一致性)。
  3. 规模上需要灵活性与模型驱动决策时才用 agent。任务开放式、步数无法预测、无法硬编码固定路径、且你对模型决策有一定信任(agent 的自主性最适合可信环境中的规模化任务)。

一张速查表(综合 BEA 各模式「When to use」):

你的情况选
单步任务,一次调用+检索/示例即可单次调用(augmented LLM),不编排
输入有清晰类别,各类处理方式不同Routing
任务能干净地分解成固定顺序的子任务Prompt chaining
子任务独立可并行 / 需要多视角投票Parallelization
有清晰评估标准 + 迭代精修有可测收益Evaluator-optimizer
子任务不可预知,需现场分解再综合Orchestrator-workers(步骤仍可枚举时偏 workflow 侧)
开放式问题、步数不可预测、路径无法硬编码Agent
开放式 + 可高度并行 + 信息量超单窗口 + 任务价值高Multi-agent(orchestrator-worker)
长时程/异步,不想自建 loop 与沙箱Managed Agents(beta,较新源)

反模式:为了「agentic」而 agentic。官方点名批评的两种姿势:① 复杂度没有换来可度量的结果改善就加多步 agentic 系统——BEA 原话是「只在能证明改善结果时才增加复杂度」;② 用框架的抽象层把底层 prompt 和响应藏起来,导致难调试、还诱使你加不必要的复杂度。官方建议直接用 API 起步——许多模式几行代码就能实现;用框架则必须理解底层代码,「对黑盒的错误假设是客户错误的常见来源」。反向反模式同样存在:任务明明开放式(如跨多信源研究)却硬编固定 pipeline,结果是路径覆盖不全、维护地狱。


5. Bad vs Better 架构对比

🎯 学习重点:高频反模式是全流量上开放式 agent;正解通常是 routing 分层,仅把长尾开放任务升级。

案例 A:客服系统。

案例 B:跨 50 个信源的行业研究报告。

案例 C:内部文档问答(检索即答)。


6. Tradeoffs 总表

🎯 学习重点:必须能同时比较灵活性、可预测性、成本、尾延迟、错误复合与托管边界。
权衡轴一端另一端架构师动作
灵活性 vs 可预测性Agent 开放路径Workflow 固定路径用「步数可否预判」定分界
成本chat ≈ 1×agent ≈ 4×、multi-agent ≈ 15× token停止条件 + 预算上限 + 按价值定价场景
延迟并行化(耗时≈最慢子任务)串行链(耗时=各步之和)chaining 是拿延迟换准确率
错误行为单步错→局部重试agent 错误复合滚雪球sandbox 大量试跑 + guardrails + 人审检查点
自建 vs 托管Messages API 细粒度控制Managed Agents 免建 loop/沙箱按团队基建能力与合规要求(托管暂不适用 ZDR/BAA)
记忆策略预载全部上下文JIT 按需加载 + memory toolcontext rot 下窗口是有限资源,取高信号最小集

(数据来源: Building Effective Agents、multi-agent research system、managed-agents overview/工程文、effective context engineering,均访问于 2026-08-30)

🧨 犀利细节|预算按最坏路径而非平均路径:平均调用次数会掩盖长尾失控。容量规划至少同时看每请求最大迭代数、并发 worker 数、每轮工具/模型超时与 token 预算;SLO 看 P95/P99 时,不能拿「多数请求两轮结束」替代硬上限。

7. Common mistakes

🎯 学习重点:易错题集中在无停止条件、模式过度设计、上下文滥塞、框架黑盒与模型层伪安全边界。
  1. 无停止条件的 loop:没有 max iterations / 预算上限,agent 跑飞等于烧钱事故。官方原话点名 maximum number of iterations。
  2. 步数可预测却上 agent:分类清晰、流程固定的任务用 workflow——可预测、可测试、可预算。
  3. 步数不可预测却硬编 pipeline:开放研究类任务硬编「查 A→查 B」,覆盖不全且维护地狱。
  4. 用框架而不懂底层:抽象层遮住 prompt/response,出问题无从下手;官方建议 API 直起步、用框架必读底层。
  5. ACI 投入不足:工具文档按 HCI 的标准来投入——官方做 SWE-bench agent 时优化工具花的时间超过优化 prompt;经典案例:相对路径易错,改成强制绝对路径后模型零失误。
  6. multi-agent 用错场景:强依赖/共享上下文的任务(多数编码任务)不适合;委派指令缺目标/输出格式/边界会导致 subagent 重复劳动。
  7. 把一切塞进上下文:忽视 context rot(token 越多召回越差)与 attention 预算;应 JIT 检索 + compaction + 结构化笔记。
  8. 拿「模型级指令」当安全边界:权限与停止条件必须是应用层确定性代码(模块 04/11 的核心论断在 agent 语境复现)。

8. 重要英文术语

🎯 学习重点:见英文能立即说出控制流含义、适用条件与一个反模式,而不只会中文翻译。

考试与官方文档高频短语,务必见词知义:


9. 认证相关性

🎯 学习重点:认证题通常以场景选型考控制流归属、停止条件、模式边界和成本延迟权衡。

本模块对齐 Claude 认证(CCAR-F / CCAR-P 等)中 agentic 系统设计域的典型考点(域框架见 00-certification-current-status/,此处只讲能力映射、不涉考题):

备考建议:把 §1 对照表、§4 速查表和 §6 tradeoffs 表背成条件反射;场景题先问自己「步数可否预判?成功标准可否验证?错误成本多大?」三连。


10. 衔接

🎯 学习重点:把模块 04 的工具回路视为执行底座,把模块 09/10 视为 harness 与生产治理的落地层。

本模块示例见 examples/(3 个脚本,均无 key 可跑);实验见 labs/lab.md;自测见 questions/。

📚 目录