上期钉的是「每次都要做的事」。再往上游一步,是更贵的那个问题:这活到底该不该上 agent。Anthropic 2024-12-19 那篇《Building Effective AI Agents》给的答案只有两句定义的分量——workflow 是预先写死的代码路径,agent 是模型自己决定路径。这期把这篇文章连同它那个配套 notebook 仓库一起拆开,再拿后来三篇官方文章去对它的账。
这篇文章被引用得太多,以至于多数人只记住了那五张图。它真正值钱的在两处:一是给了一条可判定的分界线,让「我们要不要做 agent」从品味之争变成事实之争;二是它自己一直在改——今天打开它,点名的框架名单已经和发表当天不是同一批。本期照旧:先给能跑的代码,再拆机制,再拿真材料对账,判据放后半程。
原文(Erik Schluntz / Barry Zhang,2024-12-19):
Workflows are systems where LLMs and tools are orchestrated
through predefined code paths.
Agents are systems where LLMs dynamically direct their own
processes and tool usage, maintaining control over how they
accomplish tasks.
分界线落在一个当场就能回答的问题上:下一步调哪个工具,是你的代码决定的,还是模型决定的。代码决定 → workflow,无论它套了多少层;模型决定 → agent,哪怕它只有二十行。画得再花的流程图也可能是 workflow,一个 while 循环也可能是 agent。
光读会以为自己懂了。参考实现在官方 cookbook 里——注意仓库已从 anthropic-cookbook 改名为 claude-cookbooks(老链接会跳转,目录路径没变):
git clone https://github.com/anthropics/claude-cookbooks
cd claude-cookbooks/patterns/agents
basic_workflows.ipynb # 链式 / 路由 / 并行三件套
evaluator_optimizer.ipynb # 评估-优化循环
orchestrator_workers.ipynb # 编排者-工人
async_multi_agent_orchestration.ipynb
latency_multi_agent.ipynb # 有延迟与预算约束的多 agent
util.py prompts/ # 共用工具与提示词
每个 notebook 都是不依赖任何框架的裸实现,这正是文章的态度:many patterns can be implemented in a few lines of code。什么时候别看:你要的是生产级重试、观测、持久化——这些一样都没有,它们是教具不是底座。(据 GitHub 仓库页 53.1k★,2026-09)
五种模式里只有末档需要真正的 agent 循环,而这一档现在有官方现成的:
npm install @anthropic-ai/claude-agent-sdk # Node 18+
pip install claude-agent-sdk # 或 Python 3.10+
export ANTHROPIC_API_KEY=your-api-key
from claude_agent_sdk import query, ClaudeAgentOptions
async for m in query(
prompt="Review utils.py for bugs that would crash. Fix them.",
options=ClaudeAgentOptions(
allowed_tools=["Read", "Edit", "Glob"],
permission_mode="acceptEdits")):
print(m)
这段抄自官方 quickstart。它替你干掉的是自己写 agent 循环:工具调用、上下文管理、重试、权限门都在库里。什么时候别装:任务是固定三步、每步都能预测——按文章的判据你要的是链式调用,直接调 API 写三次就行,别拖进一整个 harness。另注意 v0.1.0 起默认不再带 Claude Code 的系统提示词,要老行为得显式写 {"type":"preset","preset":"claude_code"}。
梯子的地基叫 augmented LLM:an LLM enhanced with augmentations such as retrieval, tools, and memory。五种模式全建在它上面,区别只在谁来编排它。
上面那几档在 claude-cookbooks/patterns/agents/ 里一一对得上:①②③ 全在 basic_workflows.ipynb,④ 在 orchestrator_workers.ipynb,⑤ 在 evaluator_optimizer.ipynb,⑥ 没有单独的 notebook——因为它就是 claude-agent-sdk 那个 query() 循环本身。文章给每一档的适用条件都是一句能直接拿去开会的话:
文章自己的收口是三条原则,值得当 checklist 贴墙上:simplicity(设计保持简单)、transparency(显式展示 agent 的规划步骤)、ACI(像打磨 API 文档一样打磨工具文档与测试)。第三条是它最被低估的一条,下一节就是它的操作手册。
官方 2025-06-13 的 How we built our multi-agent research system 把 ⑥ 这一档的账摊开算了:Opus 4 当 lead、Sonnet 4 当 subagent 的多 agent 系统,在其内部研究评测上比单个 Opus 4 高出 90.2%;代价是 agent 约烧掉聊天的 4 倍 token,多 agent 系统约 15 倍;并行工具调用把复杂查询耗时砍掉最多 90%。同一篇也划了边界:需要所有 agent 共享同一份上下文、或子任务之间强依赖的领域不适合,原文点名 most coding tasks involve fewer truly parallelizable tasks than research。什么时候别上:任务价值撑不起那 15 倍 token 的时候。
原文附录二叫「Prompt Engineering your Tools」,2025-09-11 的 Writing effective tools for AI agents 是它长大后的样子,也是 ACI 那条原则唯一的操作手册:合并工具(别给 list_users/list_events/create_event 三个,给一个 schedule_event)、命名空间(asana_search / jira_search 划清边界)、省 token 的返回(Claude Code 默认把工具返回卡在 25,000 token,自己做分页/过滤/截断)、只返高信号字段(给 name 和 file_type,别给 uuid 和 mime_type)、先写 eval 再调描述。
2025-09-29 的 Effective context engineering for AI agents 补上了盲区——上下文不是无限的。四个手法:compaction(接近上限时压缩历史)、结构化笔记(进度写进 NOTES.md 这类外部记忆)、子 agent 架构(在干净上下文里干活,只回摘要)、即时检索(存轻量标识符,用到再取)。一句总纲:找到 the smallest possible set of high-signal tokens。
今天打开原文,「When and how to use frameworks」那节点名的是 Claude Agent SDK、Strands Agents SDK by AWS、Rivet、Vellum——而 Claude Agent SDK 这个名字是从 claude-code-sdk 改来的,2024-12 发表当天并不存在。别把旧笔记当现状。两个可装的:
pip install strands-harness # 或 npm i @strands-agents/harness
pip install -U langgraph
strands-agents/harness-sdk 主打「any model, any cloud」的 harness 自控(据 GitHub 仓库页 8.5k★,2026-09);langchain-ai/langgraph 是有状态 agent 的低层编排框架(据 GitHub 仓库页 42.5k★,2026-09)。什么时候两个都别装:文章原话是先直接用 LLM API,因为框架会 create extra layers of abstraction that can obscure the underlying prompts and responses, making them harder to debug——你连自己发出去的 prompt 长什么样都看不见时,任何调优都是玄学。
先读/先装这三个:① Building Effective AI Agents 原文——读那两句定义和每档的「when to use」,图可以跳过。② git clone https://github.com/anthropics/claude-cookbooks 进 patterns/agents/ 把 basic_workflows.ipynb 跑一遍——十分钟,比看十遍图管用。③ pip install claude-agent-sdk(或 npm install @anthropic-ai/claude-agent-sdk)——只在确认自己真在 ⑥ 那一档时才装。
按需再看:How we built our multi-agent research system(15× token 与 90.2% 的出处)· Writing effective tools for AI agents(附录二的现代版)· Effective context engineering(compaction / 笔记 / 子 agent / 即时检索)· claude-agent-sdk-demos(其中 research-agent 就是编排者-工人的可跑版,据 GitHub 仓库页 2.8k★,2026-09)· strands-harness · langgraph。
明确别做:把编排者-工人用在子任务清单你本来就能写死的地方 · 没有客观评判标准还上评估-优化循环 · 把 90.2% 当成「多 agent 普遍更好」· 先选框架再想清楚自己在梯子第几级 · 从这篇 2024 年的文章里直接抄包名和框架名 · 只读这篇就去做长程 agent。
uuid 和 mime_type 就是完备害了信号)。更准确的说法或许是:像打磨错误信息一样打磨它——在最短的篇幅里说清此刻该怎么办。basic_workflows.ipynb(链式/路由/并行)、evaluator_optimizer.ipynb、orchestrator_workers.ipynb、async_multi_agent_orchestration.ipynb、latency_multi_agent.ipynb,加 util.py 与 prompts/;全部不依赖框架(仓库原名 anthropic-cookbook;据 GitHub 仓库页 53.1k★,2026-09)ANTHROPIC_API_KEY、allowed_tools 与 permission_mode 的取值、按工具组合划分的权限档位表@anthropic-ai/claude-code → @anthropic-ai/claude-agent-sdk、claude-code-sdk → claude-agent-sdk);v0.1.0 起系统提示词不再默认、ClaudeCodeOptions 改名、settingSources 的现行行为research-agent(多 agent 研究,编排者-工人的可跑版)、email-agent、simple-chatapp、hello-world 等;官方注明仅供本地开发(据 GitHub 仓库页 2.8k★,2026-09)pip install strands-harness / npm install @strands-agents/harness,自述「any model, any cloud」的端到端 harness 控制(据 GitHub 仓库页 8.5k★,2026-09)pip install -U langgraph;拿来对照文章那句「框架会遮住底层 prompt 与响应」最合适(据 GitHub 仓库页 42.5k★,2026-09)