题记与说明
- 精读日期:2026-10-29
- 精读方式:主题研究。先用网络检索筛选互补来源,再逐一精读。主来源全文精读,四个关联来源分别精读其全文/摘要转述(下表标注精读深度与二手转述情况)。
- 原始来源:<https://www.anthropic.com/research/building-effective-agents>(作者 Erik Schluntz & Barry Zhang,Anthropic 工程团队,发布于 2024-12-19。注:页面自发布后有过更新——本会话抓到的版本含有 Haiku 4.5 / Sonnet 4.5 的路由示例,并在页眉提示"自 2024 年 12 月以来工具生态已变化、可参考 Claude Managed Agents",故个别初版表述可能与现行版本不同)
- 主题判断:确认是"研究主题"——一篇工程经验文章(不是学术论文),围绕任务指定的重点"工作流 vs agent 的取舍原则"展开提取。
0. 精读来源清单(检索筛选结果)
| # | 来源 | 精读深度 | 价值定位 |
|---|---|---|---|
| 1 | Anthropic《Building effective agents》(2024-12-19) | 全文精读(主来源,本会话 WebFetch 抓取并逐节提取) | 取舍原则的原始出处:workflow/agent 定义、五种工作流模式、agent 适用判据、三原则总结、附录实战案例 |
| 2 | Anthropic cookbook · patterns/agents 参考实现 | README 精读(GitHub 树页为 JS 渲染未列出文件,改抓 raw README 成功) | 官方代码落地佐证:五种模式均有最小实现,且额外给出异步多 agent 编排、延迟/预算约束下的多 agent 团队两个扩展笔记本 |
| 3 | LangChain《How to think about agent frameworks》(Harrison Chase,2025-04-20) | 全文精读 | 对 Anthropic 文章最著名的回应:承认 workflow/agent 区分,但把可靠性难题重新定位于"上下文管理",并补充"生产系统多为混合体"的修正 |
| 4 | OpenAI《A practical guide to building agents》(2025-04) | 摘要转述精读(官方 PDF 直抓失败——WebFetch 报 Unsupported WebFetch content type: application/pdf;改用 Maginative 的详细转述) | 同期对家的独立立论,交叉验证"何时该上 agent"的三条判据与"单 agent 优先、再升级多 agent"的演进路径 |
| 5 | Anthropic《Effective context engineering for AI agents》(2025-09-29) | 全文精读 | 官方后续演进:把 agent 定义收敛为"LLM 在循环中自主使用工具",补上原文着墨很少的上下文管理理论(context rot、压缩、结构化笔记、子 agent) |
检索中出现但未采用的来源(不做引用):HuggingFace 社区实践文(连接超时,未读到内容)、LinkedIn 平台对比文、Zilliz 争论综述、GitHub 上多个第三方复现仓库。另:原始文中被广泛引用的初版 SWE-bench 具体数字(如 49.0%)在本会话抓取的现行页面中未出现(现行版本只说"can now solve real GitHub issues in the SWE-bench Verified benchmark"),为避免编造,本笔记不引用该具体数字。
1. 核心问题
这篇文章要解决的问题是:当"agent"概念被过度炒作时,工程团队到底该怎么决定"要不要上 agent、上多复杂的 agent"?
拆成四个子问题:
- 概念问题:workflow 和 agent 的边界在哪?(很多团队把"LLM + 一点工具调用"就叫 agent,导致讨论失焦)
- 决策问题:什么情况下值得让"模型动态自主决策"(agent),什么情况下应该走"预定义代码路径"(workflow)?
- 设计问题:决定要做之后,有哪些可复用、可组合的架构模式?复杂度应该从哪里起步?
- 实践问题:不用框架行不行?agent 在生产中真正难的地方在哪(工具、护栏、可验证性)?
文章立场是反炒作的:开篇就警告不要为了 agent 而 agent,全文主旋律是"找到能用的最简单方案"。
2. 主要主张
2.1 基础定义(整篇取舍讨论的地基)
原文在"agentic systems"大伞下区分两类(现行页面原文逐字):
"Workflows are systems where LLMs and tools are orchestrated through predefined code paths."
(工作流:LLM 和工具通过预定义代码路径编排的系统)
Agent 则是"LLMs dynamically direct their own processes and tool usage"的系统——模型自己动态决定流程和工具使用,并在完成任务的整个过程中保持对任务的控制权。
一句话总结区别:workflow 里"路径是人写死的,LLM 只是路径上的节点";agent 里"路径是模型走出来的,代码只负责循环和环境"。
2.2 核心取舍命题
- "we recommend finding the simplest solution possible, and only increasing complexity when needed"——从最简方案开始,只在确有收益时增加复杂度。
- "Agentic systems often trade latency and cost for better task performance"——agentic 系统本质上是用延迟和成本换任务表现。这是全文最凝练的取舍公式。
- 对应的另一面:"workflows offer predictability and consistency for well-defined tasks"——可预测、一致、便宜;agent 的价值只在"灵活性 + 大规模模型驱动决策"被需要时成立。
- 对多数应用,"optimizing single LLM calls with retrieval and in-context examples is usually enough"——很多场景连工作流都不需要,优化好单次调用就够了。
2.3 五种工作流模式(复杂度阶梯)
| 模式 | 机制 | 何时用(原文判据) | 典型例子 |
|---|---|---|---|
| Prompt chaining 提示链 | 顺序分解,每步 LLM 处理上一步输出,可插程序化"门"(gate)校验 | "the task can be easily and cleanly decomposed into fixed subtasks"(可干净分解为固定子任务) | 先生成营销文案再翻译;写大纲→检查大纲→按大纲成文 |
| Routing 路由 | 先分类输入,再分发到专门化的后续处理 | "for complex tasks where there are distinct categories that are better handled separately"(存在必须分开处理的不同类别) | 客服问题分类;现行版本示例:简单问题给 Haiku 4.5、难题给 Sonnet 4.5 |
| Parallelization 并行化 | 两个变体:Sectioning(独立子任务并行)与 Voting(同一任务多次独立跑再聚合) | "when the divided subtasks can be parallelized for speed, or when multiple perspectives or attempts are needed" | 护栏单独一路调用;多 prompt 交叉审查代码漏洞 |
| Orchestrator-workers 编排者-工作者 | 中央 LLM 动态分解、委派、综合 | "you can't predict the subtasks needed"(子任务无法预先确定);与并行化的关键区别:"subtasks aren't pre-defined, but determined by the orchestrator" | 多文件代码修改;多来源搜索整合 |
| Evaluator-optimizer 评估者-优化者 | 一个 LLM 生成、另一个 LLM 批评、循环改进 | "when we have clear evaluation criteria, and when iterative refinement provides measurable value"(有清晰评估标准且迭代有可衡量收益) | 文学翻译;需要多轮补充信息的搜索任务 |
取舍视角下的模式选择:这个阶梯本质上是"人预定义结构"程度的递减——提示链结构最死(最可预测、最便宜),编排者-工作者只保留"分解权"在模型手里,评估者-优化者引入了小循环。能落在左边的就不要滑向右边。
2.4 自主 agent:适用判据与风险
- agent 的本质:"typically just LLMs using tools based on environmental feedback in a loop"——在循环中基于环境反馈使用工具的 LLM,没有更多神秘之处。
- 起点:来自用户的命令或交互式讨论,随后"plan and operate independently";关键在每一步都要"gain 'ground truth' from the environment at each step"(工具结果、代码执行结果都是 ground truth 来源)。
- 终止条件:"The task often terminates upon completion, but it's also common to include stopping conditions (such as a maximum number of iterations) to maintain control.";agent"can pause for human feedback at checkpoints or when encountering blockers"。
- 风险直白承认:"The autonomous nature of agents means higher costs, and the potential for compounding errors."——自主性 = 更高成本 + 错误复利。对策:"extensive testing in sandboxed environments, along with the appropriate guardrails"。
2.5 三原则总结(现行页面 Summary 部分)
- "Maintain simplicity in your agent's design."(保持设计简单)
- "Prioritize transparency by explicitly showing the agent's planning steps."(显式展示规划步骤,保透明)
- "Carefully craft your agent-computer interface (ACI) through thorough tool documentation and testing."(精心打造 agent-计算机接口:工具文档 + 测试)
以及对框架的态度:"don't hesitate to reduce abstraction layers and build with basic components as you move to production"——生产环境敢于减抽象层;"many patterns can be implemented in a few lines of code",直接用 LLM API 起步即可。
3. 方法
这是一篇工程经验文章,不是实证研究。论证方式:
- 概念分类法:先给 workflow/agent 二分定义,建立讨论坐标系;
- 模式目录法:把架构空间整理成五个可组合的最小模式 + 一个自主 agent 终点,每个模式配"何时用"判据和真实例子,形成可查表的决策菜单;
- 案例佐证法(附录 1):用客服、编码两个高价值场景说明 agent 的适用判据(对话+行动、成功可度量、有反馈闭环、有人工监督位);
- 微经验沉淀法(附录 2):把工具提示工程(ACI)的经验教训写成清单(如绝对路径 vs 相对路径的教训);
- 配套实现佐证:官方 cookbook 提供五种模式的 notebook 级最小实现(另有异步多 agent 编排、延迟/预算约束多 agent 团队两个扩展),证明模式不是纸面架构。
4. 数据与证据
证据性质:工程实践与案例,无受控实验。 具体包括:
- SWE-bench Verified 案例(现行页面表述):编码 agent"can now solve real GitHub issues in the SWE-bench Verified benchmark based on the pull request description alone",且"human review remains crucial"。。(初版的具体百分比数字未能在现行页面验证,见第 6 节)
- 客服案例:场景"naturally follow a conversation flow while requiring access to external information and actions";成功"can be clearly measured through user-defined resolutions";已有供应商采用"charge only for successful resolutions"的按成功解决计费模式——说明该场景的成功标准可被合同化。
- ACI 实操证据(附录 2):作者自述构建 SWE-bench agent 时"spent more time optimizing our tools than the overall prompt"——工具投入超过主 prompt;一个具体教训:把相对路径参数改成绝对路径后,"the model used this method flawlessly"。
- 旁证(LangChain 回应):Chase 承认 Anthropic 的 agent 定义比 OpenAI 的更精确,并引用其取舍句"Agentic systems often trade latency and cost for better task performance"——原文的核心区分被竞争方接受,说明定义有跨阵营说服力。
- 旁证(OpenAI 指南):独立得出高度一致的判据(复杂决策/规则臃肿/非结构化数据才值得上 agent;单 agent 起步)。
- 旁证(官方后续文章):2025-09 上下文工程文把定义收敛为"LLMs autonomously using tools in a loop"并引入 context rot 研究,说明原文定义经受住了自家后续迭代。
证据是否充分:对"何时用 workflow、何时用 agent"这个定性问题,判据 + 双案例 + 三方交叉验证是充分的;但对"每种模式各带来多少收益/成本"没有量化对比,充分性止步于定性。
5. 结论
- 取舍原则一句话版:能 workflow 不要 agent,能单次调用不要 workflow;复杂度每上一级,必须用"任务表现提升"来赎买(代价是延迟、成本与错误累积)。
- 判据版:任务可干净分解、路径可预知 → 工作流(或更简单);任务开放、步数不可预知、有环境反馈闭环且结果可验证 → agent。
- 最佳落点:agent 最有价值的是"对话+行动"、成功可清晰度量、有反馈闭环、有人工监督位的地方——客服与编码是两个经过验证的标杆场景。
- 三原则:简单、透明(展示规划步骤)、ACI(工具文档与测试当一等公民对待)。
- 反框架立场:理解底层代码,生产环境敢于去掉抽象层。
6. 局限
- 无量化对比:五种模式之间没有成本/延迟/准确率的系统对照数据,"最简单方案"原则靠直觉与案例支撑,不是 benchmark 结论。
- 案例覆盖窄:附录只有客服、编码两类,且都是"结果可验证"的友好场景;对结果难验证、成败判定主观的领域(如开放写作、战略分析)指导有限。
- 页面已更新导致版本歧义:本会话抓到的是更新后页面,初版广为引用的具体数字(SWE-bench 49.0% 等)未能在现行页面验证,本笔记只能引用现行表述——引用本文数字时需注明版本。
- 上下文管理缺位:原文几乎不谈长任务下的上下文膨胀问题(2025-09 的后续文章才补上:context 是有限资源、压缩、结构化笔记、子 agent 隔离)——这是原文最大的理论缺口。
- "最简单方案"的组织阻力:原则正确,但真实组织中面对产品压力与演示需求,"够用"的定义常被拉高,文章未给组织层面的落地策略。
- 多 agent 协作着墨少:只有异步编排出现在 cookbook 扩展笔记本中,文章正文不讨论多 agent 的通信与预算控制(Anthropic 2025-06 的多 agent 研究系统文章才是那一篇)。
7. 对我的启发
- 动手前先过"降级测试":每次想上 agent,先依次问——单次调用+检索够不够?提示链够不够?路由够不够?……把五模式当菜单而不是架构起点,用原文判据逐条排查。
- 把"可验证性"当选型信号:如果任务的成功标准写不出来(客服解决率、测试通过率),就不该上自主 agent——先修任务的度量,再谈自主性。
- ACI 投入 > prompt 投入:工具文档、参数命名、防呆(poka-yoke)值得花比主 prompt 更多的时间;这是从"调 prompt"到"造环境"的心态转换。
- 写作/方案设计的叙事骨架:Anthropic(最简方案+模式菜单)→ LangChain(真正难题是上下文,生产是混合体)→ OpenAI(单 agent 起步+护栏)的三方对话,是讲"agent 过度炒作下的工程清醒"的现成骨架。
- 接住后续演进:原文的定义在 2025-09 被自家收敛为"LLMs autonomously using tools in a loop",且补上了上下文经济学;引用取舍原则时应把"上下文是有限资源"作为第二块拼图,否则长任务场景会踩坑。
附 A:工作流 vs Agent 取舍速查表(专题深挖)
取舍维度对照:
| 维度 | Workflow | Agent |
|---|---|---|
| 路径决定者 | 预定义代码路径(人) | 模型动态决定 |
| 可预测性/一致性 | 高(卖点) | 低 |
| 成本与延迟 | 低 | 高("trade latency and cost for better task performance") |
| 灵活性 | 受限于预设分支 | 高 |
| 失败模式 | 单点、可定位 | 错误复利(compounding errors) |
| 适配任务 | 可分解为固定子任务 | 开放式、步数不可预知 |
"什么时候不需要 agent"清单(从原文判据反推):任务能干净分解为固定子任务 → 提示链;输入有明确类别 → 路由;子任务可并行或需要多视角 → 并行化;只有分解顺序不可预知 → 编排者-工作者;有清晰评估标准且迭代有收益 → 评估者-优化者;以上都不需要 → 优化单次调用。
"什么时候 agent 是正确选择"清单(附录 1 判据):任务同时包含对话与行动;成功标准清晰可度量;存在环境反馈闭环;可设置人工监督/检查点;最好结果可程序化验证(测试、解决率)。
三方对照(本会话精读所得):
| 立场 | 核心句 | 对"何时用 agent"的回答 |
|---|---|---|
| Anthropic(2024-12) | "trade latency and cost for better task performance" | 判据驱动:可分解可预知→workflow;开放+可验证→agent |
| OpenAI(2025-04,经 Maginative 转述) | agent = "independently accomplish tasks on your behalf" | 传统自动化失效处:复杂决策、规则臃肿、非结构化数据;单 agent 起步,必要时升 manager/decentralized 编排 |
| LangChain(2025-04) | "The hard part … is making sure the LLM has the appropriate context at each step." | 同意最简方案;修正:生产系统多为 workflow+agent 混合体,真正难题是上下文管理而非编排风格;系统只有"agentic 程度"之分(引 Andrew Ng) |
附 B:后续演进摘要(Anthropic《Effective context engineering for AI agents》,2025-09-29)
- 定义收敛:"LLMs autonomously using tools in a loop"。
- 理论根基:context rot——"Context, therefore, must be treated as a finite resource with diminishing marginal returns.";目标是"finding the smallest possible set of high-signal tokens"。
- 四个技术:即时检索(存轻量标识符而非预加载,"progressive disclosure";Claude Code 的 CLAUDE.md 是"naively dropped into context up front"的混合式);压缩(临近窗口上限时总结重启,清空工具结果是"one of the safest lightest touch forms of compaction");结构化笔记(NOTES.md/todo 等窗口外记忆);子 agent 架构(子 agent 深潜数万 token,只向主 agent 回传"only a condensed, distilled summary",约 1,000–2,000 token)。
- 收尾仍是原文精神:"do the simplest thing that works."
附 C:官方实现落地情况(cookbook · patterns/agents)
- README 列出两层:Basic Building Blocks(Prompt Chaining、Routing、Multi-LLM Parallelization)与 Advanced Workflows(Orchestrator-Subagents、Evaluator-Optimizer),全部为 notebook 最小实现。
- 扩展笔记本超出正文目录:Async Multi-Agent Orchestration、Multi-Agent Teams Under Latency Pressure and Budgets——说明官方实践中"多 agent + 预算/延迟约束"已是独立课题。
- README 未给模型/工具细节与 caveats(需进各 notebook 查看)。
附 D:全部来源链接
- 原文:<https://www.anthropic.com/research/building-effective-agents>
- Cookbook 参考实现:<https://github.com/anthropics/anthropic-cookbook/tree/main/patterns/agents>(README raw:<https://raw.githubusercontent.com/anthropics/anthropic-cookbook/main/patterns/agents/README.md>)
- LangChain 回应:<https://www.langchain.com/blog/how-to-think-about-agent-frameworks>
- OpenAI 指南 PDF:<https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf>(本会话直抓失败);所用转述:<https://www.maginative.com/article/how-to-build-ai-agents-a-detailed-practical-guide-from-openai>
- Anthropic 上下文工程续篇:<https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents>
(引述核对说明:附 B/C 及正文引语均为本会话实际抓取内容;OpenAI 指南部分为二手转述,已在表中标注。)