多智能体不是银弹。把一个问题拆给多个 agent,在顺序推理类任务上可能让效果掉 39% 到 70%,因为分解本身会引入协调成本。所以动笔之前先想清楚:单 agent 的失败模式是什么、卡在哪,再决定要不要引入第二个 agent。这篇讲多智能体协作里真正决定成败的几个选择:编排模式、状态共享、子 agent 的隔离,以及最常踩的坑。

四种编排模式

市面上的多智能体框架五花八门,但编排模式基本就是四种的组合。

Orchestrator/Workers:一个中心 agent 拆任务、派给专家 agent、汇总结果。LangGraph 的 supervisor、OpenAI 的 agent-as-tool 都是这个形态。Handoff Chain:agent A 完成自己的阶段后,把控制权和上下文整体转交给 agent B,没有中心协调者,OpenAI 的 handoffs、LangGraph 的 conditional edges 是这个形态。Parallel Fan-Out:多个 agent 在互不依赖的子任务上并行跑,最后 gather 合并,比如 Claude Code 的并行 Task 调用。Peer Mesh:agent 直接互相发现、互相调用,没有中心,最灵活也最难调试,A2A 协议(HTTP + 签名的 Agent Card)是这个方向的代表。

经验法则是从最简单的开始:一个 orchestrator 带两个 worker 能覆盖大多数场景,只有在观察到真实瓶颈时才加复杂度,而不是预判性地堆。

共享状态,还是消息传递

这是多智能体架构里最重要的一个决定,而直觉往往是错的——人会照着人类协作的样子去设计"agent 发消息、协商、澄清"的聊天网络,但那是慢、贵、又脆弱的。

维度 消息传递 共享状态
token 成本 每次交换都复制上下文 每个 agent 只读自己需要的
延迟 agent 之间串行往返 各自在最新状态上独立工作
调试 从散落的对话日志重建 单一事实源,随时可查
容错 丢一条消息就断链 重读当前状态即可重试
扩展 O(n²) 消息路径 O(n) 状态读写者

agent 不互相说话,而是读状态、写状态——文件系统、session dict、图状态、数据库都行。设计围绕数据流,而不是对话流。决定暴露什么状态、何时持久化、怎么限定访问范围,这比调 inter-agent 提示词重要得多。

子 agent 的隔离

拆分的意义在于边界。一个子 agent 如果继承了父 agent 的全部历史、工具集和权限,那它就不是子 agent,只是"换了个名字、换了个空上下文窗口的父 agent",爆炸半径一模一样。隔离要从 spawn 那一刻定义死:

  • 独立上下文窗口,不继承父历史,只传子任务相关的东西。
  • 受限工具集,每个子 agent 显式 allowlist,默认拒绝——研究 agent 不该能写文件系统,部署 agent 不该能搜网页。
  • 定义好的返回格式,子 agent 返回结构化数据而非自由文本,输出 schema 让 orchestrator 的汇总变成确定性的。
  • 可选模型覆盖,按任务复杂度匹配模型:triage agent 用小而快的模型,reviewer 用推理模型。

上下文隔离和模型选择是容易的部分,工具注册表的隔离才是承重墙。

通信协议

两个协议各管一段。MCP 管 agent 与工具之间:JSON-RPC 2.0 over stdio 或 Streamable HTTP,做通用工具发现与调用。A2A 管 agent 与 agent 之间:agent 在 /.well-known/agent-card.json 发布签名的 Agent Card,跨框架、跨系统地握手。选型时记住一个边界:同进程内的协作用框架原生的共享状态就够,跨系统、跨公司的协作才需要 A2A 这种带身份和签名的协议。

常见误区

第一个误区是无限委派循环——两个 agent 把同一个任务来回传、永不终止。对策是 hop 限制和 supervisor 显式的终止条件。第二个误区是上下文漂移——管线第五个 agent 不记得第一个 agent 为什么做了那个早期决定。对策是结构化状态对象显式传递关键决策。第三个误区是"人人都客气"——reviewer agent 倾向于赞同 author agent,文献里 LLM-as-judge 的一致报告是批判型角色的分歧比预期弱。对策是显式要求对抗性批判,或者给 critic 换一个不同的模型。第四个误区是协调开销吞掉收益——agent 间的通信 token 可能超过各自的推理 token。对策是结构化消息而非自由聊天,agent 到 agent 用协议而非广播。最后一个误区是忘了超时——生产环境每个 agent 都要有显式超时,外加一个 supervisor 或 watchdog 监控进度,否则一个 agent 卡死,整个系统就跟着卡死。