论文

研究:LLM 修 bug 倾向重写代码而非最小修补

Large Language Models for Programming: Actually Fixing or Reimplementing Incorrect Code?

精选理由

拿 GPT 三个模型在 Codeforces 上测修 bug,发现它们总爱大改甚至重写,对做 AI 编程工具的人挺有参考价值。

一项 arXiv 研究用 Codeforces 约 3000 份提交构建数据集,将每份错误提交与对应的人工修复配对,以两者相似度为基线评估 gpt-5-nano、gpt-5-mini、gpt-5.1 三个模型的修 bug 表现。验证采用 Codeforces-R1 数据集(用 DeepSeek-R1 生成的测试用例)。结果显示 LLM 修改的行数常多于必要程度,有时干脆生成全新解法。模型从零写代码的正确率高于修补接近人工补丁的错误提交。

原文 · arXiv: DeepSeek

Large Language Models for Programming: Actually Fixing or Reimplementing Incorrect Code?

Recent studies have shown that Large Language Models can effectively solve problems and fix bugs in diverse programming environments, including competitive programming. Existing approaches primarily evaluate LLM performance in problem solving or bug fixing independently, but do not explore the relationship between these two capabilities. This work focuses on determining how much the LLM deviates from a buggy solution to fix the bug compared to a human-written patch, and if there is a bias towards generating entirely new solutions. We construct a dataset with all the submissions ($\sim$ 3000) from a couple of users from Codeforces, and we match each buggy submission with its corresponding human fix. By using the similarity between the buggy solution and the human fix as a baseline, we evaluate the quality of LLM-generated bug fixes on 3 OpenAI GPT models (gpt-5-nano, gpt-5-mini, gpt-5.1). We check if the generated solutions solve the problem by using the Codeforces-R1 dataset, an openly available dataset that has tests generated with the DeepSeek-R1 model. Our findings suggest that LLMs tend to modify more lines than necessary compared to human fixes and, in some cases, generate entirely new solutions. We also observe that LLMs solve more problems correctly when allowed to generate solutions from scratch rather than patch buggy submissions, even when those submissions are close to the human patch. This has important implications for the design of AI-assisted programming tools, particularly in supporting user debugging processes and promoting incremental problem-solving strategies rather than solution replacement.