论文

SWE-Doctor:通过多方面的错误重现测试进行运行时诊断来指导软件工程代理

SWE-Doctor: Guiding Software Engineering Agents with Runtime Diagnosis from Multi-Faceted Bug Reproduction Tests

智能体系统Agent 架构与控制循环

摘要

基于 大语言模型 (LLM) 的软件工程代理越来越多地被开发出来,通过从问题报告和代码存储库生成补丁来解决软件问题。错误再现测试 (BRT) 是此类代理的重要组成部分,并且已被证明对于补丁验证非常有用。然而,目前尚不清楚 BRT 是否也能帮助补丁生成的更核心阶段。我们首先进行了初步研究,发现直接使用先进的 BRT 生成器来指导补丁生成并没有什么好处:失败的 BRT 会误导代理,而即使失败的 BRT 也会带来有限或负面的收益。我们的分析揭示了两个原因:无法通过的 BRT 可能只涵盖所报告问题的一种表现形式,从而导致补丁不完整,而无法通过的 BRT 作为直接补丁生成目标是不可靠的。受这些见解的启发,我们提出了 SWE-Doctor,这是一种软件问题解决代理,它通过从多方面 BRT 执行中得出的运行时诊断来指导补丁生成。 SWE-Doctor首先针对问题中所述的不同行为需求生成多方面的BRT,然后执行和调试这些BRT以构建基于运行时的诊断记录,最后将诊断与BRT生成过程中推断出的本地化信息一起用于指导补丁生成并减少部分补丁。我们在五个 LLM 后端广泛采用的 SWE-bench Verified 和 SWE-bench Pro 中评估了 SWE-Doctor 的 Python 错误修复问题。 SWE-Doctor 在所有 10 个 LLM 基准组合中始终优于现有代理,在 SWE-bench Verified 上实现了 75.7% 的平均分辨率,在 SWE-bench Pro 上实现了 59.4% 的平均分辨率。特别是,在更具挑战性的 SWE-bench Pro 上,SWE-Doctor 的平均解决率比基准代理提高了 8.0-8.9 个百分点。