Multi-Agent、Handoff 与 A2A:什么时候值得拆分多个 Agent
# Multi-Agent、Handoff 与 A2A:什么时候值得拆分多个 Agent
理解主控、Supervisor、Handoff 和并行 Worker 的差异,学会判断多 Agent 是否真正降低复杂度,并认识 A2A 的协议位置。
# 先记住一句话
Multi-Agent 的价值不是 “多几个模型”,而是隔离真正不同的能力、上下文或权限;如果角色只是互相转述消息,它通常比单 Agent 更慢、更贵、更难调试。
# 常见拓扑
| 拓扑 | 控制方式 | 适用场景 |
|---|---|---|
| Agent as Tools | 主 Agent 把专家当工具调用,控制权始终在主 Agent | 专家任务短、结果可结构化返回 |
| Handoff | 当前 Agent 把会话控制权交给另一 Agent | 用户需要与不同专业角色连续交互 |
| Supervisor | 主管反复分配工作、读取结果并决定下一步 | 跨角色、多阶段、需要统一验收 |
| Parallel Workers | 独立子任务并行,聚合器合并 | 多文档分析、互不依赖的调查 |
| Peer-to-Peer | 独立 Agent 通过协议协作 | 跨系统、跨组织的长期任务 |
# 拆分的合理依据
只有出现下面至少一种情况才优先考虑拆分:
- 上下文彼此独立,合并后明显干扰;
- 工具和权限不同,需要最小权限隔离;
- 子任务可并行且收益大于协调成本;
- 不同模型或专业提示确实有可验证优势;
- Agent 属于不同系统,需要远程任务协作。
不要仅按 “前端 Agent、后端 Agent、测试 Agent” 命名就认为架构成立。每个角色还要有输入输出契约、权限、完成标准和失败责任。
# Handoff 传什么
交接内容应是结构化的最小任务包:
type Handoff = {
task: string // 接收方要完成的具体任务
reason: string // 为什么需要移交,而不是由当前 Agent 继续处理
verifiedFacts: string[] // 已核验的事实,避免接收方把推测当成结论
artifacts: Array<{
type: string // 产物类型,例如文件、报告或代码补丁
uri: string // 产物的存储位置或访问地址
}>
constraints: string[] // 权限、时间、范围等必须遵守的限制
expectedOutput: string // 期望返回的内容和格式
returnControlTo: string // 完成或失败后把控制权交还给谁
}
2
3
4
5
6
7
8
9
10
11
12
不要把全部会话原样转发。接收方需要知道事实来源和未确认假设,交接后由谁面向用户、失败时控制权回到哪里也要明确。
# A2A 放在哪一层
A2A(Agent-to-Agent)面向独立 Agent 之间的互操作:通过 Agent Card(能力说明)描述自己能做什么,用 Message 或 Task 交换工作,并支持异步状态、流式更新和产物。MCP 更偏向 Agent 或宿主应用接入工具与资源,A2A 更偏向把 Agent 当作远程任务服务来协作。
对单体项目内部的几个函数,不必为了 “标准化” 强行上 A2A;跨服务、跨团队或长时异步任务才更有价值。
# 失败和安全
- 为每个子任务设置 deadline 和预算;
- 并行任务使用统一输出 Schema;
- 主控负责最终验收,不能把 “worker 说完成” 当事实;
- 权限随角色最小化,交接不自动继承高权限;
- 给整个协作分配 correlation ID,保留父子 trace;
- 部分 worker 失败时明确采用降级、重试还是整体失败。
# 贯穿项目的合理拆分
笔记助手先保持单 Agent。批量生成一套面试专题时,可以让研究 worker 分别核验原理、框架 API 和项目案例,再由主 Agent 去重、统一表达并执行引用检查。只有当评测表明并行确实提高覆盖率且延迟可接受,才保留这套架构。
# 高频面试题与回答
回答顺序:先说结论,再解释原因,最后补一个例子或工程边界。不要逐字背诵,记住这条表达主线即可。
1. 30 秒回答:什么时候使用 Multi-Agent参考答案
我只会在不同角色确实拥有独立知识、工具、权限,或者任务真的可以并行时使用 Multi-Agent。常见方式有三种:主 Agent 把专家 Agent 当工具调用;通过 Handoff 把后续控制权交给另一个 Agent;由 Supervisor 拆分任务并协调多个 Worker。每个 Agent 都要有明确输入、输出和失败责任,最终由主控或确定性规则验收。否则一个 Agent 配合清晰工具通常更简单。
2. Handoff 和 Agent as Tools 有什么区别?参考答案
区别在于控制权是否转移。Agent as Tools 是主 Agent 临时请专家完成一个子任务,拿到结果后仍由主 Agent 继续;Handoff 则把后续会话和决定权交给接收方。前者像请同事给一份报告,后者像把客户正式转交给另一个负责人。
3. 如何处理多个 Worker 结果冲突?参考答案
不能简单让另一个模型投票。每个 Worker 的结果都要带来源和必要的置信信息,聚合器再按权威来源、时间和业务规则处理。如果证据仍无法判断,就保留分歧并请人工决定,而不是为了输出唯一答案强行合并。
4. A2A 和 MCP 能一起用吗?参考答案
可以,因为它们解决的不是同一层问题。两个 Agent 可以用 A2A 交换和跟踪任务,每个 Agent 内部再通过 MCP 使用数据库、搜索等外部工具。可以理解为 A2A 管 Agent 之间协作,MCP 管 Agent 怎样接入能力。
# 接下来学什么
下一篇学习 Human-in-the-loop,重点理解怎样把人工审批设计成可暂停、可恢复的系统状态,为高风险动作和不确定决策增加控制点。