多 Agent 系统设计
单 Agent 能解决很多问题,但系统一旦变复杂,很快就会出现一个新问题:
是不是应该拆成多个 Agent。
这件事常被理解成能力升级,但本质上是架构选择。
拆成多个 Agent 之后,系统往往会同时得到:
- 更清晰的职责边界
- 更复杂的协作开销
- 更高的观察与治理要求
这一页主要回答 6 件事:
- 多 Agent 系统什么时候值得做
- 常见的多 Agent 结构有哪些
Handoff / Agents as Tools / Workflow / Crew / A2A分别适合什么问题- 多 Agent 系统最容易失控的地方在哪里
- 第一版设计时最该先定什么
- 在这个模块里,多 Agent 应该接在哪些章节后面去学
1. 多 Agent 不是默认答案
可以先把核心判断放在前面:
单 Agent 能解决的问题,通常不要急着拆成多 Agent。
原因很直接。
一旦进入多 Agent,系统就会多出这些额外复杂度:
- 角色划分
- 协作协议
- 状态传递
- 失败恢复
- 观察与评估
- 成本与延迟放大
所以多 Agent 的价值,不在于“看起来更高级”,而在于:
单 Agent 已经不足以清晰承载任务边界。
2. 什么时候值得考虑多 Agent
2.1 任务天然可以拆成稳定角色
例如:
- 调研
- 规划
- 执行
- 审核
如果这些角色本身边界比较稳定,拆成多个 Agent 会更自然一些。
2.2 一个 Agent 需要频繁切换不同工作模式
例如同一个系统既要:
- 做问题分流
- 处理专业领域推理
- 执行高风险动作
- 做最后复核
把所有逻辑都塞进一个 Agent,提示和上下文很容易膨胀。
2.3 下游能力已经是独立服务
如果某些能力本来就是独立 Agent 服务,系统设计自然会更接近多 Agent。
2.4 协作过程本身就需要显式观察
例如:
- 谁负责决策
- 谁负责执行
- 谁负责审批
- 谁负责最终输出
如果这些边界需要显式审计和回溯,多 Agent 通常会更清楚一些。
3. 什么时候不值得拆
3.1 只是想让系统看起来更智能
这是常见误区之一。
很多场景里,真正需要的只是:
- 单 Agent + tools
- 或 workflow + 少量模型步骤
3.2 角色只是提示词差异,没有真正边界
如果所谓“多个 Agent”本质上只是:
- 换个名字
- 换段 prompt
- 用同样工具
- 读同样上下文
那通常还没到值得拆的程度。
3.3 当前连单 Agent 都还没跑稳
单 Agent 的停止条件、状态、工具选择都还没稳定时,直接上多 Agent 往往只会把问题放大。
4. 常见的多 Agent 结构
4.1 Triage + Specialist
这是最常见、也最容易上手的一种结构。
结构是:
- 一个总控或分流 Agent
- 多个专长 Agent
适合:
- 客服
- 问题分流
- 多领域问答
4.2 Manager + Workers
结构是:
- 一个 manager 负责拆任务和汇总
- 多个 worker 执行子任务
适合:
- research
- 分工明确的长任务
- 并行子问题处理
4.3 Reviewer / Approver Pattern
结构是:
- 执行 Agent 负责做事
- 审查 Agent 或人工节点负责复核
适合:
- 高风险动作
- 文档生成
- 合规审查
4.4 Workflow-wrapped Multi-Agent
结构是:
- 多个 Agent 作为 workflow 里的节点
- 执行路径由 graph 或 flow 控制
适合:
- 多步骤业务流程
- 明确的条件分支
- 需要 checkpoint / resume 的任务
5. 几种常见协作方式分别适合什么
5.1 Handoff
最适合:
- 一个 Agent 判断谁应该接手
- 接手后由下一个 Agent 主导后续对话
这类模式在 OpenAI Agents SDK 里很典型。官方 handoffs 文档明确把它定义成“一个 agent delegate part of a conversation to another agent”。
5.2 Agents as Tools
最适合:
- 主 Agent 仍然掌控流程
- 下游 Agent 只是一个被调用的专长能力
这种模式通常更稳,也更容易把复杂度控制在单条运行链里。
5.3 Workflow Orchestration
最适合:
- 多 Agent 只是执行节点
- 流程顺序、并发、分支需要显式控制
这类模式在 LangGraph、Microsoft Agent Framework Workflows、CrewAI Flows 里都不少见。
5.4 Crew / Team / Group Chat
最适合:
- 希望显式表达多角色协作
- 多个 Agent 会围绕同一目标互动
这类模式表达力强,但控制难度也更高。
5.5 A2A
最适合:
- 下游对象已经是独立 Agent 服务
- 需要跨系统协作
- 需要任务状态、产物和异步更新
6. 多 Agent 系统最容易出问题的地方
6.1 角色边界不清
如果多个 Agent 都能做差不多的事,系统很快就会出现:
- 路由混乱
- 上下文重复
- 相互覆盖
6.2 责任链不清
很多系统能跑,但很难说清:
- 谁做了最后决策
- 谁发起了写操作
- 谁负责最终输出质量
6.3 状态传递失控
多 Agent 一旦共享:
- 历史
- 中间结果
- memory
- 检索材料
很容易出现上下文膨胀与污染。
6.4 延迟和成本成倍放大
多 Agent 常见副作用是:
- 步数变多
- 模型调用变多
- 工具调用变多
- 观察和调试成本变高
6.5 评估变难
单 Agent 时只要看:
- 是否答对
- 是否调对工具
多 Agent 时还要看:
- 路由对不对
- 协作链有没有多余步骤
- 哪个 Agent 拉低了成功率
7. 第一版多 Agent 设计最该先定什么
7.1 先定角色,而不是先定框架
先回答:
- 这个角色为什么必须独立
- 独立后上下游边界是什么
- 不独立会出现什么问题
7.2 先定协作方式
至少要明确:
- handoff
- as tool
- workflow node
- remote agent via A2A
到底是哪一种。
7.3 先定状态和上下文交接规则
包括:
- 谁能看到全部历史
- 谁只看摘要
- 谁拿到工具结果
- 哪些内容不能跨角色传递
7.4 先定停止与升级条件
例如:
- 什么时候路由给 specialist
- 什么时候回到 manager
- 什么时候转人工
- 什么时候任务失败
8. 一个很实用的演进顺序
一个更稳的顺序是:
- 单 Agent 跑通主任务
- 找出最稳定的专长边界
- 先拆成
triage + specialist - 再决定是否需要 workflow 化
- 最后才考虑跨系统
A2A
这个顺序的好处是:
- 先把复杂度压住
- 再按真实边界拆分
- 避免一开始就进入全栈多 Agent
9. 和这个专题里的哪些内容最该一起看
最适合一起看的有:
- Workflow vs Agent
- Agent Planning Patterns
- A2A 入门与典型场景
- Tool Calling、MCP 与 A2A 的关系图
- OpenAI Agents SDK 指南
- CrewAI 入门与 Workflow 实战定位
- Microsoft Agent Framework 与 AutoGen 现状
10. 小结
多 Agent 最有价值的地方,不是让系统显得像团队协作,而是把真实存在的职责边界显式化。
一个更稳的判断标准是:
- 单 Agent 是否已经承载过多角色
- 协作是否真的需要分开观察、分开治理
- 下游能力是否已经是独立协作者,而不只是一个工具
如果这些问题都已经开始出现,多 Agent 才值得认真设计。