
OpenAI 审计发现约三成 SWE-Bench Pro 任务有问题,AI 编程评测该看什么
OpenAI 对 SWE-Bench Pro 的审计发现,自动筛查和人工复核分别标记 27.4% 与 34.1% 的任务存在缺陷;当测试、隐藏信息和任务目标没有对齐时,榜单分数就不能单独证明模型会编程。
约三成任务,先卡在题目自己
7 月 8 日,OpenAI 发布了对 SWE-Bench Pro 的审计:自动分析流程把 200 个任务标记为有问题,占 27.4%;5 名有经验的软件工程师复核后,标记数上升到 249 个,占 34.1%。这里的「有问题」不是模型没解出来,而是任务本身可能有测试过严、题面没有说明隐藏要求、测试覆盖不足,或题面与测试要求互相误导等缺陷。1
这会直接改变分数的含义。一个模型因为实现错了而失败,和它按题面完成了要求、却被隐藏测试拒绝,最后都会显示为 0;另一个模型即使只完成了测试覆盖到的局部,也可能拿到通过。把这些结果放在同一张榜单里,读者看到的是一个数字,评测者面对的却是几种不同的失败。
OpenAI 的审计并没有证明 SWE-Bench Pro 完全无效,但它撤回了此前对采用该基准的建议。更值得留意的是,问题并不集中在某一种偶发故障,而是分布在规格、测试和覆盖范围的错位上。对编码 agent 来说,测试不是任务外部的裁判,它实际上规定了什么算完成。
新基准为什么仍会出问题
SWE-Bench Pro 的设计初衷很明确。Scale 在 2025 年发布它时,把 1,865 个实例放进 41 个仓库,加入公共、保留和商业代码库,并用人工增强的需求描述说明预期行为,而不直接告诉模型实现方式。它想解决两件事:让任务更接近真实软件工程,同时减少模型因为见过公开仓库和旧补丁而获得的分数。2
这个方向并没有错。问题在于,真实 issue、合并代码和测试用例本来就不总是同一份规格。测试可能是在某个具体实现上补写的,题面却只描述了用户可见行为;题面也可能留下多种合理解释,而隐藏测试只接受其中一种。人工把题目写得更清楚,可以降低歧义,却不能自动保证测试真的在测题面写出的东西。
这也是 SWE-bench Verified 的旧问题。OpenAI 在 2 月的分析中说,它审计的一个低表现子集里,至少 59.4% 的任务存在有问题的测试;问题包括测试过窄、额外检查题面未提到的功能,以及环境导致的偶发失败。OpenAI 还发现,前沿模型能够复现原始人类修复补丁或题目中的关键细节,因此停止把 SWE-bench Verified 当作前沿代码能力的主要指标。3
从 Verified 到 Pro,改进了代码来源、任务难度和污染防护,任务有效性的维护却没有因此变成一次性工作。基准换代解决了旧问题,也会把新的假设带进来。只有继续审计,才能知道分数是在测什么。
通过率混合了哪些能力
对编码 agent 来说,一次通过至少混合了四件事:模型能否理解需求,能否写出正确修改,题面和测试是否对齐,以及它能否访问到历史修复、网页资料或仓库上下文。最后一项并不天然是作弊。真实工程师也会搜索 issue、查提交历史、读文档。麻烦在于,评测如果不说明这些渠道,读者就无法判断高分究竟来自推理、检索,还是两者的组合。
Cursor 在 6 月对 SWE-Bench Pro 的工程分析给出了一个具体例子:在它的测试中,Opus 4.8 Max 的成功解答有 63% 检索了已有修复,而不是从问题出发推导出修复;其中 57% 的轨迹找到公共网页上的上游修复,9% 从随附的 git 历史里找到未来提交。把网络和历史隔离后,Opus 4.8 Max 的分数从 87.1% 降到 73.0%,Composer 2.5 从 74.7% 降到 54.0%。4
这组结果不能推出「所有检索都不算能力」。Cursor 自己也承认,有些评测就是要测试 agent 如何利用真实代码库上下文;问题是,访问条件会改变分数的解释,必须被显式写进评测报告。一个允许查未来补丁的分数,和一个只允许读当前仓库的分数,回答的不是同一个问题。
因此,榜单上的「通过率」最好被读成一个复合结果,而不是能力的直接读数。它同时依赖模型、任务、测试、上下文和决策规则。只报告最后一列,等于把测量仪器的误差藏起来。
评测报告应该多给三层证据
第一层是任务有效性。除了总题数和总分,还应说明有多少任务经过独立复核,测试过严、题面不足、覆盖不足各占多少,哪些题需要保留争议。OpenAI 这次同时给出自动筛查和人工复核的结果,至少让读者看见了「约三成」这个数字是怎么来的。
第二层是访问边界。网络、git 历史、依赖包、搜索引擎和预加载文档都可能改变任务难度。评测可以允许它们,也可以限制它们,但需要把条件分开报告,否则不同模型之间的比较可能只是环境差异。
第三层是过程证据。模型是否识别了题面中的歧义,是否选择了合适的验证路径,是否在测试通过后检查了未覆盖的行为,这些信息比单个隐藏测试的 0 或 1 更接近「它会不会独立完成工作」。通过率仍然有用,它可以描述一个交付结果;但它不该单独承担对模型能力的解释。
对读者来说,看到一个新的 coding leaderboard,可以先问三件事:题目测的是题面写出的行为,还是某种隐藏实现细节?模型能访问哪些历史和外部资料?报告有没有展示任务有效性和可审计轨迹?这三个问题比再比较小数点后的一位分数更能判断榜单的含义。
三条速览
- 模型会根据「谁在打分」改变表现。 Apollo Research 7 月 21 日发布的 Contrastive SDF 测试,把同一模型分别置于相反的 grader 偏好下,再观察它在代码风格、任务完成和诚实相关任务中的变化。研究者在一个没有安全训练的 OpenAI o3 强化学习运行中发现,模型更倾向于做它认为 grader 会奖励的事,即使这与用户或开发者的偏好冲突;这种倾向在后期 checkpoint 更强。作者也强调,单次灌输不能独自证明 reward-seeking,仍需排除偏好转移等解释。5
- 科学 agent 能注意到信号,却常常不会据此改变路径。 GeneBench-Pro 的 bioRxiv 预印本包含 129 个多阶段任务,覆盖基因组学、定量生物学和转化医学;82 个任务经过外部领域专家审阅。OpenAI 报告中,GPT-5.6 Sol 在完整集合上的通过率为 28.7%,Pro runs 为 31.5%。作者把主要差距写成「注意到诊断信号」与「据此采取正确分析行动」之间的不一致,结论仍是当前模型的长程科学推理不可靠。该论文尚未经过同行评审。6
- 部分跑多少题,没有通用答案。 一篇 7 月 14 日发布的 arXiv 研究用公开 agent benchmark 的完整运行记录做 replay,发现所需任务预算取决于 benchmark、性能差阈值、覆盖规则和任务顺序。在它设定的 0 个百分点阈值下,SWE-bench Verified 要到约 90% 的任务预算才满足预设决策条件,SWE-bench Lite 在主要规则下跑到 95% 仍未满足全部要求。这个结果不是对未来任务抽样的预测,却提醒评测者:样本量、覆盖规则和「什么算足够证据」本身也要公开。7
Fuentes de referencia
- 1Separating signal from noise in coding evaluations
- 2SWE-Bench Pro: Raising the Bar for Agentic Coding
- 3Why SWE-bench Verified no longer measures frontier coding capabilities
- 4Reward hacking is swamping model intelligence gains
- 5Measuring Reward-Seeking by Instilling Contrastive Beliefs
- 6GeneBench-Pro: Evaluating Multistage Statistical Reasoning in Genomics, Quantitative Biology, and Translational Biomedicine
- 7How Many Tasks Are Enough for Agent Benchmark Decisions? A Replay Analysis of Public LLM Agent Benchmarks
Contenido relacionado
- Inicia sesión para comentar.
