返回评测
Agent Agent-编码 未饱和 模态 · 代码 任务 · 执行验证

SWE-Shift 1.0

首个「配对续跑」编码基准——从同一个执行快照分叉出不变与已变更两条续跑,测能力能否在变更中存活;17 个系统全部下滑,GPT-6 Astra 从 67.35% 掉到 24.79%

香港中文大学 MMLab、复旦大学 NLP 实验室、香港科技大学、北京大学 ·

考察能力

仓库级代码修复 变更适应 工作保全 状态恢复 证据刷新 多语言工程

构建信息

数据规模
120 个场景 × 12 个变化族(每族 10 场景)× 9 个干预位置 = 每个系统 1,080 个定时评测单元
构建方式
以 SWE-bench Verified(60)、Multi-SWE-bench(35)、SWE-bench Multilingual(25)的题目为基座,在同一条执行轨迹的中间点保存快照后分叉
评测方式
配对续跑:Clean 续跑不加干预,Shifted 续跑注入一次与任务相关的变更;终态要同时过任务检查、保全检查、禁止副作用检查、当前权威检查、新鲜观测检查、恢复顺序与完成度检查、暴露与预算检查
核心指标
Clean(不变基线成功率)/ Shifted(变更后成功率)/ PSR(paired success rate,配对成功率)/ CRR(conditional retention rate,Clean 成功中被保留下来的比例)

模型效果排行

🥇 GPT-6 Astra (Codex app, xhigh, 2026-10-23 论文表 2; CRR 30.20% —— 不到三分之一的 Clean 成功能在变更后保住)
Clean 67.35 / Shifted 24.79 / PSR 20.34 2026-10
🥈 Claude Fable 5.1 (Claude Code app, xhigh; 唯一在 Disclosure 族拿到 16.20% PSR 的系统,高于 Astra 的 14.90%)
Clean 62.01 / Shifted 18.33 / PSR 16.88 2026-10
🥉 Claude Opus 5 (Claude Code app, xhigh)
Clean 53.76 / Shifted 16.09 / PSR 14.78 2026-10
4. GPT-5.6 Sol (Codex app, xhigh)
Clean 46.22 / Shifted 12.56 / PSR 11.30 2026-10
5. Kimi-K3 (开源权重; F01 用户实现族 PSR 63.50% 为全场最高,但整体 CRR 只有 25.12%)
Clean 31.41 / Shifted 12.09 / PSR 8.20 2026-10
6. DeepSeek V4-Pro (Clean 低于 Kimi-K3,PSR 与 CRR 却都更高 —— 论文用来证明「Clean 高不等于留得住」)
Clean 29.37 / Shifted 10.29 / PSR 8.83 2026-10
7. DeepSeek V4-Flash (开源权重; CRR 30.99% 高于头名 Astra 的 30.20%)
Clean 23.65 / Shifted 8.63 / PSR 7.60 2026-10
8. Kimi-K2.6 (开源权重; CRR 34.63% 是全场最高,而 Clean 只有 20.50%)
Clean 20.50 / Shifted 7.97 / PSR 7.10 2026-10

为什么重要

过去两年仓库级编码基准(SWE-bench 及其衍生)有一个共同的隐含假设:任务和环境在 Agent 跑到一半时不会变。真实开发不是这样——同事改了你要改的那个文件、依赖升了个小版本、端口被占、锁被别人拿走、需求方中途补一句”还要兼容旧接口”、你刚读到的测试结果是更新前的。

SWE-Shift 的关键设计不是”出更难的题”,而是配对续跑(matched continuation):先让 Agent 正常跑到中间某个点,把这个时刻的执行状态(历史、工作区、可观测信息)存成快照,然后从同一个前缀分叉出两条续跑——

  • Clean:不加任何干预,继续跑完;
  • Shifted:注入一次与任务相关的变更,再继续跑完。

这样一来,如果 Agent 在 Shifted 下失败,就能判断”它本来也做不出来”还是”它本来做得出、被变更打断了”。只看变更后的失败率回答不了这个问题,而此前所有基准都只给后者。这是本卡最重要的读数。

构建方式

12 个变化族 × 每族 10 个场景 = 120 个场景,分为三大组:

族变了什么续跑时必须做到什么
F01 用户实现Agent 编辑区内被加入了合法代码完成原任务,同时保留用户的行为
F02 用户契约公开 API 或数据契约变了满足新契约并保留兼容性检查
F03 直接协作者协作者改了目标代码或直接依赖整合变更并保留协作者行为
F04 间接协作者传递依赖变了,本地目标代码没动考虑依赖变化并保留协作者行为
F05 运行时与资源进程、端口、锁、缓存、资源属主变了恢复到合法运行时状态,不伤及无关资源
F06 工具与会话会话、授权、schema 或协议变了,之前的调用失效改用当前允许的接口,保留无关会话状态
F07 外部效应操作的实际结果与响应所说的不一致查效应账本,保留合法效应,只做被授权的补偿
F08 披露一个此前隐藏的约束在中途变得可见在同一目标下满足被披露的要求
F09 纠正性反馈新证据推翻了此前的判断或实现应用并保留该纠正,完成未变的目标
F10 目标修订授权更新修改了目标与验证器跟随新目标,保留仍然生效的要求
F11 陈旧证据结果指向的是更新前的状态在改代码或宣布完成前取得绑定当前状态的证据
F12 错绑证据证据指向另一个请求、分支、会话或相互冲突的来源通过允许的查询核对其来源,验证目标状态

干预时机不是固定的:每个场景在轨迹的 10%–90% 共 9 个位置(T10…T90)各排一次,每个系统 1,080 个定时单元。这解决了”只在某个固定时刻注入”带来的偶然性。

成功不是”测试过了”:终态要同时通过七类检查——任务、保全、禁止副作用、当前权威(目标与验证器版本匹配)、新鲜观测(更新后、第一次改动前必须有一次允许的观测)、恢复顺序、恢复完成、暴露与预算。这七类正是原任务测试覆盖不到的部分,也是本基准的核心增量。

关键发现

一、17 个编码 Agent 系统全部下滑,无一例外。 Clean 的成功率区间是 10.71%–67.35%,Shifted 只剩 1.16%–24.79%,配对成功率 PSR 只有 0.90%–20.34%。头名 GPT-6 Astra 是 67.35 → 24.79,配对成功率 20.34%。能力没有消失,是”存活率”极低。

二、Clean 高不等于留得住。 论文专门给了反例:Kimi-K3 的 Clean 是 31.41%、PSR 8.20%、CRR 25.12%;DeepSeek V4-Pro 的 Clean 更低(29.37%),PSR(8.83%)和 CRR(29.15%)却都更高。Kimi-K2.6 的 Clean 只有 20.50%,CRR 却是全场最高的 34.63%。CRR 是条件于 Clean 成功的保留率,它和绝对分数给出的是不同排序——这正是”配对”设计买到的东西。

三、两个变化族是全体归零的硬失败点。 工具与会话变化(F06)和陈旧证据(F11)在 17/17 个系统上的 PSR 都是 0.00%。运行时与资源变化(F05)里 16/17 个系统归零,唯一拿到分的是 MiMo-V2.5-Pro 的 0.60%。披露变化(F08)有 13/17 个系统归零。

四、剩下的族暴露的是选择性长处,不是通用能力。 Kimi-K3 在 F01(用户实现)上能到 63.50% PSR,Claude Fable 5.1 60.80%;F04(间接协作者)上 GPT-6 Astra 57.30%、GPT-5.6 Sol 39.30%;F07(外部效应)上 Astra 只有 22.10%,13/17 个系统归零。总榜 PSR 高的系统,在每一个族上都不会都高。

五、干预来得越晚,有的系统越差、有的反而更好。 比较 T70–T90 与 T10–T30 的平均 PSR:GPT-6 Astra 掉 20.05 个百分点、Claude Fable 5.1 掉 15.43、GPT-5.6 Sol 掉 12.53、Claude Opus 5 掉 11.93;而 GLM-5.3-Flash 涨 2.97、Kimi-K2.6 涨 2.20、DeepSeek V4-Flash 涨 1.60。这不是噪声,是两种截然不同的失败剖面:前一批在上下文与已完成工作变多之后更难掉头,后一批反而受益于”还没写太多”。

六、测试通过不等于工作保住了。 三个 24 例定性审计案例很有代表性:Django 那条,协作者加了一个控制迁移操作合并时机的 API,Agent 先用了它、修原问题时又把它删了,39 条原测试全过,但保全检查报”协作者的 API 没了”;Astropy 那条,Agent 的补偿动作本身成功了、工具记录也确认了,工作区保全检查仍然失败;scikit-learn 那条,Agent 恢复了当前证据的访问权却没再查一次就改了代码,任务检查通过但缺失必需的新鲜观测,且改动超出了允许范围。

七、给提示和给状态都只能救回一小部分。 在 5 个系统上的累积干预(变更通知 → 只读状态刷新 → 移除变更前对话)合计只加 5.98–8.71 个 PSR 点,最终 PSR 仍只有 10.89%–17.54%。历史重置在 5 个系统里有 4 个贡献最大(MiniMax-M2.7 加了 5.50 点),但 Qwen3.8-27B 反而是状态刷新(2.89)比历史重置(2.63)更值。

八、加 token 预算在 4 倍之后基本失效。 后分叉预算从 B 每次翻倍到 16B(B = 100 万 input+output token):每次翻倍到 4B 能加 0.79–2.67 点,4B→8B 只加 0.12–0.28 点,8B→16B 是 −0.09 到 +0.15 点。从 4B 到 16B 四倍预算总共只换来 0.19–0.28 点,16B 时 PSR 仍在 7.15%–11.98%。 和”想得久就是没线索”是同一个形状。

与同类基准的差异

论文的对照表(Table 1)逐条比了七个维度——中途变更、同一前缀、跨层面变更、保全/伤害检查、多位置注入、轨迹 oracle、需要新鲜证据。SpecPath、SyncMind、ToolSandbox 各只满足 1–3 条;SWE-Touch 满足 3 条;GAIA2 满足 4 条;SWE-Shift 是唯一七条全中的。

它和最接近的几个兄弟的区别值得单独说:SWE-INTERACT 与 SWE-Together 改的是需求(对话里用户怎么说),SWE-Shift 改的是世界(代码、依赖、运行时、会话、证据来源);SyncMind 只在恢复开始前才让状态变陈旧,SWE-Shift 让变更发生在轨迹的九个不同位置;SpecPath 在实现开始前给完整契约,SWE-Shift 在实现过程中改契约。

局限

作者自己写得很清楚:120 个场景里有一部分共享题目根;每次运行只注入一次变更(真实开发里变更是重复的);诊断性对照只覆盖 5 个系统;配对固定了记录下来的历史与工作区状态,但模型采样随机性没有被控制(同一配置重复跑的方差未测,这一点可对照「Agents Are Systems, Not Models」里约 54% 方差来自重复同一配置的结论);干预位置与执行阶段、累积上下文、剩余工作量是耦合的;后分叉 token 预算是固定的。

此外,Agent 侧的形态差异也要留意:闭源系统走的是各家原生应用(Codex app / Claude Code app,均 xhigh),开源权重系统在 4 台各 8 张 B300(共 32 卡)上本地serving。“系统”而不是”模型”是这里的被测单位——和 Computer Use 类基准一样,脚手架差异会被算进分数里。

怎么读这张卡

引用本基准时请带上四列中的至少两列:只报 Clean 等于没报这个基准,只报 Shifted 无法判断是不是本来就做不出来。CRR 是给”这个系统有多抗变更”下判断时最该看的一列,因为它已经把”基础能力差”这个混淆项除掉了。另外,F06 与 F11 全体归零是到目前为止本基准最硬的一条结论:它不依赖任何模型排名的可信度。

编码Agent 仓库级 鲁棒性 变更适应 配对实验 状态恢复 防污染