一、SWE-bench 长什么样
-
该修好的测试:Django 开发者当年修这个 bug 时新加的测试,原来不通过,打上 AI 的补丁后必须通过。 -
不能弄坏的测试:仓库里原有的相关测试,打补丁前通过,打补丁后也必须通过。
-
SWE-bench(2023 年 10 月):普林斯顿团队从 12 个热门 Python 开源项目里挖出 2294 道题。当时最强的模型 Claude 2,只做对了 1.96%。 -
SWE-bench Verified(2024 年 8 月):原版有不少题描述不清、测试不合理。OpenAI 请专业工程师逐题复核了 1699 道题,每道题三人独立审,最后精选出 500 道。它很快成了业界标准。 -
SWE-bench Pro(2025 年 9 月):Verified 的分数一路涨到 80% 左右,增长明显放缓。Scale AI 推出 Pro:1865 道题、41 个代码仓库,平均每题要改 107 行、4 个文件,比 Verified 难得多。发布时最强的 GPT-5 只做对 23.3%。
-
2026 年 2 月:OpenAI 宣布 Verified 不再可信。 -
2026 年 7 月:OpenAI 宣布 Pro 约 30% 的题有问题,收回推荐。而据报道,前沿模型在 Pro 上的最高通过率,已经在 8 个月里从 23.3% 涨到了 80% 左右。
-
只给 django__django-11099 这个编号,Gemini 3 Flash 就复述出了题目内容,还写出了标准答案里那处正则改动。 -
Claude Opus 4.5 在一道天文学库 Astropy 的题上,准确说出了要改的文件路径、函数名,甚至代码里的一行注释。 -
GPT-5.2 在一道 Django 题上,说出了题目描述里根本没提到的一个参数名,依据是它「记得」Django 的版本发布说明。
-
测试太窄(35.5%):测试会拒绝功能上完全正确的解法。比如一道 pylint 的题,测试里直接调用了一个函数名,可题目描述从头到尾没提过这个名字。你修好了 bug,但函数没起成那个名字,照样不通过。 -
测试太宽(18.8%):测试检查了题目没要求的东西。比如一道 SymPy 的题,原始的修复一次解决了三个问题,题目描述却只提了其中一个。
-
防污染:公开题只选用 GPL 许可证的仓库(选这类「传染性」许可证,是为了降低被收进训练数据的可能),另有 858 道题完全不公开,还有 276 道来自创业公司的私有代码库。 -
防模糊:每道题都经过三轮人工处理:澄清题意、补充要求、验证测试。
-
Bug 报告是写给维护者的,不是写给考生的。 它默认读者了解项目的来龙去脉,很多关键信息藏在讨论区、代码评审,甚至开发者的脑子里。 -
测试是为那一次具体的修改写的,不是为判分写的。 开发者写测试,是为了确认「我这个改法」没问题,所以测试天然会贴着他自己的实现细节,比如函数名、格式、顺序。换一种同样正确的写法,测试就可能不认。 -
一次提交常常不只干一件事。 顺手修了别的问题、重构了旁边的代码,测试里就会多出题目没交代的要求。
-
挖题:成本几乎为零,规模大,来自真实世界;但题目公开得比考试还早,测试也不是为判分写的。 -
造题:每道题要资深从业者花几个小时甚至几天,从任务描述、交付要求到判分规则全部原创,不公开或延迟公开;成本高,但干净,判得准。

