Problem
大語言模型在自動修復程式碼時,傾向於進行超出修補錯誤所需的「過度編輯」,即在修正 Bug 的同時大幅重寫無關的部分。這不僅增加了程式碼審查的負擔,也可能導致原有的實作邏輯在無意中被破壞,降低了修復建議的實用性。
Method
研究團隊基於 BigCodeBench 構建了一個包含 400 個問題的評估框架,透過在抽象語法樹(AST)層級注入受控的損壞,建立具備「已知最小補丁」的基準。研究接著測試了包含 GPT 系列在內的尖端模型,並對比了「保留原意指令」、監督式微調(SFT)以及強化學習(RL)在減少編輯量方面的成效。
Results
實驗顯示過度編輯現象極為普遍。引入「保留指令」後,平均超額編輯距離(Levenshtein distance)從 0.195 降至 0.131,並減少了 26.6% 的認知複雜度,Pass@1 表現更反向提升了 2.3%。在模型後訓練階段,強化學習(RL)在處理未見過的損壞模式時,展現出比 SFT 更好的編輯保真度與性能平衡。
Significance
本研究將「編輯保真度」定義為衡量程式碼修復品質的關鍵指標,並證明最小化修改是獨立於推理預算的特殊能力。這項成果為開發更易於審查、更符合開發者需求的自動化開發工具奠定了理論與實務基礎。