SWE-bench 榜单上的高分,究竟多少来自真实推理,多少来自"认得这个仓库"?上海交大团队 8 月 21 日提交到 arXiv 的论文(arXiv:2609.27891)给出了一种把两者分开的实验设计:不换题目,只把测试仓库"换脸",看 agent 还能考多少分。
评测时才"坍缩"的仓库
论文提出 SchrodingerRepo 框架,核心思想借自薛定谔的猫:测试仓库被当作评测时的潜变量,只在 agent 进入评测环境那一刻才动态实例化。实例化保留原始可执行行为,但通过四个层级逐步抹掉熟悉线索——重构问题描述、命名空间改名、文件内布局重排、功能保持的代码重写。作者来自上海交大和西安交大,代码以 MIT 协议开源。
动机实验先给出泄漏证据:对每个被测模型,超过 65% 的 SWE-bench Verified 题目有明确数据泄漏,超过 18% 的题目能被回忆到补丁或测试级别。这呼应了 OpenAI 此前"SWE-bench Verified 已无法可靠衡量前沿编码能力"的判断。
四个模型集体掉分
团队用 mini-swe-agent 脚手架在 SWE-bench Verified 上评测四个后端:GPT-5.4-mini、GPT-5.1、Gemini-3.1-Flash-Lite、DeepSeek-v4-Flash。四层变换全开后,Pass@1 全线下滑:GPT-5.4-mini 从 46.8% 降到 35.6%,DeepSeek-v4-Flash 从 72.8% 降到 66.8%,GPT-5.1 从 44.6% 降到 36.2%,Gemini-3.1-Flash-Lite 从 56.7% 降到 42.3%,整体降 6.0-14.4 个百分点(p<0.05)。
最狠的不是重写代码,而是命名空间改名:单这一层就让三个模型分别掉 7.4、6.4、6.0 个百分点,平均动作数最高涨 112.4%,输入 token 最高涨 218.3%。仅仅把 Django 的 get_*_display 这类惯用命名换掉,模型就开始满仓库乱撞。
多花的动作都花在哪了
轨迹分析显示,新增动作的 81.6-83.6% 集中在 navigate、search、read、probe 这类探索行为,只有一成多用于编辑和测试。策略也在分化:DeepSeek-v4-Flash 新增动作中 31.4% 是 probe(轻量运行时试探),靠多试探保住了更多原始分数;GPT-5.4-mini 更依赖 read 和 search 静态检索,熟悉感一被抹掉,相对降幅反而更大。
结论可迁移到仓库级问答基准 SWE-QA:GPT-5.4-mini 平均分从 70.35 跌到 65.71,DeepSeek-v4-Flash 仅微降,但后者的动作数从 24.49 涨到 35.02,输入 token 增 59.10%。
分数没掉,不代表没背题
最能说明问题的是反例实验:在 2026 年 3 月 SWE-rebench 分片(110 个 GPT-5.4-mini 发布后新造的题)上,Pass@1 在全量变换下保持 17.27% 不变,但交互成本照涨——动作 +8.15%,输入 token +22.01%。作者解读:变换后模型需要更多交互来重建仓库上下文,即便题目本身没有泄漏。
对行业的含义是双向的:榜单分数要打折看,高分可能部分来自"认得仓库";但也不必走向"全是背题"的极端——没泄漏的新题上分数并未崩塌,涨的是成本而非降的能力。真正该变的是评测本身:动态实例化的仓库表示,应该成为编码 agent 评测的标配。
论文:arxiv.org/abs/2609.27891
代码:github.com/cslsolow/Schrodinger-Repo