AGENTLESS:简化软件开发自动化的革命性方法
摘要
本文介绍了一种名为AGENTLESS的新型软件开发自动化方法,该方法利用大型语言模型(LLMs)来解决软件开发中的问题,如代码合成、程序修复和测试生成。与依赖复杂自主软件代理的传统方法不同,AGENTLESS采用了一个简化的两阶段流程:定位和修复。通过在流行的SWE-bench Lite基准测试中展示出最高性能和最低成本,AGENTLESS证明了简单、可解释技术在自主软件开发中的潜力。本文还构建了一个更严格的基准SWE-bench Lite-S,以进行更严谨的评估和比较。
原理
AGENTLESS的工作原理基于一个简单的两阶段流程:定位和修复。在定位阶段,AGENTLESS通过一个分层过程首先将错误定位到特定文件,然后进一步定位到相关的类或函数,最后定位到细粒度的编辑位置。在修复阶段,AGENTLESS利用LLMs生成多个候选补丁,并通过简单的过滤和重新排序来选择最终提交的补丁。与传统的复杂代理方法不同,AGENTLESS不允许LLMs自主决定未来的行动或操作复杂的工具,从而避免了代理方法的常见限制,如复杂的工具使用设计、决策规划中的缺乏控制以及自我反思能力的限制。
流程
AGENTLESS的工作流程包括以下步骤:
- 定位阶段:
- 将项目代码库转换为树状结构格式,展示文件的相对位置。
 - 利用LLM根据问题描述和代码库结构,定位并排序最可疑的文件。
 - 进一步定位到文件中的相关类和函数。
 - 最终定位到具体的编辑位置。
 
 - 修复阶段:
- 利用LLM生成多个候选补丁。
 - 过滤掉有语法错误或无法通过先前测试的补丁。
 - 通过多数投票重新排序剩余补丁。
 - 选择排名最高的补丁进行提交。
 
 
例如,AGENTLESS在处理一个关于“Lambdify误解某些矩阵表达式”的问题时,首先定位到相关的文件和代码段,然后生成并选择一个有效的补丁进行提交。
应用
AGENTLESS的应用前景广泛,特别是在需要高效、低成本解决软件开发问题的场景中。由于其简单性和高效性,AGENTLESS可以作为现有复杂代理方法的替代方案,尤其适用于那些不需要复杂交互和工具使用的情况。此外,AGENTLESS的成功也为未来在自主软件开发领域的研究和应用提供了新的方向和启示。
