跳到主要内容

评估:把表现变成可信的信号

这一章讲三件事: 测什么(组合体,不是裸模型)、怎么判(环境、数据集、 指标、裁判)、测完敢不敢信(统计显著性)。最后用一道成本账回答老板的问题: 「跑一个 Agent 到底多少钱」。

1. 这一章讲什么

第 01 章把 Harness 的五个功能里,「验证」留给了本章。评估在 Harness 中扮演 「验证」功能的核心角色,而本章开头就纠正一个最常见的错位:评估的对象不是 模型,而是模型与 Harness 的组合体——同一模型在不同 Harness 里表现可以差出 悬殊。区分两类问题的手段是模型替换实验:固定 Harness 只换模型——换强模型 分数不涨,瓶颈在 Harness;分数随模型能力大幅波动,瓶颈才在模型。注意它与 消融实验的分工:消融定位 Harness 内部哪个部件重要,模型替换区分瓶颈在模型还是 Harness1

2. 顶层全景

定义测试用例 → 搭环境(工具/初始状态) → 跑 Agent → 用 Rubric 评分 → 分析
│ │
└────── 评估结果 → 定位瓶颈(模型 or Harness)→ 改进 → 回到起点
图说:评估不是期末考试,是开发循环里的仪表盘。
分数只有能指导下一步动作,才有价值。

3. 核心原理

3.1 主走查:三轮退款对话的成本账

场景与全部数字来自原书;单价为原书示例设定。

问题:「跑一次 Agent 任务要多少钱?」直觉答案是「模型单价 × token 数」, 真实答案复杂得多——因为上下文会复利。书里用一轮退款任务算了完整的三轮账2:

第 1 轮 输入 2,500 token(系统提示词+任务),输出 150
第 2 轮 输入 3,200 token(第 1 轮全部 + 工具结果 + 新回复),输出 200
第 3 轮 输入 3,800 token(又长了一圈),输出 250
——每轮的输入都包含之前所有轮次:这就是复利

账单(含缓存):三轮合计 $0.022
完全无缓存: 三轮输入约 $0.029,加输出合计约 $0.036

三个放大因素把这笔小账变大:思考模式(每轮多生成 500-2,000 个思考 token, 成本可能翻 3-5 倍);工具结果反复计费(某轮一个 5,000 token 的网页, 之后每轮都要为它付钱);弯路(10 轮才完成,上下文累积 20,000+ token)。 所以书里的结论是:成本优化的核心不在选便宜的模型,而在控制轮次和上下文 增长——这恰好是第二至五章全部技术的经济动机3

3.2 环境:舞台要能重置

自动评估环境五要素:数据集、环境状态、工具、Rubric、执行协议。环境设计的 核心张力是真实性与可控性:真实任务有噪声、能显鲁棒性,但威胁可复现; 好的环境能把状态重置到相同的初始点——每次评估都是从同一起跑线发车4

人机交互型任务还多一层:真实用户很少一上来就把需求说清(「我的航班好像 有问题」)。τ-bench 的用户模拟用 LLM 扮演用户,按预设剧本逐步透露信息; τ²-bench 更进一步做成双控环境——用户模拟器也能操作共享环境(技术支持场景里, 用户照指示点了自己的按钮)5

3.3 数据集:五个挑战与防泄漏

数据集是剧本,剧本好坏比舞台更决定评估价值。书里从各大基准提炼五挑战, 最要紧的是数据泄漏:评估数据进了训练集,测的就是记忆力而非泛化—— 好比考前背过答案。各基准的防线五花八门:GAIA 用互联网上不存在的专门附件; SWE-bench-Live 持续收录模型训练截止之后的新 issue;τ²-bench 每次随机 生成参数(姓名、订单号);Terminal-Bench 埋 canary GUID——模型能背出这个 唯一标记,就说明泄漏已发生6

质量控制看 SWE-Bench Verified 的手笔:招募 93 名开发者,从 2,294 题中抽 1,699 题人工评,仅 500 题通过(29%)——高淘汰率是对评估质量的必要投资7。 可验证性上有个漂亮例子:Terminal-Bench 的「build-linux-kernel-qemu」任务, 成功标准是 QEMU 启动日志里出现自定义消息——Agent 无法伪造输出蒙混, 必须真的把内核编译出来跑起来8

还有一条贯穿后文的伏笔:评估环境与后训练环境同源——本章的判分脚本 就是第 11 章 RLVR 的奖励函数;红线是环境构造机制可复用,评估题目必须与 训练数据隔离9

3.4 指标:Pass@k 与 Pass^k,一个数字差出十倍

同一个 Agent,两个「成功率」:Pass@k 是 k 次尝试至少一次成功的概率 (能力上限);Pass^k 是 k 次全部成功的概率(稳定性)。书里给的例子一记 就牢:单次成功率 60% 时,Pass@5 ≈ 99%,Pass^5 ≈ 7.8%——差了十二倍 还多。混用导致误判:用 Pass@k 做回归测试,会掩盖「五次只成一次」的不稳定10

过程与结果的覆盖也要双份:书里举了订票例——Agent 利用政策漏洞找到了更便宜的 方案,结果层面成功、轨迹层面违规;只看结果的评估会奖励钻空子。安全合规 指标零容忍:一次严重违规即否决整体,不因其他维度优秀而豁免11

3.5 裁判:LLM 打分的偏见与制衡

开放式任务没有标准答案,人工评不起,LLM-as-a-Judge(让语言模型按专家 定义的 Rubric 打分)是规模与判断之间的折中。已知偏见里最典型的是长度偏差 ——偏爱更长更详尽的回答,哪怕并不更正确。三防:Rubric 显式惩罚冗长;配对 比较前把长度控制到相近;定期审计「分数与长度的相关性」——高分总伴随长回答, 裁判就该回炉12

更深的问题是古德哈特定律:当度量变成优化目标,它就不再是好度量——Agent 越在某评分系统上调优,越倾向钻系统漏洞而非提升能力13。制衡手段:人工 金标集校准(100-200 例,评判模型与人类的一致性 kappa 高于 0.7 才放量,更新 后重校);红队主动构造挑战案例;多评委分别独立评分14

配对比较(A 比 B 好吗)还要防位置偏差:评判模型系统性偏向先出现的候选。 标准缓解:交换顺序各评一次,不一致送人工;Chatbot Arena 靠随机化位置 在大样本下抵消15。书里在此埋下第 11 章的伏笔:GRPO 算法正是把「对比优劣」 搬进训练——注意它省掉的是价值网络,不是奖励信号本身16

3.6 选型与统计:分差落在噪声里等于没差

模型选型别只看单点分数。RE-Bench 的人机对照很有启发:2 小时预算内最佳 Agent 得分约为人类 4 倍;8 小时时人类反超;32 小时人类约为其 2 倍——短预算领先 不能直接推及长时间运行17

而判断「A 是不是真比 B 好」,要过统计学这一关。书里的口算工具是标准误 (成功率因抽样随机而波动的幅度):100 个用例测得 70%,标准误约 4.6%, 95% 置信区间约为 70% ± 9 个百分点——「新模型 73% vs 旧模型 70%」这 3 个 百分点完全落在噪声里,据此切换模型与掷硬币差别不大。同一批任务上的正确做法 是配对分析(逐题比胜负,只看结果不同的题);样本从 100 扩到 400,噪声 带宽才减半——预期收益只有 2-3 个百分点、评估集只有几十个用例时,先扩 评估集,别再迭代 Agent18

最后一坑:多重比较——并行验证 6 个假设,每个都用 95% 置信度,至少一个 假阳性的概率约 26%。要么收紧阈值(如 Bonferroni),要么对正向结论做独立 复跑19

3.7 从分数到行动:AndroidWorld 的完整案例

评估的终点是行动。书里给了一个教科书式的改进循环:AndroidWorld 上 88% 的 Agent,先按能力标签逐任务诊断,提出六个假设分层验证——H1 把设置类从 0% 提到 75%(token 只增 8%),H4 把计数从 0% 提到 70% 但延迟 4→12 秒、成本 3 倍, 而涉及计数的任务只有约 8%——杀鸡用牛刀,不部署;最终部署 H1+H3+H6, 成功率 88% → 94%,同时暴露了新的失败模式(Wi-Fi 验证波动)。先检查 评测系统本身再动 Agent——评分器 bug、环境资源问题,表现都像「模型退化」20

4. 作者的判断与证据

书里给了证据的: SWE-Bench Verified 的 29% 通过率、RE-Bench 人机对照、 成本账(可按书里的单价复算)、AndroidWorld 88%→94% 的完整假设-验证链。

是作者的判断: 「评估体系的首要价值是快速跟上模型演进」是工程立场; 「成本优化核心是控制轮次」是从成本结构推出的主张——可证伪条件:若推理单价 大幅下降使轮次成本不再显著,优化重心就应转向延迟与质量。

5. 边界与局限

  • 单价、缓存折扣随厂商定价变动,账的结构不变、数会过时;
  • LLM 裁判的校准依赖金标集质量;「kappa>0.7」是门槛不是保证;
  • 标准误公式假设用例相互独立——同一模型的多次评估有相关性,真实噪声更复杂, 书里也只把它当「口算筛子」;
  • 用户模拟器自身会出错:它演不像真实用户时,测出的是「对模拟器的适应力」。

6. 可带走的

  1. 评的是模型+Harness 组合体;先做模型替换,再决定改哪头;
  2. 数据集防泄漏:时间新鲜度、动态参数、canary 标记,至少占一样;
  3. 29% 的淘汰率不是浪费,是评估质量的必要投资;
  4. Pass@k 测上限,Pass^k 测稳定;回归测试用后者;
  5. 轨迹与结果双覆盖:别让钻空子的 Agent 拿满分;
  6. 裁判有长度偏差;高分与长度强相关时,裁判要回炉;
  7. 度量变成优化目标就不再是好度量——对齐自己指标的人会钻它;
  8. 100 用例 70% ± 9 个百分点:分差 3 个百分点,别切换;
  9. 并行验证多个假设,至少一个假阳性概率约 26%——复跑再采信;
  10. 成本复利在上下文:省钱的杠杆是轮次与上下文增长,不是模型单价。

7. 原文地图

主题原书章原文位置
评组合体与模型替换6 Agent 的评估text/08-ch06-6-agent.txt:23(搜「组合体」)
退款例与 Rubric 四维6 Agent 的评估text/08-ch06-6-agent.txt:55(搜「Rubric」) · text/08-ch06-6-agent.txt:84(搜「否决项」)
环境五要素与真实性6 Agent 的评估text/08-ch06-6-agent.txt:104(搜「评分准则」) · text/08-ch06-6-agent.txt:189(搜「舞台」)
τ-bench 用户模拟6 Agent 的评估text/08-ch06-6-agent.txt:151(搜「渐进式」)
数据泄漏防线6 Agent 的评估text/08-ch06-6-agent.txt:207(搜「数据泄漏」)
SWE-Bench Verified 与 29%6 Agent 的评估text/08-ch06-6-agent.txt:201(搜「500 个高质量」) · text/08-ch06-6-agent.txt:263(搜「93 名」)
可验证性案例6 Agent 的评估text/08-ch06-6-agent.txt:215(搜「build-linux-kernel-qemu」) · text/08-ch06-6-agent.txt:241(搜「FAIL_TO_PASS」)
环境与后训练同源6 Agent 的评估text/08-ch06-6-agent.txt:143(搜「奖励」)
指标词典与 Pass 差异6 Agent 的评估text/08-ch06-6-agent.txt:275(搜「指标词典」) · text/08-ch06-6-agent.txt:289(搜「Pass@k」) · text/08-ch06-6-agent.txt:295(搜「7.8%」)
双重覆盖与零容忍6 Agent 的评估text/08-ch06-6-agent.txt:311(搜「零容忍」)
长度偏差三防6 Agent 的评估text/08-ch06-6-agent.txt:331(搜「长度偏差」)
金标集与校准6 Agent 的评估text/08-ch06-6-agent.txt:319(搜「金标集」)
古德哈特6 Agent 的评估text/08-ch06-6-agent.txt:411(搜「古德哈特」)
位置偏差6 Agent 的评估text/08-ch06-6-agent.txt:451(搜「位置偏差」)
GRPO 伏笔6 Agent 的评估text/08-ch06-6-agent.txt:453(搜「价值网络」)
RE-Bench 人机对照6 Agent 的评估text/08-ch06-6-agent.txt:487(搜「RE-Bench」)
成本账 $0.022/$0.0366 Agent 的评估text/08-ch06-6-agent.txt:539(搜「$0.022」) · text/08-ch06-6-agent.txt:543(搜「3-5 倍」)
标准误与 ±96 Agent 的评估text/08-ch06-6-agent.txt:593(搜「4.6%」)
配对分析与扩样6 Agent 的评估text/08-ch06-6-agent.txt:597(搜「McNemar」)
多重比较 26%6 Agent 的评估text/08-ch06-6-agent.txt:599(搜「26%」)
AndroidWorld 88→946 Agent 的评估text/08-ch06-6-agent.txt:675(搜「杀鸡用牛刀」) · text/08-ch06-6-agent.txt:683(搜「88%」)

Footnotes

  1. 出处:「6 Agent 的评估」第 23 段(text/08-ch06-6-agent.txt:23,搜「组合体」)。

  2. 出处:「6 Agent 的评估」第 531-539 段(text/08-ch06-6-agent.txt:539,搜「$0.022」)。

  3. 出处:「6 Agent 的评估」第 543 段(text/08-ch06-6-agent.txt:543,搜「3-5 倍」)。

  4. 出处:「6 Agent 的评估」第 90-104 段(text/08-ch06-6-agent.txt:104,搜「评分准则」)。

  5. 出处:「6 Agent 的评估」第 147-155 段(text/08-ch06-6-agent.txt:151,搜「渐进式」)。

  6. 出处:「6 Agent 的评估」第 207 段(text/08-ch06-6-agent.txt:207,搜「数据泄漏」)。

  7. 出处:「6 Agent 的评估」第 263 段(text/08-ch06-6-agent.txt:263,搜「93 名」)。

  8. 出处:「6 Agent 的评估」第 215 段(text/08-ch06-6-agent.txt:215,搜「build-linux-kernel-qemu」)。

  9. 出处:「6 Agent 的评估」第 143 段(text/08-ch06-6-agent.txt:143,搜「奖励」)。

  10. 出处:「6 Agent 的评估」第 289-295 段(text/08-ch06-6-agent.txt:289,搜「Pass@k」;text/08-ch06-6-agent.txt:295,搜「7.8%」)。

  11. 出处:「6 Agent 的评估」第 307-311 段(text/08-ch06-6-agent.txt:311,搜「零容忍」)。

  12. 出处:「6 Agent 的评估」第 331 段(text/08-ch06-6-agent.txt:331,搜「长度偏差」)。

  13. 出处:「6 Agent 的评估」第 411 段(text/08-ch06-6-agent.txt:411,搜「古德哈特」)。

  14. 出处:「6 Agent 的评估」第 319 段(text/08-ch06-6-agent.txt:319,搜「金标集」)。

  15. 出处:「6 Agent 的评估」第 451 段(text/08-ch06-6-agent.txt:451,搜「位置偏差」)。

  16. 出处:「6 Agent 的评估」第 453 段(text/08-ch06-6-agent.txt:453,搜「价值网络」)。

  17. 出处:「6 Agent 的评估」第 487 段(text/08-ch06-6-agent.txt:487,搜「RE-Bench」)。

  18. 出处:「6 Agent 的评估」第 593-597 段(text/08-ch06-6-agent.txt:593,搜「4.6%」;text/08-ch06-6-agent.txt:597,搜「McNemar」)。

  19. 出处:「6 Agent 的评估」第 599 段(text/08-ch06-6-agent.txt:599,搜「26%」)。

  20. 出处:「6 Agent 的评估」第 669-683 段(text/08-ch06-6-agent.txt:675,搜「杀鸡用牛刀」;text/08-ch06-6-agent.txt:683,搜「88%」)。我们另外有 tau2-bench 与 terminal-bench 的源码级拆解可对照其验证机制(补充(不在书里,依据我们的 frontier 书架):依据: shelf=ai-frontier-reference/tau2-bench#04-participants-and-domains.md 事实=τ²-bench 的用户模拟器与双控环境是源码中独立实现的参与者角色;依据: shelf=ai-frontier-reference/terminal-bench#05-scoring-results.md 事实=Terminal-Bench 的任务验证由容器内机械化判分脚本完成)。