Why not multi-agent?为什么不 multi-agent
先想清楚再开口
你讲完深度研究 Agent:6 个子问题并行,每个交给一个上下文隔离的子 Agent。面试官说:「团队里有人坚持单 Agent 就够了。你说并行版更好——拿什么证明?实验怎么设计才算公平?」
题面为本书自拟的训练题,不代表任何公司的真实面试题或真实系统。
约束
| 约束 | 取值(练习设定) |
|---|---|
| 两个方案 | 方案 S:单 Agent 循环,自己拆子问题、检索、写报告;方案 M:代码定 6 个子问题的大纲,6 个子 Agent 并行检索,最后一个综合步骤合并 |
| 任务来源 | 过去半年分析师实际提过的研究问题,约 600 个;其中一部分有分析师写过的参考报告 |
| 判定 | 「成功」= 报告通过核查:关键事实有可核查引用、没有漏掉分析师列出的必答要点;部分要点可自动核对,其余靠评委 |
| 资源 | 同一个模型、同一套检索与抓取工具;公开网页会随时间变化 |
| 预算 | 实验总花费需要事先申请,希望控制在一个月的研究预算之内 |
| 决策方 | 研究负责人要一个明确结论:上并行版、留单 Agent,还是按任务类型分开用 |
答到一半再点开:面试官补了一句
「结果出来了:并行版成功率高 8 个百分点,墙钟时间少一半,但总 token 是单 Agent 的 2.5 倍。负责人问你:该不该上?」
先口答,再展开
展开参考回答
该先问的问题
- 「更好」指什么:成功率、墙钟时间、成本,还是三者的某种组合?负责人最在意哪个?这决定主指标和判定规则,必须在跑实验之前写下来。
- 任务集能代表真实流量吗?有没有按任务类型(单一事实查询 / 多来源综述 / 需要追查的调查)分层?这决定结论能推广到哪里。
- 「成功」由谁判、看不看得出是哪个方案产出的?这决定评分会不会偏向某种风格的报告。
- 两个方案的预算怎么对齐:给同样的 token 上限,还是各自跑到收敛再比成本?这决定比的是架构还是钱。
- 线上网页会变,两个方案是同时跑还是先后跑?有没有网页快照?这决定外部环境是否一致。
一句话框架
只在子任务真能独立、结果能合并时才试 multi-agent;证明它更好要用同一批任务、同样的模型和工具、同口径的预算做配对对照,以任务为单位算统计,把质量、时延、成本分开报。
设计取舍表
| 对照要素 | 采用 | 否决的备选 | 什么证据会让我改 |
|---|---|---|---|
| 任务集 | 跑实验前就固定:从真实问题里按任务类型分层抽样,写下纳入规则,不在看到结果后增删任务 | 挑几个「适合并行」的演示题;或者看完结果再剔除「异常任务」 | 某一类任务在真实流量里占比变化很大时,重新分层抽样,旧结论只对旧分布成立 |
| 预算口径 | 两个方案都按同口径记总 token:输入、输出、缓存读写分别记;另跑一组「给单 Agent 同样多预算」的对照 | 只比默认配置,或者只数输入 token | 在多个预算水平上画出「预算–成功率」曲线后,如果两条曲线交叉,就按预算区间分别下结论 |
| 模型、工具、提示 | 同一模型版本、同一工具集、同样的停止条件;两个方案投入同样多的提示调优(都调或都不调) | 给新方案精调提示,旧方案用原样 | 不改;调优投入不对等时,结论比的是调参功夫 |
| 外部环境 | 两个方案同时跑,或者都读同一份网页快照;抓取失败率分方案统计 | 先跑一个方案、隔几天再跑另一个 | 快照无法覆盖任务所需网页时,至少同一时段交替运行,并报告两边的抓取失败率 |
| 评分 | 能自动核对的要点用程序判;其余由评委盲评,只看报告和评分标准,看不到方案名;评分标准控制长度与引用数量的影响,评委先与人工标注校准 | 让评委看出哪个是并行版;或者按「引用越多越好」打分 | 评委与人工的一致率低于事先约定的阈值时,改为人工评分或缩小自动评分的范围 |
| 统计单位与判定 | 以任务为单位配对比较。主分析事先指定:每个任务、每个方案只取一次预先指定的运行(例如第 1 次),得到一对成功 / 失败,用 McNemar 检验;另外 k − 1 次重复只用来报告稳定性(pass^k),不进主检验。判定规则、主指标、显著性水平事先写下 | 把每次运行当独立样本;或者只比两个总体成功率的区间是否重叠;或者把重复运行既当成提升精度、又沿用单次二元结果的样本量公式 | 试点显示单次运行波动很大、单次结果不足以代表方案时,主分析改用每个任务 k 次的成功比例,做配对任务 bootstrap 或用试点方差模拟功效,样本量重新算 |
| 报告内容 | 成功率差(附区间)、墙钟时间、总 token、合并冲突率、每类任务分开报;另报「并行版赢、单 Agent 输」和反过来的任务各有哪些 | 只报一个总成功率 | 不改;负责人要的是「在哪类任务上、付多少钱、换多少质量」 |
两分钟,先结论后展开
展开 2 分钟英文口述稿
I'd only try multi-agent when the subtasks are genuinely independent and the results can be merged cleanly. And before I claim it's better, I'd run a fair comparison.
Fair means four things. Same tasks: a fixed set sampled from real questions, stratified by task type, chosen before I see any results. Same model, tools and prompt-tuning effort for both designs. Same budget accounting: input, output and cache tokens counted the same way, plus a run where the single agent gets the same budget as the multi-agent version, so I'm comparing architectures, not spending. And the same environment: both run at the same time or on the same web snapshot.
Grading is blind, and the rubric doesn't reward length or citation count.
The statistics are paired and task-level. Every task runs under both designs, and the unit is the task, not the run. The main test uses one pre-specified run per design; extra runs measure stability. What matters is the tasks where one design wins and the other loses.
Finally, I report quality, latency and cost separately, per task type. When subtasks can run in parallel and merging is cheap, multi-agent may finish sooner, but that has to be measured too. If it wins on quality only because it spent more tokens, that's a budget decision for the business.
一层一层往下问
- 为何不用备选为什么不直接拿公开基准的分数,或者直接上线做 A/B?
先口答,再展开要点
- 公开基准的任务分布和你的研究问题不同,也未必覆盖「追查」「来源冲突」这类任务;它能帮你筛掉明显不行的方案,但回答不了「在我们的问题上哪个更好」。
- 线上 A/B 能量真实效果,但研究报告的质量要等分析师核查才知道,反馈慢、样本少;而且每份报告的成本是真实支出。先做离线配对对照,把明显的差异和成本算清楚,再用小流量线上实验确认。
- 离线对照的代价是任务集可能不代表真实流量,所以要按任务类型分层,并在线上阶段检查分布是否一致。
- 需求变化负责人说:「预算只给单 Agent 的量,你的并行版还赢吗?」
先口答,再展开要点
- 这就是「等预算」对照:给并行版设同样的 token 上限(按同口径计),到上限就停并出报告,比成功率。
- 更好的做法是在 3–4 个预算水平上都跑,画出两条「预算–成功率」曲线。如果并行版只在高预算时领先,结论是「钱多时用并行版」,不是「并行版更好」。
- 同时报墙钟时间:子任务能并行、合并开销小时,同样预算下并行版可能仍然更快,但这也要实测;如果确实更快,单独算它值多少钱。
- 注意:等预算的成功率要在这个配置下重新测,不能沿用默认配置下观察到的 70% 对 78%。
- 失败反证实验里并行版赢了,上线后反而更差。可能是哪里出了问题?
先口答,再展开要点
- 任务集不代表真实流量:实验里「多来源综述」占比高,线上大多是单一事实查询,拆成 6 个子 Agent 只是多花钱、多出冲突。按任务类型分层报告,才能事先看到这一点。
- 外部环境不一致:实验时两个方案先后跑,网页变了;或者线上抓取被限流,并行版的并发请求更容易失败。
- 评分有偏:评委偏爱更长、引用更多的报告,而并行版天然写得更长。要回头用人工盲评抽一批任务,核对评委的判断。
- 调优不对等:新方案在实验前被反复调过提示,旧方案没有。
- 评分偏差你用 LLM 评委打分,怎么保证它不偏向并行版?
先口答,再展开要点
- 盲评:评委只看报告正文和评分标准,报告里去掉方案名、子 Agent 标记这类痕迹。
- 评分标准按「必答要点是否覆盖、关键事实是否有可核查引用」给分,不按长度、引用数量给分;可以再加一组「长度相近」的配对样本,检查评委是否仍然偏向长的。
- 先用一批人工标注校准评委,报告评委与人工的一致率;一致率不够时,这部分改由人工评。
- 统计你跑了 50 个任务:并行版赢 12 个、输 5 个,其余两边结果相同。能下结论吗?
先口答,再展开要点
- 配对比较只看结果不同的任务:17 个不一致的任务里 12 比 5。用符号检验(McNemar 的精确版),双侧 p ≈ 0.14,这个样本量还不能说两个方案有差异。
- 不要把 50 个任务里的总成功率各算一个区间、看是否重叠;配对设计的信息都在「不一致的任务」里。
- 下一步是按估算加任务数,而不是加重复次数:同一个任务多跑几次能减少单次运行的噪声,但增加不了任务之间的差异信息。
- 运行每个方案在每个任务上跑 3 次:单 Agent 每题过 2 次,并行版每题过 3 次。这一题算谁「赢」?McNemar 还能用吗?
先口答,再展开要点
- 统计单位是任务,不是运行。同一任务的 k 次运行彼此相关,把它们当独立样本会让区间窄得不真实(伪重复)。
- McNemar 只适用于每个任务、每个方案一个二元结果。所以要事先二选一:主分析只用一次预先指定的运行(如第 1 次),McNemar 和 243 这个样本量都指这种设计,其余重复只报稳定性;或者主分析用每个任务的成功比例(2/3 对 3/3),这时不再有「赢 / 输」二元,要做配对任务 bootstrap(按任务重抽样,比较成功比例之差),样本量用试点的任务内、任务间方差模拟功效,不能套 McNemar 的公式。
- 两种做法不能混用:不能一边用 3 次运行让结果更稳,一边沿用单次二元结果的样本量。
- 稳定性单独报告:同一任务 k 次全部成功的比例(pass^k,定义见 B06),因为线上用户只会看到一次运行的结果。
这些地方最容易栽
- 症状:并行版成功率更高,但它的 token 是单 Agent 的几倍;给单 Agent 同样的预算后,差距缩小或消失。
- 根因:两个方案各自按默认配置跑,没有对齐预算,也没有统一 token 的统计口径(只数输入、漏了输出和缓存读写)。
- 防线:同口径记账;跑「等预算」对照组;在多个预算水平上画曲线,按预算区间下结论。
- 症状:「我们跑了 900 次,差异显著」,但只有 150 个任务;换一批任务再跑,结论就翻了。
- 根因:伪重复。同一任务的多次运行共享同样的难度和资料,彼此高度相关,有效样本量接近任务数,而不是运行次数。
- 防线:以任务为单位做配对比较;样本量按任务数估算;重复运行只用于估计每个任务的成功比例和稳定性。
- 症状:实验报告里并行版全面领先,但任务集是看完初步结果后「清理」过的,剔掉的恰好是并行版失败的任务。
- 根因:纳入规则没有在实验前写下,事后删改让任务集偏向某个方案。
- 防线:实验前固定任务集和纳入、剔除规则并存档;需要剔除的任务按事先的规则处理,并在报告里列出剔除数量和原因,两个方案一起剔除。
带着量纲算一遍
问:要可靠地看出两个方案差 8 个百分点,需要多少个任务?整个实验要花多少 token?
两种比较要分开算,数字不能互相借用:
- 默认配置比较(中途变化里观察到的那一组):两个方案各按默认配置跑,并行版的 token 约是单 Agent 的 2.5 倍。成功率 70% 对 78% 属于这一组。
- 等预算比较:两个方案按同一 token 上限跑。这一组的成功率和不一致比例要重新测,不能沿用 70% / 78% 和下面的 243。
假设(练习设定,全部待实测):主分析用每个任务、每个方案一次预先指定的运行(二元成功 / 失败);默认配置下,「并行版成功、单 Agent 失败」的任务占 14%,反过来占 6%,差 8 个百分点,不一致的合计 20%;双侧显著性 5%(z = 1.96),把握度 80%(z = 0.8416);另外每个方案每个任务再跑 2 次,只用于稳定性;单 Agent 每次运行约 0.886M tokens(本卡独立的练习假设,待实测;不是 A02 的口径),并行版按观察到的 2.5 倍计。
配对设计(McNemar 近似) n = (z_α × √p_d + z_β × √(p_d − δ²))² / δ²
p_d = 0.14 + 0.06 = 0.20,δ = 0.14 − 0.06 = 0.08
n = (1.96 × √0.20 + 0.8416 × √0.1936)² / 0.0064
= (0.8765 + 0.3703)² / 0.0064 ≈ 242.9 → 243 个任务(两个方案都跑)
对照:不配对的两组比较(70% 对 78%)
每组 ≈ 470.7 → 471 个任务,两组共 942 个任务
默认配置的实验 token(243 个任务)
单 Agent 0.886M + 并行版 0.886M × 2.5 = 3.101M / 任务 / 次
主分析 1 次运行 243 × 3.101M ≈ 754M tokens
含稳定性共 3 次 243 × 3 × 3.101M ≈ 2,261M tokens
等预算情景的试点(两个方案都以 0.886M 为上限)
30 任务 × 2 方案 × 3 次 × 0.886M ≈ 159M tokens
结论:配对设计需要的任务数约是不配对的一半,因为难度差异在同一任务内相互抵消了。243 只适用于默认配置、单次运行二元结果的主分析,是「任务之间独立、不一致比例稳定在 20%」时的算术估计,不是保证:任务按类型分层后,每层需要各自的样本量,区间只会更宽。默认配置的实验本身很贵(主分析约 7.5 亿 tokens,含稳定性约 23 亿),总量要先实测两边的 token 分布再定。等预算比较先用 30 个任务的试点测出这一配置下的成功率、不一致比例和单次运行的波动,再算它自己的样本量;若主分析改用每任务 3 次的成功比例,样本量要用试点方差做模拟。这里只算了模型 token,搜索与抓取的费用、评委调用和人工评分的工时另计。
敏感性:不一致比例从 20% 升到 30%(差值仍是 8 个百分点),需要约 366 个任务;差值只有 4 个百分点(不一致比例 20%),需要约 979 个任务。想看出的差异越小,任务数增长越快,大约与差值的平方成反比。
怎么实测:试点记录每个任务在两个方案下的成功次数、总 token(输入、输出、缓存分开)和墙钟时间;用试点的不一致比例重算样本量;正式实验后按任务做 bootstrap,报告成功率差的区间,并分任务类型报告。
原理去哪里补
- A02 深度研究 Agent:固定大纲内的并行子 Agent,本卡的对照对象
- A06 长任务 goal Agent:长任务里拆不拆子 Agent,同样要按本卡的方法对照
- B01 编排光谱:先分清「谁拆子任务」和「是否委派给自主 worker」,再谈对照
- B06 Agent 怎么评估:评委校准、配对比较与 pass^k 的口径
- AI 4.4 多 agent 的收益来自并行,代价来自上下文割裂 · AI 系统工程手册
- AI 4.5 为什么 agent 的评估比模型的评估难 · AI 系统工程手册
- AI 6.4 离线评测与线上 A/B 的分工 · AI 系统工程手册
- AR ch03 多智能体编排:coordinator 分工与上下文传递 · CCAR 备考手册
只写真实经历
只写真实经历,没有就空着,不编。公开版只有空表;填好的版本存在自己的私用练习记录里。
| 场景 | 当时发生了什么 | 我亲自做了什么(团队 / AI 做了什么) | 怎么发现的,结果和证据 | 之后怎么防 |
|---|---|---|---|---|
| 比较两个方案时,后来发现对比条件并不对等 | ||||
| 一个看起来显著的改进,换一批数据后消失了 |
练习记录
| 日期 | 口述用时 | 脱稿? | 答不上的追问 | 下一轮修正(≤2) |
|---|---|---|---|---|