MultiFixer:基于协调者-提议者的多代理框架,用于修复多块错误
MultiFixer: A Coordinator-Proposer Based Multi-Agent Framework For Fixing Multi-Hunk Bugs
摘要
自动程序修复 (APR) 从 大语言模型 (LLM) 中受益匪浅,但现有的基于 LLM 的 APR 方法仍然面临着需要跨多个位置协调更改的多块错误。这些错误需要存储库级别的上下文理解、修复顺序调度以及有效的块级别补丁生成和选择。为了应对这些挑战,我们提出了 MultiFixer,这是一种新颖的基于 Coordinator-Proposer 的多代理框架,用于多块修复。 MultiFixer 执行工具增强的错误分析,构建细粒度的修复上下文,通过 Coordinator-Proposer 架构迭代生成补丁,并应用两阶段补丁细化以确保语法和语义的正确性。我们针对 Defects4J 中的 835 个错误和三个漏洞基准测试对 MultiFixer 进行了评估。在 Defects4J 上,MultiFixer 修复了 326 个错误,其中包括 62 个多方法错误和 27 个多文件错误,并且在报告的与相同基本模型的比较中优于之前的 APR 基线。此外,MultiFixer 还修复了 95 个独特修复中的 46 个大块错误。当与 Claude-3.5-Sonnet 结合使用时,MultiFixer 修复了 420 个错误,在 Defects4J 上建立了新的技术水平。在 VUL4J 上,MultiFixer 修复了 24 个现实世界的漏洞,其中包括 5 个多块案例。在 SEC-bench 和 PatchEval 的多块子集上,MultiFixer 分别修复了 11 个和 19 个漏洞,优于 GPT-3.5 下的所有比较基准。这些结果证明了 MultiFixer 对于多块修复的有效性。