> For the complete documentation index, see [llms.txt](https://yeasy.gitbook.io/agentic_ai_guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yeasy.gitbook.io/agentic_ai_guide/di-san-bu-fen-gong-cheng-shi-jian-yu-luo-di/08_frameworks/8.4_multi_agent.md).

# 8.4 多智能体协作：多智能体框架实战

单体智能体受限于上下文窗口和角色的单一性，难以处理极其复杂的任务。这就好比一个人再厉害，也无法独自完成一部电影的拍摄。

**多智能体系统**（Multi-Agent System，简称 MAS）通过模拟人类团队的协作模式，让多个专注于不同领域的智能体共同解决问题。本节将通过实战案例，用两类代表性范式来理解多智能体框架：对话编排与角色任务编排。

## 8.4.1 对话编排范式：对话即计算

这类框架的核心特点是 **对话即计算**：智能体通过对话驱动任务推进，并结合受控执行环境实现“生成→执行→反馈→修复”的闭环。

> **生态现状**：Microsoft AutoGen 官方仓库已明确进入 maintenance mode，并建议新项目转向 **Microsoft Agent Framework**；AG2 官方则把自己定义为 **AG2 (formerly AutoGen)**，也就是从 AutoGen 演化出的社区主线。与此同时，CrewAI 的稳定发布线已经进入 **1.14.x**。

### 核心概念：执行智能体与规划智能体

一种常见抽象是把系统拆成两个基本角色：

1. **规划 / 生成智能体**：负责分析、规划与生成代码/操作。
2. **执行智能体**：负责在沙箱中执行、收集结果与报错并回传。

**工作流**：

1. 任务：“请画一张股价走势图”。
2. Assistant：生成一段 Python 代码。
3. 执行智能体：在受控沙箱中运行，报错提示“缺少依赖”。
4. 执行智能体：将报错信息发回给 Assistant。
5. Assistant：根据报错重写代码。
6. 执行智能体：再次运行，直到产出满足要求。

### 适用场景与风险

这种范式适合“需要在环境中反复试错”的任务，例如编程、数据分析与自动化操作。但也要注意两类风险：

* **成本失控**：一旦陷入重试循环，Token 与工具成本可能快速飙升，需要步数上限与熔断。
* **安全边界**：执行智能体必须在沙箱内运行，并对文件、网络与高风险操作设置硬限制。

## 8.4.2 实战：构建自动编程团队

下面用一个最小例子说明如何用群聊模式，把编写与执行两个角色组织成一个自动编程团队。

```python
# AG2 示例：使用当前文档中的 ConversableAgent + AutoPattern 风格

import logging
from autogen import ConversableAgent, LLMConfig
from autogen.agentchat import run_group_chat
from autogen.agentchat.group.patterns import AutoPattern

logging.basicConfig(level=logging.INFO)

llm_config = LLMConfig.from_json(path="OAI_CONFIG_LIST")

planner = ConversableAgent(
    name="planner",
    system_message="把需求拆成可执行的开发任务。",
    description="负责任务拆解与推进。",
    llm_config=llm_config,
)
coder = ConversableAgent(
    name="coder",
    system_message="根据任务编写代码，并说明如何运行与测试。",
    description="负责实现。",
    llm_config=llm_config,
)
reviewer = ConversableAgent(
    name="reviewer",
    system_message="审查代码、指出问题，满足要求时输出 DONE。",
    description="负责质量把关。",
    is_termination_msg=lambda x: "DONE" in (x.get("content", "") or "").upper(),
    llm_config=llm_config,
)

pattern = AutoPattern(
    agents=[planner, coder, reviewer],
    initial_agent=planner,
    group_manager_args={"name": "group_manager", "llm_config": llm_config},
)

response = run_group_chat(
    pattern=pattern,
    messages="做一个简单的贪吃蛇游戏，并给出运行说明。",
    max_rounds=12,
)
response.process()
print(response.summary)
```

**运行结果**：Planner 会先拆任务，Coder 负责实现，Reviewer 负责挑错和收敛。当 `DONE` 出现时，说明这一轮群聊已经收敛到可交付结果。对于仍在使用旧 AutoGen 风格群聊的团队，AG2 是更自然的延续路径。

> **扩展阅读**：如果你需要 Microsoft 官方支持、长期维护和更强的企业治理能力，应优先评估 **Microsoft Agent Framework**。如果你已经采用 AutoGen 风格的对话式多智能体编排，AG2 的迁移心智更接近原范式。

## 8.4.3 角色任务编排范式：像导演一样编排团队

另一类框架更强调 **角色扮演** 与 **任务流编排**：先定义谁做什么、每步交付什么，再把任务按顺序或层级组织起来。

### 核心概念：角色、任务、工作流

这类框架通常要求你先回答三个问题：

1. **Who**：谁来做？例如角色、目标、背景设定。
2. **What**：做什么？例如任务描述、预期输出。
3. **How**：怎么配合？例如顺序式或层级式流程。

### 模板化与验收标准

为了让角色任务编排在生产环境中可控，建议把“角色卡”“交付物模板”“验收清单”做成可复用模板，并在每个关键节点进行自动校验（格式、字段完整性、引用证据、风险动作审批等）。

## 8.4.4 实战：构建市场调研团队

同样的任务换成“角色 + 任务流”的组织方式，代码形态会明显不同。

```python
# CrewAI 示例（1.14.x 系列 API）：用"角色 + 任务流"构建市场调研团队

from crewai import Agent, Task, Crew

researcher = Agent(
    role="研究员",
    goal="收集信息并给出可验证依据",
    backstory="你是一名严谨的研究员，擅长检索并核验信息来源。",
    verbose=True
)
writer = Agent(
    role="写作者",
    goal="把研究结果组织成可读文章",
    backstory="你是一名结构化写作专家，擅长把零散材料组织成清晰文章。",
    verbose=True
)

research_task = Task(
    description="调研某主题的关键趋势",
    agent=researcher,
    expected_output="包含可验证来源的调研报告"
)
write_article_task = Task(
    description="基于调研产出文章",
    agent=writer,
    expected_output="结构清晰的最终文章",
    context=[research_task]
)

crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_article_task],
    verbose=True
)

crew_output = crew.kickoff()
print(crew_output.raw)
print(crew_output.tasks_output)
```

## 8.4.5 两类范式对比与框架选择

| 维度       | 对话编排范式                                                           | 角色任务编排范式           |
| -------- | ---------------------------------------------------------------- | ------------------ |
| **代表框架** | AG2（社区延续，AutoGen 风格） / Microsoft Agent Framework（Microsoft 当前主线） | CrewAI（1.14.x 稳定线） |
| **强项**   | 生成-执行闭环、快速迭代修复                                                   | 角色分工清晰、流程可控、输出预期明确 |
| **交互模式** | 对话流（自由度高）                                                        | 任务流（结构化更强）         |
| **底层**   | 框架自带编排                                                           | 依赖通用组件/生态          |
| **上手难度** | 取决于沙箱/工具链集成复杂度                                                   | 取决于流程抽象与模板完善度      |
| **社区状态** | AG2：社区驱动；MAF：Microsoft 官方                                        | 活跃，定期更新特性与优化       |

## 8.4.6 跨智能体通信：Branch Agent 与进度快照模式

当多个智能体需要实时协作时，传统的串行或简单的消息队列可能引入延迟。一种高效的模式是 **Branch Agent 通信**，结合定期的进度快照。

### 状态隔离与缓存共享

Branch Agent 通常通过以下方式平衡隔离与协作：

* **克隆隔离**：每个 Branch Agent 获得独立的 LRU 缓存和 AbortController，防止会话间状态污染
* **缓存前缀共享**：系统提示、工具定义等稳定前缀通过缓存共享，利用推理引擎的前缀复用机制降本
* **Agent 摘要**：使用 Haiku 等轻量模型每 30 秒生成 3-5 词的进度快照，作为其他 Agent 的上下文更新

### 跨智能体实时消息

通过 `SendMessage` 机制支持即时通信：

* **广播模式**：主 Agent 可向所有 Branch Agent 广播任务更新或中断信号
* **跨会话通信**：Branch Agent 间可通过共享消息队列或事件总线通信，无需重新启动会话
* **消息可溯源**：每条消息携带源 Agent 的 ID 与时间戳，支持调试与审计

这种设计避免了过度的上下文复制，同时保证了 Agent 间的实时协调。

## 8.4.7 小结

多智能体系统不仅是“人多力量大”，更是 **分而治之** 思想的体现。

* 通过让 Researcher 专注搜索，Writer 专注写作，每个智能体的系统提示词 (System Prompt) 都可以更短、更聚焦，从而降低幻觉，提升质量。
* 一类框架更偏“执行闭环”（写代码/跑代码/修复），典型如 AG2（社区延续）或 Microsoft Agent Framework（Microsoft 官方主线）。
* 一类框架更偏“角色流程”（研究→写作→审阅→交付），典型如 CrewAI（稳定线已进入 1.14.x）。
* 在并行多智能体场景中，利用 Branch Agent 的缓存共享与定期快照可显著降低通信开销与上下文膨胀。

**框架选择指南**：

* 如果项目已采用 AutoGen 风格群聊与对话编排，迁移至 **AG2** 往往最平滑。
* 如果新项目需要 Microsoft 官方支持、企业治理和统一主线，优先看 **Microsoft Agent Framework**。
* 如果关注明确的角色卡、任务依赖和流程控制，**CrewAI** 更贴近 SOP 驱动的团队协作。

下节将探讨如何将这些智能体集成到现有的企业系统中。

***

**下一节**: [8.5 企业级集成：与现有系统整合](/agentic_ai_guide/di-san-bu-fen-gong-cheng-shi-jian-yu-luo-di/08_frameworks/8.5_enterprise.md)
