论文链接:Schrödinger’s Code Repository: Have LLMs Learned SWE-bench or Memorized It? 代码仓库:cslsolow/Schrodinger-Repo 发表时间:2026年9月 机构:上海交通大学(主导,第一作者 Silin Chen 与通讯作者 Xiaodong Gu 所在单位)+ 西安交通大学(共同一作 Yufei Yang)+ 华东师范大学/上海创新研究院(Chengcheng Wan)。三校合作的学术工作,无企业参与。 领域标签:软件工程智能体(SWE Agents)、大语言模型评测(LLM Evaluation)、基准污染(Benchmark Contamination)
一、论文背景
1.1 什么是仓库级编码评测?
想象你要考察一个人的编程能力。最简单的方式是出一道独立的算法题——但这只能考察「写函数」的能力。真实世界的软件工程师面对的是完全不同的场景:一个包含成百上千个文件、有十几万行代码、有自己历史和风格的大型开源项目(术语叫「代码仓库」,repository)。工程师的任务可能是:用户报告了一个 bug(在 GitHub 上叫 issue),你需要在这个庞大的仓库里找到出问题的位置、理解上下文、修改代码、并保证改动不破坏其他功能。
「仓库级编码评测」考察的就是这种综合能力。其中最有名的基准是 SWE-bench:它收集了 2,294 个真实的 GitHub issue,每个 issue 配上可执行的原始仓库环境和测试用例。被评测的 AI(现在通常是「编码智能体」,coding agent——即 LLM 加上执行命令、读写文件等工具的自主循环系统)需要生成一个补丁(patch),通过自动测试才算解决。SWE-bench Verified 是 OpenAI 人工校验过的 500 实例子集,如今是评测前沿编码智能体的事实标准。
1.2 什么是基准污染(benchmark contamination),为什么它对 SWE-bench 特别致命?
LLM 的能力来自预训练:在海量互联网文本上「读书」。问题在于——考试题也在书上。
SWE-bench 的题目取自 Django、sympy、scikit-learn 等极其流行的开源仓库。这些仓库的代码、issue 讨论、修复补丁早就散布在互联网上,几乎必然被刮进了训练语料。这就是「数据泄漏」(data leakage)或「基准污染」:模型在考试前已经看过考卷。
更微妙的是,SWE-bench 中每个任务只有一个规范形态(canonical representation)——固定的仓库快照、固定的 issue 文字、固定的文件名。模型在训练、开发、评测中被反复暴露在这个完全相同的表示下,于是可能记住的不是「怎么修 bug」,而是「Django 这个 issue 的答案在哪几个文件」「这类问题的修法长什么样」这类仓库表面线索(repository-side cues):命名习惯、目录布局、惯用实现模式。
OpenAI 官方在 2026 年发表过一篇文章解释他们为什么不再用 SWE-bench Verified 评测前沿模型,理由正是污染让它不再可靠。本论文做了一个更直接的动机实验来量化这件事:让人类专家把 issue 描述逐轮透露给模型(不给任何代码),看模型能否「回忆」出任务特有信息。结果是——每个受测模型超过 65% 的实例表现出明确泄漏证据,超过 18% 的实例能回忆出补丁/测试级别的具体内容。也就是说,很多题目模型还没看代码就「知道答案」。
1.3 已有的应对方案及其局限
业界的主流对策是「换新题」:SWE-bench Live、SWE-rebench 持续纳入模型发布之后新产生的 issue(时间隔离),SWE-bench Pro 转向更复杂的长周期任务。但论文指出它们的共性局限:新题的规模和错误类型覆盖面有限——成熟老仓库里那些长尾 bug 模式恰恰是真实世界最常见的,为了「干净」而丢弃它们,评测的代表性就打了折扣。
这就引出本文的核心问题:能不能不换题,而是让「题目的外表」在每次评测时都不一样,从而把「记忆外表」与「真实推理」区分开?
二、论文定位和关联工作
本论文处于「SWE-bench 可信度危机」这条研究主线上。相关工作可以分成四条谱系。
2.1 谱系一:SWE-bench 本体与变体(换数据)
- SWE-bench / SWE-bench Verified(Jimenez et al., ICLR 2024):本体。从真实 PR 构建可执行任务。是本文的直接研究对象。
- SWE-bench+(arXiv:2410.06992):用训练截止日期之后新建的 issue 替换原题,直接规避时间上的泄漏。
- SWE-bench Live(arXiv:2505.23419)与 SWE-rebench(arXiv:2505.20411):持续更新流水线,只收模型发布后产生的实例。本文用 SWE-rebench 的 2026 年 3 月榜单切分做了关键的对照实验(RQ4)。
- SWE-bench Pro(arXiv:2509.16941):转向 GPL 与商业代码库的长周期复杂任务,从源头降低被爬取的概率。
这些工作的思路是「用更新的数据换掉可能泄漏的数据」,代价是牺牲规模与错误类型多样性;本文则选择「保留原题、改变表示」。
2.2 谱系二:SWE-bench 记忆/污染的证据链(诊断)
- The SWE-Bench Illusion(arXiv:2506.12286):只给 issue 文字不给代码,前沿模型能以最高 76% 的准确率直接猜出要改的文件路径;而对不在 SWE-bench 里的同类仓库只有 53%。这是「记忆而非推理」最著名的直接证据之一。
- Does SWE-Bench-Verified Test Agent Ability or Model Memory?(arXiv:2512.10218):Claude 系模型在最小上下文条件下于 SWE-bench Verified 上的定位表现是对其他基准的 3 倍以上,同样指向泄漏。
- OpenAI 官方博客(论文引用 [19]):宣告 SWE-bench Verified 对前沿模型失去区分度。
本文的动机实验属于这条谱系(逐轮透露语义单元、人工判级),但更进一步:别人证明了「有记忆」,本文要测量「记忆贡献了多少分」。
2.3 谱系三:静态基准扰动(换表示的先行者)
- PoorCodeSumEval(ASE 2024):对代码做标识符混淆、降低可读性,测试模型对表面词汇线索的鲁棒性。
- RepoMirage(arXiv:2605.26177):与本文最接近的同期工作。对 SWE-bench Verified 施加语义保持的仓库级扰动,发现 8 个前沿模型解决率平均相对下降 27%,且观察到 agent 的「探索漂移」——读更多文件却组织不起有效结构。
- LastingBench(EMNLP 2025 Findings):通过改写关键句子把基准改造成「不可复用的记忆素材」。
- GSM-Symbolic(arXiv:2410.05229,数学领域):把 GSM8K 题目做成符号模板,人名数字可重采样——同一道题每次生成不同表面形态,发现所有前沿模型精度下降。这是本文「潜变量」思想在数学基准上的先声。
这一谱系的关键弱点:扰动结果是静态的——变换一次就固定了,很快又会被刮进未来的训练语料,重新变成「新的规范形态」。这正是本文要解决的核心痛点。
2.4 谱系四:程序化环境与合成实例(工程基础设施)
- R2E-Gym(arXiv:2504.07164):从 commit 反向生成可执行训练环境(SWEGEN 配方),8.1K 任务。
- SWE-smith(arXiv:2504.21798):对任意 Python 仓库自动合成 bug 实例(LLM 改写函数、AST 变异、回退 PR 等),50K 实例、128 仓库。
- Repo2Run / SWE-bench++:可执行环境的规模化构建。
这些工作解决「题从哪来」,本文解决「题怎么呈现」,两者互补:合成实例同样会面临静态表示被记忆的问题,理论上 SchrodingerRepo 的评估期变换可以叠加在任何静态基准之上。
2.5 定位总结
| 维度 | 换数据(Live/Pro/rebench) | 换证据(Illusion 等) | 静态扰动(RepoMirage 等) | 本文 SchrodingerRepo |
|---|---|---|---|---|
| 保留原题覆盖面 | ✗(牺牲多样性) | ✓(只是诊断) | ✓ | ✓ |
| 直接测量记忆贡献 | ✗ | ✓(相关证据) | ✓ | ✓(隔离四级线索) |
| 变换后可被再记忆 | — | — | ✗(变换结果固定) | ✓(种子控制的评估期实例化) |
| 保持可执行评测 | ✓ | — | 部分 | ✓(双向映射回原环境) |
一句话定位:本文是第一个系统研究「仓库表示敏感性」的评测框架——它把 RepoMirage 式的语义保持扰动从「一次性静态产物」升级为「每次评估、每个种子都不同的动态潜变量」,并配合时间隔离对照(RQ4),把「退化=去记忆」的因果链闭合了起来。
三、问题定义
3.1 从具体场景到抽象问题
具体困惑:模型在 SWE-bench Verified 上得分很高,但我们无法区分这份分数里有多少来自「仓库级推理能力」、多少来自「对特定仓库表示的记忆」。
论文的深层洞察在于把「仓库表示」从常量变成了变量:
一个任务的难度语义,与该任务的表面表示,是可以解耦的。 如果在保持任务语义(issue、执行行为、测试判定)完全不变的前提下,只改变表面表示(名字、布局、措辞、局部实现形态),模型的分数变化就只能归因于它对原表示的依赖。
类比:要判断一个学生是真会做题还是背过答案卷,最干净的办法不是出更难的新题(那混淆了「难」和「陌生」),而是把同一套题换个数字、换个名字、换个排版重新印一份。真会做的人分数不掉,背答案的人现出原形。
3.2 形式化定义
- 给定:基准实例集,每个实例含原仓库状态 $B$、问题陈述、测试套件(Pass-to-Pass 测试 $\mathcal{T}_{p2p}$ 与 Fail-to-Pass 测试 $\mathcal{T}_{f2p}$);
- 变换族:一组语义保持变换 $\mathcal{V} = T_{seed}(B)$,需满足约束:
- $\text{Pass2Pass}(\mathcal{V}) = 1$(原有正确行为不被破坏)
- $\text{Fail2Pass}(\mathcal{V}) = 0$(目标 bug 仍未修复——题目还在)
- 求:在变换分布上度量 agent 的稳健性,即 $\mathbb{E}_{seed}[\text{Score}(agent, T_{seed}(B))]$ 与规范表示得分之差,并归因该差值于仓库侧线索依赖。
3.3 这个抽象的精妙之处
「薛定谔的仓库」这个名字点睛:在 agent 进入评测环境之前,仓库不是一份确定的代码,而是一个潜变量(latent variable)——只有在 agent 进入的那一刻,才由种子决定它「坍缩」成哪种具体形态。因为形态空间由种子和映射程序共同决定、近乎无限,事先背下任何一种形态都无效。这就从机制上(而不只是靠时间隔离)切断了「评测表示被预训练记忆」的通路。
四、问题解法
SchrodingerRepo 由四个变换级别 + 三项保障机制组成。前两级作用于 agent 的「观察层」,后两级作用于「工作仓库层」。
4.1 Level 1:问题陈述重构(换题面)
类比:把考卷的题干换个说法重抄一遍。
做法:两阶段 LLM 变换。生成器负责重排信息、改写措辞、删除不影响语义的标识符提及;校验器 LLM 检查所有任务定义性约束(bug 描述、功能需求、成功标准)是否保留,缺失则触发修复。目的是消掉 issue 文字里可能被记住的「标准措辞」。
4.2 Level 2:命名空间重映射(换名字)——全文最强的一级
类比:把整本教材做一次「名词对照表」式的翻译——QuerySet 变成 LedgerSuite,但讲的还是同一件事。
做法:这是唯一作用于「观察与交互接口」而非仓库本身的级别,分离线/在线两阶段:
- 离线构映射:解析代码 AST,收集所有仓库自有标识符(类、函数、模块级变量、导入引用);严格过滤掉 Python 内建、保留字、第三方库符号——只动仓库自己的词,不动外部 API,保证可执行性。然后把标识符拆成子词级 token(如
QuerySet→Query+Set),在种子控制下映射成语义上貌似合理的新词(→Ledger+Suite),并保持命名风格(CamelCase 还是 CamelCase、snake_case 还是 snake_case)与 token 级一致性(Query在哪里都映射成Ledger)。 - 在线双向翻译:agent 看到的所有观察(代码、路径、执行输出)都被翻译进虚拟命名空间;agent 发出的所有命令又被翻译回原命名空间在真实环境执行。会话笔记本记录实际发生的映射,反向翻译只限于此集合。物理仓库一个字节都没改,但 agent 活在一个全改名的世界里。
4.3 Level 3:文件内布局重排(换顺序)
类比:教材的章节目录全乱了——每个知识点还在,但「第几节」全变了。
做法:在文件与类两个层级,对「可重排的连续定义区」(顶层函数/类、类体内的方法)做重排。关键工程:先在 AST 上构建定义时依赖图 $G$——装饰器、默认参数、类型标注、类基类、类体表达式都会引入名字依赖,成为有向边;然后在 $G$ 上做随机拓扑排序采样一个合法顺序(无替代顺序则保留原序)。不可重排语句作为结构锚点切分区域,保证只有局部顺序变化。
4.4 Level 4:功能保持重写(换写法)
类比:把教科书上某段推导换一种等价证法重写——结论不变,但「长得像」背过的那版没有了。
做法:两阶段。离线阶段针对每个实例,先定位与修复信号最相关的代码区域,调用受限重写 agent 生成统一 diff——注意其目标不是修 bug,而是把现有实现改写成行为等价但形态大不相同的版本(换控制流、换局部结构)。在线阶段把重写后的仓库作为工作环境交给被测 agent。
4.5 三项保障机制(方法可信的基石)
- 逐级有效性检查:每级人工抽检 100 个实例确认任务等价;L1 逐条人工终审。
- 测试守门(L3/L4):变换仓库必须在官方 SWE-bench 执行环境里通过全部 Pass-to-Pass 测试、且 Fail-to-Pass 测试保持失败——用可执行语义证明「题没变、bug 还在」。
- 补丁恢复:不从 agent 生成的 patch 文本取提交,而是对最终仓库状态与原始仓库做逐文件 diff 重建提交——无论 agent 在哪个变换空间里干活,评分始终锚定在原始坐标系。
4.6 实验协议
受测 agent 统一为 mini-swe-agent 脚手架(温度 0,每实例最多 250 步)。L3/L4 出于成本限制在金补丁相关文件/区域上施加。每实例用 3 个不同种子生成 3 个变换视图,独立评测取平均——衡量的是跨多种语义等价表示的稳健性,而非对某一次变换的运气。四级可联合开(测端到端稳健性)也可单独开(归因每一级的贡献)。
五、评估指标与实验证据
5.1 指标体系
| 类型 | 指标 | 定义 | 衡量的能力 |
|---|---|---|---|
| 主指标 | Pass@1 | 单次运行中解决实例的比例 | 去线索后的真实解决能力 |
| 主指标(QA) | Average Score | SWE-QA 官方答案质量分 | 表示敏感性是否泛化到其他任务 |
| 辅助 | Avg. Actions / Input Tokens / Output Tokens | 交互步数与两端 token 消耗 | 「补回上下文」的代价 |
| 消融 | 逐级(L1–L4 单开) | 各级单独的 Pass@1 变化 | 哪类线索被依赖最深 |
5.2 核心数据(SWE-bench Verified,RQ1)
| 模型 | Baseline | 全变换 | 下降 | L1 | L2 | L3 | L4 |
|---|---|---|---|---|---|---|---|
| GPT 5.1 | 44.6% | 36.2% | −8.4pp | −0.0 | −7.4pp | −1.6pp | −1.2pp |
| GPT-5.4-mini | 46.8% | 35.6% | −11.2pp | −0.0 | −6.4pp | −3.4pp | −2.2pp |
| DeepSeek-v4-Flash | 72.8% | 66.8% | −6.0pp | −2.0 | −6.0pp | −0.8pp | −2.8pp |
| Gemini-3.1-Flash-Lite* | 56.7% | 42.3% | −14.4pp | — | — | — | — |
*Gemini 只在动机实验确认泄漏最强的 300 实例上评测(成本原因),下降幅度最大与此选择有关。全变换下降全部通过显著性检验(p<0.05,多数 p<0.01)。
交互成本同步暴涨:全变换下 GPT-5.4-mini 输入 token +255.4%,DeepSeek-v4-Flash +253.6%,最强配置超过 2.5 倍。
为什么这个实验设计能证明论点:任务语义(issue、执行环境、测试判定)全部不变——唯一变的是表示。因此分数下降不能归因于「题变难了」,只能归因于「熟悉线索没了」。逐级消融进一步定位:L1(只换题面措辞)几乎无效,L2(换名字)是最大单一因素,L3/L4 温和——说明模型记住的主要是仓库侧的命名结构,而不是 issue 措辞或局部代码形态。
5.3 行为分析(RQ2):钱花在哪了?
对额外增加的动作做六分类(navigate/search/read/probe/edit/test):DeepSeek-v4-Flash 的额外动作 83.6%、GPT-5.4-mini 81.6% 落在前四类(探索类),编辑与测试只占约 16.5%。且两模型策略分化明显:DeepSeek 偏好 probe(运行试探,31.4%),GPT-5.4-mini 偏好静态 read(41.8%)+search(33.1%)、几乎不 probe(3.7%)。探索越激进的模型(DeepSeek 基线本来就 46 步/题)保留的 Pass@1 越多;交互越高效的模型(GPT-5.4-mini 基线 11 步/题)退化越大——存在「探索强度 vs 稳健性」的权衡。
案例(django__django-11999)极具说服力:原视图下 agent 沿 issue 里的 get_FOO_display 术语直接 grep 定位,37 步解决;变换视图下名字全变,agent 只能遍历目录、逐文件排查、甚至搭最小复现环境确认语义,217 步才收敛到同一个补丁——过程天差地别,答案殊途同归。
5.4 泛化与对照(RQ3/RQ4)
RQ3(SWE-QA,3 仓库 144 实例的仓库级问答):GPT-5.4-mini 得分 70.35→65.71(−4.64),动作 +18.15%;DeepSeek 72.97→72.42(−0.75),动作 +43.02%、输入 token +59.10%。同样是 L2 影响最大——「命名是最强线索」跨任务成立。DeepSeek 得分几乎不掉但成本大涨,再次印证「探索换稳健」。
RQ4(SWE-rebench 2026 年 3 月榜,110 个创建于 GPT-5.4-mini 发布之后的实例)——全论文最关键的控制实验:全变换下 Pass@1 17.27%→17.27%,一分不掉;而动作 +8.15%、输入 token +22.01%。这说明:变换本身没有把任务变难(不然干净实例上也该掉分);在不可能被记忆的新实例上,模型只是多花点力气探索就追平了。SWE-bench Verified 上那 6–14.4pp 的下降,正是「记忆溢价」的直接测量。 作者还观察到成本增幅在越老牌、越广泛使用的仓库上越大——与预训练暴露程度一致。
六、效果优势的根源解释
6.1 根源机制与证据链
本文的「效果」不是分数更高,而是测量更真。它的优势根源可以拆成一条因果链:
- 规范表示的局限(根因):静态基准的单一规范形态使「能力」与「对该形态的记忆」在分数上不可分——这是测量层面的信息混淆,不是模型层面的缺陷。【论文动机实验支持:>65% 实例有泄漏证据】
- 动态实例化切断记忆通路(机制改变):种子控制的评估期变换让表示空间近乎连续,任何固定的预训练记忆都无法覆盖未来将遇到的形态。相比时间隔离(等新题出现)和静态扰动(换一个可被再记忆的固定形态),它在机制上保证「表示不可预知」。【机制论证,RQ4 提供间接证据:不可记忆实例上无退化】
- 可执行语义锚定保证测量有效(防伪):双向翻译 + 测试守门 + 状态 diff 恢复,使「题没变、bug 还在、评分锚回原坐标」——下降只能来自线索移除,不能来自变换破坏任务。【论文 100 样本人工抽检 + Pass2Pass/Fail2Pass 约束支持】
- 逐级消融实现归因(信息增益):四级正交分解了「表示」的不同侧面,L2≫L3≈L4>L1 的结果第一次把记忆依赖定位到仓库命名空间上。【论文实验直接支持】
- 行为指标解释「怎么退化」:额外动作 >80% 在探索类 → 退化机制是「失去熟路后重建仓库认知」的成本,而非「不会改代码」。【论文轨迹分析支持】
需要标注为推测的部分(论文实验未直接证明):L2 命名空间影响最大的深层解释——即模型的仓库知识以「词元-位置」联想形式存储、命名重映射恰好破坏该联想键——是合乎机制直觉的推断,论文未做内部表征层面的验证(如探针分析)。此外「每个种子一份新形态 ⇒ 数学上不可记忆」依赖于映射生成器的不可预测性与足够大的形态空间,论文未量化该空间的覆盖度。
6.2 相关工作检索与对照
以下为本次外部检索(WebSearch,2026-09-25)得到的交叉验证结果:
| 研究(可核验链接) | 相似尝试 | 相关结论 | 与本文的差异与适用边界 | 对根源解释的影响 |
|---|---|---|---|---|
| GSM-Symbolic(Apple,arXiv:2410.05229,ICLR 2025) | 模板重采样生成语义等价数学题变体 | 仅改人名/数字,所有前沿模型精度即下降;模板采样天然防污染 | 数学选择题 vs 仓库级 agent 任务;无交互成本分析 | 强支持「等价变换可分离记忆与推理」,且其『模板实例化防污染』思想与本文潜变量同构,跨领域复现 |
| RepoMirage(arXiv:2605.26177) | SWE-bench Verified 语义保持仓库级扰动 | 8 模型解决率平均相对降 27%;agent 出现「探索漂移」——读更多文件却组织不起结构 | 扰动产物静态固定(可被再记忆);聚焦上下文推理诊断而非污染;另提出 RepoAnchor 缓解工作流 | 强支持退化现象与探索成本上升;同时补充:探索多≠能解决,结构组织可能是另一瓶颈。与本文 RQ2 结论互证 |
| SWE-Bench Illusion(arXiv:2506.12286) | 无代码仅凭 issue 猜文件路径 / 复现函数 | 最高 76% 猜中文件路径,非 SWE-bench 仓库仅 53%;5-gram 逐字复现率基准间显著差异 | 诊断式(证明有记忆),不提供防污染评测手段 | 支持泄漏存在性前提;与本文动机实验(>65% 泄漏证据)相互印证 |
| Does SWE-Bench-Verified Test Agent Ability or Model Memory?(arXiv:2512.10218) | 最小上下文下的定位任务对照 | Claude 在 Verified 上的定位表现约为 BeetleBox/SWE-rebench 的 3 倍 | 仅两个 Claude 模型、仅定位环节 | 补充:泄漏集中在定位环节的证据,与本文 L2(命名)影响最大的发现一致 |
| LLMSanitize 污染检测综述(arXiv:2404.00699) | n-gram/embedding/成员推断等检测方法学谱系 | n-gram 重叠是工业界默认检测法,但对改写级污染漏检 | 检测已有污染 vs 阻断未来污染,定位不同 | 限定:检测方法无法解决「表面线索记忆」(非逐字复制,n-gram 抓不到),反衬本文变换式评测的必要性 |
| SWE-smith(arXiv:2504.21798)/ R2E-Gym(arXiv:2504.07164) | 程序化合成 50K/8.1K 训练实例与环境 | 合成数据规模化训练有效(开源 32B 达 40%+) | 面向训练数据生产,产物仍是静态可记忆表示 | 互补:本文变换层理论上可叠加于任何合成基准;也提示合成数据 agent 同样需接受表示稳健性检验 |
在本次检索范围内未发现:直接反例——即「对 SWE-bench 施加语义保持变换后前沿模型分数不变」的公开研究;亦未发现量化「评估期随机变换形态空间覆盖度/不可预测性」的理论工作。
6.3 综合判断与未决问题
得到多项研究共同支持的机制:
- 「语义等价变换 ⇒ 前沿模型分数下降」在数学(GSM-Symbolic)与代码(RepoMirage、本文)两个领域、选择题与交互式 agent 两种形态上均成立——这已不是单篇论文的偶然发现,而是 LLM 表面形式敏感性的系统性现象。
- 「退化主要发生在定位/探索环节、而非编辑环节」由本文 RQ2、RepoMirage 的探索漂移、arXiv:2512.10218 的定位对照三方共同支持。
- 「静态变换产物会被再记忆」是本文对静态扰动谱系的超越点,GSM-Symbolic 的模板式实例化在数学领域已验证同类思想,本文将其推广到仓库级可执行评测。
仍属合理推测的部分:命名重映射破坏「词元-位置联想」的记忆存储机制;形态空间的不可预测性足以在数学上排除针对性记忆。
优势成立的条件:任务语义可被测试严格锚定(本文限定 Python + 有测试套件的 SWE 风格任务);评测侧能承担变换的计算成本(多 seed × 多级别的评测开销数倍于标准评测)。
可能失效/受限的条件(论文自己也承认的 Threats to Validity):非 Python 生态、结构约定不同的仓库能否同样安全地变换待验证;仅覆盖命令行交互,IDE API/LSP 类仓库感知工具下变换一致性需要扩展;若未来模型的预训练本身包含「随机改名仓库」的增广数据,本方法的区分度将衰减——这是一场道高一尺魔高一丈的持续博弈。
七、必要知识反推
假设让一个空脑子的人从零完成这项工作,他至少需要哪些知识?
7.1 领域知识层
- LLM 预训练与数据污染机制:不理解「网络语料会被刮进训练集」「规范形态会被反复暴露」,就不会想到分数里有记忆成分。
- SWE-bench 评测协议:Pass-to-Pass / Fail-to-Pass 双测试的语义、补丁如何评分——这是「任务语义锚定」的支点,也是 Level 3/4 有效性守门的判据。
- 编码智能体的工作循环:agent 如何通过命令行观察-行动迭代(navigate/search/read/probe/edit/test 六类动作)——否则无法设计 RQ2 的行为归因。
7.2 方法论知识层
- 污染检测与防污染评测谱系:n-gram 重叠检测的局限(抓不到改写级、表面线索级记忆)、时间隔离、模板实例化(GSM-Symbolic)——知道已有武器打不中什么靶子,才能设计新武器。
- 实验设计中的控制变量思想:RQ4 的时间隔离对照是全文因果链的闭环关键——「变换后干净实例不掉分」排除了『任务变难』的混淆解释。这需要扎实的对照实验素养。
- 潜变量思想:把「表示」视为随机变量、把评测改为在分布上取期望——这是统计与心理测量学(经典测量理论中「平行测验」思想)的迁移。
7.3 工程知识层
- 程序分析:AST 解析、符号提取、定义时依赖图构建、随机拓扑排序——Level 2/3 的全部地基。
- 可执行环境工程:Docker 化 SWE-bench 环境、双向翻译层与会话笔记本、从仓库状态 diff 重建提交——保证「物理不变、视图万变、评分锚定」。
- LLM 辅助变换流水线:生成器-校验器两阶段改写(L1/L4),及其质量控制。
7.4 知识融合的关键节点
- 节点一(命名的洞察):把「程序分析中的标识符重命名(重构工具的老技术)」与「记忆中的联想键(认知科学直觉)」融合——意识到名字是模型仓库记忆的主键。事后 L2 的最大降幅验证了这个融合。
- 节点二(薛定谔的洞察):把「量子力学的观测坍缩隐喻」与「评测时实例化」融合——变换不必预先物化,评估那一刻才坍缩,从机制上杜绝再记忆。
- 节点三(因果闭环的洞察):把「实验设计的对照组方法」与「时间隔离基准」融合——用 SWE-rebench 反向证明变换的中性,这是全文从「现象报告」升格为「因果测量」的转折点。
八、论文中可以提取的通用性灵感
灵感一:把「表示」当潜变量,评测在分布上进行
- 核心思想:任何固定形态的评测资产终将被记忆;让形态由评估期种子决定,才是机制性的防污染。
- 论文证据:静态扰动谱系(RepoMirage 等)的产物可被再记忆 vs 本文 RQ4 干净实例零退化、RQ1 全变换显著退化。
- 推广场景:①数学/逻辑推理基准全部模板实例化(GSM-Symbolic 已验证);②法律/医疗案例考试的随机化表面改写;③Agent 工具名随机化以测「会用工具」而非「背熟了某套工具命名」;④数学竞赛题库的数值/结构参数重采样;⑤面试题库的等价变体生成。
灵感二:先证明「有病」,再测量「病多重」,最后隔离「病灶」
- 核心思想:诊断(动机实验:>65% 泄漏)→ 测量(全变换 −6~14.4pp)→ 归因(逐级消融定位 L2 命名)→ 反证(RQ4 干净实例不退分),构成完整因果链。
- 论文证据:四级消融 + 时间隔离对照的实验矩阵设计。
- 推广场景:①任何「性能来源可疑」系统的审计(模型分、渠道转化率、学生成绩);②A/B 实验中的混淆因素隔离设计;③安全渗透测试中的攻击面归因;④医学流行病学的暴露-疾病因果推断。
灵感三:交换「物理不变」与「视图万变」的分离结构
- 核心思想:用双向翻译层把「真实执行域」与「agent 感知域」解耦——底层保证正确性,表层制造变化。
- 论文证据:Level 2 在观察/交互层做翻译、命令头不变只改命名参数、补丁从最终状态 diff 恢复。
- 推广场景:①机器人仿真与现实的 domain randomization(视觉表象随机、物理规律恒定);②对用户隐藏内部 ID 的 API 网关;③教学中的「换元法」——保持结构、替换符号以检验理解;④对抗样本防御中的输入规范化层。
灵感四:探索强度与稳健性存在权衡,「高效捷径」是脆弱性的温度计
- 核心思想:在熟悉环境中追求最少步数的 agent,一旦环境陌生就退化最重;多花预算做探索的 agent 反而稳健。
- 论文证据:GPT-5.4-mini(基线 11 步)退化 −11.2pp vs DeepSeek-v4-Flash(基线 46 步)退化 −6.0pp;SWE-QA 上后者分数几乎不掉、成本 +43%。
- 推广场景:①推荐系统的探索-利用权衡(e-greedy);②供应链「效率 vs 韧性」的冗余设计;③个人职业发展:只在熟路上跑得快 vs 广域探索的抗风险;④强化学习中熵正则与策略稳健性的关系。
灵感五:成本指标是比分数更灵敏的「隐性退化」探测器
- 核心思想:当分数不变时,交互成本/token 消耗的上升暴露了能力实际上在「负重运转」。
- 论文证据:RQ4 中 Pass@1 持平但 token +22%;RQ3 中 DeepSeek 分数仅 −0.75 但动作 +43%。
- 推广场景:①服务监控:响应正确率不变但延迟/重试上升=隐性故障前兆;②学生考试:答案对但耗时暴增=知识不牢;③代码系统:功能通过但测试时长增加=技术债积累;④医疗:症状未变但代偿指标异常。
一句话收束:这篇论文用薛定谔式的巧思把「仓库」变成了每次打开都不同的盒子——猫还是那只猫(任务语义被测试锁死),但盒子再也不背得出。它给出的不只是又一份 SWE-bench 污染的病理报告,而是一套可复用的、机制级阻断记忆的评测范式:在分布上评测,而不是在标本上评测。