7.2 通信协议与消息传递拓扑:星型、层级、网络与辩论 多个 Agent 协作,第一件事就是「能对话」。但怎么对话——谁对谁说、按什么顺序、消息怎么格式化、共享什么状态——直接决定了协作的效率与可靠性。这一节讲清四种主流通信拓扑,以及消息格式与共享黑板机制。 7.2.1 通信的根本问题 多 Agent 通信要回答四个根本问题: 问题 | 含义 谁和谁通信 | 拓扑结构 何时通信 | 同步还是异步、按什么触发 说什么 | 消息格式与内容 共享什么 | 全局状态、黑板、消息历史 不同回答,导出不同的协作架构。 7.2.
多个 Agent 协作,第一件事就是「能对话」。但怎么对话——谁对谁说、按什么顺序、消息怎么格式化、共享什么状态——直接决定了协作的效率与可靠性。这一节讲清四种主流通信拓扑,以及消息格式与共享黑板机制。
多 Agent 通信要回答四个根本问题:
| 问题 | 含义 |
|---|---|
| 谁和谁通信 | 拓扑结构 |
| 何时通信 | 同步还是异步、按什么触发 |
| 说什么 | 消息格式与内容 |
| 共享什么 | 全局状态、黑板、消息历史 |
不同回答,导出不同的协作架构。
| 拓扑 | 结构 | 适用 |
|---|---|---|
| 星型 | 一个协调者 + 多个执行者 | 任务分发 |
| 层级 | 树形,上下级 | 复杂组织 |
| 网络 | 任意点对点 | 自由协作 |
| 辩论 | 多方 + 仲裁者 | 多视角验证 |
下面分别展开。
一个协调者 Agent(Hub)与多个执行者 Agent(Spoke)通信,执行者之间不直接通信。
| 维度 | 星型 |
|---|---|
| 通信路径 | O(N)(协调者到每个) |
| 协调复杂度 | 低(协调者统一管理) |
| 一致性 | 高(协调者仲裁) |
| 灵活性 | 低(执行者不能直接对话) |
| 单点风险 | 协调者挂了全停 |
💡 星型是最简单的多 Agent 拓扑。它适合「任务分发 + 结果合并」型协作,工程实现最简单。但它的瓶颈在协调者——所有信息都过它一处,协调者的能力与带宽成为系统上限。
树形结构——上层 Agent 把任务拆给下层,下层再拆给更下层,结果逐级上报。
| 维度 | 层级 |
|---|---|
| 通信路径 | O(N)(每层只与上下层) |
| 协调复杂度 | 中(每层各管一摊) |
| 一致性 | 高(命令链清晰) |
| 灵活性 | 中(受层级约束) |
| 可扩展性 | 强(适合大规模) |
⚠️ 层级的危险是「信息失真」:信息在层级中层层传递,每一层都可能丢失或扭曲。层数越多,失真越严重。生产层级系统通常控制在 2-3 层,避免过深。
任意两个 Agent 都可直接通信,无固定中心。
| 维度 | 网络 |
|---|---|
| 通信路径 | O(N²)(任意对) |
| 协调复杂度 | 高(无中央仲裁) |
| 一致性 | 低(可能冲突) |
| 灵活性 | 极高 |
| 可扩展性 | 差(N²爆炸) |
⚠️ 网络的危险是「协调失控」:无中央仲裁,Agent 之间可能互相矛盾、循环争论、陷入死锁。纯网络拓扑难以规模化,生产中常加一层「弱协调者」做兜底。
多个 Agent 围绕同一问题各抒己见,由仲裁者汇总。
| 维度 | 辩论 |
|---|---|
| 通信路径 | O(N)(都通过仲裁者) |
| 协调复杂度 | 中(仲裁者管规则) |
| 一致性 | 高(仲裁者最终裁决) |
| 质量 | 高(多视角交叉) |
| 成本 | 高(多轮辩论) |
💡 辩论拓扑的核心价值是「质量提升」:通过让多个 Agent 从不同立场出发互相反驳,系统能发现单 Agent 看不到的盲点。这种「用竞争换质量」的思路,是 7.4 节的主题。
| 拓扑 | 通信 | 协调 | 一致性 | 灵活 | 适用 |
|---|---|---|---|---|---|
| 星型 | O(N) | 低 | 高 | 低 | 任务分发 |
| 层级 | O(N) | 中 | 高 | 中 | 大型组织 |
| 网络 | O(N²) | 高 | 低 | 高 | 自由协作 |
| 辩论 | O(N) | 中 | 高 | 中 | 多视角验证 |
通信拓扑解决「谁和谁说」,消息格式解决「说什么」。一个良好的消息格式应包含:
| 字段 | 内容 |
|---|---|
| from | 发送者 |
| to | 接收者(或 broadcast) |
| type | 消息类型(请求/响应/通知) |
| content | 正文 |
| task_id | 所属任务 |
| timestamp | 时间戳 |
| in_reply_to | 回复哪条消息 |
| 类型 | 用途 |
|---|---|
| REQUEST | 请求对方做某事 |
| RESPONSE | 回复请求 |
| NOTIFY | 通知状态变化 |
| QUERY | 查询信息 |
| BROADCAST | 广播给所有 |
{ from: "manager_agent", to: "coder_agent", type: "REQUEST", content: "请实现用户登录接口", task_id: "T-2026-001", timestamp: "2026-07-20T10:00:00Z" }
除了点对点消息,多 Agent 系统常采用共享黑板(Blackboard) 模式——一个所有 Agent 都能读写的公共状态区。
| 类型 | 内容 |
|---|---|
| 任务状态 | 各子任务进度 |
| 中间结果 | 各 Agent 的产出 |
| 共享知识 | 全局事实、决策 |
| 事件日志 | 已发生的关键事件 |
| 维度 | 点对点消息 | 共享黑板 |
|---|---|---|
| 通信 | 显式指定接收者 | 广播式 |
| 解耦 | 紧耦合(要知道谁在) | 松耦合(只读写黑板) |
| 可观测 | 难(消息散落) | 易(黑板是单一视图) |
| 一致性 | 高 | 需并发控制 |
💡 黑板模式的价值是「松耦合」:Agent 不需要知道其他 Agent 是谁,只需读写黑板。这让系统极易扩展——加新 Agent 不影响老的。生产多 Agent 系统常组合「点对点消息 + 共享黑板」:紧急请求走消息,状态同步走黑板。
| 模式 | 特点 | 适用 |
|---|---|---|
| 同步 | 发送方等接收方响应 | 强依赖、必须等结果 |
| 异步 | 发送方不等,继续干别的 | 并行、解耦 |
| 事件驱动 | 基于事件触发通信 | 状态变化通知 |
⚠️ 异步通信的陷阱是「回调地狱」:异步链路一长,错误处理与状态追踪都变复杂。生产系统常用「事件总线 + 状态机」管理异步流,避免散乱的回调。
| 反模式 | 表现 | 后果 | 正确做法 |
|---|---|---|---|
| 全网络拓扑 | 任意 Agent 互发消息 | 协调失控 | 加协调者或分层 |
| 消息过载 | 每步都广播给所有 | 浪费 + 干扰 | 按需定向通信 |
| 无消息格式 | 自由文本 | 解析困难 | 结构化 schema |
| 无共享黑板 | 全靠点对点 | 状态散乱 | 加公共状态区 |
| 同步阻塞 | 等响应卡死 | 延迟高 | 异步或超时 |
| 无通信审计 | 不知道谁说了啥 | 调试困难 | 全程日志 |
下一节《7.3 角色分工与协作框架》将讨论具体怎么分工——经理/程序员/审核员、CAMEL 式角色扮演,以及 AutoGen、MetaGPT、CrewAI、ChatDev 四大框架。