污染不是基准的一个缺陷——它是走在基准头上的一只钟。
关于任何一个公开基准分数,最有用的那条事实恰恰是没人印在它旁边的:在模型的训练数据被采集之前,这个基准有多少内容已经躺在公开网络上了。污染不是一位细心的基准作者可以一劳永逸设计掉的缺陷,它甚至根本不是基准的属性——它是(这个模型,这个基准)这一对在某个日期上的属性,而且只会越来越糟。于是真正该问的从来不是"这个基准被污染了吗",而是"这个数字有多老,我得自己跑什么才能拿它做决定"。
三种不同的泄漏共用同一个词。
"污染"至少被用来指代三类故障,它们成因不同、检测手段不同、修法也不同。把它们混为一谈,正是这场讨论总在原地打转的原因。
- 逐字泄漏。测试条目本身——题目与答案——就在预训练语料里。这是所有人脑中浮现的那个版本,它最容易检测,而在现代基准上它越来越算不上重要,因为基准作者如今都会查这一项。
- 解法泄漏。答案从未出现在基准文件里,但从基准所指向的那些材料就能顺手够到。智能体基准是用真实仓库、真实 issue、真实工单讨论串搭起来的——而一个 GitHub issue 的修法,常常就坐在同一个 issue 的某条评论里,或者在关掉它的那个提交里,或者在发布说明里。一项针对原始 SWE-bench 的审计发现,被判通过的补丁里约有三分之一的修法在 issue 讨论串的某处直接可见,另有约三分之一之所以通过,只是因为随附的测试太弱,分不出一个正确的补丁和一个看似合理的补丁。
- 间接泄漏。没有人拿测试集训练,但语料里塞满了谈论这个基准的博客、榜单分析、论文和教程:哪些条目难、常见的失败模式是什么、好答案长什么样。这种泄漏用 n-gram 重叠查不出来,它随基准的流行度增长,而且这在很大程度上解释了为什么一个基准的区分力会在发布后的数年里衰减——哪怕它的条目从未以已解形式被公开过。
三者之中,只有第一种能被金丝雀串或去污染过滤器修好。第二种是基准构造问题——这正是"Verified"式的整理(让人逐题读过,确认修法不可见、测试确实有区分力)能从同样的原始材料里做出一个真正更可信的集合的原因。第三种根本修不好;只能靠不断产出新条目把它甩在身后。
这个属性属于那一对,不属于基准。
说"SWE-bench 被污染了",你几乎什么都没说。对一个在它发布之前训练的模型,同一个基准是干净的;对一个在它之后训练的模型,它是脏的;一家做了激进去污染的实验室的模型,和一个把 GitHub 无差别扒了个遍的模型,可以并排出现在同一张榜上,而对同一批条目的暴露程度天差地别。你手上真正有的,是一个(模型,基准)的矩阵,每一格都带着时间戳。
这个重构会改变你能得出的结论:
- 跨模型比较是污染最先摧毁的那个操作。排名是所有人使用基准的目的,也是污染最先毁掉的东西,因为两个模型在暴露程度上的差异可以大过它们在能力上的差异。一个在基准发布一年后才问世的模型,带着一份与"更强"毫无关系的优势。
- 绝对分数的退化比排名体面。一个被污染的分数仍然是某项真实能力的上界——模型确实产出了一个能通过的补丁。把公开数字当作"它到底能不能做这一类任务"的下限,永远不要把它当作两个候选之间差距的度量。
- 衰减是单调的,而且大致可预测。一个基准的有效寿命从它发布那天开始,结束于第一代在包含了它(以及关于它的评论)的语料上训练出的模型问世之后的某处。对一个流行的公开集合,两年是个合理的默认假设;对于任何条目比榜上模型还老的排行榜,你都该主动生疑。
这正是 2026 年基准全景所描述的饱和背后的机制。当前五名彼此只差一个点时,仅仅污染程度的差异就足以宽松地制造出那个排序,而你这边再多的统计功夫也分离不出信号——方差与统计功效那篇是从另一个方向抵达同一个结论的。
四个不需要训练数据也能跑的检验。
你永远不会有机会去检视一家前沿实验室的语料,而需要语料的检测方法都是学术性的。下面这四个从外部就能做,代价很小,并按"每份力气能换来多少信息"排序。
- 日期切分。用严格晚于模型知识截止之后产生的材料搭一小组任务——上个月提的 issue、上个季度发的论文——再与结构相当的更老任务比较表现。一个大落差是能拿到的最干净的污染信号,而且它不需要任何精巧的统计。它同时也是你能搭的最有用的东西,因为同一组任务可以直接兼作你日常的回归集。
- 扰动敏感性。把变量改名、把选项顺序打乱、在保住问题的前提下重写 issue 文本。一个在对任务作推理的模型应该几乎无动于衷;一个在检索记忆答案的模型会陡然退化。别对小幅下降过度解读——真正的脆弱性会产生同样的特征——但坍塌是有诊断意义的。
- 记忆探针。让模型复现条目而不是解它:从第一行往下补全 issue 文本、列出那个提交处仓库里的文件、报出测试名。一个能背出环境的模型,就是见过这个环境。这是智能体特有的探针,它抓得住解法重叠检查抓不住的东西。
- 公开集与留出集之差。如果基准同时提供公开切分和私有切分,两者之间的差距就是对暴露程度的直接读数。在没有私有切分的地方,同样的逻辑可以用在"公布的榜单数字"与"你在自己的执行框架上复现出的数字"之差上——不过要当心,光是执行框架的差异,就常常能让智能体分数移动好几个点。
金丝雀串——嵌进基准文件里的一段唯一 GUID,用来询问模型是否见过它——值得知道,如果你自己发布基准也值得放一个,但不要对阴性结果押注。它只能检测出那个确切的公开文件进了训练,任何一次重排版都会把它剥掉,而且按构造它对解法泄漏和间接泄漏什么都说不出。
污染在智能体基准里具体长什么样。
智能体评测会以单轮问答不会的方式让问题更糟,原因在于:一个智能体基准交付的是一个环境,而不只是一道题。
一个在流行开源仓库上被打分的编码智能体,是在一份几乎可以肯定完整存在于它训练数据里的代码库上受测。它知道目录布局、命名约定、测试放在哪儿、哪个模块负责哪件事。这每一条都是它相对于"同一个智能体被丢进你的私有 monorepo"的真实优势,而这些一条都没被测量。你读到的那个分数不是"这个智能体能否在陌生代码库里导航",而是"这个智能体能否在一份它已经读过的代码库里导航",而前者才是你要买的能力。
- 导航污染对答案重叠检查是隐形的。补丁可以完全是新的,而"找到对的那个文件"这一步却是白送的。这正是第 3 步里那个记忆探针——它列得出文件吗?——在这里比任何解法比对都更有信息量的原因。
- 工具与 API 表面带着同样的问题。一个针对文档齐备的公开 API 做基准测试的智能体,练的是记住的调用签名。把它指向你的内部服务——那里唯一的文档就是你自己的工具 schema——落差往往令人吃惊。
- 轨迹打分也一并继承了它。如果你连路径带结果一起打分,一条被记住的路径会被判成良好的过程。轨迹与过程评测讲的是这条路径本该告诉你什么。
令人不适的推论是:那些头条级的智能体编码数字,系统性地高估了它们在私有代码上的表现,而高估的幅度取决于你的代码库与公开代码库有多像。这不是忽略基准的理由。这是"跑自己的评测时该预期一个下降"的理由,也是"把这个下降的幅度当作关于你自身环境的信息、而不是当作模型的缺陷"的理由。
那些能买来时间的设计,以及各自的代价。
这个领域的回应已经收敛到四种策略。没有一种解决了问题;每一种都是用一份不同的代价换更长的半衰期。
- 持续刷新的基准。从活水源头自动收割新任务——这个月提的 issue、这周挂出的论文——并淘汰旧的。这是唯一真正跑得过间接泄漏的路子,它的代价是分数不再跨时间可比:这个季度的条目不是上个季度的条目,所以分数上升也可能只是抽到了更容易的一手。要么报出抽样流程,要么这个数字毫无意义。
- 私有留出切分。把一半条目不公开,由自己来跑提交。有效而昂贵,并且它把基准变成了一项有运营方、有排队、有信任要求的服务——你如今是在为一个自己无法复现的数字采信别人的说法。
- 抗污染构造。用程序化方式生成条目,或者取自私有数据,或者做成答案根本无法用文本陈述的形式。买到的时间最多;通常也是靠远离那些让基准值得存在的真实任务买来的。
- 对既有集合做人工整理。就是"Verified"那套:保留原始材料,花钱请人把解法可见、测试没有区分力的条目剔掉。它对逐字泄漏和间接泄漏毫无作用,但它是针对解法泄漏回报最高的修法,并且它让剩下的那个数字名副其实。
对于你自己拥有的评测集,同一份菜单在更小的尺度上依然适用,而且算法不同,因为源头在你手里。你在第 3 步里搭的日期切分集就是一个持续刷新的基准;你的生产流量就是任何实验室都不可能训练过的私有留出数据。这才是自建评测集真正的优势,它比它的规模看上去更值钱——见评测驱动开发与 CI。
那条决策规则。
以上一切都坍缩成一条操作原则:公开基准回答"到底能不能";只有模型不可能见过的数据才回答"选哪个、差多少"。把你的问题分进这两个桶,污染问题基本就不再是问题了,因为你已经不再要求公开数字去干它干不了的活。
- 筛一份候选名单——公开基准够用而且便宜。拿它排除掉明显做不了这类任务的候选。不要拿它给幸存者排序。
- 在两个决赛选手之间做选择——公开基准一文不值,它们之间的差距几乎肯定小于污染程度之差。跑你自己的集合。见如何选模型。
- 追踪你自己随时间的进展——这里的威胁不是污染,而是数据集腐烂:你的集合会随着你修好它抓到的东西而越来越容易。持续从近期失败里补进任务。
- 把一个数字报给别人——给它标日期。"在 2026 年 7 月收割的任务上 82%"是一句经得起追问的诚实断言;"在<某基准>上 82%"则是一句含义会在读者手里悄悄变化、而你们俩都察觉不到的断言。
先搭日期切分集,早于任何检测机器。五十个任务,取自晚于每个候选模型截止日期的材料,与你的真实工作结构相当,每月刷新一次——它在一个下午里告诉你的东西,会多过一次针对公开基准的完整污染审计在一周里告诉你的,而且与那次审计不同,它此后每个月都作为你的回归集继续付息。第 3 步里的检测手段是留给"你需要向别人解释为什么榜单不构成答案"的场合;日期切分集才是用来真正做决定的。
相关:批判地阅读智能体基准讲同一份怀疑的另一半——执行框架敏感性,HAL 与异步智能体评测讲基准在准确率之外还测量什么,评测 101讲基础。