
介绍
(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 在软件领域的应用作出巨大改进