跳转至

SWE-agent — 自动代码修复 Agent

一句话概述

SWE-agent 是普林斯顿大学开发的 AI 代码修复工具,给它一个 GitHub Issue,它就能自动找到 Bug 并修复,相当于一个"只修 Bug 的 AI 程序员"。


核心知识点表格

知识点说明
来源普林斯顿大学 + 斯坦福大学 NLP 研究组
论文NeurIPS 2024 会议论文
定位自动修复 GitHub Issue 的 AI Agent
核心技术ACI(Agent-Computer Interface)自研交互界面
SWE-BenchSWE-agent 1.0 + Claude 3.7 曾获 SoTA
Mini 版本mini-swe-agent:仅 100 行代码,74%+ SWE-Bench
使用者Meta、NVIDIA、IBM、Nebius 等
开源许可MIT 许可证
额外能力网络安全竞赛(EnIGMA)、竞赛编程

安装与配置

环境要求

  • Python 3.11+
  • Docker(推荐,用于安全沙盒)
  • API Key(OpenAI/Anthropic 等)
  • Git

安装步骤

# === 方法一:pip 安装 ===
pip install sweagent  # 安装 SWE-agent

# === 方法二:从源码安装(获取最新功能) ===
git clone https://github.com/SWE-agent/SWE-agent.git  # 克隆仓库
cd SWE-agent  # 进入目录
pip install -e .  # 以可编辑模式安装

# === 配置 API Key ===
export ANTHROPIC_API_KEY="sk-ant-你的密钥"  # Claude API Key
# 或
export OPENAI_API_KEY="sk-你的密钥"  # OpenAI API Key

配置文件

# 创建配置文件 ~/.sweagent/config.yaml
model:
  name: claude-sonnet-4-20250514  # 使用 Claude Sonnet 4
  api_key: ${ANTHROPIC_API_KEY}  # 从环境变量读取

# 执行环境
environment:
  type: docker  # 使用 Docker 沙盒(推荐)
  # type: local  # 或直接在本地执行(不推荐)

基本使用

自动修复 GitHub Issue

# 最基本的用法:给一个 GitHub Issue,让 AI 修复
sweagent run \
  --model claude-sonnet-4-20250514 \
  --data-path https://github.com/用户名/仓库名/issues/42  # 修复 Issue #42

# SWE-agent 会自动:
# 1. 读取 Issue 描述
# 2. 克隆仓库代码
# 3. 在 Docker 沙盒中分析代码
# 4. 定位 Bug 所在文件和行数
# 5. 编写修复代码
# 6. 运行测试验证
# 7. 生成补丁文件

修复本地项目

# 指定本地目录和问题描述
sweagent run \
  --model claude-sonnet-4-20250514 \
  --repo /path/to/my-project \
  --problem "用户提交表单时,如果邮箱字段为空会导致服务器500错误"

# 也可以直接用命令行交互
sweagent run \
  --model claude-sonnet-4-20250514 \
  --repo . \
  --interactive  # 交互模式,可以实时对话

Mini SWE-agent(超简版)

# mini-swe-agent 只有 100 行代码,但 SWE-Bench 得分 74%+!

# 安装
pip install mini-swe-agent  # 安装 mini 版本

# 使用
mini-swe-agent "修复这个 Bug:列表索引越界"  # 直接描述问题

# 也可以用来做日常命令行助手
mini-swe-agent "帮我写一个 Python 脚本统计目录下所有文件大小"

高级用法

ACI — Agent-Computer Interface

SWE-agent 的核心创新是 ACI(Agent-Computer Interface),
类比理解:

普通 AI 工具 = 人在电脑前打字
SWE-agent = 给 AI 设计了一套专用的键盘和屏幕

ACI 提供的专用命令:
- find_file:在仓库中搜索文件
- search_dir:搜索目录中的内容
- open_file:打开并查看文件
- goto_line:跳转到指定行
- edit_file:精确编辑文件
- create_file:创建新文件
- scroll_up/down:上下滚动查看代码
- submit:提交最终修复

这些命令比让 AI 直接用 bash 更高效、更准确

批量修复 Issue

# 可以一次给 SWE-agent 多个 Issue 让它批量修复
sweagent run \
  --model claude-sonnet-4-20250514 \
  --data-path issues.json  # JSON 文件包含多个 Issue 信息

# issues.json 格式:
# [
#   {"repo": "user/repo", "issue_id": 42},
#   {"repo": "user/repo", "issue_id": 43},
#   {"repo": "user/repo", "issue_id": 44}
# ]

使用不同执行环境

# Docker 容器(最安全)
sweagent run --env docker --model sonnet ...

# 本地环境(快但不安全)
sweagent run --env local --model sonnet ...

# Singularity/Apptainer(HPC 集群常用)
sweagent run --env singularity --model sonnet ...

# Podman(Docker 替代品)
sweagent run --env podman --model sonnet ...

使用本地模型

# 通过 Ollama 使用本地模型
sweagent run \
  --model ollama/deepseek-coder-v2 \
  --repo . \
  --problem "修复这个 TypeError"

# 通过 OpenRouter 使用多种模型
export OPENROUTER_API_KEY="你的Key"
sweagent run \
  --model openrouter/anthropic/claude-sonnet-4

SWE-agent-LM — 专用模型

SWE-agent 团队还训练了专用的开源模型:
- SWE-agent-LM-32b:开源权重 SoTA
- 专门为代码修复任务优化
- 可以在本地运行,不需要 API

用法:
sweagent run --model swe-agent-lm-32b --repo .

常见报错与解决

报错原因解决方案
"Docker not available"Docker 未安装安装 Docker Desktop
"API key not set"未配置 API Key设置对应的环境变量
"Repository clone failed"仓库地址错误或无权限检查仓库 URL 和认证
"Timeout"修复时间超限增大超时设置或简化问题
"Model not supported"模型不支持检查支持的模型列表
修复不正确AI 理解错了问题提供更详细的 Issue 描述

速查表

命令说明
sweagent run --data-path <issue-url>修复 GitHub Issue
sweagent run --repo . --problem "描述"修复本地项目问题
sweagent run --interactive交互模式
sweagent run --model <model>指定 AI 模型
sweagent run --env docker使用 Docker 沙盒
mini-swe-agent "问题描述"使用简化版

与同类工具对比

对比维度SWE-agentOpenHandsAider
定位专注修复 Bug通用 AI 开发终端编程助手
沙盒DockerDocker
SWE-Bench74%+(mini)72%N/A
学术背景NeurIPS 2024ICLR 2025
使用场景自动修 Bug全能开发日常编码
上手难度中等中等
批量处理支持支持不支持
网络安全EnIGMA 模块不支持不支持

白话总结:SWE-agent 是学术界出品的"Bug 杀手"——你把 GitHub Issue 扔给它,它就在 Docker 沙盒里自动找 Bug、改代码、跑测试。最酷的是它只有 100 行代码的 mini 版本也能达到 74% 的修复率。它最适合的场景是:你有一堆 Bug 要修,想让 AI 先自动处理一遍,你只需要审查结果。