Multi-Agent 系统
flowchart LR
A["Multi-Agent 系统"]
A --> B["分类:智能体 (Agents)"]
A --> C["关键词:Agent"]
A --> D["关键词:Multi-Agent"]
A --> E["关键词:协作"]
A --> F["关键词:编排"]
到了这一篇,Agent 系列会自然走到一个很容易让人兴奋、也很容易被过度设计的话题:Multi-Agent。
它的直觉很诱人。既然一个 Agent 已经能做不少事,那么把多个 Agent 组织起来,让它们分工协作,是不是就能像一个小团队那样处理更复杂的任务?比如一个负责调研、一个负责编码、一个负责评审、一个负责协调,听起来几乎天然比单 Agent 更强。
这个方向当然有价值,但真正值得讨论的,不是“多 Agent 听起来多厉害”,而是:
什么情况下,多 Agent 真能带来能力增益;什么情况下,它只是把一个本来能做好的单 Agent 系统,拆成了更贵、更慢、更难调试的多节点系统。
LangChain 当前的多 Agent 文档就把这个边界说得很直接:多 Agent 系统确实能协调专门化组件来处理复杂工作流,但并不是所有复杂任务都需要它;很多时候,一个合适提示和工具组织得当的单 Agent,就已经能达到相近效果。(docs.langchain.com)
所以,本文不会把 Multi-Agent 写成“更高级的终局形态”,而是把它当成一种有代价的架构手段来讲清楚:它解决什么问题、引入什么复杂度、有哪些常见模式、框架怎么支持、以及工程上到底该怎么判断“值不值得上”。
为什么单 Agent 会遇到边界
先看定义:单 Agent 的问题通常不是“能力不够多”,而是“一个运行时要同时扮演太多角色,最后谁都扮得不够稳定”。
上一篇讲 Reflection 时提到,Agent 系统里很多能力其实可以逻辑分角色来理解:
- 有人负责想整体方向;
- 有人负责执行;
- 有人负责检查质量;
- 有人负责补资料;
- 有人负责和用户确认边界。
在单 Agent 里,这些角色都可能由同一个模型、同一份 prompt、同一条上下文来承担。 这在简单任务里没问题,但一旦任务变长、角色冲突变强,就会开始出现几个现实问题。
1. 角色目标容易冲突
同一个 Agent 如果既要:
- 发散地想方案,
- 又要严格地做审查,
- 还要保守地做高风险执行,
那它的 prompt 很容易变得互相打架。
例如:
- “要大胆探索可能性”
- “要非常谨慎,不确定就不要说”
- “要尽可能完成任务”
- “要避免任何潜在风险”
这些要求不是不能共存,但放在同一运行时里,往往会拉扯行为边界。
2. 上下文会迅速膨胀
如果一个 Agent 既要知道全局计划、又要记住检索资料、又要保留代码修改历史、又要携带评审意见,那么它看到的上下文会越来越大。
这不只是 token 成本问题,更是注意力问题: 当所有角色都共享同一大段上下文时,每个角色真正需要的信息反而更容易被淹没。
3. 缺少真正的“第二视角”
单 Agent 当然也可以做 self-critique,但它始终是在同一个运行框架里自我审查。 很多时候,引入一个逻辑上独立的 Reviewer,最大的价值不是“更聪明”,而是它真的在看另一个角色的输出,而不是在延续同一条生成路径。
4. 扩展性差
单 Agent 系统如果不断往里塞新能力,最后常见的结果是:
- prompt 变得臃肿;
- 工具越来越多;
- 不同任务分支越来越难维护;
- 改一个角色逻辑,可能影响整个系统行为。
这时候,拆分角色就不只是“为了更像团队”,而是为了降低耦合。
Multi-Agent 是什么
先看定义:Multi-Agent 系统是由多个具备不同职责、上下文和能力边界的 Agent 组成的协作系统,它们通过消息传递、状态共享或中心编排来共同完成任务。
这个定义里有三个关键词最重要:
1. 多个 Agent
不是一个 Agent 假装自己切换了几种口吻,而是系统里存在多个可独立调用、独立配置、独立观察状态的运行角色。
2. 不同职责
这些 Agent 通常不会完全同构。 它们可能有不同的:
- system prompt
- 工具权限
- 目标函数
- 可见上下文
- 输出格式
- 终止条件
3. 协作完成任务
多 Agent 的价值不在于“角色多”,而在于这些角色之间能形成任务级闭环。 否则它们只是几段并列调用,谈不上系统协作。
AutoGen 当前文档把这一点说得很明确:Agent 是天然可组合的,简单 Agent 可以组合成更复杂、更适应场景的应用,每个 Agent 为整体系统提供特定功能或服务。(microsoft.github.io)
所以,Multi-Agent 不是“多个大模型一起聊天”,而是多个具备职责边界的运行单元共同推进任务。
一个更准确的理解:Multi-Agent 不是“更大脑”,而是“更像组织结构”
单 Agent 更像一个“全能个体”: 一个人自己查资料、自己写、自己检查、自己决定下一步。
Multi-Agent 更像一个“最小组织”:
- 有人负责分任务;
- 有人负责做研究;
- 有人负责产出;
- 有人负责审核;
- 有人负责最终汇总。
这也是为什么 Multi-Agent 的核心问题往往不再是单点推理能力,而是组织问题:
- 任务如何拆分;
- 消息怎么传;
- 谁有决策权;
- 冲突怎么解决;
- 状态怎么共享;
- 哪些步骤可并行;
- 什么时候收敛;
- 谁说“任务结束”。
从这个视角看,Multi-Agent 的难点和价值都更清楚了: 它真正引入的是编排复杂度,不是单纯堆模型数量。
通信模式:多个 Agent 怎么彼此协作
多 Agent 系统最先要回答的问题不是“角色叫什么”,而是:
这些角色之间到底怎么说话?
常见通信模式可以概括成三类。
层级式(Hierarchical)
先看定义:一个 Manager 或 Planner 负责拆解任务和分配工作,其他 Worker Agent 负责各自执行。
这是最符合人类组织直觉的一种方式,也是很多多 Agent 框架默认最容易支持的模式。
User Goal
-> Manager
-> Researcher
-> Coder
-> Reviewer
-> Manager 汇总
-> Final Output
适合什么场景
- 任务可以被明确拆分;
- 存在相对中心化的协调者;
- 需要统一汇总;
- 需要较强可控性;
- 希望有一个总入口和总出口。
优点
- 结构清楚;
- 容易插入权限与审批;
- 容易做状态汇总;
- 更容易控制谁有最终决定权。
缺点
- Manager 容易成为瓶颈;
- 所有上下文都汇到中心时,Manager 很容易膨胀;
- 如果 Manager 判断失误,错误会扩散到全链路。
CrewAI 的定位就明显偏向这种“团队 + 流程”思路。它当前文档把 Crew 和 Flows 分开描述:前者强调 agent 团队协作,后者强调可控工作流、guardrails、memory 和 observability。官方还明确提供 hierarchical process 作为一种内建编排方式。(docs.crewai.com) (docs.crewai.com)
对等式(Peer-to-Peer)
先看定义:没有单一中心 Agent,多个 Agent 之间可以直接交流、提问、反驳或协商。
这种模式更像一个圆桌讨论或协作网络,而不是树状组织。
例如:
- 一个 Researcher 直接把资料发给 Writer;
- Writer 直接向 Reviewer 请求反馈;
- Reviewer 对某结论提出质疑后,Researcher 再补证据。
适合什么场景
- 需要多视角讨论;
- 需要辩论或共识形成;
- 不想把所有控制集中到一个 Manager;
- 子任务之间关系更像横向协作,而不是垂直派发。
优点
- 灵活;
- 适合观点碰撞和多视角检查;
- 不容易把所有责任压在单一协调者上。
缺点
- 更容易消息泛滥;
- 更难保证收敛;
- 冲突解决机制必须更明确;
- 更容易出现“大家都在说,但没人真正拍板”。
AutoGen 的很多典型演示和设计哲学就更接近这种多 Agent 会话/组合风格。它当前文档与仓库都强调 multi-agent workflows、layered extensible design,以及可复用、可组合的 agents。(github.com) (microsoft.github.io)
广播式(Broadcast / Fan-out)
先看定义:一个 Agent 或调度器把同一任务发给多个 Agent 并行处理,之后再集中汇总结果。
这本质上是一种“并行分发”模式。
例如:
- 同时让三个 Researcher 去查不同来源;
- 同时让多个 Reviewer 从不同维度审稿;
- 同时让多个候选 Agent 给出方案,再做汇总或投票。
适合什么场景
- 子任务天然可并行;
- 希望增加信息覆盖面;
- 希望降低单一视角偏见;
- 能接受后面再做一次汇总。
优点
- 并行度高;
- 在检索、候选生成、观点覆盖上效果好;
- 更容易把耗时拉平到单轮等待。
缺点
- 汇总层压力大;
- 容易产出很多重复信息;
- 成本容易线性增长;
- 如果缺少去重和裁剪,后续上下文很快膨胀。
角色分工:不要按“名字酷不酷”设计,要按“职责边界”设计
很多多 Agent 文章喜欢给角色取非常拟人化的名字:CEO、PM、Engineer、Analyst、QA、Writer、Critic。 这些名字本身没问题,但真正重要的不是角色名,而是:
这个角色到底负责什么,不负责什么,看到什么,有什么工具权限。
一个更工程化的角色拆分,可以从职责出发理解。
| 角色 | 主要职责 | 常见能力 |
|---|---|---|
| Planner / Manager | 拆解目标、分配任务、协调进度、汇总结果 | 轻工具、强状态视图 |
| Researcher | 检索资料、收集证据、做事实对比 | 搜索、网页、文档读取 |
| Coder / Builder | 实现、修改、运行、修复 | 文件、终端、代码执行 |
| Reviewer / Critic | 审查质量、挑错、做验收 | 测试、规则、评估器 |
| Executor / Operator | 触发真实操作 | API、业务动作、系统调用 |
| Writer / Synthesizer | 把多个子结果整合成最终输出 | 汇总、结构化写作 |
角色设计有三个常见原则
1. 职责要尽量单一
如果一个 Researcher 同时还负责定策略、做最终结论、审核质量,那这个角色其实已经重新变成“一个大 Agent”。
2. 工具权限要和职责匹配
Reviewer 通常不需要部署权限; Researcher 不一定需要改数据库; Executor 不一定需要看到所有原始中间推理。
3. 输入输出接口要清楚
一个角色交付给另一个角色的,不应该只是“很多自然语言”。 它更理想的状态是:
- 有结构;
- 有字段;
- 有完成标志;
- 有失败原因;
- 有置信度或结论依据。
先看定义:角色不是为了模拟公司组织图,而是为了给系统划清责任边界。
编排策略:多 Agent 不是只看“谁和谁说话”,还要看“谁先谁后”
通信模式解决的是网络结构,编排策略解决的是运行顺序。 这是两个相关但不同的问题。
常见编排策略可以分成四种。
1. 顺序流水线
A -> B -> C
最简单也最稳定。 前一个 Agent 的输出是后一个 Agent 的输入。
例如:
- Researcher 收集资料
- Writer 整理成报告
- Reviewer 审核报告
优点
- 容易理解;
- 易于调试;
- 每个阶段边界清楚;
- 很适合插入检查点。
缺点
- 延迟容易拉长;
- 一步错会顺序传播;
- 上游输出质量会强烈限制下游表现。
2. 并行 Fan-out / Fan-in
Manager -> A, B, C 并行
-> 汇总器
适合可拆成多个独立子问题的任务。
例如:
- 三个 Researcher 分别查三家厂商;
- 三个 Reviewer 分别从准确性、完整性、格式三个维度审查;
- 多个候选解并行生成,再统一筛选。
优点
- 吞吐高;
- 提高信息覆盖;
- 易于利用可并行任务。
缺点
- 汇总难;
- 重复信息多;
- 如果没有良好去重和摘要,Fan-in 会变成新瓶颈。
3. 辩论 / 共识式
多个 Agent 针对同一问题提出不同判断,再通过多轮交互形成共识,或由裁判/汇总器决定最终结论。
适合:
- 高不确定性问题;
- 需要多视角审视;
- 希望降低单一思路偏差;
- 需要对重要结论做更强挑战。
但也要注意,这种模式在工程上很容易“看起来高级、实际很贵”,因为它天然会放大通信轮数。
4. 迭代循环
例如:
Coder -> Reviewer -> Coder -> Reviewer -> ...
这其实是把上一篇讲的 Reflection 机制拆成多角色版本。 与其让一个 Agent 自评自改,不如让一个 Agent 专门生成,另一个专门挑错。
适合:
- 代码与测试修复;
- 文档起草与审校;
- 多轮质量收敛。
先看定义:编排策略决定的,不是角色叫什么,而是任务如何流过这些角色。
一个现实判断:多 Agent 的最大价值,往往不是“更聪明”,而是“更容易把复杂流程组织清楚”
这是一个非常关键的观点。
很多人对 Multi-Agent 最直观的期待是: 多个 Agent 一起工作,整体会比单 Agent 更强。
这有时对,但经常真正的收益不是“智力叠加”,而是:
- 任务边界更清楚;
- 每个阶段的职责更稳定;
- 上下文隔离更好;
- 错误更容易定位;
- 某些环节可以独立替换;
- 审查、验证、执行的边界更明确。
这意味着,Multi-Agent 很多时候带来的不是魔法般的新能力,而是更好的系统组织形式。
真实案例:软件开发型多 Agent
这是最常见也最容易理解的一类。
一个典型的软件开发团队式多 Agent,可能包含:
| Agent | 角色 | 职责 |
|---|---|---|
| PM / Manager | Planner | 理解需求、拆任务、定义验收口径 |
| Dev | Builder | 改代码、跑命令、生成实现 |
| QA / Reviewer | Critic | 写测试、跑验证、反馈问题 |
一个合理的流程可能是:
- PM 将需求拆成几个可执行子任务;
- Dev 逐项实现;
- QA 基于测试或规则检查结果;
- 如果失败,回到 Dev;
- 如果问题超出原任务边界,再回到 PM 调整拆分。
这类模式的好处不是“更像公司”,而是:
- 任务结构显式;
- 验证职责独立;
- 更容易插入阶段性通过/不通过判断;
- 失败路由更清楚。
MetaGPT 的核心理念就很能代表这一思路:它把软件公司式 SOP 和多角色协作做成框架化表达,其文档和仓库都强调“Code = SOP(Team)”以及以产品经理、架构师、工程师等角色构成协作实体。(github.com) (docs.deepwisdom.ai)
但也要克制看待: 这种“模拟公司”风格很适合展示分工思想,不代表所有生产系统都应该真的照搬完整角色树。
真实案例:研究与报告生成型多 Agent
另一个很常见的场景是:
- 一个 Coordinator 拆解研究问题;
- 多个 Searcher 分头查资料;
- 一个 Writer 汇总;
- 一个 Critic 检查事实和结构;
- 最后由 Coordinator 或用户确认交付。
这个模式特别适合:
- 比较类任务;
- 多来源资料整合;
- 需要证据支持的报告;
- 需要把调研和写作分离的场景。
它的核心收益通常有两个:
- 可以并行扩大资料覆盖面
- 把“查资料”和“写结论”分成两个角色,减少混杂
但它也很容易踩坑: 如果 Searcher 回来的是大量冗余文本,而不是结构化笔记,Writer 和 Critic 的成本会迅速爆炸。
多 Agent 最容易被低估的问题:消息传递与上下文管理
多 Agent 系统的真正瓶颈,很多时候不在模型能力,而在消息怎么传。
因为只要多个 Agent 开始协作,就会出现一个很现实的问题:
每个 Agent 应该看到多少上下文?
如果所有 Agent 都看全部历史,会发生:
- token 成本迅速上升;
- 注意力被无关信息稀释;
- 延迟增加;
- 调试复杂度上升。
如果每个 Agent 只看一小部分,又会发生:
- 缺少必要背景;
- 重复问已经回答过的问题;
- 做出与全局冲突的局部决策。
所以,多 Agent 系统里常见的几个上下文策略非常重要。
1. 摘要传递
不传原文,只传摘要或结构化结论。
例如:
- Researcher 不把整篇网页传给 Writer,只传提炼后的要点;
- Reviewer 不把全部分析过程传回 Manager,只传“通过/不通过 + 原因”。
2. 分层可见性
不同角色看到不同上下文子集。
例如:
- Dev 看到代码和当前任务,不看全部产品讨论;
- Reviewer 看到产物和验收标准,不看上游所有搜索日志;
- Manager 看到每个子任务的状态摘要,不看每轮工具细节。
3. 状态对象替代长文本
把很多中间信息写成结构化状态,而不是自然语言历史。
例如:
{
"task_status": "review_failed",
"failed_checks": ["missing_edge_case", "format_invalid"],
"next_owner": "coder"
}
这通常比传一长段自然语言“评论”更适合系统协作。
先看定义:多 Agent 的扩展性,很多时候取决于你是否把“消息”设计成了资源,而不是默认所有节点共享完整对话。
冲突处理:当不同 Agent 意见不一致时怎么办
只要有多个角色,就早晚会遇到意见分歧:
- Researcher A 和 B 得出不同结论;
- Reviewer 否决了 Writer 的表述;
- Manager 要求继续,Executor 认为风险过高;
- 多个候选方案之间没有明显唯一答案。
这时系统必须有明确决策机制,否则多 Agent 很容易进入“谁都能说,但没人拍板”的状态。
常见方式有:
1. 中心裁决
由 Manager / Coordinator / Judge 最终决定。
优点是简单直接。 缺点是中心节点压力大,而且容易成为偏见单点。
2. 规则裁决
谁符合外部验证,谁胜出。
例如:
- 谁的代码能通过测试;
- 谁的引用更完整;
- 谁满足 schema 校验;
- 谁符合验收规则。
这是最稳的方式,只要任务允许。
3. 用户裁决
把冲突方案展示给用户确认。 适合高风险、高不确定性场景。
4. 投票 / 共识
适合开放性问题,但不宜滥用。 因为多个弱判断投票,不一定比一个强判断更可靠。
框架概览:别只看“框架名字”,更要看它默认鼓励哪种系统形态
CrewAI
CrewAI 当前文档非常强调“crews + flows”的组合: 一方面是多 Agent 团队协作,另一方面是可控流程、guardrails、memory、observability。官方还提供分层流程等机制,明显偏向“有角色、有流程、有中心编排”的团队式构建。(docs.crewai.com) (docs.crewai.com)
更适合:
- 你想快速搭“有分工的团队”;
- 你愿意按角色和流程来组织系统;
- 你希望框架直接提供较强的组织语义。
AutoGen
AutoGen 现在更像一个多层次 Agent 开发生态:既有 framework,也有 developer tools 和 applications。官方文档与仓库都强调 multi-agent workflows、分层可扩展设计,以及可组合 Agent。(github.com) (microsoft.github.io)
更适合:
- 你想构建更灵活的多 Agent 会话和协作;
- 你希望 Agent 之间是组合关系,而不只是固定团队模板;
- 你愿意自己控制较多编排细节。
LangGraph
LangGraph 更像一个通用的图式编排底座,而不只是“多 Agent 框架”。官方文档强调它适合构建带有 persistence、streaming、debugging、deployment 的 stateful workflows 和 agents;在多 Agent 方面,它更偏向“你自己定义图结构、条件分支、并行和循环”。(docs.langchain.com) (docs.langchain.com)
更适合:
- 你需要精细控制流程;
- 你在意状态管理和持久化;
- 你不想被框架默认的团队隐喻限制;
- 你需要把多 Agent 放进更大的工作流系统里。
MetaGPT
MetaGPT 的特色非常鲜明:以软件公司式角色和 SOP 为核心隐喻,把多 Agent 协作设计成一种接近组织流程的框架。(docs.deepwisdom.ai) (github.com)
更适合:
- 你想快速理解“角色化多 Agent 协作”的直觉;
- 你做的软件研发类场景,正好能借用其角色隐喻;
- 你接受较强的框架 worldview。
先看定义:选择框架,不只是选 API 体验,更是在选它默认鼓励的系统组织方式。
挑战:Multi-Agent 本质上是在用复杂度换能力
这一点必须讲透。
多 Agent 当然可能带来收益,但它几乎一定也带来以下代价。
| 挑战 | 典型表现 | 常见缓解方式 |
|---|---|---|
| 协调开销 | Manager 汇总困难、消息过多、状态难追踪 | 摘要传递、分层状态、明确接口 |
| 错误级联 | 上游错了,下游全跟着错 | 插入 Reviewer、检查点、外部验证 |
| 成本倍增 | 每多一个 Agent,多一层调用和上下文 | 小模型承担轻角色、减少无意义对话 |
| 延迟增加 | 多轮转发、串行编排 | 能并行的并行、减少冗余轮次 |
| 收敛困难 | Agent 之间相互讨论不结束 | 明确终止条件、裁决机制、最大轮数 |
| 维护复杂 | 角色增多后难以调试和迭代 | 从双 Agent 起步、逐步拆分 |
一个常被忽略的现实:多 Agent 会制造新的失败模式
单 Agent 常见问题是:
- 幻觉;
- 路径偏航;
- 工具误用。
多 Agent 除了这些,还会新增:
- 消息被错误总结;
- 角色间接口误解;
- Manager 错配任务;
- Reviewer 过严或过松;
- 某个角色持续产出低价值内容但没人及时阻断;
- 不同角色对任务定义发生漂移。
这意味着,多 Agent 并不是把单 Agent 的问题简单分散,而是会创造新的组织级问题。
何时该上 Multi-Agent,何时单 Agent 就够了
这是本文最重要的问题。
更值得考虑 Multi-Agent 的信号
| 信号 | 说明 |
|---|---|
| 任务需要几类明显不同的能力 | 例如调研、实现、评审、执行彼此差异很大 |
| 单 Agent prompt 已经严重臃肿 | 一个角色承担太多责任,维护困难 |
| 需要独立审查或第二视角 | 如 Reviewer 对 Builder 的约束很重要 |
| 子任务天然可并行 | 多路检索、多候选生成、多维审查 |
| 需要更清晰的责任边界 | 高风险系统尤其如此 |
| 希望部分角色可独立替换 | 例如只替换 Reviewer,而不动 Researcher |
更适合继续用单 Agent 的信号
| 信号 | 说明 |
|---|---|
| 任务仍然很短 | 引入多 Agent 的组织成本不值 |
| 一个 Agent + 合理工具已能稳定完成 | 没必要为了“更高级”而拆分 |
| 成本和延迟非常敏感 | 多 Agent 天生更贵、更慢 |
| 任务虽复杂,但角色分界并不清晰 | 强拆只会增加系统摩擦 |
| 当前最大问题在工具和状态,而不是角色冲突 | 应先修单 Agent 设计 |
LangChain 当前官方文档对这点的态度非常明确:不是每个复杂任务都该上多 Agent,很多时候一个设计好的单 Agent 已经足够。(docs.langchain.com)
先看定义:Multi-Agent 不是“更高级默认选项”,而是“单 Agent 明显出现组织边界时的升级手段”。
一个更稳妥的演进路径:别一上来就组建“AI 公司”
这是实践里非常重要的建议。
很多团队一开始做 Agent,就想直接搭一个完整团队:
- CEO
- PM
- Architect
- Engineer
- QA
- Writer
- Reviewer
- Researcher
看起来很完整,结果往往是:
- 不知道每个角色到底在贡献什么;
- 成本暴涨;
- 调试极难;
- 任务并没有变得更好完成。
更稳妥的演进方式通常是:
第一步:单 Agent + 多工具
先证明任务本身能做通。 别把单 Agent 都没做稳的问题,转嫁给多 Agent。
第二步:单 Agent + 明确阶段
即使还是单 Agent,也先把任务分成阶段。 这能帮助你看清真正的角色边界。
第三步:双 Agent
最常见、也最值得优先尝试的是:
- Builder + Reviewer
- Planner + Executor
- Researcher + Writer
因为双 Agent 已经足够验证“拆角色到底有没有收益”。
第四步:多 Agent 团队
只有当双 Agent 真的证明:
- 某种分工明显带来收益;
- 某个角色值得独立扩展;
- 并行或审核有明确价值;
再继续往更多角色扩。
先看定义:先证明分工有收益,再扩大组织,而不是先搭组织再赌收益。
实践建议:让 Multi-Agent 真正可用的几个关键点
1. 角色边界必须比单 Agent 更清晰,而不是更模糊
如果你拆成多个 Agent 后,仍然说不清:
- 谁负责什么;
- 谁不负责什么;
- 谁能看到什么;
- 谁能调用什么工具;
那这个拆分通常还不成熟。
2. 把消息当作系统接口设计
不要默认传自然语言全文。 尽量让角色之间传:
- 摘要;
- 结构化状态;
- 明确结论;
- 失败原因;
- 待办清单;
- 通过/不通过信号。
3. 高风险动作最好别放在自由讨论型 Agent 里
讨论型 Agent 和执行型 Agent 最好逻辑分开。 能真的修改外部状态的角色,应更保守、权限更小、验证更多。
4. 要有明确的收敛条件
多 Agent 最大的风险之一是“越讨论越多,迟迟不结束”。 所以要定义:
- 最大轮数;
- 裁决者;
- 通过标准;
- 必须交给用户的节点;
- 预算上限。
5. 把可验证的东西交给外部验证
如果 Reviewer 只是另一个 LLM,而任务本来可以跑测试或做规则校验,那系统会比应有的更脆弱。 能客观验证的,就别只靠对话协商。
核心概念速查
| 概念 | 一句话 |
|---|---|
| Multi-Agent | 多个具备不同职责和上下文边界的 Agent 协作完成任务 |
| 层级通信 | Manager 分配任务,Worker 执行并回传结果 |
| 对等通信 | 多个 Agent 直接交互,无单一中心 |
| 广播 / Fan-out | 同一任务并发分发给多个 Agent,再统一汇总 |
| 编排策略 | 决定谁先谁后、何时并行、何时收敛的执行逻辑 |
| 角色分工 | 按职责边界而不是按“模型数量”拆角色 |
| 上下文管理 | 通过摘要、分层可见性、状态对象控制通信成本 |
小结
Multi-Agent 的价值,不在于“一个 Agent 不够聪明,所以要多来几个”,而在于当任务开始呈现组织结构时,单 Agent 会逐渐暴露角色冲突、上下文膨胀、责任边界不清和第二视角缺失的问题。此时,把系统拆成多个职责明确的协作单元,的确可能让复杂任务更容易组织、更容易检查、更容易扩展。
但这种收益从来不是免费的。多 Agent 带来的同时也是新的协调成本、消息复杂度、延迟、收敛难题和错误传播路径。它不是默认更高级的架构,而是一种在单 Agent 已经出现明显组织瓶颈时,才值得引入的复杂度。
所以,对多数团队来说,更现实的路径通常不是“一上来组建 AI 公司”,而是从单 Agent 做起,先证明任务可行,再逐步拆出真正有独立价值的角色。 当你发现某些职责已经值得独立出来,Multi-Agent 才不再只是一个好听的概念,而会变成一个真正有工程意义的系统选择。