9.4 多 Agent 协作:角色分工与消息传递
1.一个 Agent 不够用
9.3 节讲的单个 Agent 能干不少活,但遇到复杂任务——比如"做一个完整的小项目"——单 Agent 容易顾此失彼:让它写代码它可能忘了测试,让它全栈它可能前端后端都做不精。于是有了多 Agent 协作(Multi-Agent Collaboration):把任务拆给多个有不同角色/能力的 Agent,让它们互相通信、分工合作。
这一章我们讲清多 Agent 的几种常见协作模式,以及代表性框架的思路。
2.几种常见协作模式
模式一:流水线(Pipeline)。 多个 Agent 串成一条流水线,前一个的输出是后一个的输入。比如"需求分析 Agent → 架构设计 Agent → 编码 Agent → 测试 Agent → 文档 Agent"。每个 Agent 只管自己那一环,专业分工。优点是清晰、可控;缺点是串行、慢,且一个环节卡住全卡。
模式二:对话/辩论(Conversation/Debate)。 多个 Agent 围绕同一个问题各抒己见、互相质询。比如"正方 Agent"和"反方 Agent"辩论一个方案,第三个"裁判 Agent"综合判断。优点是能产出更全面、经过多角度审视的结论;代表框架如 CAMEL。
模式三:层级(Hierarchical)。 一个"主管 Agent"负责任务分解和分配,下面一群"工人 Agent"各司其职,结果汇报给主管汇总。这模拟了人类组织的管理结构。代表思路如 MetaGPT(模拟软件公司:产品经理/架构师/工程师/测试)。
模式四:自由网络(Network)。 Agent 之间没有固定结构,每个 Agent 可以自由选择和谁通信。最灵活但最难控,适合探索性任务。
3.关键技术问题
多 Agent 系统有几个绕不开的工程问题:
- 通信协议:Agent 之间怎么传递消息?常见做法是定义一套结构化消息格式(谁说的、给谁的、内容是什么、要不要回复)。
- 终止条件:什么时候算完成?要设明确的终止信号(达成共识、超时、轮次上限),否则 Agent 可能无限聊下去。
- 一致性:多个 Agent 可能产出矛盾的结果,要有仲裁或合并机制。
- 成本控制:Agent 一多、对话轮次一长,token 消耗爆炸,要做预算管理。
4.代表性框架
- AutoGen(微软):通用多 Agent 对话框架,支持自定义 Agent 角色、对话模式、人工介入。最灵活,用得最多。
- MetaGPT:模拟软件公司,把产品经理/架构师/工程师/测试等角色做成 Agent,输入一句话需求能产出整个软件项目(代码+文档+测试)。
- CrewAI:基于"团队"概念,定义角色、任务、流程,偏轻量好上手。
这些框架本质上都是帮你把"角色定义、消息传递、流程编排、终止控制"这些样板代码封装好,让你专注在业务逻辑上。
5.练习
Q1. 多 Agent 的流水线模式和对话模式各适合什么任务?
流水线适合步骤清晰、可分解的流程化任务(如软件开发的需求→设计→编码→测试);对话模式适合需要多角度审视、产出更全面结论的任务(如方案评审、辩论)。
Q2. 多 Agent 系统为什么要设明确的终止条件?不设会怎样?
Agent 可能无限聊下去(token 爆炸、永不收敛)。要设终止信号:达成共识、超时、轮次上限。
Q3.(面试题) 如果要搭一个"自动软件开发"的多 Agent 系统,你会怎么设计角色和流程?
层级 + 流水线混合:主管 Agent(项目协调)分解任务;下面产品经理 Agent 出需求、架构师 Agent 出设计、工程师 Agent 写代码、测试 Agent 写测试和验证;流水线串起来(需求→设计→编码→测试),测试发现问题回流给工程师改。用 AutoGen/MetaGPT 做框架,设轮次预算和终止条件。
6.小结
多 Agent 协作让复杂任务能被分工完成,核心是角色定义 + 消息传递 + 流程编排 + 终止控制。AutoGen/MetaGPT/CrewAI 是主流框架。下一篇我们转向评测——怎么知道一个模型(或 Agent)到底好不好。
下一章见。