论文链接:If It’s Not Buggy, Don’t Fix It: On the Dynamics of Iterative Bug-fixing with LLMs 发表时间:2026年9月10日 机构:University of Warwick × UnlikelyAI —— 产学研合作 领域标签:cs.SE / Automated Repair / Model Internals

一、论文背景

自动修复的默认叙事是"迭代改进":让 LLM 反复修复代码,每轮都更好。但实践者的体验常相反——修 A 坏 B,几轮后面目全非。相关研究(Laban et al. 2026)发现 LLM 对代码可读性的迭代改进会收敛到不动点,暗示模型有"最优可读性"的内部表征。修复任务是否也有类似内部倾向?迭代修复的长期行为到底是什么?

本文的切入点是把迭代修复当作离散动力系统:状态=代码(bug 集合),转移=LLM 一次修复,然后用动力系统工具(吸引子、修复率/损伤率、收敛性)刻画长期行为——而不是只看单轮 pass rate。

二、论文定位和关联工作

视角工作局限
单轮修复性能APR 系列(SWE-agent 等)不关心迭代动力学
迭代改进收敛Laban 2026(可读性不动点)非修复任务
自精化Self-Refine/Madaan 等假设改进单调
本文修复动力学+机制干预—

定位结论:本文把"迭代修复"从工程实践提升为可分析系统,并首次把 steering vector 干预引入修复行为控制。

三、问题定义

具体问题:LLM 主导的迭代修复的长期动力学是什么?收敛到哪里、何时恶化、能否从模型内部干预修复倾向?

关键设定:每轮迭代模型只看到当前代码(含上一轮的修改结果),看不到历史状态——模拟"用户盲目批准修改、上下文超限、多 agent 委派"等现实约束。

四、问题解法

1. 动力学形式化:代码状态 s_t(bug 集合的载体),转移映射由 LLM 修复行为给出 s_{t+1} = LLM(s_t)。度量每轮的修复率(修掉的 bug / 存在的 bug)与损伤率(新引入的 bug / 已正确部分)。

2. 吸引子分类:迭代轨迹按终态分类——正确收敛(真修好)、振荡(修了又坏坏了又修)、幻觉吸引子(模型声称修复不存在的代码块,搜索不到目标块导致循环早停——一种"通过放弃来稳定"的伪收敛)。

3. Bug steering vector:对比"修复倾向强 vs 弱"条件下的激活,提取 steering vector;验证其可从 layer ~19 线性读出(该层接近输出准备层,分类器能从激活读出解的状态),并做双向注入干预。

五、评估指标与实验证据

  • 修复率/损伤率(4.1 节):两者并存,损伤率在无 bug 可修时依然非零——“没病也修"是系统性行为而非偶发;
  • 吸引子谱(4.2 节):正确收敛、振荡、幻觉修复三类稳定出现;幻觉吸引子中模型虚构代码块导致搜索失败、循环提前终止;
  • steering 实验(5 节):正向放大 steering vector → 修复轮数增多但同时幻觉增多(bug 变多导致循环早停,模型"幻觉出要修的代码”);抑制 → 更保守。层位分析:约 layer 19 可分性接近 1.0,与该层为 unembedding 做最后准备一致。

六、效果优势的根源解释

这不是性能竞赛论文,其价值在于两个机制性解释:

  1. 损伤率的来源:修复行为由"找 bug"的先验驱动,当 bug 稀缺时先验不会关闭——模型在健康代码上继续"发现"问题,等效于过度医疗。修复率与损伤率共享同一驱动,是同一枚硬币的两面;
  2. steering 有效的条件:修复倾向在 late layer(~19)已成线性可读状态,说明它是模型"计算完成后的决策倾向"而非深层语义——因此可以在推理时廉价干预。幻觉与修复共享 steering 方向,解释了为什么"更爱修"必然伴随"更多幻觉"——两者是同一倾向的正负表达。

七、必要知识反推

  • 吸引子:动力系统中轨迹收敛的稳定状态,本文借用来分类修复终态。
  • Steering vector:激活空间中代表某行为方向的向量,加/减它可增强/抑制行为(源自Activation Steering 研究)。
  • Self-Refine:LLM 迭代自我改进的通用框架,本文质疑其单调性假设。
  • 损伤率概念:与 APR 领域 regression 概念相关,但本文将其作为动力学变量逐轮测量。

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

  1. 把迭代流程当动力系统分析:任何"LLM 反复改 X"的流程(文档、设计、代码)都值得问:吸引子是什么?损伤率多高?——单轮质量指标完全掩盖这些;
  2. “没病别修"需要机制闸门:先验证问题存在再执行修复(本文的执行引导定位、差分验证是互补方案)——修复类系统的第一守则应是"确认病灶”;
  3. 行为倾向可从内部读出并可干预:修复倾向/幻觉倾向这类高风险行为在 late layer 线性可读,意味着部署时可加"倾向监视器+刹车"——机制可解释性的直接工程红利;
  4. 伪收敛也是收敛:幻觉吸引子提醒我们,系统"稳定下来"不等于"做对了"——评估迭代系统要区分终态类型而非只看是否停止;
  5. 损伤率应成为修复系统的标准指标:只报修复率不报损伤率的自动修复评估都是不完整的。