7.3 角色分工与协作框架:AutoGen、MetaGPT、CrewAI、ChatDev 拓扑解决了「谁和谁说话」,但具体「谁负责什么、按什么流程协作」还需要角色分工与框架。这一节讲清多 Agent 的角色设计——经典的经理/程序员/审核员模式、CAMEL 式角色扮演,以及四个主流框架(AutoGen、MetaGPT、CrewAI、ChatDev)的架构哲学与差异。 7.3.1 角色分工的本质:让每个 Agent 知道自己是谁 多 Agent 协作的第一步是角色定义——给每个 Agent 一份清晰的 Profile(第 2.
拓扑解决了「谁和谁说话」,但具体「谁负责什么、按什么流程协作」还需要角色分工与框架。这一节讲清多 Agent 的角色设计——经典的经理/程序员/审核员模式、CAMEL 式角色扮演,以及四个主流框架(AutoGen、MetaGPT、CrewAI、ChatDev)的架构哲学与差异。
多 Agent 协作的第一步是角色定义——给每个 Agent 一份清晰的 Profile(第 2.1 节),让它知道:
| 问题 | 内容 |
|---|---|
| 我是谁 | 角色(经理/程序员/审核员) |
| 我负责什么 | 职责范围 |
| 我用什么工具 | 专属工具集 |
| 我和谁协作 | 上游/下游 |
| 我何时交班 | 完成条件 |
角色定义不清是多 Agent 系统最常见的失败原因——Agent 不知道自己该干啥,要么抢活,要么推诿。
软件工程是多 Agent 协作最典型的领域。经典的分工:
| 角色 | 职责 | 工具 |
|---|---|---|
| 产品经理 | 理解需求、写 PRD | 用户反馈、文档 |
| 架构师 | 系统设计、技术选型 | 设计工具、技术文档 |
| 程序员 | 写代码、解 bug | IDE、代码库 |
| 测试员 | 写测试、找 bug | 测试框架 |
| 审核员 | 代码审查、质量把关 | 审查工具 |
| 文档工程师 | 写文档、教程 | 文档系统 |
这种分工的本质:让每个 Agent 专精一职,通过流程串联。MetaGPT、ChatDev 等框架都采用了类似的软件公司式组织。
CAMEL(Communicative Agents, Li et al. 2023)提出了另一种思路:让两个 Agent 通过角色扮演协作完成任务——一个是「用户代理」(提需求),一个是「AI 助手」(响应),通过对话推进。
CAMEL 的精髓是「角色扮演推动任务」:用户代理不断提具体指令,AI 助手响应并产出,两者对话直到完成。任务不是一次性下发,而是在对话中逐步细化。
[用户代理 Profile] 你是一个"任务发起者"。你的角色是: - 给 AI 助手下达具体的、可执行的指令 - 不自己解决问题,只负责指挥 - 每次只给一个明确指令 [AI 助手 Profile] 你是一个"任务执行者"。你的角色是: - 严格按用户代理的指令做事 - 完成后报告结果 - 不主动越界
💡 CAMEL 的深刻贡献:它发现了「角色扮演本身就是协作机制」——通过让两个 Agent 扮演互补角色,系统能自主推进任务,无需外部协调者。这种思路后来影响了大量框架(AutoGen 的 User-Agent/Assistant-Agent、ChatDev 的角色对话等)。
AutoGen(Wu et al. 2023, 微软)是最有影响力的多 Agent 框架之一。它的核心思想:把多 Agent 协作抽象为「可对话的 Agent」集合,通过灵活组合构建复杂系统。
AutoGen 定义了几种基本 Agent 类型:
| Agent 类型 | 角色 |
|---|---|
| UserProxyAgent | 代表人类,可执行代码、调工具 |
| AssistantAgent | LLM 驱动,提供建议与代码 |
| GroupChatManager | 管理多 Agent 群聊 |
| 维度 | AutoGen |
|---|---|
| 核心抽象 | 可对话的 Agent |
| 通信方式 | 对话(消息传递) |
| 灵活性 | 极高(自由组合) |
| 编排 | 通过对话历史自然涌现 |
| 适用 | 通用、研究、原型 |
💡 AutoGen 的优势是「极灵活」:它不规定协作流程,只提供「Agent 对话」这一基础原语,让开发者自由组合。这种「低抽象、高灵活」的设计,让 AutoGen 成了多 Agent 研究的首选框架。
MetaGPT(Hong et al. 2023)走的是另一条路:把人类软件公司的 SOP(标准作业流程)显式编码进多 Agent 系统。
MetaGPT 认为:人类组织之所以高效,是因为有 SOP——每个角色知道何时做什么、交付什么。把这套 SOP 移植到 Agent,能让多 Agent 系统从「自由对话」走向「工程化协作」。
MetaGPT 的精髓在于每个角色都有明确的输入/输出格式:
| 角色 | 输入 | 输出 |
|---|---|---|
| 产品经理 | 用户需求 | PRD(产品需求文档) |
| 架构师 | PRD | 设计文档 |
| 项目经理 | 设计文档 | 任务列表 |
| 工程师 | 任务列表 | 代码 |
| QA | 代码 | 测试报告 |
这种「结构化交付物」让协作不再是自由对话,而是按 SOP 产出标准件,大幅减少幻觉与扯皮。
| 维度 | AutoGen | MetaGPT |
|---|---|---|
| 抽象 | 可对话 Agent | SOP + 角色 |
| 流程 | 自由涌现 | 显式定义 |
| 灵活性 | 极高 | 中 |
| 可控性 | 中 | 高 |
| 适用 | 通用研究 | 软件工程等有 SOP 的领域 |
⚠️ AutoGen 与 MetaGPT 代表两种哲学:AutoGen 是「涌现派」——给 Agent 对话能力,让协作自然产生;MetaGPT 是「工程派」——预先定义 SOP,让协作按规范进行。前者灵活但难控,后者可控但僵硬。生产中常根据任务特性选边或混合。
CrewAI 是一个相对轻量的多 Agent 框架,主打「Crew(团队)+ Task(任务)+ Agent(角色)」三要素。
| 概念 | 含义 |
|---|---|
| Crew | 一个团队(多个 Agent + 多个 Task) |
| Agent | 角色(Profile + 工具) |
| Task | 任务(描述 + 负责人 + 期望输出) |
| Process | 协作流程(顺序/层级等) |
CrewAI 的特点:配置驱动、上手快、适合中小型协作。它的抽象比 AutoGen 高(更结构化),比 MetaGPT 低(不强制 SOP),处于中间地带。
ChatDev(Qian et al. 2023)专门为软件开发设计,把软件开发过程建模为多个「聊天」阶段——每个阶段由两个 Agent 对话完成。
每个阶段是两个角色 Agent 的对话,对话产出该阶段的交付物(设计稿/代码/测试报告/文档)。
| 维度 | ChatDev |
|---|---|
| 专注 | 软件开发 |
| 协作 | 两两对话阶段化 |
| 流程 | 显式定义 |
| 类比 | 瀑布式软件公司 |
<svg viewBox="0 0 720 380" xmlns="http://www.w3.org/2000/svg"> <!-- 坐标轴 --> <line x1="80" y1="320" x2="680" y2="320" stroke="#475569" stroke-width="2"/> <line x1="80" y1="40" x2="80" y2="320" stroke="#475569" stroke-width="2"/> <text x="680" y="345" font-size="12" fill="#475569" text-anchor="end">灵活性 →</text> <text x="60" y="40" font-size="12" fill="#475569" text-anchor="end" transform="rotate(-90 60 40)">↑ 可控性</text> <!-- 框架点 --> <circle cx="540" cy="100" r="16" fill="#dbeafe" stroke="#2563eb"/> <text x="540" y="105" font-size="12" fill="#1e3a8a" text-anchor="middle" font-weight="bold">AutoGen</text> <text x="540" y="135" font-size="10" fill="#475569" text-anchor="middle">灵活,难控</text> <circle cx="160" cy="100" r="16" fill="#fef9c3" stroke="#ca8a04"/> <text x="160" y="105" font-size="12" fill="#713f12" text-anchor="middle" font-weight="bold">MetaGPT</text> <text x="160" y="135" font-size="10" fill="#475569" text-anchor="middle">SOP,可控</text> <circle cx="350" cy="200" r="16" fill="#dcfce7" stroke="#16a34a"/> <text x="350" y="205" font-size="12" fill="#14532d" text-anchor="middle" font-weight="bold">CrewAI</text> <text x="350" y="235" font-size="10" fill="#475569" text-anchor="middle">中间地带</text> <circle cx="220" cy="160" r="16" fill="#fce7f3" stroke="#db2777"/> <text x="220" y="165" font-size="12" fill="#831843" text-anchor="middle" font-weight="bold">ChatDev</text> <text x="220" y="195" font-size="10" fill="#475569" text-anchor="middle">软件专用</text> <!-- 趋势线 --> <path d="M 160 100 L 540 100" stroke="#94a3b8" stroke-width="1.5" stroke-dasharray="4 4"/> <text x="360" y="60" font-size="13" fill="#475569" text-anchor="middle">灵活性 ↔ 可控性 权衡</text> </svg>
| 框架 | 抽象 | 流程 | 灵活性 | 可控性 | 适用 |
|---|---|---|---|---|---|
| AutoGen | 可对话 Agent | 涌现 | 极高 | 中 | 通用研究 |
| MetaGPT | SOP + 角色 | 显式 | 中 | 高 | 有 SOP 的领域(软件、报告) |
| CrewAI | Crew + Task | 配置驱动 | 高 | 中 | 中小型协作 |
| ChatDev | 阶段化对话 | 显式 | 低(专用) | 高 | 软件开发 |
| 场景 | 推荐 |
|---|---|
| 研究多 Agent 协作机制 | AutoGen |
| 软件开发、有清晰 SOP 的领域 | MetaGPT / ChatDev |
| 中小型任务、快速上手 | CrewAI |
| 需要极高灵活性 | AutoGen |
| 需要稳定可控 | MetaGPT |
| 需要平衡 | CrewAI |
💡 框架选型的核心权衡:灵活性 vs 可控性。AutoGen 灵活但难控,MetaGPT 可控但僵硬,CrewAI 居中。没有最好的框架,只有最匹配场景的框架。第 8.1 节会进一步给出选型决策树。
| 反模式 | 表现 | 后果 | 正确做法 |
|---|---|---|---|
| 角色不清 | Agent 不知道干啥 | 抢活/推诿 | 清晰 Profile |
| 流程过松 | 无 SOP 全靠涌现 | 协作失控 | 加结构化流程 |
| 流程过死 | SOP 没有灵活性 | 死板 | 关键点保留弹性 |
| Agent 太多 | 一上来 10+ Agent | 协调成本爆炸 | 按需增加 |
| 无中间校验 | 一错到底 | 错误放大 | 关键节点 review |
| 盲目抄框架 | 不理解就用 | 落地变形 | 先理解再选 |
下一节《7.4 协作 vs 竞争:辩论、投票、市场机制与对抗验证》将打破「协作总是好的」的迷思,讨论竞争模式如何反而提升系统质量。