机器添加,人类删除:度量与缓解LLM代码编辑中的删除回避
摘要
本文介绍了CanItDelete,一个包含200个真实世界纯删除代码编辑任务的基准,并衡量了LLM如何避免删除代码。研究发现,前沿模型经常保留过时的代码,生成可通过测试但无法直接合并的补丁,并且加入以删除为重点的训练数据可以提高性能。
查看缓存全文
缓存时间: 2026/08/04 17:40
论文页面 - 增加是机器,删除是人类:测量与缓解 LLM 代码编辑中的删除回避
大量 AI 生成的补丁看起来像敷衍了事,因为前沿模型仍然难以完成我们几乎不认为软件工程师需要费心的事情:删除正确的代码并适可而止。
我们构建了 CanItDelete,从真实提交中提取的 200 个任务,其中删除就是全部编辑内容。没有重新接线,没有替换逻辑。它可以诊断保留、部分删除、过度删除和边界错误。
Claude Opus 4.8 仍然在 21% 的任务中失败,GPT-5.6 Sol 为 26%,而 GLM-5.2、Kimi K2 Thinking、MiniMax-M3 和 DeepSeek-V4-Pro 大约每三个任务就有一个失败。大多数失败都留下了需要删除的代码。
给模型提供精确的行号有所帮助,但也暴露了另一个问题。Claude 达到了 97.7%,而 GLM-5.2 仍然失败 12%,GPT-5.6 Sol 18%,Qwen3-235B 42%。对某些模型而言,更好的定位让不完整删除变成了过度编辑。
在真实的仓库工作中,这变成了“Guard-and-Go”。模型不会删除过时的逻辑,而是将其保留在守卫或回退之后,通常作为守卫未捕获输入的默认路径。在五个领先的 SWE-bench Verified 提交中,29% 的通过补丁都采用了这种方式。
这可以通过测试,但还不具备合并条件。
当我们要求代码在删除密集任务中真正消失时,解决率下降了 21.3 个百分点,三分之一的已接受补丁失败。
令人欣慰的结果是,删除是可以学会的。仅增加 0.7% 的删除聚焦数据,就将不完整删除降低了 13.9 个百分点,并将 SWE-bench Verified 提升了 5.3 个百分点。过度删除也增加了,这表明完成删除和在边界处停止是两种不同的技能。
如果编码智能体要产出可合并的代码,我们就需要像训练软件工程师那样训练它们。不仅要学会写什么,还要学会什么必须不再存在。
相似文章
编码模型做得太多了
一篇博客文章探讨“过度编辑”问题:编码大语言模型在修复简单错误时改写了过多代码,提出衡量指标与训练方法以鼓励最小化、忠实于原意的编辑。
通过手动重新输入LLM生成的代码来避免认知债务
Ankur Sethi 描述了一个个人工作流程:他手动重新输入LLM生成的代码,以保持对代码库的深入理解并避免认知债务,用速度换取理解力。
如果编程问题解决了,现在该怎么办?:度量代码的粗糙性
本文探讨了大型语言模型如何生成正确的代码,但常常引入不必要的抽象等粗糙性,并讨论了衡量代码质量的方法,包括使用AI评判和人类评估。
衡量而非优化:预测LLM遗忘中的恢复
提出了J-Access,一种使用雅可比透镜的推理时审计方法,用于衡量未学习(unlearned)LLM中残余知识的可访问性,发现可访问性可预测恢复速度,但直接最小化它并不能促进真正的删除。
编程中的Large Language Models:实际是修复还是重新实现不正确的代码?
该论文研究了在竞赛编程中,Large Language Models是通过最小编辑修复错误还是从头重新实现解决方案,发现LLMs经常修改超过必要,并且在生成新解决方案时解决得更好,这对调试工具有启示意义。