多智能体协作的三种模式:从群聊到分层,如何设计可扩展的Agent系统
从3个Agent扩展到12个专用Agent时,扁平架构的协调开销呈平方级增长。本文将基于Azure、Anthropic等一线实践,系统拆解多智能体协作的三种核心模式及其可扩展性设计。
引言:多Agent的"扩展性陷阱"
"我们被告知2025年是AI Agent之年,但2026年才是多Agent之年。"
然而,多Agent系统在工程化落地中面临一个关键问题:Agent数量增长时,系统如何保持可扩展?
当Agent从3个扩展到12个时,扁平架构会暴露三种失效模式:
| 失效模式 | 表现 |
|---|---|
| 协调开销平方增长 | N个Agent需要管理N(N-1)/2段关系,10人参与群聊时发言顺序混乱 |
| 故障不可预测连锁 | 合规Agent失败时,不知该中止还是继续 |
| 子域所有权模糊 | 两个专家Agent产生冲突时,无人仲裁 |
根本问题在于:大多数Agent实现是"状态高度耦合的单体应用"------模型、工具、状态绑死在一起。这与微服务架构的困境类似,只是现在面对的是具备决策能力的智能体。
一、模式一:群聊模式
1.1 核心思想:共享上下文的对等协作
群聊模式模拟人类的"圆桌会议"或"头脑风暴"。多个Agent以平等身份参与讨论,通过轮流发言、引用观点、修正认知,最终收敛到结果。
关键特征:
| 特征 | 含义 |
|---|---|
| 多玩家 | 同一Agent实例与多人协同工作,而非每人开独立会话 |
| 持续学习 | 持续跟随频道活动,积累上下文 |
| 主动性 | 主动监听、标注信息、跟进任务 |
| 异步工作 | 可接收跨小时/跨天的任务,自主规划节奏 |
1.2 适用场景
- 创意头脑风暴(Agent在彼此想法上扩展)
- 复杂推理和决策(多视角分析问题)
- 跨领域协作(注意力在空间上的分散)
1.3 局限性
当参与Agent超过3个时,群聊模式会变得混乱。Azure的Group Chat建议限制为三个或更少以便更易控制。
1.4 代码实现:群聊Agent框架
python
from typing import List, Dict
import asyncio
class ChatMessage:
def __init__(self, sender: str, content: str):
self.sender = sender
self.content = content
class GroupChatManager:
"""群聊管理器:控制对话流程"""
def __init__(self, participants: List['ChatAgent'], max_rounds: int = 10):
self.participants = participants
self.max_rounds = max_rounds
self.message_history: List[ChatMessage] = []
self.round = 0
async def run(self, initial_task: str) -> str:
"""启动群聊"""
self.message_history.append(ChatMessage("user", initial_task))
while self.round < self.max_rounds:
# 选择下一个发言者(轮询或基于语义)
next_agent = self._select_next_agent()
# Agent发言
response = await next_agent.respond(
self.message_history,
self.round
)
self.message_history.append(response)
# 检查是否应该终止
if self._should_terminate():
break
self.round += 1
# 汇总最终结果
return self._aggregate_results()
def _select_next_agent(self):
"""选择下一个发言者"""
# 轮询:按顺序发言
return self.participants[self.round % len(self.participants)]
def _should_terminate(self) -> bool:
"""检测对话是否应该结束"""
# 最大轮次或达到目标信号
return self.round >= self.max_rounds
二、模式二:路由与委托模式
2.1 路由模式:任务分发的入口秩序
路由模式解决"谁来做"的问题。系统掌握入口控制权,根据任务类型分发到专用Agent。
任务分级是路由的第一步:
| 任务层级 | 描述 | 适用模式 |
|---|---|---|
| L1 简单任务 | 格式转换、信息提取 | 单点处理 |
| L2 执行型任务 | 按模板生成文档 | 调度模式 |
| L3 分析型任务 | 研究报告、竞品分析 | 多角色协作 |
| L4 战略型任务 | 框架设计、机制创新 | 群体模式 |
2.2 委托模式:放权的第一步
委托模式解决"怎么做完"的问题。中心不再逐步指挥,而是给出目标、边界和验收标准,让专家节点独立完成闭环。
委托 vs 命令:
- 命令模式:中心需要知道每一步该怎么做(不可扩展)
- 委托模式:中心给出目标,Agent自主规划路径
2.3 实现:无状态Agent微服务
将Agent实现为无状态微服务,支持横向扩展:
python
from fastapi import FastAPI
from pydantic import BaseModel
import os
class Task(BaseModel):
task_id: str
content: str
context: dict = {}
class AgentResponse(BaseModel):
task_id: str
result: str
agent_id: str
app = FastAPI()
@app.post("/run")
async def run_task(task: Task) -> AgentResponse:
"""无状态Agent服务:接收任务 → 推理 → 返回结果"""
# 不保存任何本地状态
result = await llm_inference(task.content, task.context)
return AgentResponse(
task_id=task.task_id,
result=result,
agent_id=os.getenv("AGENT_ID", "agent-001")
)
@app.get("/health")
async def health_check():
return {"status": "healthy", "agent_id": os.getenv("AGENT_ID")}
2.4 LangGraph的状态机路由
LangGraph通过状态机实现确定性路由,每个阶段对应一个节点,阶段间的转移通过显式条件边编码:
python
from langgraph.graph import StateGraph
graph = StateGraph(AgentState)
graph.add_node("planner", planner_node)
graph.add_node("researcher", researcher_node)
graph.add_node("writer", writer_node)
# 确定性条件路由
graph.add_conditional_edges(
"planner",
lambda state: "research" if state.needs_research else "write"
)
三、模式三:分层编排模式
3.1 核心思想:复杂度的隔离
分层编排通过在Hub-Spoke(枢纽-辐条)架构上添加多个编排层,实现复杂度的隔离。
┌─────────────────────────────────────────────────────────────┐
│ 顶层编排器 │
│ 业务逻辑层:"先做市场分析,然后检查合规" │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 市场分析子编排器 │ │ 风险评估子编排器 │ │ 合规子编排器 │
│ 管理股票/债券 │ │ 管理风险模型 │ │ 管理合规检查 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
3.2 Hub-Spoke架构
Hub-Spoke架构引入一个中央协调Agent,将任务委派给专门的分支Agent:
- Hub(枢纽):了解整个工作流程------每个辐条需要哪些数据、哪些可以并行、如何整合输出
- Spoke(辐条):只了解自己领域内的专业知识
实现方式:
- 将每个Spoke Agent注册为Hub上的可调用函数
- Hub的LLM决定调用哪个Spoke时生成函数调用
- 编排器代码执行该函数,收集结果
- 判断是否继续调用更多Spoke或生成最终响应
3.3 分层编排的工程价值
| 优势 | 说明 |
|---|---|
| 复杂度隔离 | 顶层只关心业务逻辑,不关心底层专家数量 |
| 增量演进 | 新增专家只影响子编排器,顶层逻辑不变 |
| 责任清晰 | 每层有明确的职责和接口契约 |
接口封装原则:
每个子编排器向父级暴露一个狭窄的合约------返回结构化报告而非原始输出。这种封装防止顶层依赖可能变化的实现细节。
3.4 监督者模式:响应式监控
监督者模式从"指令式编排"转向"响应式监控"。监督Agent监控输出,决定重试、升级还是继续。
与指示Agent调用顺序的编排器不同,监督者会响应Agent结果------如果风险评估Agent返回高不确定性分数,监督者在允许下游使用前请求更多分析。
python
class SupervisorAgent:
def __init__(self, evaluator: callable):
self.evaluator = evaluator
def supervise(self, agent_output: dict) -> str:
"""监督Agent输出并决定下一步"""
score = self.evaluator(agent_output)
if score < 0.6:
return "RETRY" # 质量不足,重试
elif score < 0.8:
return "ESCALATE" # 中等质量,升级到人工
else:
return "CONTINUE" # 通过,继续
四、架构演进路径:从控制到放权
四种协作模式构成了一条控制权逐步下放的路径:
路由 → 委托 → 辩论 → 群体
│ │ │ │
完全控制 过程放权 规则设计 边界治理
- 路由模式:中心决定任务分配给谁
- 委托模式:中心设定目标,Agent自主执行
- 辩论模式:中心设计规则,多Agent通过讨论收敛
- 群体模式:中心培育环境,Agent自组织协作
五、选型决策树
#mermaid-svg-G9SKqrsApSNVR4qe{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-G9SKqrsApSNVR4qe .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-G9SKqrsApSNVR4qe .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-G9SKqrsApSNVR4qe .error-icon{fill:#552222;}#mermaid-svg-G9SKqrsApSNVR4qe .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-G9SKqrsApSNVR4qe .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-G9SKqrsApSNVR4qe .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-G9SKqrsApSNVR4qe .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-G9SKqrsApSNVR4qe .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-G9SKqrsApSNVR4qe .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-G9SKqrsApSNVR4qe .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-G9SKqrsApSNVR4qe .marker{fill:#333333;stroke:#333333;}#mermaid-svg-G9SKqrsApSNVR4qe .marker.cross{stroke:#333333;}#mermaid-svg-G9SKqrsApSNVR4qe svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-G9SKqrsApSNVR4qe p{margin:0;}#mermaid-svg-G9SKqrsApSNVR4qe .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-G9SKqrsApSNVR4qe .cluster-label text{fill:#333;}#mermaid-svg-G9SKqrsApSNVR4qe .cluster-label span{color:#333;}#mermaid-svg-G9SKqrsApSNVR4qe .cluster-label span p{background-color:transparent;}#mermaid-svg-G9SKqrsApSNVR4qe .label text,#mermaid-svg-G9SKqrsApSNVR4qe span{fill:#333;color:#333;}#mermaid-svg-G9SKqrsApSNVR4qe .node rect,#mermaid-svg-G9SKqrsApSNVR4qe .node circle,#mermaid-svg-G9SKqrsApSNVR4qe .node ellipse,#mermaid-svg-G9SKqrsApSNVR4qe .node polygon,#mermaid-svg-G9SKqrsApSNVR4qe .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-G9SKqrsApSNVR4qe .rough-node .label text,#mermaid-svg-G9SKqrsApSNVR4qe .node .label text,#mermaid-svg-G9SKqrsApSNVR4qe .image-shape .label,#mermaid-svg-G9SKqrsApSNVR4qe .icon-shape .label{text-anchor:middle;}#mermaid-svg-G9SKqrsApSNVR4qe .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-G9SKqrsApSNVR4qe .rough-node .label,#mermaid-svg-G9SKqrsApSNVR4qe .node .label,#mermaid-svg-G9SKqrsApSNVR4qe .image-shape .label,#mermaid-svg-G9SKqrsApSNVR4qe .icon-shape .label{text-align:center;}#mermaid-svg-G9SKqrsApSNVR4qe .node.clickable{cursor:pointer;}#mermaid-svg-G9SKqrsApSNVR4qe .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-G9SKqrsApSNVR4qe .arrowheadPath{fill:#333333;}#mermaid-svg-G9SKqrsApSNVR4qe .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-G9SKqrsApSNVR4qe .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-G9SKqrsApSNVR4qe .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-G9SKqrsApSNVR4qe .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-G9SKqrsApSNVR4qe .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-G9SKqrsApSNVR4qe .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-G9SKqrsApSNVR4qe .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-G9SKqrsApSNVR4qe .cluster text{fill:#333;}#mermaid-svg-G9SKqrsApSNVR4qe .cluster span{color:#333;}#mermaid-svg-G9SKqrsApSNVR4qe div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-G9SKqrsApSNVR4qe .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-G9SKqrsApSNVR4qe rect.text{fill:none;stroke-width:0;}#mermaid-svg-G9SKqrsApSNVR4qe .icon-shape,#mermaid-svg-G9SKqrsApSNVR4qe .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-G9SKqrsApSNVR4qe .icon-shape p,#mermaid-svg-G9SKqrsApSNVR4qe .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-G9SKqrsApSNVR4qe .icon-shape .label rect,#mermaid-svg-G9SKqrsApSNVR4qe .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-G9SKqrsApSNVR4qe .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-G9SKqrsApSNVR4qe .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-G9SKqrsApSNVR4qe :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否
是
是
是
否
否
是
否
开始
任务是否需要多Agent协作?
单Agent或直接LLM调用
任务流程是否可预先定义?
任务需要多轮讨论/头脑风暴?
群聊模式
路由/委托模式
是否需要显式的层级控制?
分层编排模式
群体模式/辩论模式
限制3-5个Agent
Hub-Spoke架构
顶层+子编排器分层
六、总结
多Agent系统的可扩展性设计,本质是从"控制Agent"走向"设计环境"。
| 模式 | 适用场景 | 可扩展性 |
|---|---|---|
| 群聊模式 | 头脑风暴、跨领域协作 | ⭐⭐ 3-5个Agent上限 |
| 路由/委托 | 结构化任务分发 | ⭐⭐⭐⭐ 需明确角色定义 |
| 分层编排 | 企业级复杂系统 | ⭐⭐⭐⭐⭐ 复杂度隔离 |
关键工程启示来自Anthropic的Managed Agents:将大脑(决策)、手(执行)、记忆(状态)解耦为独立可调度角色,告别单体式脚本设计。智能体从一个"跑在某个容器里的东西",变成了一个可以被调度、被扩展、被治理的系统实体。
参考文献:
- 检视进阶调解架构,Microsoft Learn,2026年7月
- 为什么说多 Agent 协作的核心不在模型而在"组织建模"?,知乎专栏,2026年6月
- Agent 集群的四种协作模式:从控制到放手的架构演进,阿里云开发者社区,2026年6月
- AI 代理编排模式,Azure Architecture Center,2026年2月
- 研究高级编排架构,Microsoft Learn,2026年7月
- Agent 规划与推理:让 AI 学会「想清楚再做」,腾讯云,2026年8月
- 多 Agent 系统工程化落地:基于微服务的智能体拆分与管理机制,华为云社区,2025年12月
- 多 Agent 协作架构,"圆桌会议"与"蜂群智能",腾讯云,2026年3月
- Anthropic Managed Agents,阿里云开发者社区,2026年4月
- 使用群组聊天业务流程,Microsoft Learn,2026年2月