跳转至

SWE-agent:面向软件工程的工具接口设计

原文链接: SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering [89]

论文信息

  • 年份:2024 [89]
  • 作者:John Yang, Carlos E. Jimenez, Alexander Wettig, Kilian Lieret, Shunyu Yao, Karthik Narasimhan, Ofir Press [89]
  • 作者背景(研究领域):软件工程代理/工具接口 [89]
  • 前后血缘关系(同主题):前序:SWE-bench;后续:无(工程化接口方向代表)

主旨

SWE-agent 的主旨是证明“工具接口设计”在自动化软件工程中的关键作用。论文提出 Agent-Computer Interface,把模型与命令行工具、文件系统等基础操作统一起来,从而提高任务完成率与可控性。[89]

背景与问题定义

论文针对代码代理在真实仓库中“操作失控”的问题:模型可能在复杂工具链中迷失,或因接口不一致导致执行失败。作者认为,需要先设计可靠的工具层,再谈模型能力提升。[89]

方法与机制

论文构建了一个简洁稳定的工具集合,覆盖文件浏览、文本编辑与命令执行等基础能力。模型通过这些接口完成代码理解、修改与测试。核心思想是缩小工具集、明确输入输出,让模型在稳定协议下完成复杂任务,避免被过多工具干扰。[89]

实验与结果

作者在 SWE-bench 等场景验证 SWE-agent 的效果,显示其在真实代码修复任务中的表现显著提升。实验强调:当工具接口清晰可控时,模型更容易形成有效的操作序列;当接口复杂或不一致时,性能会明显下降。[89] 论文还指出,工具交互的“微小细节”可能决定成败,例如路径处理或命令返回格式。由此可见,工程上的接口规范化是提升代理可靠性的高杠杆手段。[89]

关键数据结果

  • SWE-agent(GPT-4 Turbo)在 SWE-bench 全量测试集上解决 12.47%(286/2,294)任务,显著高于此前最优的 3.8%。[89]
  • 在 SWE-bench Lite 上解决率为 18.00%(54/300),HumanEvalFix 上的 pass@1 为 88.3%。[89]

工程启示(优化点)

  • 工具集应精简且稳定,避免接口膨胀。
  • 输入输出格式需严格定义,减少模型理解成本。
  • 对命令执行结果做结构化包装,便于下一步推理。
  • 建立错误处理闭环,支持可恢复的执行流程。
  • 对工具调用进行权限分级,降低误操作风险。

局限与延伸

SWE-agent 的成果依赖于工具接口设计质量,若工具能力不足或与任务不匹配,性能提升有限。它也需要在不同仓库和任务中验证通用性,且在受限环境下需要额外的安全与权限控制。大规模代码库还需要更好的性能优化与缓存策略。延伸方向包括:面向更多工程场景的接口扩展、跨语言工具的统一协议、加入权限与沙箱策略,以及与自动评测与回归体系的深度结合。[89]