跳转至

多 Agent 与人机协作

多 Agent 与人机协作

多 Agent 是组织结构设计,不是数量竞赛:让多个具有不同角色、工具、记忆或权限的 Agent 协同完成任务。技术模式(主管-员工、辩论、投票、市场竞价,以及编排框架)见 Agent 架构与多智能体,本页只讲产品决策:什么时候值得上多 Agent、编排模式怎么选、上下文怎么隔离与共享、怎么观测与控成本、人怎么进团队,以及一份反模式清单。

本文从 Agent 产品设计深度篇 分流而来。先记住三个判断:

  • 多 Agent 是花钱买并行度与上下文隔离:官方实测 token 消耗约 15 倍,收益不量化就不该上
  • 先单 Agent,评测证明收益后再多 Agent:这是官方原则,也是社区血泪教训的共识
  • 人是团队的一部分:编排者、监督者、审批者三种角色,长期运行必须有治理

单 Agent vs 多 Agent 的决策

官方实测:先把账算明白

Anthropic 的实测是目前最权威的取舍数据:以 Claude Opus 4 为主、Sonnet 4 为子 Agent 的多 Agent 系统,在其内部研究评测上比单 Agent Opus 4 好 90.2%,但 token 消耗约为普通对话的 15 倍;在 BrowseComp 上 token 用量单独解释了约 80% 的表现差异(多 Agent 研究系统)。

拆开看这笔账:多 Agent 的收益是三个——并行度(多个子任务同时跑)、上下文隔离(每个子 Agent 只看自己那部分,主 Agent 不被过程淹没)、专业化(每个子 Agent 配专属工具与提示词);代价也是三个——token 倍数编排复杂度(拆任务、合并结果、异常处理)、调试成本(失败跨 Agent 传播,定位难)。

用一张表把账算出来再决定:

单 Agent 基线多 Agent 期望决策
成功率 60%,成本 $1/任务成功率 85%,成本 $15/任务单次失败代价 > $50 才值得,否则不划算
成功率 80%,成本 $2/任务成功率 82%,成本 $30/任务不值得——收益无法覆盖 15 倍成本
单上下文装不下(超出窗口)拆分后各子任务都在窗口内值得——这是硬约束,不是口味问题

这个账本解释了为什么「先单 Agent」是理性而非保守:多 Agent 的 90.2% 提升中,token 用量单独解释了约 80% 的表现差异——一部分提升来自「花了更多 token」而不是结构本身。如果单 Agent 加预算(更长的思考、更多的检索尝试)也能拿到接近的结果,多 Agent 的结构性收益就要重新评估。

适用条件:任务天然可拆、子任务可并行、可各自隔离上下文、失败代价高;失效条件:任务强依赖、必须共享同一上下文、失败代价低——先算账,算不明白就当不值得。

任务画像:适合与不适合

维度适合多 Agent适合单 Agent
任务长度长、可拆、可并行短、单轮、链式
上下文子任务可隔离,单窗口装不下需要共享同一上下文
工具子任务各自用不同工具集工具集中、单一
质量需要互相审查、多方验证单 Agent 已达标
权限子任务需要不同权限隔离权限统一、无特殊要求

官方口径要背下来:大多数编码任务不适合多 Agent——它们需要所有 Agent 共享同一上下文、Agent 间强依赖(多 Agent 研究系统);官方点名的适合场景是重度并行、信息量超出单一上下文窗口、需要对接大量复杂工具的研究类任务(汇总口径见 Agent 产品设计深度篇)。

三个典型任务套一遍画像,直观感受差异:

任务可拆可并行上下文可隔离结论
客服问答弱(对话是单线)弱(同一会话上下文)单 Agent + 工具
行业调研报告强(分渠道、分主题并行收集)强(各子任务独立收集、主 Agent 汇总)多 Agent 值得试
编码任务弱(模块间强依赖)弱(需共享全局理解)单 Agent + 工作流

社区实证:linux.do 7-Agent 流水线复盘

社区实践与官方建议互证。linux.do 上有团队复盘自研的 7-Agent 研发流水线(需求分析、架构、审查、编码、测试、部署),结论是链路冗余、职责边界模糊;回复中多名实战者直言「多 Agent 是无效的副作用」——上下文混乱、无效沟通,主张「一个上下文内的 multi mode 比 multi agent 更适合」;另有回复提醒「生产系统不敢用」「这么多 Agent 一个小问题都得跑半天」(linux.do 讨论帖)。

对产品经理的三条启示:

  • 从众上多 Agent 是预算与口碑双输:流水线「看起来完整」不等于「跑得快」,链路里的每一步都要真金白银的 token 与维护成本
  • 职责边界模糊是组织设计问题:先写清楚每个 Agent 的输入、输出、验收标准,再谈要不要拆——边界都画不清,拆了只会更乱
  • 决策顺序固定:工作流 → 单 Agent → 人工复核 → 评测证明收益 → 才考虑多 Agent

画像自检:五个问题

立项前逐题自检,五个都答「适合」才值得继续:

  • 任务能拆成 ≥2 个相互独立的子任务?
  • 每个子任务都能独立验证完成质量?
  • 子任务不需要共享同一上下文?
  • 并行执行带来的收益能量化(时间、质量)?
  • 失败代价足够高,值得为质量多付 5-15 倍成本?

有一个答不上来,就先跑单 Agent——多 Agent 不会让「说不清」的任务变清楚,只会让说不清的复杂度放大十倍。

混合形态:不必全 Agent 化

「单 Agent vs 多 Agent」不是二选一。Anthropic 的官方建议是先找最简单的方案,只在确有收益时增加复杂度Building Effective Agents)——很多产品的最终形态是「工作流外壳 + 局部多 Agent」:

  • 评估-优化循环:生成 + 评估两个 Agent 只在「生成质量是瓶颈」的环节启用,其他环节单 Agent 完成
  • 并行投票:只在「结论需要稳健」的单点启用(如风险判断投 3 票),而不是整条流水线拆成多个 Agent
  • 对抗式复核:独立上下文里的复核子 Agent 审查产出——「干活的人不给自己打分」,是官方推荐的并行模式(Claude Code 最佳实践

适用条件:任务整体不适合多 Agent,但存在 1-2 个可独立验证的质量瓶颈环节;失效条件:把每个环节都改成「生成 + 评估」对,成本直接翻倍——混合形态的边界是「评测证明该环节确实需要」,而不是「听起来更稳」。

编排模式的产品含义

三种委托方式

多 Agent 怎么把任务交出去,产品上对应三种协作关系(原语机制见 Agent 架构与多智能体OpenAI Agents SDK):

模式控制权适用场景产品风险
orchestrator-worker(主管拆任务)主管汇总、可监督子任务粒度不可预知、需并行主管成瓶颈;委派含糊 → 重复劳动
handoffs(交接责任)完全移交,原 Agent 退出任务链天然分阶段(如客服 → 专家)责任链断裂;用户面对「换人」
工具调用(保留监督)主 Agent 每步可控需要用户随时接管、结果需校验上下文累积;主管过载

选择规则:

  • 用户需要随时接管、任务结果需要逐步校验 → 工具调用式(主 Agent 保留监督)
  • 任务阶段边界清晰、每个阶段是专家活 → handoffs(把责任一起交出去)
  • 任务并行探索、结果统一汇总 → orchestrator-worker

失效条件:无论哪种模式,委派质量都决定上限;模式解决的是「控制权结构」,解决不了「子任务写不清楚」——那是下一节的问题。

委派质量:把子任务写清楚

Anthropic 的工程经验:子任务描述含糊会导致重复劳动;子 Agent 把产物写入文件系统、只传引用给主 Agent,避免「传话游戏」式的信息失真(多 Agent 研究系统)。

委派模板,五个字段缺一不可:

字段要求反面例子
目标一句话说清要什么「处理一下这个需求」
输入引用给文件/数据路径,不贴大段内容把整段资料粘进消息
约束不做什么、边界在哪
验收标准怎么算完成,可检查「做得差不多就行」
交付物写到哪里、什么格式口头汇报

适用条件:子任务可独立验证(有测试、有格式检查、有终态);失效条件:子任务无法独立验证时,委派模板写得再细也是空转——先让子任务可验证,再谈委派。

依赖关系与责任链

子任务之间不总是并行,编排前先画依赖图:

  • 无依赖 → 并行扇出(并行度高才能摊薄 token 倍数,这是多 Agent 账本的关键变量)
  • 顺序依赖 → 串行传递,前一个子任务的产物是后一个的输入
  • 部分依赖 → 按层并行:同层无依赖的一起跑,层与层之间同步

责任链要提前约定:控制权可以移交,最终责任不随控制权移交。handoffs 模式下用户抱怨「刚才那个 Agent 做的事」,产品上要能追溯到原始 Agent 与交接记录;orchestrator-worker 模式下主管对汇总结果负全责,子 Agent 对各自产物负责。责任链写进 trace 与审计,是事故定责的前提。

失效条件:依赖图画错(把有依赖的子任务标成并行)会导致合并结果互相覆盖——画完图先人工走查一遍「每个子任务的输入是否都已在场」。

上下文隔离与共享

多 Agent 的上下文策略是最容易被拍脑袋的决策,先分清两个概念:

  • 隔离上下文:每个子 Agent 只有自己的上下文,主 Agent 只收结论——防污染、可并行、省 token;代价是共享事实要显式传递
  • 共享上下文:所有 Agent 读写同一份上下文/黑板——简单直接;代价是互相污染、上下文爆炸、调试困难

产品决策:共享「状态」,不共享「上下文」。需要跨 Agent 共享的,用结构化载体——数据库(任务进度、审批状态)、文件系统(产物、草稿)、消息总线(事件通知),而不是把所有东西堆进 prompt:

共享什么(用状态载体)不共享什么(各 Agent 私有)
任务进度、完成状态推理过程、思考链
最终产物、批准后的结果草稿、中间失败细节
审批状态、权限变更工具调用的原始输出

适用条件:子任务间只依赖「结果」时隔离收益最大;失效条件:把「共享状态」做成「共享上下文」是高频翻车点——状态要结构化、可查询、可权限控制,而上下文是「当前这轮模型看到的全部文本」,两者混用等于既丢了隔离又丢了效率(上下文工程的取舍见 Agent 架构与多智能体 的「上下文工程」一节)。

三个结构化载体的分工:

载体适合共享什么不适合
数据库任务进度、审批状态、元数据大块文本产物
文件系统产物、草稿、报告高频小状态更新
消息总线事件通知、状态变更广播需要查询的历史记录

选择标准:状态要被查询 → 数据库;状态要被读取/编辑 → 文件系统;状态要通知 → 消息总线。不要为了「统一」把所有东西塞进一个载体。

每个子任务的上下文预算也要在设计期核算:子任务读多少资料、产出多大产物、主 Agent 汇总时塞多少——超预算的方案在设计阶段砍掉,而不是上线后靠压缩硬扛(上下文溢出的组合治理见 Agent 架构与多智能体)。

可观测性与调试

日志与 tracing

多 Agent 的可观测性要求比单 Agent 高一个维度:单 Agent 只需回答「这个任务怎么失败的」,多 Agent 还要回答「失败在哪个子任务、归因到哪个 Agent、token 花在哪一步」。上线前必须能回答三个问题:

  • 复现:trace 回放失败案例——哪条执行链、哪个子 Agent、哪次工具调用开始跑偏(主流 SDK 内置 tracing,如 OpenAI Agents SDK
  • 归因:token 与成本按子任务/子 Agent 拆分——15 倍的账花在哪,预算优化的靶子在哪
  • 审计:谁在什么时候让 Agent 做了什么——多 Agent 链路上的责任划分依据

trace 的最小字段集:parent/child 关联 ID、子任务状态机(pending / running / waiting_approval / done / failed)、每次工具调用的参数与结果摘要、token 统计、审批记录。没有 trace 的多 Agent 无法上线——这不是可选项(AgentOps 体系见 Agent 架构与多智能体)。

多 Agent 的运营指标集(比单 Agent 多三类):

类别指标说明
任务层任务成功率、单任务成本、平均完成时长与单 Agent 基线对比,验证多 Agent 是否值
子任务层子任务成功率、重试率、并行利用率并行利用率低说明拆分或调度有问题
归因层token 按子任务占比、失败子任务 Top N预算优化与调试的靶子

每月把归因层数据拉出来看一遍:哪个子任务永远失败、哪个子任务 token 占比畸高——多 Agent 系统的坏味道通常先在这些数字里露头。

定位问题的顺序建议:先看归因层数字(哪个子任务失败最多)→ 再打开失败任务的 trace 回放(哪一步开始跑偏)→ 最后用失败样本构造评测回归(修完不再复发)。按这个顺序走,多 Agent 的调试成本可以从「大海捞针」降为「按图索骥」。

面向用户的透明度

面向用户的设计原则:像看项目看板一样看 Agent 团队。终端用户需要的是:

  • 子任务列表:这个任务被拆成了几步,现在进行到第几步
  • 当前执行步骤:正在做什么、用了什么工具、结果如何(与 Agent 工具与 MCP 产品化 的工具展示 UX 同一套原则)
  • 汇总报告:结论可点回来源、失败如实标注、人工介入点明确

适用条件:任务可拆分成对用户有意义的步骤(调研、报告、客服);失效条件:任务拆分成用户看不懂的技术碎片时,展示子任务列表只是噪音——按用户角色切粒度:终端用户看进度与结论,运营/PM 看子任务链与成本,工程看完整 trace。

多 Agent 的运营成本

成本模型与预算护栏

成本模型一句话:多 Agent 成本 = 单次调用成本 × 任务拆分倍数 × 调用量。15 倍是官方实测的典型值而不是上限——并行投票、辩论类模式按参与 Agent 数线性放大;一个任务拆成 N 个子任务,基础输入 token 就近似 ×N(每个子任务都要重新读任务说明与部分共享资料)。

估算流程(方法见 LLM 成本测算 的三步法):

  1. 先单 Agent 跑通任务,测出基线 token/任务
  2. 按拆分数与并行度估算倍数(orchestrator-worker 通常 5-15 倍,投票按参与数 ×N)
  3. 乘工程系数(多 Agent 的重试、评测、失败重跑更频繁,取 1.3-1.5 甚至更高)
  4. 对照收益(成功率提升 × 失败代价)决定值不值

账本示例(沿用 LLM 成本测算 的口径):

  • 单 Agent 基线:每任务输入 50k token、输出 5k token,按输入 $3/M、输出 $15/M 计,单次 ≈ $0.225
  • 拆成 5 个子任务的 orchestrator-worker:每个子任务都要重读任务说明与共享资料,输入膨胀到 30k × 5 + 主 Agent 汇总 30k ≈ 180k,输出约 20k → 单次 ≈ $0.84,约 3.7 倍
  • 加工程系数 1.3(重试、失败重跑、评测)→ 实际约 5 倍
  • 决策:任务成功率从 70% 提到 90%,每 100 个任务少失败 20 个;单次失败损失 > $1.5(约 5 倍成本差)才值得,否则不划算

注意:15 倍是官方在研究型任务上的实测,业务任务通常没有那么多并行探索,实际倍数要自己测——用上面的流程跑一遍再立项,别拿别人的倍数替自己算账。

多 Agent 的降本杠杆(按见效排序):

  • 缓存共享前缀:任务说明、共享资料放在 prompt 前缀并保持格式稳定,多个子任务命中 prompt 缓存折扣(计费模型见 LLM 成本测算
  • 小模型干杂活:分类、摘要、格式整理类子任务用低成本模型,关键推理才用旗舰
  • 降并行度:5 路并行改 3 路,多数任务收益损失有限,token 直接省约 40%
  • 结果复用:同一子任务的结果缓存,重复请求不重跑

适用条件:成本已超预算、收益差一口气时;失效条件:降本动了关键子任务的模型或并行度,成功率掉回单 Agent 水平——每次降本都要盯任务层指标回归。

预算护栏三条,缺一不可(与 Agent 产品设计深度篇 的成本防护一致):

  • 任务级max_turns 步数上限、max_tokens 上限、单任务成本上限,超出即终止
  • 账户级:单用户/单租户日限额,超限降级或限流
  • 告警:单日成本环比突增(如 >50%)立即告警排查;成本看板按产品、功能、用户拆分

失效条件:护栏设了但没有降级路径 = 空转——预算用尽时的行为要预先定义(降级为单 Agent、降为每步确认、或转人工),而不是让任务静默卡死。

什么时候拆回单 Agent

出现以下信号之一,就把多 Agent 拆回单 Agent(或降级为工作流)——这是成本纪律而不是失败:

信号表现动作
成本失控token 倍数远超预期,收益无法覆盖先降并行度,再拆回单 Agent
上下文混乱共享状态互相污染、结论互相矛盾改隔离 + 结构化共享;无效则拆回
调试困难失败不可复现、问题跨 Agent 传播补 trace 归因;归不出来就拆回
维护成本高每个子 Agent 都要维护提示词、工具、评测合并职责,只保留收益明确的拆分

拆回不是推倒重来:子任务模板、委派描述、评测集都是资产,保留下来,等任务复杂度或模型能力变化后再评估是否重启多 Agent。

人机协作团队

人类的三重角色

多 Agent 不是无人团队,人类在其中可以扮演三种角色,产品要为每种角色设计界面与时机:

角色做什么典型时机产品含义
编排者设定目标与边界、调整计划、改拆分任务开始、中途改需求计划可编辑、任务可重排
监督者观察进度、随时介入叫停执行全程进度看板、暂停/接管
审批者在关键节点批准或拒绝不可逆操作前审批流 + 拒绝反馈给系统学习

HITL 的设计要点(与 Agent 产品设计深度篇 的「人在环内」一节配套):

  • 检查点式介入:LangGraph 的 interrupt 机制允许在任何节点暂停并检查、修改 Agent 状态后再继续,适合「先看再放行」的高风险步骤(LangGraph 官方文档
  • 审批流可恢复:OpenAI SDK 的审批流支持「运行暂停 → 人类批准/拒绝 → 从暂停点恢复」,拒绝结果还会反馈给模型学习(OpenAI Agents SDK — Running Agents
  • 挂起等待而非超时失败:审批可能要等几分钟甚至几小时,Agent 必须能「挂起等待」——长任务与人协作是持久化执行框架的标准场景(同上)

审批流的四种结果都要实现(LangGraph 的 interrupt 语义,LangGraph 官方文档):

结果行为产品含义
approve从暂停点继续记录审批人与时间
reject返回修改意见,Agent 修订后重新提交意见要结构化,Agent 才知道改什么
edit人类直接改 Agent 状态/参数再放行适合「改个小参数就放行」的场景
abort终止整个任务终止后生成失败摘要供复盘

审批超时也要有策略:超时默认拒绝(安全优先)还是超时自动放行(效率优先)——取决于操作的可逆性;不可逆操作一律超时默认拒绝。

失效条件:审批点太多 → 用户疲劳、形同虚设。经验值:单任务 1-3 个真风险点;把审批设在可逆操作上是浪费注意力,把不可逆操作漏掉审批是玩火。

长期运行 Agent 的团队治理

多 Agent 系统长期运行时,产品团队要按「运维一个团队」的标准治理,而不是按「运维一个函数」:

  • 值班(on-call):Agent 挂起、失控、成本异常时谁响应;SLO 建议跟踪任务成功率、人工接管率、单任务成本三个数
  • 事故响应:能暂停全部 Agent、回滚策略版本、还原 trace、撤销副作用(补偿操作或人工恢复流程)
  • 权限回收:session 级授权、定时回收、人员离职/换岗自动回收——长期运行的 Agent 权限只会膨胀,不会自动收缩
  • 确定性机制优先:靠提示词自觉的约束(「不要写入该目录」)会失效,零例外保证的动作要用 hooks 等确定性机制实现(Claude Code 最佳实践
  • 代理权动态调节:系统反复失败时自动回退到更保守的交互方式(每步确认、降级单 Agent),避免无人值守静默失控(Claude Code 最佳实践
  • 告警分级:P0(Agent 失控、越权、成本爆炸)→ 立即响应并暂停相关 Agent;P1(成功率跌破基线)→ 当日处理;P2(指标劣化趋势)→ 排期处理——分级写进值班手册,否则值班的人不知道该不该叫醒别人

事故复盘四问:失败在哪一个子任务?归因到哪个 Agent?trace 能否复现?防回归评测补了没有?——四问答不齐,复盘就是走形式。

反模式清单

评审多 Agent 方案时逐项打勾,命中任何一项都要先解释再立项:

反模式识别信号纠正动作
为了炫技上多 Agent「显得先进」「架构好看」是主要理由先跑单 Agent 基线,评测证明收益
共享上下文硬拆子 Agent 都读同一份长 prompt先隔离 + 结构化共享,拆不开就不拆
无归因日志失败说不清花在哪一步、谁干的上线前补 trace,没有 trace 不上线
子 Agent 互相传话结论经多轮转述后失真、细节丢失子 Agent 直接写产物文件,只传引用
无预算上限只有「任务会成功」的假设任务级 + 账户级预算护栏 + 降级路径
职责边界模糊两个子 Agent 都在做同一件事委派模板五字段(目标/输入/约束/验收/交付物)过一遍

总结:多 Agent 是昂贵的组织变革,不是免费的架构升级。评审时先算账、再画依赖、三定责任、四补观测、五设护栏——五步都走完,多 Agent 才有资格立项。

练习

给「自动生成行业调研报告」做多 Agent 决策:画出它的任务拆分(≥3 个子任务),逐个写清委派五字段;说明哪些子任务可并行、哪些强依赖;给出预算上限与护栏参数;指出它应该用哪种委托方式(orchestrator-worker / handoffs / 工具调用)并说明理由。

来源说明

本文为原创整理,产品决策结论引用以下权威来源,访问验证日期 2026-08-24: