Agent Evals 学习教程

07. Benchmark 可信度与腐化机制

读完本章,你应该能:

本章回答:为什么公开榜单会失真,以及如何判断一个 benchmark 是否真的能预测部署表现。

学习目标

读完本章,你应该能:

  • 区分 benchmark 分数、模型能力和部署价值。
  • 识别 contamination、saturation、label errors、leaderboard gaming、harness confound。
  • 解释 predictive validity 为什么比单一平均分更重要。
  • 为自己的 eval 设计抗腐化措施。

本章导读

公开 benchmark 有一种特殊的吸引力:它把复杂能力压缩成一个排名。排名容易传播,容易比较,也容易让人放心。问题是,一旦排名变得重要,围绕排名的行为就会改变。模型提供方会调参,研究者会适配,数据会泄露,题目会饱和,榜单规则会被利用。最后,分数仍然在上涨,但它和真实能力之间的关系可能已经松动。

这并不是说 benchmark 没有价值。恰恰相反,好的 benchmark 是行业共同进步的重要工具。但我们必须把 benchmark 当成一个会老化、会被优化、会受治理影响的测量系统,而不是一块永远客观的尺子。尺子本身也需要校准,也需要维护,也需要知道适用范围。

本章讨论 benchmark integrity,不是为了让你怀疑一切分数,而是让你学会正确使用分数。公开榜单可以帮助你筛选模型、理解趋势、发现能力边界;但当你要决定自己的产品能否上线时,你必须回到自己的任务、自己的用户和自己的风险。

Benchmark 腐化路径

Benchmark 仍然重要,但不是产品真相

Benchmark 是行业共享语言。它能帮助我们快速比较模型、发现能力边界、推动研究进展。但它也是一个测量系统,而测量系统一旦被高强度优化,就会腐化。

Goodhart's Law 在 eval 中非常现实:当一个指标变成目标,它就不再是好指标。公开排行榜会引发数据污染、训练过拟合、私测选择、prompt/harness 特调和标签争议。最终,分数上升可能只代表“更会打这个榜”,不代表真实产品更可靠。

想象一个团队要为 coding agent 选择底座模型。他们看到某模型在公开代码榜单上领先,于是直接把它接进内部修 bug 流程。上线试点后才发现,内部任务的失败点并不是“能不能写出一段正确代码”,而是能不能在大型 monorepo 中找到相关模块、能不能运行正确测试、能不能避免修改生成文件、能不能在权限受限的 CI 环境里完成验证。公开 benchmark 的分数没有错,它只是回答了另一个问题。

因此,使用 benchmark 时要先问:它测的 construct 与我的部署任务是否一致?它的输入分布、harness、scorer、成本预算和失败严重性,是否接近我的产品?如果答案是否定的,benchmark 仍然可以用来筛模型和理解趋势,但不能直接成为上线依据。

腐化机制 1:数据污染

数据污染指模型训练或调优时见过 benchmark 的题目、答案、相似题或评分逻辑。污染会把“推理能力”伪装成“记忆能力”。

污染最危险的地方,是它不会在结果表里自动亮红灯。一个模型在旧题上表现很好,团队很容易解释为能力提升;但如果它只是见过题目、见过相似答案,或者学会了 benchmark 的评分风格,那么这个高分对新任务没有多少预测力。对于会被反复引用的公开题集,这不是小概率事件,而是时间越久越需要主动防范的结构性风险。

常见迹象:

  • 模型在旧题上表现异常高,在新时间窗口显著下降。
  • 题目或答案在公开网页、GitHub、论坛中大量出现。
  • 同一 benchmark 的 paraphrase 版本表现大幅下降。
  • 模型能识别自己正在被测或找到答案 key。

抗污染方法:

  • 给每个任务打不可变时间戳。
  • 只用模型训练 cutoff 之后的任务评估。
  • 持续刷新题集。
  • 构造难度匹配的新 holdout。
  • 报告 contamination screen。

PATTERNS.md 中的 contamination-resistant design 总结了 LiveCodeBench、SWE-rebench 和 GSM1k 的核心做法AwesomeEvalsPatterns2026。

腐化机制 2:饱和

Benchmark 饱和是指大多数强模型都接近满分,分数无法区分真实差异。饱和不是失败,而是信号:你需要更难、更贴近现实或更细粒度的 eval。

Ofir Press 提醒,好的语言模型 benchmark 应自然、可自动评分、有挑战性,并且预期会在约一年左右被强模型压上来PressBenchmarks2024。Yao 的“第二半场”也指出,通用 recipe 会越来越快饱和干净 benchmarkYao2025。

饱和后的选择:

  • 加难度:更长任务、更复杂环境、更真实约束。
  • 加维度:成本、延迟、稳定性、副作用、校准。
  • 加时间:新鲜任务,post-cutoff 数据。
  • 加 OOD:跨域、扰动、对抗 phrasing。
  • 从 headline accuracy 转向 failure analysis。

腐化机制 3:标签和测试错误

Benchmark 的 ground truth 也可能错。OpenAI 停止评估 SWE-bench Verified 的讨论中,核心问题之一就是相当比例的失败来自 broken tests 或测试与任务意图不一致OpenAISWEBenchVerified2026。

这不是个别小瑕疵,而是一组正在反复出现的测量风险。FutureHouse 对 Humanity's Last Exam 的化学/生物文本题子集做文献审计,估计约 29% 的答案与同行评议文献冲突FutureHouseHLE2025。Epoch AI 对 FrontierMath 做 AI 辅助复审后,在 2026-06-12 发布 v2,说明修订影响到约 42% 的题目EpochFrontierMathV2。OpenAI 审计 SWE-bench Verified 中模型反复失败的 138 个任务,发现其中约 59.4% 含有测试设计或问题描述的实质性缺陷,会拒绝功能上正确的提交OpenAISWEBenchVerified2026。这些数字的含义不是“所有 benchmark 都不可信”,而是:越难、越专家化、越被用来证明 frontier 能力的 benchmark,越需要单独审计 ground truth。

标签错误最麻烦的地方,是它会伪装成模型失败。一个 coding agent 可能给出合理补丁,却因为隐藏测试要求了题目没说明的函数名而被判错;一个科学问答模型可能指出 benchmark 答案本身和文献冲突,却在排行榜上被扣分。对产品团队来说,这意味着你自己的 golden set 也不能只靠“专家写过”就算可靠。高价值样本、强模型反复失败的样本、以及会进入上线 gate 的样本,都应该被复审。

标签错误的后果:

  • 惩罚正确解法。
  • 奖励错误捷径。
  • 让模型排名受噪声控制。
  • 训练时放大错误 reward。

修复方式:

  • 人工审计失败样本。
  • 多 reviewer 复核。
  • oracle solution 证明可解。
  • adversarial exploit agent 寻找 loophole。
  • 把测试分为 must-pass、regression、side-effect checks。

Terminal-Bench 2.0 的任务审核流程就包括自动检查、LLM 质量检查、人工专家审查和寻找 shortcut 的 exploit agentWolfeAgentEvals2026。

腐化机制 4:榜单博弈和治理问题

The Leaderboard Illusion 对 Chatbot Arena 做了系统审计,指出榜单不只是技术问题,也是治理问题SinghLeaderboard2025。

治理问题的核心是:谁能接触测试分布,谁能提交多少次,谁能撤回不理想结果,谁能选择公开哪个版本。只要这些规则不透明,榜单分数就会同时反映能力和参与者的策略。对产品团队来说,这意味着你看到的“第一名”不一定是一次公平、固定、可复现比较的结果,也可能包含 best-of-N、版本选择和数据访问优势。

它提出几个关键风险:

  • 私测 + 撤分:提供者可以提交多个私有变体,只公开最好结果,形成 best-of-N inflation。
  • 数据访问不对称:部分闭源提供者获得更多用户投票数据,可以更针对 Arena 分布优化。
  • 选择性披露:榜单版本不一定等于用户可调用版本。
  • silent deprecation:模型被静默移除,破坏比较图的连通性和稳定性。
  • 过拟合到 Arena 分布:ArenaHard win-rate 上升不一定泛化到 MMLU 等外部分布。

这对所有 eval 都有启发:如果被评估者能控制尝试次数、披露结果、选择样本或访问测试分布,指标就会被扭曲。

腐化机制 5:harness confound

Agent benchmark 尤其容易出现 harness confound:

  • prompt 不同。
  • 工具描述不同。
  • 采样温度不同。
  • browser/runtime 不同。
  • 超时和资源限制不同。
  • grader 实现不同。
  • 是否允许网络、历史、缓存不同。

Florian Brand 的 benchmark 演讲和 Wolfe 的 agent eval 指南都强调:agent 时代的分数是整个 eval-running stack 的产物,而不只是模型能力BrandBenchmarks2026WolfeAgentEvals2026。这意味着报告结果时必须记录 harness 细节,否则不同团队的分数不可比。

在 agent benchmark 中,harness confound 往往比传统 NLP benchmark 更严重,因为 agent 需要通过工具和环境来表达能力。同一个模型,如果一个 harness 要求用 Markdown 格式表达工具调用,另一个 harness 提供 CLI 或结构化 API;一个运行环境给足内存和网络,另一个限制资源和超时;一个 grader 接受多条合理路径,另一个只接受参考轨迹,排名就可能改变。Brand 对 agent benchmark 的核心提醒正是:prompt、sampling、inference engine、grader 和 harness 都会移动最终分数。报告里只写“模型 X 得了 72 分”,却不写这些条件,本质上是在隐藏实验对象。

Predictive validity:榜单是否预测部署?

一个 benchmark 真正有价值,不是因为它能产生一个漂亮平均分,而是因为它能预测你关心的外部分布表现。Patel 等把这个问题命名为 predictive validity:in-sample rank 与 out-of-sample rank 的相关性PatelPredictive2026。

他们报告了一个强烈警示:在一个 149 队 agentic competition 中,public leaderboard rank 与 hidden evaluation rank 在 execution track 上的 Spearman 相关为 rho = -0.13,统计上接近 0。也就是说,公开榜单排名几乎不预测隐藏评估排名。

这说明:

  • 平均分不够。
  • 公开集表现不等于隐藏集表现。
  • 部署分布可能与榜单分布不同。
  • 需要测 rank transfer,而不是只测 score。

这对产品 eval 有一个直接启发:不要只问“模型在我的 golden set 上高了几个点”,还要问“这个提升能否转移到新的时间窗口、新的用户群、新的任务类型和隐藏 holdout”。如果一个 eval 只能解释它自己,却不能预测外部分布,它更像训练反馈,而不是上线证据。

因此,benchmark 审计最好保留两层问题:第一层问“这个分数在它自己的测试集上是否可信”,包括污染、标签、harness 和治理;第二层问“这个分数是否预测我真正关心的外部分布”。很多公开榜单在第一层已经有噪声,在第二层更未必成立。产品 eval 的职责,就是把这两层都拉回可验证的样本和决策。

设计可信 benchmark 的原则

1. 明确 construct

先定义要测的能力或产品质量是什么。不要用“综合智能”这种模糊词替代具体行为。

2. 数据新鲜且可追踪

记录来源、时间戳、版本、采集规则、排除标准。

3. 使用隐藏或冻结 holdout

避免被日常调参污染。公开 examples 可以用于理解任务,但不应是最终排名依据。

4. Grader 可审计

评分器要可复现、可解释、可检查 false positives/false negatives。

5. 报告成本和方差

只看成功率会鼓励昂贵、不稳定的方案。要报告 token、时间、工具调用、资源限制和置信区间。

6. 保留失败样本

benchmark 的价值不只在分数,还在失败分析。没有失败样本,就很难判断分数意义。

7. 测试 OOD 和对抗扰动

至少要做 paraphrase、identifier rename、time-window split、domain transfer 或 hidden set。

8. 建立治理规则

如果是公开榜单,要规定私测次数、撤分策略、版本披露、deprecation 和采样公平性。

Product eval 如何借鉴 benchmark,但不被 benchmark 绑架

产品团队可以把 benchmark 当作:

  • 模型初筛。
  • 任务设计灵感。
  • scorer 技术参考。
  • 风险案例库。

但产品上线 gate 应该来自自己的:

  • 用户分布。
  • 工具和 runtime。
  • 业务状态。
  • 成本约束。
  • 合规和安全边界。
  • 历史 regression failures。

公开 benchmark 分数可以帮助你选候选模型,不能替代 product eval。

Benchmark 审计清单

评估一个 benchmark 前,问:

  1. 任务是否代表我要部署的真实场景?
  2. 数据是否可能在模型训练集中?
  3. 是否有 hidden holdout?
  4. ground truth 如何生成和审计?
  5. scorer 是否能接受合理替代答案?
  6. 是否报告成本、延迟和方差?
  7. 是否记录 harness、prompt、runtime 和 sampling?
  8. 是否已经饱和?
  9. 是否有公开治理规则?
  10. public rank 是否预测 hidden/OOD rank?

常见误区

误区 1:榜单第一就是产品最佳。
榜单通常测特定分布、特定 harness 和特定指标。

误区 2:benchmark 题越多越好。
题多但标签错、分布偏或污染严重,不一定更可信。

误区 3:只要自动评分就是客观。
自动 grader 也会 under-report、over-credit 或包含漏洞。

误区 4:饱和后继续看小数点。
饱和后应换指标、换分布或换任务,而不是比较 0.2 个点。

误区 5:忽略 leaderboard governance。
谁能提交、提交几次、能否撤分、是否公开版本,都会影响结果。

本章练习

选一个公开 benchmark,写一页审计:

  1. 它声称测什么 construct?
  2. 数据来源和时间是否清楚?
  3. 是否可能被污染?
  4. scorer 是否接受合理替代答案?
  5. 是否报告成本和方差?
  6. 是否已经饱和?
  7. 它与你的产品分布有多大差距?
  8. 你会如何把它改造成 product eval?

延伸阅读

On this page