06 — 多智能体协作(Multi-Agent)
多智能体协作是让多个承担不同任务的 Agent 通过调用、消息、共享状态或产物共同完成目标。每个 Agent 可以维护自己的任务上下文、工具集和执行循环;它们可以使用同一个模型,也可以使用不同模型。系统还需要决定任务由谁执行、结果交给谁,以及何时算完成。
例如,研究 Agent 需要多次查资料、核对来源,写作 Agent 使用核实后的材料组织报告,审查 Agent 再对照要求检查遗漏。任务之间交付的是证据、草稿和审查意见。增加这几种角色之后,系统也多出了交接和验收环节;角色名称本身不会保证报告更准确。
单 Agent、工作流和多 Agent 怎样区分
先分别看节点内部的执行方式和节点之间的控制方式:
| 组织方式 | 谁决定下一步 | 典型过程 |
|---|---|---|
| 单 Agent 使用多个工具 | 同一个 Agent 根据工具结果继续选择动作 | 查询文档、读取详情、计算、回答 |
| 固定工作流 | 程序按预设依赖和条件调度节点 | 提取资料后写草稿,校验通过才交付 |
| 主管委派子 Agent | 主管选择子任务与执行者;子 Agent 在任务范围内推进 | 分派调查、接收结果、检查缺口并追加任务 |
| Agent 间控制权交接 | 当前 Agent 请求交接,运行时将后续输入交给接收者 | 服务台转给工单 Agent,由后者继续追问并处理 |
固定工作流可以包含多个 Agent 节点。例如外层固定执行“研究→写作”,研究节点内部仍可自主选择搜索工具。因此,判断结构时既要看节点内部有没有执行循环,也要看节点之间的调度是否预先确定。几个固定模型调用不一定需要实现多个自主 Agent。
拆分能带来什么,又增加了什么
上下文可以按任务隔离。 研究 Agent 阅读大量原始材料,主 Agent 只接收证据与结论,有机会减少无关内容对后续步骤的干扰。代价是交接可能丢失条件和来源,需要提供可回查的原文位置。上下文隔离也不等于权限隔离,工具和数据权限仍由应用限制。
独立任务可以并行。 多个调查分支分别推进时,总等待时间可能缩短,但最终仍要等必要分支完成并汇总。存在依赖的步骤无法靠增加 Agent 数量消除等待;简单的批量查询通常用工具并发就能完成。
职责可以分别配置和检查。 不同任务可使用不同工具、模型和验收要求。收益需要通过测试确认,同时统计主管调用、重复检索、审查返工及传递上下文的开销。多 Agent 既不保证更便宜,也没有固定的成本倍数。
对于工具少、上下文能有效管理、步骤明确的任务,可以先建立单 Agent 或固定工作流基线。只有出现了可明确分开的工作,并且拆分能够改善质量、耗时或隔离要求时,再比较多 Agent 方案。
三组专题
| 分组 | 要解决的问题 |
|---|---|
| 编排与协作模式 | 谁分派任务,哪些步骤并行,依赖怎样安排,何时交接控制权,结果如何审查 |
| 通信、状态与产物 | Agent 之间传什么,共享数据如何更新,多人修改同一产物怎样合并 |
| 运行与互操作 | 子任务失败后怎样继续,如何核算质量与成本,怎样接入独立部署的 Agent |
从任务需求选择结构
| 任务需求 | 优先阅读 |
|---|---|
| 子任务数量和类型要根据请求确定 | 主管与子 Agent |
| 多项独立工作同时执行,最后汇总 | 并行协作 |
| 步骤有明确先后顺序和依赖 | 流水线与任务依赖图 |
| 专业 Agent 需要接管后续对话 | 路由与 Handoff |
| 已有草稿或候选方案,需要核查与修订 | 审查、辩论与结果裁决 |
| 多个参与者围绕共同记录持续补充信息 | 共享状态与黑板协作 |
| 对方是独立部署、内部实现不可见的 Agent | A2A 协议 |
这些结构可以组合。主管可以并行委派多个调查任务,再按固定步骤调用写作与审查;远程子任务也可以通过 A2A 接入。组合时要明确每个任务的负责人、交付要求、可用预算,以及失败由哪一层处理。
具体框架用法见 LangGraph 和 Agent SDK。本章解释协作机制,多 Agent 协作应用将这些机制放进综合项目。