“SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering” 论文笔记


介绍

(1) 发表:NIPS’24

(2) 背景

考虑直接与 Linux 终端直接互动的 Agent 的简单设置,我们发现 LM Agent 很难在这种环境下可靠地采取行动。例如,它无法提供简单的命令来编辑一个小文件段,并且如果用户进行无效编辑,则不会提供任何反馈。这些缺陷大大阻碍了性能,激发了对代理计算机接口 (ACI) 的需求,即 LM Agent 和计算机之间的抽象层,以增强 LM 代理在计算机环境中的能力

(3) 贡献

在本文中假设 LM 固定,仅专注于设计 ACI 以提高其性能。这意味着我们塑造了动作、文档和环境反馈,以补充 LM 的局限性和能力

方法

ACI 的主要组件为:搜索导航、文件查看器、文件编辑器和上下文管理。在每个步骤中,SWE-Agent 都会产生一个思想和命令,然后在环境中将命令执行的反馈 (ReAct 算法) 结合在一起。 SWE-Agent 在 Linux 终端上构建,还允许在需要时访问常见的 Linux命令和实用程序

(1) 搜索导航

我们介绍了特殊命令 find_file,search_file 和 search_dir,该命令在搜索文件或目录中的文件名和字符串时,输出搜索结果的摘要

(2) 文件查看器

文件查看器一次显示文件的最多 100 行窗口。代理可以使用命令 scroll_down 和 scroll_up 移动此窗口,也可以使用 goto 命令访问特定行

(3) 文件编辑器

编辑命令与文件查看器一起工作,允许代理替换打开文件中的特定行范围。此命令采用 3 个必需的参数:起始行,终点和替换文本。类似于人类使用 IDE 编辑文件时注意到格式错误,我们将代码 Linter 集成到编辑函数中,以提醒 Agent 其编辑文件时可能引入的错误

(4) 上下文管理器

获取有关 Bash 和 ACI 命令正确使用的说明、文档和示范。在每个步骤中,系统都指示他们同时产生思想和动作。无效的生成触发了一个错误响应则会要求 Agents 再试一次,然后重复直到收到有效的生成

实验

SWE-agent 的方法设计明显优于 RAG 和 Shell-only agent

总结

该工作提出并设计了完善的 ACI 框架,对 LLM Agent 在软件领域的应用作出巨大改进