SWE-agent 教程:浏览代码仓库并尝试修复 GitHub 问题

原标题SWE-agent Tutorial: Navigating Repositories and Attempting GitHub Fixes

Matthew Berman 配置研究型编程智能体,遇到安装问题和成本上限,随后展示一位作者成功处理 SymPy 基准示例的过程。

CaCarlos嘉宾 · SWE-bench
频道
Matthew Berman
发布
2024年4月5日
视频
13:59
阅读
5 分钟
幻灯片
7
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

2024 年 4 月,Matthew Berman 介绍 Princeton 团队的 SWE-agent 及其用于浏览、编辑和测试代码的定制工具。他讨论项目报告的 SWE-bench 对比,尝试配置智能体,并让它处理自身仓库中的一个问题。 Berman 在 Apple Silicon Mac 上的本地安装失败,之后在托管环境中的运行达到成本上限后停止,修复未得到验证。作者 Carlos 的另一段演示展示了一个较早的 SymPy 基准问题通过了演示中的测试。历史命令、分数和产品对比不应视为当前文档或普遍成功率。

  1. 1处理问题的编程智能体SWE-agent 使用语言模型和仓库工具尝试修复软件问题。
  2. 2历史基准快照项目图表报告使用 GPT-4 的 SWE-agent 得分为 12.29%,Devin 为 13.84%,后者只在测试集的一个子集上评估。
  3. 3智能体计算机界面项目介绍了代码检查器、限定范围的文件查看器、目录搜索,以及命令无输出时的明确反馈。
  4. 4安装问题Berman 在 Apple Silicon Mac 上配置 Docker 失败,于是改用托管环境。
  5. 5运行因预算中止他的运行达到设定的成本上限;视频没有证明问题已经解决。
  6. 6作者的独立示例Carlos 演示一个 SymPy 矩阵问题,并报告生成的补丁通过了展示的基准测试。

要点建议

  1. SWE-agent 为语言模型提供专门的仓库导航、编辑、搜索和反馈工具。
  2. 项目展示的 SWE-bench 图表报告,使用 GPT-4 的 SWE-agent 得分为 12.29%,Devin 为 13.84%,其中 Devin 只在 25% 的测试集上评估。
  3. Berman 在 Apple Silicon 上的配置失败,之后的运行在修复得到验证前因成本上限中止。
  4. 作者单独展示的 SymPy 示例复现了一个 bug、编辑代码、重新运行示例,并报告通过基准测试。
  5. 基准百分比是特定评估的汇总结果,不是任意问题得到修复的精确概率。
  6. 2024 年的配置说明和 API 价格属于历史信息;供应商访问方式和成本取决于当前配置。
全文

按章节阅读整理后的全文

只看原始文稿
01

SWE-agent 与基准测试

Berman 介绍 Princeton 项目并讨论其历史 SWE-bench 图表。图中 Devin 的结果使用了测试集的一个子集。

我介绍 SWE-agent,这是 Princeton 团队围绕智能体计算机界面设计的编程智能体项目。它的目标是为语言模型提供处理 GitHub 问题的工具:检查仓库、尝试复现问题、编辑文件并提出修复。这些是项目希望提供的能力,并不承诺每个问题都能解决。

项目展示的 SWE-bench 图表报告,使用 GPT-4 的 SWE-agent 解决了 12.29% 的问题,Devin 的结果为 13.84%。图表脚注说明 Devin 的结果只在 SWE-bench 测试集的 25% 上评估。这些由项目展示的历史结果评估范围不同,因此仅凭图表无法确定普遍适用的正面排名。

项目报告的 SWE-bench 结果
幻灯片 1 / 7项目报告的 SWE-bench 结果图表展示历史分数,并注明 Devin 在 25% 的测试集上评估。

项目展示了智能体读取问题、复现涉及转换为 R 的问题、搜索相关文件并编辑可能的源文件。我对这种逐步交互印象深刻,因为模型必须在仓库中找到有用的部分,而不是在一个提示中接收整个代码库。

团队将结果部分归因于为语言模型设计的命令和反馈。我将大型仓库中寻找相关上下文的挑战与 Aider 等工具进行比较,我说 Aider 使用 Universal Ctags。问题在于如何提供足够有用的代码,同时不让模型信息过载。

02

为模型设计的工具

智能体计算机界面包含文件查看、搜索、编辑反馈和语法检查。Berman 考虑了理解大型仓库的挑战。

智能体计算机界面功能
幻灯片 2 / 7智能体计算机界面功能项目列出了代码检查器、文件查看器、搜索命令和无输出反馈。

项目介绍了一个代码检查器:如果编辑引入语法错误,就会阻止该编辑继续。自定义文件查看器每次显示约 100 行,并提供滚动和文件内搜索命令。我怀疑代码片段是否总能提供足够上下文,但作者报告认为这一界面很有用。

另一个目录搜索命令会返回简洁的匹配结果;没有输出的命令则会收到明确的成功信息。我把这一套工具看作智能体的小型定制开发环境。这些界面选择由项目介绍;视频没有通过独立实验分别测量每项选择的效果。

03

配置环境

Berman 演示 Docker、Conda、仓库配置和凭据设置。他在 Apple Silicon 上安装失败后,转到托管环境继续。

在 2024 年的配置过程中,我先准备 Docker 和 Miniconda,在终端克隆仓库,根据环境文件创建项目的 Conda 环境并激活,然后运行设置脚本构建 Docker 镜像。这些是当时版本展示的步骤,后续版本可能不同。

Apple Silicon 上的 Docker 配置错误
幻灯片 3 / 7Apple Silicon 上的 Docker 配置错误Berman 首次本地安装失败,随后切换环境。

尽管起初我称赞了打包好的配置,但在 Apple Silicon Mac 上,我无法解决一个与 Miniconda 有关的 Docker 错误。我转而使用 Lightning,并说明它没有赞助视频,随后在那里完成镜像构建。切换环境是我在演示中采用的变通方法,并不能证明错误的确切原因。

我在项目目录中创建密钥配置文件,并配置 GitHub token 和本次测试使用的 OpenAI 密钥。界面还列出了其他可选供应商密钥。这套配置针对演示的版本;凭据和供应商设置取决于实际环境。

04

中断的问题处理过程

智能体检查自身仓库中的一个问题并编辑代码。修复得到验证前,运行达到成本上限。

我指定模型、配置文件和 SWE-agent 自身仓库中的一个问题 URL 来运行智能体。这个问题涉及缺失的 `base_commit` 记录。智能体初始化环境,开始阅读问题和仓库文件。

智能体识别出报告的键错误,并使用内置查看命令浏览一个很长的文件。它滚动经过多个位置后找到相关方法,随后提出编辑并注意到一个重复设置。我觉得这一过程很有趣,但运行过程和提出的补丁并不能证明解决方案有效。

运行达到成本上限
幻灯片 4 / 7运行达到成本上限控制台显示超出成本上限;视频没有展示成功修复。

运行在超过配置的 2 美元成本上限后停止。我看到智能体作出修改的迹象,但没有完成验证来证明提出的修复解决了问题。项目的汇总基准分数不能解读为这个具体问题被修复的精确概率。

我注意到成本上限可以配置,并说希望使用本地模型来避免同样的托管 API 费用。当时我没有找到直接的本地模型选项,并推测未来版本可能让这件事更容易。本地推理仍然存在硬件和运营成本。

05

作者的 SymPy 演示

Carlos 展示另一个基准示例,从复现矩阵 bug 到提交补丁并展示测试结果。

另一段演示来自一位自我介绍为 Carlos 的作者,他使用 SWE-bench 中一个 SymPy 问题,涉及 `Matrix.col_insert` 的异常输出。他把问题发送给智能体,然后讲解同一示例此前的一次运行。

Carlos 展示智能体根据问题创建复现脚本,并确认异常行为。智能体搜索仓库、打开矩阵实现,并确定插入函数是值得调查的位置。

复现 SymPy 问题
幻灯片 5 / 7复现 SymPy 问题作者的独立演示为矩阵插入问题创建复现脚本。

智能体发现索引问题,应用编辑并重新运行复现脚本。Carlos 说输出现在符合预期。智能体删除临时复现文件,并提交建议的代码差异以进行基准评估。

应用并检查补丁
幻灯片 6 / 7应用并检查补丁演示展示编辑后的矩阵函数,并重新运行复现脚本。
展示的基准测试结果
幻灯片 7 / 7展示的基准测试结果作者展示此示例中原本失败的测试和现有测试通过的结果。

Carlos 报告,提交的补丁通过了此前失败的测试,也没有破坏 SWE-bench 评估中展示的现有测试。这是作者选择的单个演示,与我中断的运行不同,也不能保证未来的问题都能解决。

同频道的其他文章

12 张幻灯片34:21EN → 简体中文
Matthew Berman· 2026年10月27日Matthew Berman 解读 Anthropic 的上市文件、AI 增长与治理Matthew Berman, Sam Altman · Forward Future主持人审视 S-1 中的财务指标、算力战略和投票结构,并质疑 AI 快速发展与安全之间的张力。AnthropicAI Safety企业 AI+2
6 张幻灯片25:50EN → 简体中文
Matthew Berman· 2026年10月24日Kimi K3.1 Pro 实测:3D 演示出色,表现不一,价格有竞争力Matthew Berman · Forward FutureMatthew Berman 测试这款开放权重模型的编程、3D 渲染和视觉讲解能力,并比较基准成绩与价格。Open-weight modelsBenchmarksAI cost & performance+1
2 张幻灯片32:20EN → 简体中文
Matthew Berman· 2026年10月23日本地 AI 究竟适合谁?成本、取舍与混合模式的未来Matthew Berman · Forward FutureMatthew Berman 权衡数据控制和自主权,与硬件成本、设置复杂度及推理速度之间的关系。Local inferenceOpen-weight modelsAI cost & performance+1
6 张幻灯片1:03:37EN → 简体中文
Matthew Berman· 2026年10月23日Matthew Berman 团队测试 Kimi K3.1:动画、游戏与图表Matthew Berman, Alex, Brian · Forward Future一场团队直播问答变成了对 Kimi K3.1 的非正式测试,内容涵盖个人智能体工作流、动态图形、浏览器游戏和基准图表。编程智能体Generative media评估+2
0:53EN → 简体中文
Matthew Berman· 2026年10月22日Sam Altman 谈 AI 与新知识的发现Sam Altman · OpenAIAltman 预计,数学发现方面的进展将延伸到生物学、材料和能源领域。AI for scienceMathematicsComputational Biology+1
幻灯片0:22EN → 简体中文
Matthew Berman· 2026年10月21日机器人保镖短片展示戏剧性的救援场景Matthew Berman · Forward FutureMatthew Berman 观看一段展示格斗与车辆救援场景的机器人短片。Robotics评估