论文

运行还是不运行:基于LLM的程序修复中代码执行的成本效益分析

To Run or Not to Run: Analyzing the Cost-Effectiveness of Code Execution in LLM-Based Program Repair

智能体系统Agent任务评测

摘要

基于 LLM 的程序修复代理越来越多地构建在“生成-运行-修订”范例上,迭代执行测试以评估和完善补丁。这种基于执行的方法已成为最先进系统的标准实践。然而,执行可能既耗时又昂贵,而且它们对这些代理的影响仍未得到充分研究。在本文中,我们对基于 LLM 的程序修复中的执行行为进行了两阶段实证研究。为了大规模描述执行行为,我们首先分析了来自 SWE-bench 排行榜提交的 7,745 个代理跟踪。其次,我们在四种执行范例下评估了 200 个 SWE 基准实例和三个代理(Claude Code、Codex 和开源 OpenCode)的 3,000 次端到端修复尝试,从而可以对性能和成本进行细粒度比较。我们的分析揭示了三个关键观察结果:(1) 在分析的所有代理和模型中都使用了代码执行,每个任务平均运行 8.8 次测试。不同代理和模型的执行行为差异很大,每个任务的执行频率从 2 到 19 次不等,并且后期执行始终比早期执行获得更高的成功率。 (2) 执行限制对修复成功影响不大:在采用 SOTA 模型的商业代理上,Prohibited 和 Unrestricted 之间的解决率差距仅为 1.25 个百分点,并且在统计上并不显着,而 Prohibited 则节省了大量的词元和挂钟成本。 (3)执行效益集中而不统一。这些模式表明,当前的代理不加区别地应用执行,在几乎没有带来任何好处的情况下付出成本。因此,执行应被视为具有明确成本效益权衡的资源,而不是默认功能。