QiMeng-PRepair: Riparazione Precisa del Codice tramite Ottimizzazione di Ricompensa Basata su Modifiche
QiMeng-PRepair: Precise Code Repair via Edit-Aware Reward Optimization
April 7, 2026
Autori: Changxin Ke, Rui Zhang, Jiaming Guo, Yuanbo Wen, Li Ding, Shuo Wang, Xuyuan Zhu, Xiong Peng, Di Huang, Zidong Du, Xing Hu, Qi Guo, Yunji Chen
cs.AI
Abstract
I Large Language Model (LLM) ottengono ottime prestazioni nella riparazione di programmi, ma spesso soffrono di sovra-modifica, dove modifiche eccessive sovrascrivono codice corretto e ostacolano la localizzazione dei bug. Quantifichiamo sistematicamente il suo impatto e introduciamo il compito di riparazione precisa, che massimizza il riutilizzo del codice corretto correggendo solo le parti difettose. Basandoci su questa intuizione, proponiamo PRepair, un framework che mitiga la sovra-modifica e migliora l'accuratezza della riparazione. PRepair ha due componenti: Self-Breaking, che genera programmi difettosi diversificati tramite iniezione controllata di bug e campionamento min-max, e Self-Repairing, che addestra i modelli con l'Edit-Aware Group Relative Policy Optimization (EA-GRPO) utilizzando una ricompensa "edit-aware" per incoraggiare modifiche minime ma corrette. Gli esperimenti mostrano che PRepair migliora la precisione di riparazione fino al 31,4% secondo fix_1@1, una metrica che considera congiuntamente la correttezza e l'estensione della riparazione, e aumenta significativamente il throughput di decodifica se combinato con l'editing speculativo, dimostrando il suo potenziale per una riparazione del codice precisa e pratica.
English
Large Language Models (LLMs) achieve strong program repair performance but often suffer from over-editing, where excessive modifications overwrite correct code and hinder bug localization. We systematically quantify its impact and introduce precise repair task, which maximizes reuse of correct code while fixing only buggy parts. Building on this insight, we propose PRepair, a framework that mitigates over-editing and improves repair accuracy. PRepair has two components: Self-Breaking, which generates diverse buggy programs via controlled bug injection and min-max sampling, and Self-Repairing, which trains models with Edit-Aware Group Relative Policy Optimization (EA-GRPO) using an edit-aware reward to encourage minimal yet correct edits. Experiments show that PRepair improves repair precision by up to 31.4% under fix_1@1, a metric that jointly considers repair correctness and extent, and significantly increases decoding throughput when combined with speculative editing, demonstrating its potential for precise and practical code repair.