让一个 LLM 同时负责检索、推理、生成与审核,Demo 很快,上线很痛:上下文塞满、串行耗时叠加、一次坏调用拖垮全流程。多Agent协作系统(MAS) 把复杂任务拆成角色专一、可替换的子 Agent,用明确编排与通信协议协同完成。本文面向 AI 工程师与后端架构师:① 单 Agent 为何在规模化时崩溃;② MAS 核心概念与三种控制拓扑;③ 六大编排设计模式与代码;④ 框架与协议选型;⑤ 生产工程与可观测性;⑥ 选型决策树与云端 Mac Runbook。工具层背景可对照 MCP 深度解读 与 MCP Server 开发教程 并行阅读。
00为什么单个 Agent 不够用了
2024 至 2025 年,AI Agent 从实验室走向生产,但很多团队很快发现:把所有任务塞给一个 LLM Agent,系统会在规模化时崩溃。问题出在架构,而非模型本身。
根据 MLflow 2026 年报告,Google 内部 Agent Bake-Off 实验显示,采用分布式多Agent架构后,处理时间从 1 小时降至 10 分钟,提升超过 6 倍。AdaptOrch(2026 学术论文)进一步证明:在多Agent系统中,编排拓扑的选择对系统性能的影响比底层模型的选择更大,在 SWE-bench 等基准上,正确拓扑可带来 12–23% 的性能提升。
面向生产,多Agent架构几乎是正确方向;真正要回答的是:选哪种模式、哪套框架。
痛点单体 Agent 的结构性瓶颈
- 上下文窗口瓶颈:复杂任务中间结果塞满上下文,后续推理质量骤降。
- 专业能力稀释:一个 Agent 既检索又写代码又做审核,样样都做但样样不精。
- 串行执行低效:总耗时是每步之和,无法并发。
- 单点故障风险:一个 Agent 出问题,整个流程停摆。
- 调试黑盒:缺乏 per-agent 追踪时,幻觉级联而 HTTP 面板仍显示绿色。
01核心概念:什么是多Agent协作系统
多Agent协作系统(Multi-Agent System,MAS) 指由多个独立 AI Agent 组成、通过明确通信协议与编排机制协作、完成单个 Agent 无法高效完成的复杂任务的系统。
| 特征 | 描述 |
|---|---|
| 角色专一 | 只负责明确定义的子任务(检索、推理、生成、验证等) |
| 工具访问 | 拥有完成自身任务所需的特定工具集 |
| 状态隔离 | 维护自己的上下文和内存,不污染其他 Agent |
| 可替换性 | 可独立升级、替换,不影响整体系统 |
三种控制模式决定 Agent 如何协调:
- 集中式(Centralized):单一 Orchestrator 路由到 Worker。可审计、可控;中心易成瓶颈。
- 分散式(Decentralized):Agent 点对点传递任务。高弹性、低延迟;调试难、非确定性高。
- 层级式(Hierarchical):顶层主管 → 团队 Lead → Worker。平衡控制与规模,多数企业系统的默认选择。
02六大编排设计模式详解
这六种模式覆盖生产中 95% 以上的多Agent场景。选对模式是 Agentic 工程里杠杆最高的架构技能。
模式一:顺序流水线(Sequential Pipeline)——Agent A 的输出直接作为 Agent B 的输入,严格线性执行。适用于步骤间有严格依赖、流程固定的场景(文章创作、代码审查)。缺点:总耗时 = 各步之和;单步失败整体阻塞。
from langgraph.graph import StateGraph, START, END
from typing import TypedDict
class PipelineState(TypedDict):
query: str
retrieved_docs: str
analysis: str
final_report: str
def retrieval_agent(state: PipelineState):
docs = search_knowledge_base(state["query"])
return {"retrieved_docs": docs}
def analysis_agent(state: PipelineState):
result = llm.invoke(f"分析以下内容:{state['retrieved_docs']}")
return {"analysis": result.content}
def writer_agent(state: PipelineState):
report = llm.invoke(f"根据分析撰写报告:{state['analysis']}")
return {"final_report": report.content}
builder = StateGraph(PipelineState)
builder.add_node("retriever", retrieval_agent)
builder.add_node("analyzer", analysis_agent)
builder.add_node("writer", writer_agent)
builder.add_edge(START, "retriever")
builder.add_edge("retriever", "analyzer")
builder.add_edge("analyzer", "writer")
builder.add_edge("writer", END)
pipeline = builder.compile()
模式二:并行扇出/扇入(Parallel Fan-out / Fan-in)——多个 Agent 同时处理独立子任务,汇聚节点合并结果。总耗时 = max(T1, T2, …, Tn) 而非求和。适用于多源研究、多维度风险评估。LangGraph Send API 配合 Annotated[list, operator.add] Reducer 可实现真正并发并自动聚合。
from langgraph.types import Send
from typing import TypedDict, Annotated
import operator
class ResearchState(TypedDict):
query: str
research_results: Annotated[list, operator.add]
final_synthesis: str
def supervisor(state: ResearchState):
return [
Send("research_worker", {"query": state["query"], "source": "academic"}),
Send("research_worker", {"query": state["query"], "source": "industry"}),
Send("research_worker", {"query": state["query"], "source": "news"}),
]
def research_worker(state: dict):
result = search_by_source(state["query"], state["source"])
return {"research_results": [result]}
模式三:层级主管-工人(Hierarchical Supervisor-Worker)——主管负责意图识别、任务拆解与路由;专业 Worker 执行;Synthesizer 汇总。适用于 Replit 式代码助手、客服系统等多类型任务。推荐双层路由:关键字快速通道(<1ms,无需 LLM)+ LLM 精确路由处理模糊意图。
KEYWORD_ROUTING = {
"代码": "code_agent", "code": "code_agent",
"搜索": "search_agent", "查询": "search_agent",
"数据": "data_agent",
}
def supervisor_with_fast_path(state):
query = state["query"].lower()
for keyword, agent_name in KEYWORD_ROUTING.items():
if keyword in query:
return {"next": agent_name}
decision = llm.invoke(f"用户请求:{state['query']},返回最合适 Agent 名称")
return {"next": decision.content.strip()}
模式四:群体协作(Swarm / Network)——Agent 点对点传递,无中央协调者;靠轮数、共识、超时终止。适合代码审查辩论、方案评估;非确定性高,生产慎用,建议用层级模式替代并设硬性 max_round。
模式五:黑板架构(Blackboard)——所有 Agent 共享结构化工作空间,满足前提条件时主动读写黑板,无需显式调度。适合小时级甚至天级的异步任务、异构团队协作、难以预先路由的复杂条件工作流。
模式六:混合模式(Hybrid)——在同一系统组合多种模式,常见为「Intent 路由 + 层级主管 + 并行研究扇出 + 质量保障流水线 + 人工审核」。企业内容生成平台多采用此架构。
03主流框架横向对比:LangGraph vs CrewAI vs AutoGen
| 维度 | LangGraph | CrewAI | AutoGen(微软) |
|---|---|---|---|
| 架构范式 | 状态机图 | 角色制团队 | 对话式多Agent |
| 编程语言 | Python / JS/TS | Python | Python / .NET |
| 学习曲线 | 较陡 | 平缓 | 中等 |
| 状态管理 | 原生支持 | 需自实现 | 有限支持 |
| Human-in-the-Loop | 原生 interrupt() | 需自实现 | 支持 |
| 可观测性 | LangSmith | 有限 | Azure Monitor |
| 生产就绪度 | 极高 | 中等 | 较强 |
| 快速原型 | 中等 | 极快 | 较强 |
| 适合场景 | 复杂有状态工作流 | 角色制内容流水线 | 对话式协作 |
选 LangGraph:金融/医疗等合规行业、复杂状态持久化、精细 HITL、条件分支与循环。选 CrewAI:1–2 天出原型、团队用「角色」理解 Agent、内容生成场景。选 AutoGen:微软/Azure 技术栈、需要多轮辩论与迭代推理。
04通信协议双层架构:MCP + A2A
2026 年,多Agent通信已标准化为 Linux Foundation Agentic AI Foundation 下的两层互补架构。MCP(垂直层)统一 Agent 访问工具/数据库/API;A2A(水平层)标准化 Agent 间任务委托、能力发现与状态同步。MCP 是「手」,A2A 是「同事之间的对话」。
A2A 由 Google 2025 年 4 月开源,2026 年初发布 v1.0,已有 Atlassian、Salesforce、SAP 等 50+ 合作伙伴。每个 A2A Agent 在 /.well-known/agent.json 发布 Agent Card,列出技能、流式能力与端点 URL。
import httpx
async def discover_and_delegate(agent_url: str, task: str):
card = (await httpx.get(f"{agent_url}/.well-known/agent.json")).json()
skills = [s["id"] for s in card["skills"]]
if "web_research" not in skills:
raise ValueError(f"Agent {card['name']} 不支持 web_research")
payload = {
"jsonrpc": "2.0", "method": "message/send", "id": "task-001",
"params": {"message": {"role": "user", "parts": [{"type": "text", "text": task}]}}
}
return (await httpx.post(card["url"], json=payload)).json()
MCP Server 实现细节见 从零开发 MCP Server;Cursor 侧技能封装可对照 Cursor Agent Skills 指南。
05生产级工程实践
状态持久化与断点续传:PostgreSQL 作为 LangGraph Checkpointer,进程重启后从上次状态恢复。
from langgraph.checkpoint.postgres import PostgresSaver
with PostgresSaver.from_conn_string("postgresql://user:pass@localhost/agentdb") as checkpointer:
graph = builder.compile(checkpointer=checkpointer)
config = {"configurable": {"thread_id": "user-session-12345"}}
result = graph.invoke({"query": "分析Q2财报"}, config)
Human-in-the-Loop:高风险操作前用 interrupt() 暂停,等待人工确认。
from langgraph.types import interrupt
def high_risk_action_agent(state):
proposed_action = plan_action(state)
human_decision = interrupt({
"proposed_action": proposed_action,
"risk_level": "HIGH",
"message": "此操作将修改生产数据库,请确认是否执行"
})
if human_decision["approved"]:
return execute_action(proposed_action)
return {"status": "cancelled", "reason": human_decision.get("reason")}
熔断器与重试:外部 Agent 连续失败时打开熔断,快速失败而非无限重试烧 Token。Token 预算控制:每次调用前检查剩余预算,防止单任务从 $0.02 飙到 $47。
可引用数据 1:Google Agent Bake-Off 记录分布式多Agent架构处理速度提升 6 倍(1 小时 → 10 分钟)。
可引用数据 2:AdaptOrch(arXiv 2602.16873)证明拓扑选择 alone 可带来 12–23% 基准提升,往往大于换模型收益。
可引用数据 3:生产系统最佳 Agent 数量通常为 3–8 个;超过后协调开销往往超过收益。
06可观测性:让黑盒变透明
MAST 研究团队分析 1,642 条多Agent执行追踪发现:57% 的组织已有 Agent 在生产运行,但仅 8% 完成了 LLM 可观测性实施。大量错误以 HTTP 200 返回,监控面板全绿,输出却是错的。
| 故障类型 | 占比(MAST) | 说明 |
|---|---|---|
| 系统设计问题 | 41.77% | 步骤重复、工具选择错误、上下文溢出、缺少终止条件 |
| Agent间不对齐 | 36.94% | 交接时上下文丢失;一个 Agent 的幻觉成为下一个的「事实」 |
| 任务验证失败 | 21.30% | 过早终止、不完整验证 |
用 OpenTelemetry 为每次 Agent 调用携带 correlation ID,形成完整调用链。核心指标:端到端任务成功率(目标 >85%)、P95 延迟(<30s)、各 Agent 错误率(<5%)、重试次数、LLM-as-Judge 输出质量评分。
07常见踩坑与防坑指南
陷阱一:上下文污染——Agent A 产生幻觉,B/C 基于错误前提输出,HTTP 仍 200。防坑:每个交接点做 Schema 验证、置信度阈值(<0.7 升级人工)、必填字段检查。
陷阱二:无限循环与代价失控——重试或工具调用螺旋,几分钟 Token 费用暴涨百倍。防坑:硬性上限 MAX_ITERATIONS = 10、MAX_TOOL_CALLS_PER_AGENT = 20、MAX_TOTAL_TOKENS = 50_000;高代价工具前 interrupt_before。
陷阱三:过度工程化——把简单两步链拆成 8 个 Agent。原则:先从顺序流水线开始,有具体证据(并发需求、上下文溢出、子 Agent 需独立升级)再增加数量。
陷阱四:Demo 到生产的鸿沟——边缘输入导致级联失败。防坑:输入长度限制、提示注入检测、PII 过滤、有害内容分类器。
陷阱五:并行分支同步问题(LangGraph)——Send API 分支完成时间不同,主管节点过早重跑导致重复执行与结果不完整。防坑:
builder.add_node("supervisor", supervisor_node, defer=True)
08选型决策树
任务是否有明确的线性依赖步骤?
├─ 是 → 子任务是否可以并发执行?
│ ├─ 否 → 【顺序流水线】
│ └─ 是 → 【并行扇出 + 顺序流水线 混合】
└─ 否 → 是否有一个 Agent 具有决策权威?
├─ 是 → 规模是否足够大需要子团队?
│ ├─ 否 → 【Supervisor-Worker 层级模式】
│ └─ 是 → 【层级式(Supervisors of Supervisors)】
└─ 否 → 任务是否是长时间异步的?
├─ 是 → 【黑板架构】
└─ 否 → Agent 数量是否 ≤ 5?
├─ 是 → 【Swarm(注意设置终止条件)】
└─ 否 → 【考虑重新拆分为层级模式】
把每个 Agent 交接点当作版本化 API:Schema 验证与置信度阈值是阻止级联故障的关键。
09总结与 2026 年趋势
- 编排拓扑 > 模型选择:AdaptOrch 证明协作方式比底层模型影响更大。
- 从简单开始:先顺序流水线验证价值,有需求再引入并发与层级。
- MCP + A2A 是未来标准:新项目宜直接采用。
- 可观测性不是可选项:57% vs 8% 的差距正是事故温床。
- 联邦编排:多团队维护子编排器,共享路由策略。
- 多模态多Agent:视觉、音频与文本 Agent 混合协作正在成熟。
- 自适应拓扑选择:系统按任务特征动态选最优编排模式(AdaptOrch 方向)。
- EU AI Act 合规:完整决策审计链成为强制要求。
10六步 Runbook:云端 Mac 部署多Agent系统
-
01
选定框架与模式:首个生产工作流建议从 LangGraph 顺序流水线起步,对照第八节决策树再引入并行;初始 Agent 数控制在 3–5 个。
-
02
控制台拨备云端 Mac:登录 NUKCLOUD 控制台,选择 16 GB+ 统一内存(多进程 + 向量库建议 32 GB);定价页 按小时试跑。
- 03
-
04
加装生产护栏:高风险节点启用 HITL
interrupt();外部 Agent 调用加熔断器;设 Token 预算上限;OpenTelemetry 关联 ID;并行汇聚节点设defer=True。 -
05
部署与验证:用边缘输入做冒烟测试;确认可观测后端出现 per-agent 追踪;Benchmark P95 延迟与单次任务成本。CI 集成可参考 GitHub AI Agent Workspace Runbook。
- 06
在本地 MacBook 或共享 VPS 跑多Agent编排器,常见合盖休眠中断长会话、带宽抖动导致 SSE/A2A 断连、多开发者争抢同一进程。当 LangGraph 检查点、MCP 工具 Server 与后台 Agent 循环需要稳定 7×24 在线时,NUKCLOUD 多区域裸金属 Mac / 云端 Mac 节点在独占租户边界与规格弹性上更易与 Agent 工作流对齐。
11常见问题
defer=True,等待全部分支完成后再执行。