论文一:SWE-Shift: Evaluating Coding Agents in Evolving Workspaces 代码仓库:github.com/JeixHuang/SWE-Shift 发表时间:2026年10月(arXiv:2610.32196v1,2026-10-23) 机构:香港中文大学 MMLab、复旦大学 NLP 实验室、香港科技大学、北京大学,另有一位作者署名为 Somewhere on the Earth——典型的高校多方合作,CUHK MMLab 与复旦为主要贡献方

论文二:Compact-Bench: Measuring What Context Compaction Costs Long-Horizon Coding Agents 代码仓库:github.com/cai-jianfeng/compact-bench 发表时间:2026年10月(arXiv:2610.31710v1,2026-10-22) 机构:中国科学技术大学——单一高校团队

领域标签:cs.AI / cs.SE,Agent 评测基准

一、论文背景

1.1 编码 Agent 的考场是静态的,考场外的世界不是

过去两年,以 SWE-bench 为代表的仓库级基准让编码 Agent 的评测从孤立的代码生成走向了真实软件工程:Agent 需要读懂 issue、在仓库中导航、修改可执行代码、通过测试。但这类基准几乎都默认一个前提——任务开始之后,任务本身和环境都保持不变。Agent 拿到 issue,仓库是冻结的,测试是冻结的,需求是冻结的,它只需要在真空里把题做完。

真实软件开发从来不是这样。代码会被同事编辑,依赖会升级,运行时的进程、端口、锁、缓存会变化,需求会在评审中被修订,Agent 手里的证据会过期。一个人机协作的 Agent 如果只在静态考场上拿高分,到了动态工作区里未必可靠。这是 SWE-Shift 立论的第一块基石。

与此同时,Agent 自身还有第二重限制:上下文窗口是有限的。长时程任务里,指令、工具观测、测试结果、中间决策不断累积,总有一刻窗口装不下。此时 Agent 框架(Claude Code、Codex、Kimi Code 等生产级工具都内置了这一机制)会执行一次「上下文压缩」(context compaction):把完整历史 H 替换成一份摘要 S=C(H),然后让模型拿着摘要继续干活。压缩让任务得以延续,但摘要必须携带足够的状态——哪些动作做过、哪些假设被否决过、还剩什么没做。如果摘要丢掉了关键的进度信息,Agent 就会在接续处失败。这是 Compact-Bench 立论的第一块基石。

1.2 为什么现有评测回答不了这两个问题

外部变化侧的困境:如果只在新任务上评测 Agent,失败发生了也分不清原因——它究竟是本来就不会做这道题,还是一次本可成功的执行被中途的变化破坏了?独立运行的两次评测,前置轨迹各不相同,变化之前的差异已经污染了比较。要回答「变化是否破坏了执行」,必须让两条被比较的执行共享完全相同的历史。

内部压缩侧的困境:端到端基准只给一个最终分数,无法隔离「中途某一次历史替换」的影响。长上下文基准测检索与推理,但 Agent 历史比文档多一层要求:还要保留行动状态。已有的压缩评测分别考察约束丢失、档案检索、摘要对未来轨迹的支持、执行不稳定,但没有一个直接把「这一次替换本身」作为被测对象,在固定边界处对比全历史续作与仅摘要续作。

1.3 双向考题:环境记忆的两个方向

把两篇论文放在一起看,它们考的是编码 Agent「环境记忆」的两个方向:

  • SWE-Shift 考外部记忆的守恒:世界变了,Agent 记住并保留下的既有工作还能不能守住?它测的是 Agent 对外部世界变化的感知、整合与保留。
  • Compact-Bench 考内部记忆的守恒:记忆被压扁了,Agent 还能不能接续任务?它测的是 Agent 对自身历史的依赖哪些是真正要命的。

两篇不约而同采用了同一种方法学内核——从共享状态分叉的配对比较:SWE-Shift 在检查点保存执行状态,从同一前缀分叉出 Clean 与 Shifted 两条延续;Compact-Bench 在压缩边界缓存历史与仓库快照,让 PRE(收全历史)与 POST(只收摘要)从同一快照出发续作。配对设计把「这一次变化/这一次替换」的因果效应从无数干扰变量中隔离出来——这是本篇精读将反复回味的结构共性。

二、论文定位和关联工作

2.1 动态环境评测谱系(SWE-Shift 的坐标系)

SWE-Shift 的 Related Work 把七个先行基准放在一张设计对照表里(论文 Table 1,维度:是否中途干预、是否同前缀、是否跨平面、是否检查保留/伤害、是否多位置、是否有轨迹 oracle、是否要求新鲜证据):

  • SWE-bench:静态仓库修复的奠基工作,任务与环境全程固定,是 SWE-Shift 要超越的静态基线。
  • SWE-Touch(arXiv:2608.02499):最接近的干预研究,在执行中注入经过验证的用户 Counter-Edit(与任务冲突的合理编辑),但两条比较轨迹是独立跑的,没有共享前缀,无法把「能力不足」与「变化破坏」分开。
  • SyncMind(ICML 2025):从仓库历史构造调用方/被调方的不一致,评测从失步状态出发的恢复——但恢复开始时执行已经失步,同样不是同前缀配对。
  • SWE-INTERACT:通过对话逐步揭示或修订需求,用交互式用户模拟器补充了需求侧,但最终只用原始任务验证器打分。
  • SpecPath:在实现开始前改变规格历史、固定最终契约——改变发生在动手之前,与 SWE-Shift 的执行中变化互补。
  • ToolSandbox / Gaia2 / AppWorld:把有状态工具、里程碑/禁区检查、异步演化事件、副作用约束纳入评测,证明了「成功的动作不能被还原成一个像样的最终答案」,但都不针对受控的仓库延续场景。

SWE-Shift 在这张表上七个维度全勾:中途干预 ✓、同前缀 ✓、跨平面 ✓、保留/伤害检查 ✓、多位置 ✓、轨迹 oracle ✓、新鲜证据 ✓——它是第一个同时具备这七项控制的仓库级基准。

2.2 压缩评测谱系(Compact-Bench 的坐标系)

  • 直接压缩评测:COMPINT 测侧约束保留、LANTERN 测归档对话检索、Slipstream 测摘要对后续轨迹步骤的支持、TRACE 在恢复共享环境后比较执行、Complexity Trap 评测观测遮蔽。Compact-Bench 与它们的差别是把固定边界重放与 14 骨干 × 5 生产提示词的交叉比较、复现细节度量、真实生产链度量合为一体,把「某一次历史替换」与「任务结局的改变」直接连上因果线。
  • Agent 历史与持久记忆方法:ReSum 压缩搜索轨迹、Context-Folding 折叠已完成子任务、CompactionRL 联合训练执行与摘要、SelfCompact 让 Agent 自选压缩时机、并行压缩分块摘要;持久记忆方向有 MemoryBank、A-Mem、MemGPT、RAG。Compact-Bench 不改进方法,而是给这些方法提供一个可执行结局级的验收标准。
  • 提示压缩与摘要评测:LLMLingua 系列做 token 级选择,Gist/ICAE 做软表示,RECOMP 压缩检索段落;摘要评测测事实一致性与可回答性。Compact-Bench 把评测目标从「摘要质量」搬到「能否恢复 Agent 的工作」,并配上确定性的细节匹配。
  • 长上下文基准:LongBench、RULER、∞Bench 等测扩展输入下的检索与生成,Lost in the Middle 揭示信息利用随位置退化——这是压缩必要性的背景机制。

2.3 定位对比表

维度之前的路线本两篇的突破
变化评测的比较单位独立跑的平均分(SWE-Touch、SyncMind)同前缀分叉的配对格(SWE-Shift),1,080 格/系统
变化的合法性注入冲突编辑即可相关性+可恢复性双约束,并有 9 项准入检查
成功判据原始任务测试任务+保留+恢复+证据等合取检查(SWE-Shift);FAIL_TO_PASS 双向判定四象限(Compact-Bench)
压缩的评测对象终分 / 约束丢失 / 检索支持固定边界处这一次替换的因果效应(Compact-Bench)
摘要质量的参照人工/LLM 打分机械抽取锚 79.1% 对比 LLM 最高 16.0%,差 63.1pp
真实数据合成轨迹146 真实会话 9,330 条复现细节;106 会话 224 个生产压缩边界

2.4 定位结论

SWE-Shift 是动态工作区评测中第一个「同前缀配对 + 12 变化族全覆盖 + 9 干预位置 + 合取式保留判据」的基准,核心贡献是评测协议本身与全系统零分区这一强发现;Compact-Bench 是压缩评测中第一个把「单次历史替换」隔离成配对因果问题、并用生产级提示词与真实会话交叉验证的基准,核心贡献是「保留信息 ≠ 能续作」这一区分。两者一个向外看世界,一个向内看记忆,方法论内核同源。

三、问题定义

3.1 SWE-Shift 的问题抽象

具体场景:Agent 执行到一半,代码、依赖、运行态、目标或证据发生了任务相关的变化,它还能成功吗?

抽象问题:把「任务能力」与「变化鲁棒性」解耦。失败的归因歧义是本质困难——同一个失败,既可能来自能力不足,也可能来自变化破坏。SWE-Shift 的洞察是:让变化发生在两条完全相同的前缀之间,Clean 延续回答「从这个状态出发它能不能做成」,Shifted 延续回答「这个成功能不能扛过变化」,两者之差就是变化的净效应。

形式化:给定系统 m、场景 i、干预位置 t,记 Clean/Shifted 延续的验证成功为 C_mit、S_mit ∈ {0,1}。联合成功 R_mit = C_mit · S_mit;提前完成 P_mit ∈ {0,1};格得分 K_mit = max{R_mit, P_mit}。在 12 族等权、族内簇等权、簇内场景等权的层级权重 w_i 下,报告 Clean、Shifted、PSR(配对成功率,主指标)与 CRR(条件保留率 = 联合成功 / Clean 成功)。

精妙之处:约束条件在变化设计上——相关性(忽略变化即作废一条本可成功的延续)排除无关变化,可恢复性(变化后至少存在一条 Agent 可达工具下的合法完成路径)排除把任务变得不可解的变化。二者合取保证失败可归因于 Agent 而非基准。

3.2 Compact-Bench 的问题抽象

具体场景:长时程 Agent 的历史被摘要替换了一次,任务还能做完吗?

抽象问题:隔离单次历史替换的边际效应。终分混杂了模型能力、任务难度、多次替换的累积效应。Compact-Bench 的洞察是:把替换钉死在一个固定边界上,让 PRE(收全历史 H)与 POST(只收摘要 S=C(H))从同一个仓库快照 D、同一个 Agent、同一套工具、同一个 8 步预算出发续作,则 PRE 与 POST 的结局差异只能来自「这一次替换」。

形式化:PRE 通过且 POST 失败 = 损伤(damage,丢失了一次全历史成功);PRE 失败且 POST 通过 = 救援(rescue,摘要反而救活);双双通过 = 保留;双双失败 = 未解。首轮损伤/救援做 3-run 复验(POST 至少 2/3 失败记稳定损伤)。约束在任务选择上:修复局限于单一测试文件、FAIL_TO_PASS 测试少、金补丁中位数小于 1KB——把评测聚焦在「已有积累能否转化为特定修复」。

3.3 两个抽象的结构同构

结构要素SWE-ShiftCompact-Bench
共享状态保存的历史+工作区+控制器状态缓存的历史 H+仓库快照 D
分叉的两臂Clean(无干预)vs Shifted(施加变化)PRE(全历史)vs POST(仅摘要)
控制变量同工具、同分叉后预算 B=1M token同 Agent、同工具、同 8 步预算
结局判定更新后适用检查的合取FAIL_TO_PASS 测试
核心配对量R = C·S(联合成功)damage = PRE-pass ∧ POST-fail
对歧义的消解能力 vs 变化破坏能力 vs 替换损失

这个同构不是巧合:两者都把「Agent 依赖的状态」当作被实验的变量,用分叉设计做了一次受控实验。可以说它们共同定义了 Agent 评测中一个正在成形的范式——分叉重放评测(fork-and-replay evaluation)。

四、问题解法

4.1 SWE-Shift:匹配延续协议

类比:这像是医学里的同卵双胞胎对照实验——两个 Agent 从同一个胚胎(保存的执行状态)分裂,一个留在原环境,一个被施加处理(任务相关更新),比较结局即可归因于处理本身。

协议四步:

  1. 共享前缀执行:Agent 在场景中正常执行,直到计划的检查点;运行器保存 Agent 可见历史、工作区、控制器状态、可用工具、系统设置与执行计数器。
  2. 双重恢复:保存的状态被恢复两次——Clean 延续不施加干预;Shifted 延续在分叉点施加场景声明的授权更新(以工作区差异、投递消息、工具/会话响应变化或状态查询返回等形式暴露给 Agent)。
  3. 干预时机 T10–T90:从场景的 Clean 参考动作序列构造合格前缀(终止于第一个正确性依赖更新的动作之前),按 k_j = ⌊jN/10⌋ 取九个等分检查点;被评 Agent 不必遵循参考轨迹,同一标称位置在不同系统可能对应不同实际进度——论文如实承认这一点并保留原定位置。
  4. 合取式成功判据:成功要求满足结束条件下适用的全部检查:任务(可执行任务检查)、保留(指定行为与状态不变量仍在)、禁止效应、当前权威(目标与验证器版本)、新鲜观测(更新后、首次改写前有允许的观测)、恢复顺序与完成、暴露与预算。任一适用检查失败即不成功。

12 变化族分三组(每族 10 个场景,共 120 个场景、23 个任务根快照、17 个仓库):

组族变化内容要求的延续
世界转移F01 用户实现用户在 Agent 编辑区加入合法代码保留用户行为
世界转移F02 用户契约公共 API/数据契约变化满足新契约+兼容检查
世界转移F03 直接协作者协作者改目标代码/直接依赖整合变化并保留协作者行为
世界转移F04 间接协作者传递依赖变化适配间接影响
世界转移F05 运行时与资源进程/端口/锁/缓存变化重绑活状态且不伤无关资源
世界转移F06 工具与会话工具/授权/schema/会话协议变化用当前许可接口,保留无关会话状态
世界转移F07 外部效应工具响应与真实世界效果不符查账本、只做授权补偿
目标交互F08 披露固定目标下新约束显现满足披露约束
目标交互F09 纠正反馈新证据推翻先前信念应用并保留纠正
目标交互F10 目标修订授权方修订目标与验证器跟随新目标,保留仍在施行的要求
观察转移F11 陈旧证据证据指向过期状态取当前态证据后再接受完成
观察转移F12 错绑证据证据绑错请求/分支/会话验证出处与绑定

场景准入的 9 项检查(构造期验证,防止基准本身有 bug):初始根须让原始任务检查失败;Clean 参考修复须全过;只施加更新不修复须仍失败且外部状态有效;未适配延续须在 Shifted 检查上失败;基于更新前状态的修复须严格失败;更新后的有效恢复须通过;一条行为上不同的替代恢复也须通过;定向无效修复须被拒绝;分叉恢复重放须一致。全部 120 个 T0 案例与 1,080 个干预格都通过了这些检查。

4.2 Compact-Bench:三轨道评测

类比:这像药物临床实验的生物等效性设计——同一批病人(缓存的历史与快照)先吃参比制剂(全历史)再吃受试制剂(摘要),两次给药之间把生理状态复位(恢复快照),药效差就是受试制剂本身的效应。

轨道一:Task Preservation(任务保持)

  • Phase A:Agent 在修复任务上跑至多 10 步,缓存历史 H 与仓库工作树快照 D;H 跨方法、跨种子共享。
  • 配对续作:PRE 直接收 H,POST 只收 S=C(H);两者都从 D 恢复后继续,同 Agent、同工具(read_file + 白名单 run_command)、同 8 步预算;仓库的 FAIL_TO_PASS 测试判定双臂结局。
  • 四象限:preserved / damaged / rescue / unsolved。方向性标签防止「一些修复的改善抵消另一些的损失」被平均分掩盖。
  • 复验:首轮损伤/救援加跑两个种子,POST 在至少 2/3 运行中失败才记稳定损伤。24 个评测案例中 22 个通过 PRE 验证(pytest-10051 与 pytest-7236 因 PRE 三次全败被剔除)。
  • 环境控制(关键工程细节):Agent 与判分器共用同一实例级解释器(PATH/PYTHONPATH 指向评测环境与活工作树);PRE 与 POST 在同一目录执行,快照恢复插在两次运行之间。论文附录 D 的 v1/v2/v3 对照实验显示:分目录执行时,Phase A 复制进摘要的路径会把 POST 命令重定向到被判定树之外(34 例中 22 例),共享目录+快照重置后 xarray-6721 与 pytest-7521 从损伤翻转为保留——这类「假损伤」若不控制会污染结论。

轨道二:Recurring-Detail Retention(复现细节保留)

  • 数据:146 个真实 Agent 会话(143 真 + 3 模拟器合成;Kimi Code 73、Claude Code 50、opencode 14、其他 9),在未压缩会话的 65% 位置放置人工边界。
  • 参考集:确定性抽取器 A(·) 从边界前历史与未来 3–8 个请求载荷的交集中取出复现的结构化细节(路径、commit SHA、PR/issue 号、错误类型、URL、键值对、IP),共 9,330 条。
  • 打分:某 (类型, 值) 对的大小写敏感子串出现在摘要 S 中即算匹配;分会话得分取匹配对比例,语料分数为会话无权均值。每会话至少 3 条参考细节才纳入。
  • 机械锚:anchor_index 参考从序列化历史前 40 万字符中抽取、每类型至多保留 40 个值——一个零成本的机械抽取基线。

轨道三:Production-Chain Retention(生产链保留)

  • 数据:106 个含至少两次确认生产压缩的会话,共 224 个真实压缩边界(106 个第一边界、106 个第二、10 个第三、2 个第四)。
  • 打分:对每个边界取其后至多 5 个请求载荷中的细节(不要求与前史相交),计算生产摘要的字面保留率,按边界位置分别平均。
  • 辅助检测:完成的写入被摘要描述为待办(状态-时间错乱)的标记率;实测在全部边界上标记为零。

4.3 两篇方法全景对照

组件SWE-ShiftCompact-Bench
被测对象17 个编码 Agent 系统14 个摘要骨干 + 5 个生产提示词 + 续作 Agent(Kimi-K3)
控制手段检查点保存/恢复、同前缀分叉固定边界、共享缓存历史、快照恢复
干预12 族任务相关更新 × 9 位置单次历史替换 S=C(H)
主指标PSR(配对成功率)、CRR(条件保留率)稳定损伤率(22 个 PRE-pass 案例中)
判分合取检查(任务+保留+证据等)FAIL_TO_PASS 测试 + 确定性字符串匹配
规模120 场景 × 9 位置 = 1,080 格/系统35 修复 + 146 会话 + 106 链(约 8,000 次模型调用)

五、评估指标与实验证据

5.1 SWE-Shift 的实验证据

主指标体系:Clean/Shifted 描述两臂各自基线;PSR 是主指标(联合成功或验证过的干预前完成);CRR 度量条件保留(在 Clean 成功中多大比例在 Shifted 下仍成功)。四者合力刻画「条件鲁棒性」而非静态能力。

RQ1:编码能力扛得住工作区变化吗?——扛不住。17/17 系统 Shifted 低于 Clean:

系统CleanShiftedPSRCRR
GPT-6 Astra67.3524.7920.3430.20
Claude Fable 5.162.0118.3316.8826.02
Claude Opus 553.7616.0914.7826.54
GPT-5.6 Sol46.2212.5611.3023.94
Kimi-K331.4112.098.2025.12
DeepSeek-V4-Pro29.3710.298.8329.15
Kimi-K2.620.507.977.1034.63
GLM-5.3-Flash19.506.755.3025.18
Qwen3.8-27B13.175.434.3430.45
Qwen3-30B-A3B11.231.160.906.02
Qwen3-Coder-Next10.714.122.1014.97
(其余 6 系统介于其间)…………

三个关键读数:

  • Clean 全场 10.71%–67.35%,Shifted 1.16%–24.79%,PSR 0.90%–20.34%,CRR 6.02%–34.63%——最强系统的 Clean 成功也只有不到三分之一(CRR 30.20%)能在变化下保留。
  • 高 Clean 不保证高保留:Kimi-K3(Clean 31.41)的 PSR/CRR(8.20/25.12)反而低于 Clean 更低的 DeepSeek-V4-Pro(29.37 → 8.83/29.15);Kimi-K2.6 Clean 仅 20.50 却拿下全场最高 CRR 34.63。
  • PSR 总排名不蕴含族排名:F01 上 Kimi-K3 以 63.5% 全场最高,F04 上 GPT-6 Astra 以 57.3% 领先。

RQ2:哪些变化是持续失败点?——两个全系统零分区:

  • F06(工具/会话变化):17/17 系统 PSR = 0.00%。
  • F11(陈旧证据):17/17 系统 PSR = 0.00%。
  • F05(运行时与资源):16/17 为零(仅 MiMo V2.5-Pro 拿到 0.60%)。
  • F08(披露):13/17 为零;Claude Fable 5.1 达 16.20%,GPT-6 Astra 达 14.90%。

这四族是当前编码 Agent 的集体盲区——不是某个模型的短板,是整个技术路线的系统性缺失。而 F01/F03/F04/F09 等族则呈现选择性强弱,说明能力存在但分布不均。

RQ3:时机重要吗?——方向分化。比较 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——另一些系统后期更稳。时序剖面把系统分成了两类。

RQ4:任务测试漏掉了什么? 24 案例定性审计中的三个案例(GPT-5.6 Sol 轨迹):

  • Django 案例:协作者加入一个控制迁移操作合并时机的 API,Agent 用过它之后又在修复原 issue 时把它删了——39 个原始测试全过,但保留检查发现协作者 API 消失。
  • Astropy 案例:外部效应已发生后撤销到达,Agent 补偿成功且工具记录确认,但工作区保留检查仍失败。
  • scikit-learn 案例:Agent 恢复了证据访问后没再查询就直接改码——原始任务检查通过,但要求的新鲜观测缺失,且补丁超出允许编辑范围。

三个案例共同说明:原始任务测试只是判分的一部分,通过测试与保留他人工作/恢复状态/刷新证据可以同时不成立。

诊断控制(5 个开源系统,逐步加回信息与控制):

  • 累积施加「变化通知 + 只读状态刷新 + 移除变化前对话」后 PSR 共提升 5.98–8.71 个百分点,但最终 PSR 仍只到 10.89–17.54%——信息与控制补齐也远不能修复。
  • 历史重置在 5 个系统中的 4 个里贡献最大增量(MiniMax-M2.7 +5.50 点);Qwen3.8-27B 从状态刷新获益更多(2.89 vs 2.63 点)。
  • 分叉后 token 预算从 B=100 万放大:到 4B 之前每次翻倍加 0.79–2.67 点,4B→8B 只加 0.12–0.28 点,8B→16B 几乎不动(−0.09~+0.15);16B 预算下 PSR 仍只有 7.15–11.98%。资源不是瓶颈,结构才是。

5.2 Compact-Bench 的实验证据

主指标:稳定损伤率(22 个验证 PRE-pass 案例中 POST 稳定失败的比例);辅助指标:四象限计数、复现细节保留率、生产链保留率;消融:3-run 稳定性、环境对照(v1/v2/v3)。

骨干比较(固定 Claude Code 提示词 + Kimi-K3 续作 Agent):

摘要骨干稳定损伤保留数95% CI
Claude Opus 4.85%(1)21/221–22
Kimi-K3 / GPT-5.6-Luna18%(4)18/227–39
GPT-5.6-Sol27%(6)16/2213–48
GPT-6-Astra41%(9)13/2223–61
DeepSeek-V4-Pro55%(12)10/2235–73
Hy4-Preview59%(13)9/2239–77
DeepSeek-Flash64%(14)8/2243–80
  • 14 个骨干的损伤横跨 5%–64%,极差 59 个百分点——摘要器选型是压缩可靠性的第一变量。
  • 损伤集合只是部分重叠:pytest-10081 被 13/14 个骨干损伤而 Claude Opus 4.8 独自保留;sphinx-9230 被 9 个骨干(含 Opus 4.8)损伤而 5 个保留。14 个骨干在 22 个案例上只有 4 个完全一致——难案例不是全员皆输,存在互补的成功配置。
  • 稳定性:126 个首轮损伤对中 120 个通过 3-run 确认(GPT-6-Astra 从 11 降到 9,其余多数不变)——观测到的损伤大多跨独立样本复现。

提示词比较(固定 Kimi-K3 为摘要器):

提示词POST 通过 ↑细节保留 ↑
Kimi Code19/22 = 86%8.2%
Claude Code18/22 = 82%15.0%
Gemini CLI17/22 = 77%7.2%
Codex16/22 = 73%9.5%
opencode16/22 = 73%9.5%

任务保持与细节保留的领导者分离:Kimi Code 最会保任务、Claude Code 最会保细节。失败剖面也互补:sphinx-9230 五个提示词全败;pytest-7571 四个提示词败而 Kimi Code 独活;Kimi Code 保留了 Claude Code 损伤的三个 pytest 修复,Claude Code 反过来保留了 Kimi Code 损伤的 requests-5414 与 sympy-13551。

细节保留与机械锚:LLM 摘要最高保留 16.0%(DeepSeek-Flash,Claude Code 提示词),Kimi-K3 15.0%,机械抽取锚 79.1%——差 63.1 个百分点。7 骨干 × 5 提示词矩阵中分数从 5.0% 到 16.0%,且骨干与提示词存在交互:DeepSeek-Flash 在 Claude Code/Gemini CLI/Kimi Code 下领先,GPT-5.6-Terra 在 Codex/opencode 下领先。客户端子集同样分化:Kimi Code 会话在 Kimi-K3+Claude Code 下平均 21.4%,Claude Code 会话只有 9.4%。

生产链:首边界保留 15.7%(n=106)、第二边界 19.9%(n=27)、第三 4.9%(n=6)、第四 1.8%(n=1)。140 个可评边界中,84 个带显式摘要指令的平均 19.0%,56 个不带指令的仅 11.4%。

诊断:保留证据 ≠ 能续作。四个 Kimi-K3 稳定损伤案例的摘要全都包含目标文件;pytest 三例保留了 8/12、10/12、5/5 的金补丁 token——pytest-7571 五个审计 token 全部幸存仍然失败;sphinx-9230 保留了修复相关字符串却丢了 split(None, 1) 必须改为 rsplit 的推理。配对动作轨迹(论文 Table 14)显示:PRE 8 个工具动作内完成定位+最小复现+修改;POST 13 个动作全部耗在广泛搜索与阅读测试/复现代码上,直到预算耗尽也没动手修。摘要保住了修复的原料,丢掉了把原料连成修改的进度。

5.3 实验设计如何支撑核心主张

  • SWE-Shift 的主张「成功不等于鲁棒」由配对结构直接支撑:R = C·S 只在两臂同真时计分,任何系统的 Shifted-Clean 差距都无法用任务难度或采样运气解释;全系统零分区(F06/F11)在 1,080 格/系统的覆盖下不是抽样偶然。
  • Compact-Bench 的主张「保留信息不保证续作」由双轨交叉支撑:同一配置在保留轨得高分(DeepSeek-Flash 16.0%)却在任务轨大面积损伤(14/22),且四案例摘要中确有目标文件与修复 token——损失的不是信息本体,而是信息到行动的组织结构。

六、效果优势的根源解释

6.1 根源机制与证据链

SWE-Shift 的因果链:

  1. 方法差异(同前缀分叉 + 相关性/可恢复性约束 + 合取判据)→ [设计属性,论文已支持]
  2. → 机制变化:变化前的执行差异被彻底冻结,Clean 成为每个中间状态的内建对照;失败只能来自变化后的应对(感知更新、整合改动、保留有效工作、刷新证据);同时准入检查保证「合法完成路径仍存在」,失败可归因于 Agent 而非基准 → [逻辑必然,构造检查已验证]
  3. → 指标体现:17/17 系统 Shifted<Clean;F06/F11 全系统 PSR=0;高 Clean 系统(GPT/Claude)后期更脆、部分国产系统后期更稳的时序分化 → [论文实验已支持]
  4. 深层机制假设:当前 Agent 的上下文里没有维护「世界状态的时间戳」——它们对工具会话变化(F06)与陈旧证据(F11)全军覆没,说明 Agent 假定观察即事实、接口即恒常;前沿系统后期更脆弱则提示其成功依赖长上下文中的连贯计划,计划被打断的代价随积累增长 → [阅读者推测,论文未直接验证此机制]

Compact-Bench 的因果链:

  1. 方法差异(固定边界 + 共享快照 + 配对四象限 + 3-run 稳定化)→ [设计属性,论文已支持]
  2. → 机制变化:PRE/POST 结局差异的唯一自由度就是 S 与 H 的差异;环境对照实验(v2 分目录造成 22/34 路径泄漏假损伤,v3 修复后两个案例翻转回保留)证明测到的损伤是真实的信息效应而非工程伪影 → [附录 D 实验已支持]
  3. → 指标体现:损伤 5%–64% 且集合部分重叠;任务保持与细节保留领导者分离;机械锚 79.1% 对 LLM 16.0% → [论文实验已支持]
  4. 深层机制假设:LLM 摘要做的是语义重组而非状态登记——路径、SHA、token 这类字面值在重组中最易幸存(且机械抽取近全保),而「下一步该做什么、为什么」的进度性信息没有字面锚点、最易丢失;续作 Agent 拿到原料却缺少组织线索时,会退回到广泛探索(sphinx-9230 的 13 个探索动作)直到预算耗尽 → [案例证据支持,样本仅 4 例,标注为部分推测]

6.2 相关工作检索与对照(外部交叉验证)

研究(可核验)相似尝试相关结论与本文的差异与适用边界对根源解释的影响
SWE-Touch(arXiv:2608.02499)执行中注入与任务冲突的用户 Counter-Edit,9 模型在 SWE-bench Verified 平均解决率降 7.7pp失败轨迹 63.3% 直接保留冲突代码,归因于对演化工作区感知不足;Claude Opus 4.8 保留率 96.0%,Qwen3-Coder-480B 仅 60.8%独立跑、无同前缀分叉,无法分离能力与破坏;变化类型集中于代码编辑一族支持:独立方法得到与 SWE-Shift 一致的「Agent 缺工作区状态感知」结论;其无法消解的归因歧义恰是 SWE-Shift 配对设计的动机
Benchmarks Are Surprisingly Compaction-Friendly(arXiv:2610.31778)固定 OpenCode 脚手架,5 种压缩策略 × 3 前沿模型 × 3 长时程基准两个 1M 上下文模型的阈值不影响表现;无方法胜过默认自摘要;首次压缩平均丢约 1/3 反作弊规则且随压缩次数单调上升;SWE-chat 中指令类内容被丢弃的频率约为构建规格的 6 倍端到端设定下大多数被丢内容可从磁盘恢复,故称基准对压缩友好;Compact-Bench 是 8 步预算内的配对重放,摘要是唯一记忆补充并限定:证实压缩会静默丢约束(支持),同时提示在进度留存于磁盘、目标固定的常规基准上伤害会被掩盖——恰恰解释了为何 Compact-Bench 的受控配对设计能显影出 5%–64% 的损伤,两篇结论在各自条件下同时成立
ContextArena(contextarena.ai,2025)62 个标记探针 × 8 压力场景 × 21 种记忆策略,测各策略下哪些事实幸存发现 Storage versus Retrieval gap:策略高保留的事实常无法在回答中浮现,存储不等于可用多轮对话场景、非可执行任务;以探针保留为主支持:从不同场景得出与 Compact-Bench「保留 ≠ 续作」同构的存-用分离结论,交叉印证该现象跨场景成立
Lost in the Middle(Liu et al., TACL 2024, arXiv:2307.03172)长上下文中信息利用随位置呈 U 形退化,中部信息被系统性忽略(降幅可达 20% 以上)位置偏差是注意力架构属性,跨模型家族稳定存在静态文档场景,非 Agent 历史背景支持:为「为什么必须压缩/为什么中部历史信息易丢」提供机制背景,间接支持摘要重组中信息不均匀幸存的假设
Faithful Context Compression 基准(2026)合成 Agent 会话中埋入事实,比较消息级选择与句子/token 级自信息剪枝(n=900, 3 种子)Selective Context 在 89% 节省下 100% 保留;粒度从消息级到句级恢复 +63.6 点,信号从词面到嵌入再 +20.4 点无模型参与的可判定基准,只测保留不测续作支持:粒度与抽取方式决定保留——与 Compact-Bench 机械抽取锚(79.1%)远胜 LLM 摘要(16.0%)的发现一致,提示混合抽取+生成可能是工程方向

检索说明:以上针对两条核心机制(Agent 缺工作区状态感知;保留信息不等于能续作)分别检索了外部相似尝试与相近结论,未发现直接反驳 SWE-Shift 配对协议或 Compact-Bench 配对重放设计的反例工作;Benchmarks Are Surprisingly Compaction-Friendly 一文构成对损伤幅度解释边界的重要限定而非否定。

6.3 综合判断与未决问题

多研究共同支持的机制:

  • 编码 Agent 对执行中的环境变化缺乏感知与整合能力(SWE-Shift 的零分区 + SWE-Touch 的 63.3% 保留冲突代码 + 7.7pp 平均下降)。
  • 压缩会静默丢失任务相关信息,且丢失有结构性偏好(Compact-Bench 的约束/进度丢失 + Compaction-Friendly 的 1/3 反作弊规则丢弃 + SWE-chat 指令 6 倍丢弃率)。
  • 存储/保留与可用/续作是两个维度(Compact-Bench 的领导者分离 + ContextArena 的存取鸿沟)。

仍属推测的部分:前沿系统后期脆弱的注意力-计划连贯性解释;进度性信息缺少字面锚点导致重组丢失的机制表述(仅 4 个诊断案例);F06 全零是否部分源于 Agent 工具面没有暴露会话失效信号(可能是脚手架问题而非模型问题)。

适用条件与失效条件:SWE-Shift 的结论条件于 120 个设计场景、每运行一次更新、配对固定记录历史而模型随机性未控制;Compact-Bench 的结论条件于 35 个局部化修复、8 步续作预算、Kimi-K3 续作 Agent——若任务进度主要留存于磁盘(Compaction-Friendly 场景),实际生产中的压缩代价会低于配对设定显影的上界。两篇都指出:重复变化与自然工作流的评测是下一步。

七、必要知识反推

假设让一个完全没有背景的人从零做出这两篇论文,他最少必须掌握:

7.1 领域知识层

  • 编码 Agent 的运行解剖学:Agent-计算机界面(SWE-agent 一系)如何组织观察/动作/工具循环;哪些状态是模型可见的、哪些在外部(这决定分叉时必须保存什么——SWE-Shift 的检查点清单有六类状态)。
  • 生产级压缩机制的细节:Claude Code/Codex/Gemini CLI/opencode/Kimi Code 各自的压缩提示词、触发时机、九段式结构与第一人称交接体的差异(Compact-Bench 直接把这五个提示词作为实验材料逐字收录)。
  • 真实协作开发的痛点类型学:协作者改代码、契约变更、运行态漂移、外部效应与响应不符、证据过期/错绑——没有工程直觉就编不出 12 族的分类法。

7.2 方法论知识层

  • 因果隔离设计:配对比较/分叉重放的思想谱系(对照实验、A/B、混沌工程中的爆炸半径控制),以及「为什么独立跑的平均分不可归因」的测量理论(论文引用了测量有效性与 CheckList 行为测试文献)。
  • 信念更新与知识库更新的经典区分(Katsuno & Mendelzon 1991):变化的世界 vs 关于固定世界的新信息——这条界线直接塑造了 F08(披露,世界没变信息变)与 F01-F07(世界真变了)的分野。
  • 构建系统理论(Build Systems à la Carte):更新后哪些依赖计算必须重建——支撑「哪些观测与派生结果在更新后必须刷新」的检查设计。
  • 摘要评测与信息抽取:事实一致性度量(Kryscinski/FEQA/QuestEval)、确定性抽取与大小写敏感子串匹配的工程实现。

7.3 工程知识层

  • 可复现的评测基础设施:vLLM/SGLang 服务 13 个开源系统于 32 块 B300;快照保存/恢复的确定性重放;API 网关无种子参数时如何用多次采样近似(Compact-Bench 用 3-run 稳定化)。
  • 环境一致性陷阱:解释器版本对齐(sympy-13480 因 Python 3.9 对齐从未解翻为保留)、共享目录 vs 分目录的路径语义(22/34 路径泄漏案例)——这类细节是配对实验成立的生命线。
  • 构造期验证流水线:SWE-Shift 的 9 项场景准入检查、120 个 T0 案例全检;Compact-Bench 的可解性/可区分性/协议有效性三性质检查。

7.4 知识融合的关键节点

  • 节点一(归因消歧):把「失败归因」这个测量学问题翻译成「分叉重放」这个系统工程方案——医学对照实验的思想 + Agent 运行器的能力(可保存可恢复)在此融合。两篇论文独立抵达同一方案,说明这是该问题结构下的必然解。
  • 节点二(判分扩展):意识到任务测试只是适用要求的一个子集——把「保留他人工作」「新鲜证据」「禁止效应」也变成可执行检查,需要软件工程直觉(合并冲突、副作用账本)与测量建模(区分构念与操作化)的融合。
  • 节点三(材料即变量):Compact-Bench 把五家生产提示词从工程配置提升为实验自变量、把真实会话从日志提升为度量语料——需要同时理解生产系统内部与基准构建规范。

八、论文中可以提取的通用性灵感

灵感一:分叉重放是隔离单次干预因果效应的通用范式

  • 核心思想:在系统任意中间状态打快照,从同一前缀分叉出干预臂与对照臂,两臂结局之差即干预净效应。
  • 论文证据:SWE-Shift 用它把 17 系统的变化代价量化为 PSR/CRR;Compact-Bench 用它把 14 骨干的压缩代价量化为 5%–64% 损伤。
  • 推广场景:人机协作工具的中途接管评测;RAG 系统中单次重排序器替换的影响;混沌工程中单次故障注入的净效应度量;教育科技中单次提示干预对学习轨迹的影响;RL 策略热切换的性能净效应。

灵感二:保留信息 ≠ 能使用信息——存取分离是普适现象

  • 核心思想:度量任何压缩/交接/摘要系统时,必须分别度量「信息还在」与「信息能被接续使用」,两者领导者可以不同。
  • 论文证据:DeepSeek-Flash 细节保留最高(16.0%)却损伤 14/22 任务;Kimi Code 提示词任务保持第一而细节保留倒数(8.2%);sphinx-9230 摘要含全部修复字符串仍失败。
  • 推广场景:企业知识管理与交接文档(文件都在,接手人仍做不下去);模型 RAG(检索到了但回答用不上,对应 ContextArena 存取鸿沟);代码注释与设计文档的有效性评测;多智能体通信协议的设计验收。

灵感三:成功判据应是适用检查的合取,而非单一主测试

  • 核心思想:干预之后的「成功」要按干预后仍施行的要求全集来判——任务完成、保留有效工作、满足新约束、证据新鲜,缺一不可。
  • 论文证据:Django 案例 39 个原始测试全过但保留检查失败;scikit-learn 案例任务检查通过但新鲜观测缺失。
  • 推广场景:数据库迁移的验收(功能+数据保留+性能不回退);自动化运维的变更管理;自动驾驶接管后的安全验收;任何「局部目标达成但全局约束破坏」的风险场景。

灵感四:干预设计需满足相关性+可恢复性双约束

  • 核心思想:构造有意义的测试性扰动时,扰动必须既改变正确答案(否则无关),又保持合法解存在(否则测的是不可解而非应对)。
  • 论文证据:SWE-Shift 每个场景通过 9 项准入检查,包括「未适配延续必须失败」与「更新后有效恢复必须存在且可有第二条」。
  • 推广场景:安全演练与红队场景设计;课程难度校准(题不能超纲但必须区分度);单元测试的变异测试强度控制;模型红队评测中「可防御」前提的确立。

灵感五:全系统零分区是发现集体盲区的雷达

  • 核心思想:按干预类型分族统计后,若所有被测系统在某一族上全部归零,该族指向的是范式级缺失而非个体差距——这是最有价值的评测发现。
  • 论文证据:F06(工具/会话)与 F11(陈旧证据)17/17 系统 PSR=0.00%,F05 16/17 为零。
  • 推广场景:对齐评测中的类别级全失败分析;自动驾驶的场景覆盖盲区;医疗 AI 在罕见共病上的系统性失效定位;工具生态在某类 API 变更下的集体脆弱性。

灵感六:机械抽取锚是给生成式组件定标的廉价标尺

  • 核心思想:为生成式系统配一个零成本确定性基线,两者差距直接量化「生成环节的结构性损失」。
  • 论文证据:anchor_index 机械抽取保留 79.1%,最好的 LLM 摘要只有 16.0%,63.1 个百分点的差距就是语义重组的代价;外部检索中 Selective Context 类抽取在 89% 节省下可达 100% 保留。
  • 推广场景:摘要系统的抽取式基线;代码生成前的模板基线;翻译系统的直译基线;混合架构(抽取保底+生成润色)的设计依据。

灵感七:资源饱和曲线用于区分资源瓶颈与结构瓶颈

  • 核心思想:把某项资源放大数量级并观察收益递减点,递减之后仍存在的失败即结构性失败,加资源无法解决。
  • 论文证据:SWE-Shift 分叉后预算从 50 万放到 1,600 万 token,4B 之后增益归零,16B 下 PSR 仍仅 7.15–11.98%。
  • 推广场景:推理时间扩展(test-time compute)的能力边界判定;客服系统的吞吐扩容诊断;长上下文模型的窗口扩展收益评估。

灵感八:时机扫描揭示异质的脆弱性剖面

  • 核心思想:干预效果依赖时机,应在多个等分时机重复实验,而非绑定单一时刻;剖面方向本身可区分系统类型。
  • 论文证据:T10–T90 九个位置上,GPT/Claude 系后期掉 11.9–20.1 个百分点,GLM/DeepSeek/Kimi 系反升 1.6–3.0 点。
  • 推广场景:人机交互中接管时机研究;课程中插入测验的最佳时机;增量学习中的灾难性遗忘时间点定位;中断恢复(checkpoint restart)策略评估。

结语

SWE-Shift 与 Compact-Bench 从环境记忆的内外两侧,用同一种分叉重放的方法学内核,把编码 Agent 最被乐观叙事掩盖的两类失败——世界变了守不住工作、记忆压了接不上任务——变成了可度量、可归因、可复现的实验对象。前者用 1,080 个配对格找到了全系统的零分区盲区(工具会话、陈旧证据),后者用 22 个配对案例证明了保留信息不等于能续作、摘要器选型带来 59 个百分点的损伤极差。对评测研究者,两篇共同示范了配对因果设计在 Agent 评测中的力量;对工程实践者,它们给出三条立即可用的告诫:压缩配置是可靠性变量而非实现细节;任务测试通过不等于协作安全;加 token 救不了结构性脆弱。当编码 Agent 从静态考场走向真实工作区,这两篇论文大概率会被反复引用——因为它们测的正是落地路上最先撞上的那两堵墙。