Multi-Agent Research System · 教学可视化
原文 ↗
Engineering at Anthropic · 2025-06-13

我们如何构建多智能体研究系统

一个由 Lead Agent 协调、多个 Subagent 并行搜索的系统,如何从原型走向生产? 本页把原文的工程教训浓缩为可交互的可视化学习路径。

✍️ Jeremy Hadfield, Barry Zhang, 等 ⏱ 预计学习 8 分钟 🎯 为 LLM 应用工程师而写
TL;DR · 30 秒读懂

多智能体系统通过分发 token 到并行上下文来扩展模型能力, 在广度优先的研究任务上比单 Agent 高 90.2%,但也烧掉 15× 的 tokens。 成败关键不在模型,而在 Prompt 工程、工具设计、可观测性 三件事。 生产化的难点是:错误会级联、Agent 有状态、调试是非确定性的

+90.2%
多智能体 vs 单 Opus 4 在内部 research eval 上的性能提升
15×
相比普通 chat 的 token 消耗(chat 本身已是 4× )
80%
BrowseComp 性能方差可以仅用 token 用量解释
−90%
引入并行工具调用后,复杂查询的研究时间下降
01 / WHY

为什么是"多智能体",而不是一个更大的 Agent?

研究类任务是 开放式、路径依赖、不可预测 的 —— 你无法硬编码一条固定的探索路径。 多智能体的本质优势是:用并行的独立上下文,把"搜索即压缩"这件事做到极致

适合:并行 · 大上下文 · 高价值
  • 广度优先的查询(同时追多个独立方向)
  • 信息量超过单个 context window 的任务
  • 需要使用大量复杂工具的场景
  • 任务价值足够高,能覆盖 15× 的 token 成本
  • Subagent 之间解耦:不同工具、不同 prompt、不同探索轨迹
不适合:共享上下文 · 强依赖
  • 所有 agent 必须共享同一份 context 的任务
  • agent 之间存在大量实时依赖与协调
  • 大部分编码任务(可并行部分少,且 LLM 实时协调能力弱)
  • 价值低、对延迟敏感、对成本敏感的任务
  • 本质上是线性流水线的问题
02 / ARCHITECTURE

Orchestrator-Worker 架构:一次查询的完整旅程

点击「播放」按钮,看一次用户查询如何流经 LeadResearcher → 并行 Subagents → CitationAgent。 注意 Memory 模块:当上下文超过 200K tokens 会被截断,所以计划要持久化。

步骤 0 / 8
👤
User
query
🧠
LeadResearcher
Claude Opus 4
💾
Memory
保存 plan
🔍
Subagent 1
Sonnet 4
🔍
Subagent 2
Sonnet 4
🔍
Subagent 3
Sonnet 4
📎
CitationAgent
引用校对
📄
Final Report
→ User
$ ready
点击「播放流程」查看 Agent 间的消息流转。
03 / PROMPT ENGINEERING

八条 Prompt 工程原则(点击展开看例子)

Prompt 是控制 Agent 行为的主要杠杆。这些原则是 Anthropic 从真实失败模式中提炼出来的 —— 不是规则,而是 启发式(heuristics)

04 / EVALUATION

三层评估策略:小样本 + LLM-as-Judge + 人工

多智能体的输出是非确定性的 —— 同一个 query,不同路径都可能是"对的"。 所以评估的重点是 "结果是否正确 + 过程是否合理",而不是复核每一步。

⚡️

立刻开始,小样本

20 条用例 > 0 条完美用例

  • 早期改动效应大(命中率 30% → 80% 很常见)
  • 20 个真实 query 就够看出 prompt 改动的影响
  • 别等"完整评测集"再开始,否则永远开始不了
⚖️

LLM-as-Judge

一个 prompt,五项 rubric,0.0–1.0 打分

  • 事实准确性:claim 是否匹配 source
  • 引用准确性:source 是否真的支持 claim
  • 完整性:是否覆盖所有要点
  • 来源质量:优先用一手资料
  • 工具效率:是否用了合适工具合适次数
👀

人工评测兜底

自动化永远抓不到的边界情况

  • 小众 query 上的幻觉
  • 系统级的偶发失败
  • 微妙的来源选择偏差
  • 真实案例:早期 Agent 偏爱 SEO 内容农场,冷落学术 PDF
05 / PRODUCTION

从原型到生产:四个你一定会撞到的坑

传统软件里 bug 只会坏一个功能;Agentic 系统里,小变动会级联成大行为差异

🔁

Agent 有状态,错误会复合

长时间运行,跨多次工具调用维护状态。一个小故障被后续步骤放大,重启代价巨大。

方案 → 支持"从断点恢复"的执行;让 Agent 感知工具失败并自适应;组合 AI 的灵活与确定性的重试/检查点。
🔬

调试是非确定性的

相同 prompt 两次运行轨迹不同。用户说"找不到明显信息",但你看不出哪一步错了。

方案 → 全链路追踪(tracing)+ 模式级观测(监控决策模式与交互结构,而非对话内容,保护隐私)。
🚀

部署会打断在跑的 Agent

Agent 是长生命周期状态机,部署时它可能正停在任意步骤。直接替换版本 = 在跑的任务报废。

方案 → 彩虹部署(rainbow deployment):新旧版本并存,流量逐步迁移,让在跑的 Agent 跑完在旧版。

同步执行成为瓶颈

目前 Lead 同步等待所有 Subagent 完成。一个慢的 Subagent 拖住全局;Lead 无法实时引导 Subagent。

方案 → 异步执行是下一步,但引入结果协调/状态一致/错误传播的新复杂度 —— 目前还在权衡。
06 / WHEN TO USE

在你自己的项目里,该不该上多智能体?

一页决策框:先问清楚三个问题,再决定架构。

✓ 这些情况,值得上

  • 任务是广度优先的 —— 同时追多条独立线索(例:列出 S&P 500 IT 公司所有董事会成员)
  • 单上下文装不下 —— 需要把搜索工作"压缩"后再返回
  • 任务价值 >> 15× token 成本 —— 研究、合规、尽调、医疗等
  • 子任务之间解耦 —— 不同工具、不同 prompt、不同轨迹互不干扰
  • 复杂工具集 —— 多个 MCP / 外部工具需要专门 Subagent 来驾驭

✗ 这些情况,别硬上

  • 强共享上下文 —— 编码任务里所有改动都要看到彼此
  • 实时依赖密集 —— Agent A 的输出是 B 的实时前置
  • 任务价值低 / 延迟敏感 —— 聊天机器人、简单问答
  • 本质是线性流水线 —— 没有真正可以并行的子问题
  • 团队还没建起可观测性 —— 没 tracing 就上多 Agent,等同于盲飞
07 / APPENDIX

三条来自附录的额外 tip

很容易被忽略但极有用的工程技巧。

Evaluation

End-state 评估

对于会修改持久状态的 Agent,别去逐轮校验每一步决策 —— 那是徒劳。检查它最终达到的状态是否正确。复杂流程就拆成若干离散 checkpoint。

Memory

长对话的 context 管理

上百轮对话时标准 context window 不够。让 Agent 总结阶段性工作写入外部 memory,逼近上限时用干净 context 启动新 Subagent 承接工作,实现"分布式"的对话连续性。

I/O

Subagent 直接写文件系统

不要让所有结果都经由 Lead 转交 —— 那是"传话游戏",信息会损耗。让 Subagent 把结构化产出写到外部存储,只把引用传回 Lead,对代码/报告/数据尤其有效。