📊 《深入理解 AI Agent》第 7 章

Agent 的评估 · 没有度量就没有改进
11 个动画场景 · 覆盖 7.1–7.9 · 含 Pass^k、失败归因与成本雪球
📌 表现不佳时,改进方向可能不是换模型,而是优化 Harness

🎯 一张图看懂第 7 章

从「一条评估任务的解剖」到「生产级评估基础设施」
🧪
评估环境
任务、环境、验证器
→
🎯
指标
Pass@k 与 Pass^k
→
⚖️
自动化评估
LLM-as-a-Judge
→
🔍
归因与迭代
定位首个错误
💡 一句话总纲: 评估不是「打个分」,而是一套能定位问题、能驱动改进的工程系统。分数只是它的输出。

场景 1 · 能力上限 vs 业务可靠性 7.2 重点

同一组概率,看上限近满分、看可靠性却几乎为零
① 至少成功一次 · 能力上限··✓··成一次就算过≈ 99.0%1 − 0.4⁵ = 0.990② 连续五次全过 · 可靠性✓✓✓✓✓一次都不能断≈ 7.8%0.6⁵ = 0.0778
同一组概率:能力上限 99%,业务可靠性只剩 7.8%
最容易犯的错: 拿 Pass@k 的宣传数字去承诺 SLA。它衡量「至少成功一次」,而 Pass^k = p^k 衡量「连续 k 次全过」;同一组 p = 0.6、k = 5,两者差 12 倍。

场景 2 · 技术奇观:Pass@k 的奇迹 7.2.1

只要一次成功,就证明这件事原则上做得到
🛠️写一个 C 编译器成功一次即证明可行🔢找到数学猜想反例成功一次即证明可行🕳️挖出数十年漏洞成功一次即证明可行能力边界 · 只要成功一次🖥️Manus虚拟电脑里持续工作半小时📬OpenClaw主动反馈 · 自己唤醒查邮件
只要成功一次,就证明原则上做得到 —— Pass@k 描述的是能力边界
读榜技巧: 看到惊人的 Pass@k 数字,先问「k 是几、跑了几次」。下排的 Manus 与 OpenClaw,则是把这种「一次」做成了可复现的产品体验。

场景 3 · τ²-bench 的双控环境 7.1.2 重点

故障藏在数据库看不见的用户侧,Agent 只能引导、不能代操作
📱 用户侧 · Agent 看不到✈️飞行模式 ON开关在用户手机上📵漫游也关着但和 roaming 是两回事🧱看不穿🗄️ 运营商侧 · 数据库里🗄️enable_roaming 已开每次都查得「正常」🔍库里查不出异常只能引导用户👤模拟器自带工具check_status_bar / toggle_airplane_mode
故障藏在数据库看不见的地方,reward 只认环境断言 ENV_ASSERTION
设计精髓: 用户模拟器自带一套工具(check_status_bar / toggle_airplane_mode / run_speed_test),发工具的是用户而不是 Agent。reward 只采信 ENV_ASSERTION 环境断言 ——「信息不对称」因此成了可评估的对象。

场景 4 · SWE-bench 的双重验证 7.4.2

只验「修好了」或只验「没破坏」都会被蒙混
🚪 验收门🔓🔐🔓FAIL_TO_PASS修复前失败,修复后通过排除 flaky:时过时不过🧪OSWorld134 个独立评估函数🔐PASS_TO_PASS前后都通过,没弄坏别处两锁同开,才判定解决🐧Terminal-Bench真的构建 Linux 6.9
只验修好或只验没破坏,都会被假象蒙混 —— 两把锁必须同时开
可迁移到任何回归测试: 一组证明「改对了」,一组证明「没改坏」,缺一不可,还要排除 flaky test。同类还有 OSWorld(134 个评估函数)与 Terminal-Bench(真的构建 Linux 6.9)。

场景 5 · GAIA 的防泄漏与难度分级 7.4.3 / 7.4.4

答案要组合多源、且互联网直接查不到
同题得分L1 人类93.9%L1 GPT-430.3%L2 人类91.8%L2 GPT-49.7%L3 人类87.3%L3 GPT-40%🧩防泄漏第一招答案要组合多个信息源📎防泄漏第二招附互联网没有的专有附件GAIA 全 466 题分三级 · Terminal-Bench 嵌 canary GUID 防泄漏
评估集最大的敌人是记忆 —— 答案能搜到,分数衡量的就不是能力
评估集最大的敌人是记忆: 答案只要能搜到,衡量的就不是能力,而是训练数据。GAIA 全 466 题分三级,到 Level 3 连 GPT-4 都是 0%;Terminal-Bench 还嵌 canary GUID 查泄漏。

场景 6 · LLM 裁判与一票否决 7.5.1

没有标准答案的任务,用 Rubric 拆维度打分
Claude · Agent📋Rubric 四准则专家指导 · 全面覆盖按重要性加权 · 自包含GPT-5 · 裁判Gemini · 裁判VETO一出幻觉总分归零28 / 180幻觉否决触发次数控长 + 配对 + 审计防「偏爱长回答」偏差自家人评自家人会偏袒 → 用异构模型;没标准答案 → 用 Rubric 拆维度
没有标准答案就用 Rubric 拆维度 —— 但必须有一票否决兜住底线
两个必须防的偏差: 自家人评自家人(用异构模型)、偏爱长回答(控长 + 配对 + 审计相关性)。案例里这条幻觉否决在 180 次评判中触发了 28 次 —— 它才是兜住底线的那条。

场景 7 · 失败归因:做对了但说错了 7.5.2 重点

根因不在模型,而在 Harness 的观察通道缺失
1第 1 步一切正常8第 8 步看不到图片11第 11 步凭空编账单⚠写入四条验收记录不存在🔍 根因:观察通道缺失纯文本 Agent 看不到图像像素704 次公开基线运行次数240 次其中失败次数80 次 = 1/3环境对但告知错
记成「模型不会 OCR」会改错方向 —— 先归因,再动手
最重要的思维习惯: 失败先分层 —— 是模型不行、工具不行,还是它根本看不到?τ²-bench 基线 704 次里失败 240 次,其中 80 次(1/3)是「环境对了但信息没告知」。

场景 8 · Elo 配对排名 7.5.4

不靠绝对分,靠盲选对决量化「谁更好」
Claude 4 OpusVSGPT-5匿名 · 随机 · 数百万次投票E_A = 1 / (1 + 10^((R_B − R_A)/400))① Claude 4 Opus1352② GPT-51318③ Gemini 2.5 Pro1290
不靠绝对分,靠盲选对决 —— 位置偏差用交换顺序各评一次抵消
相对排名的好处: 不需要一把公认的尺子,只要「两两比较谁更好」这个更弱、更可靠的判断。更新式 R_A' = R_A + K·(1 − E_A) 背后是 Bradley-Terry 模型。

场景 9 · RE-Bench 的人机预算曲线 7.6.1

短预算领先,不能外推成长时间能力
人类Agent交叉点Agent ≈ 人类 4 倍2 小时预算人类略超最佳 Agent8 小时预算人类 ≈ Agent 的 2 倍32 小时预算50 tokens/s · 光思考就 40 秒 | 首次修改前:6.89 次工具 / 4.67 个文件
短预算领先不能外推 —— 关键在于两条曲线在哪相交
选型时的关键一问: 我的任务给多少预算?2 小时下 Agent 约是人类 4 倍,8 小时人类略超,32 小时人类约 2 倍。思考也不便宜:50 tokens/s 下 2000 个思考 token 就要 40 秒。

场景 10 · AndroidWorld 的调优闭环 7.9 重点

分数跌先查评测系统,再动 Agent;一轮只改一个变量
同模型 · 同种子 · 同步数,交替运行顺序① 基线116 任务 88% 成功② H1 加提示25% → 25% 无效③ H5 换元素树25% → 100%④ H5C 精简树100% → 100%token ×2.498token ×0.506一轮只改一个变量
分数跌先查评测系统 —— 一轮只改一个变量
最反直觉的一条:「加提示」毫无效果(25% → 25%),因为问题不在「不会做」,而在「看不见」。换元素树后 25% → 100%,代价 token ×2.498;再精简,守住 100% 且 token ×0.506。

场景 11 · 上下文成本的雪球 7.6.3

每轮重发全部历史,成本按轮数累加而非线性
❄️成本雪球第 1 轮1000第 2 轮2000第 3 轮3000合计 6000不是 3 × 1000 = 3000无缓存:每轮重发全部历史↓28.3%稳定前缀↓17.5%压缩历史↓30.0%两者同开 · 不相加
压缩会缩短可缓存的前缀,两者不叠加 —— 优化之间会互相干扰
呼应第 2 章: 这就是 KV Cache 为什么是架构约束 —— 省的不是一点延迟,是按轮数平方增长的账单。但优化会互相干扰:稳定前缀省 28.3%、压缩历史省 17.5%,两个同开只省 30.0% —— 因为压缩本身缩短了可缓存的前缀。