
很多人第一次接触 Agent 时,会试图用一个“全能助手”解决所有问题。结果往往是:上下文爆炸、职责混乱、可靠性极差。一个 Agent 既要查数据库、又要写文案、还要做审核,最终每件事都做得平庸。
这和人组织工作的逻辑一样:复杂任务需要分工,分工需要协作,协作需要协议。多智能体开发的核心,不是“多个 AI 一起聊天”,而是把复杂任务拆解成角色清晰、边界明确、可验证的协作系统。
本文讲清楚多智能体的架构模式、通信机制、落地方法与避坑要点,并用少量代码展示核心骨架。
先泼一盆冷水:多数场景不需要多智能体。如果你只是想让 AI 写文章,单 Agent 加工具就够了。
多智能体真正有价值的场景,满足以下至少一条:
判断标准:如果拆成多智能体后,每个角色的提示词更短、工具更少、职责更单一,那就是合适的。反之,如果拆完还要互相传一大堆上下文,不如不拆。
角色按顺序执行,前一个的输出是后一个的输入。
需求分析 → 代码生成 → 测试生成 → 代码审查 → 交付优点:逻辑清晰,易调试。 缺点:串行慢,错误会向后传播。
一个主管 Agent 负责拆解任务、分配工作、汇总结果;多个工人 Agent 执行具体任务。
主管
/ | \
工人A 工人B 工人C优点:适合可并行的大任务,扩展性强。 缺点:主管是瓶颈,拆解质量决定成败。
多个 Agent 对同一问题给出方案,互相批评,最终收敛。
Agent A(方案)←→ Agent B(质疑)←→ Agent C(裁决)优点:提升复杂决策质量,减少幻觉。 缺点:成本高、慢,适合高价值低频率任务。
多级主管,适合超大任务。但工程复杂度高,绝大多数团队不需要。
务实建议:从流水线或主管-工人起步,辩论模式用于关键决策,层级模式慎用。
多智能体失败,80% 死在通信上。角色之间传什么、怎么传,决定了系统是否可控。
# 反例:传一大段自然语言,下游 Agent 要重新理解
message = "我查了一下这个订单,它好像是三天前下的,金额大概五百多,状态可能是待发货……"
# 正例:结构化消息,字段明确
message = {
"task": "check_order",
"order_id": "A12345",
"status": "pending_shipment",
"amount": 528.00,
"confidence": 0.95
}结构化消息的好处:下游不需要“猜”,可校验、可审计、可测试。
from dataclasses import dataclass
@dataclass
class AgentMessage:
sender: str # 谁发的
receiver: str # 发给谁
task: str # 任务类型
payload: dict # 结构化数据
status: str # success / failed / need_help
trace_id: str # 全链路追踪 IDtrace_id 极其重要:多智能体出问题时,你需要能回溯整个调用链。
下面用一段示意性伪代码,展示主管-工人模式的核心结构。代码量很少,但逻辑完整。
class Supervisor:
def __init__(self, workers):
self.workers = workers # {"research": agentA, "write": agentB}
def run(self, goal, max_rounds=5):
plan = self.plan(goal) # 拆解任务
results = {}
for step in plan:
role = step["role"]
if role not in self.workers:
return f"错误:没有可用的角色 {role}"
worker = self.workers[role]
# 只传该角色需要的上下文,不传全部历史
msg = AgentMessage(
sender="supervisor",
receiver=role,
task=step["task"],
payload={"input": step["input"], "context": results},
status="pending",
trace_id=step["trace_id"]
)
result = worker.handle(msg)
results[role] = result.payload
# 关键:验证失败立即停止,不盲目往下走
if result.status != "success":
return f"任务在 {role} 阶段失败,已转人工"
return self.aggregate(results)
def plan(self, goal):
# 实际项目中由模型生成,这里用固定结构示意
return [
{"role": "research", "task": "collect", "input": goal, "trace_id": "t1"},
{"role": "write", "task": "draft", "input": goal, "trace_id": "t2"},
]这段代码体现了四个关键设计:
光有架构不够,还需要机制。
建议:优先消息传递,共享状态只用于只读的公共知识。
多个 Agent 给出矛盾结论时怎么办?
必须有明确的终止规则,否则会无限循
if round_count >= max_rounds:
return escalate_to_human()
if consensus_reached(results):
return finalize(results)
if cost_exceeded(budget):
return abort("预算超限")多智能体 Demo 很容易,生产化很难。差距在四件事:
每个 Agent 的输入、输出、工具调用、耗时、成本,都要记录。没有 trace,多智能体就是黑箱。
准备固定测试集,衡量:
没有评测的多智能体,等于没有测试的分布式系统。
不同 Agent 授予不同工具权限。研究员只能读,执行者才能写。防止一个 Agent 的错误影响全局。
多智能体天然比单 Agent 贵。必须设置:
共同点:任务可拆、角色可辨、结果可验证。
多智能体的下一站,是智能体组织:有明确岗位、汇报关系、协作协议和绩效度量。人类在其中扮演目标设定者和最终决策者,Agent 团队负责执行。
但无论形态如何演进,工程原则不变:
多智能体开发的本质,不是“让更多 AI 一起工作”,而是用工程手段把复杂任务组织成可靠的协作系统。架构是骨架,通信是血脉,验证是免疫系统,成本控制是生命线。
少量代码就能跑通骨架,但真正的难点在于:想清楚谁负责什么、怎么交接、出错怎么办。想清楚这些,多智能体才能从炫技的 Demo,变成真正能交付的系统。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。