SWE-agent — 自动代码修复 Agent
一句话概述
SWE-agent 是普林斯顿大学开发的 AI 代码修复工具,给它一个 GitHub Issue,它就能自动找到 Bug 并修复,相当于一个"只修 Bug 的 AI 程序员"。
核心知识点表格
| 知识点 | 说明 |
|---|
| 来源 | 普林斯顿大学 + 斯坦福大学 NLP 研究组 |
| 论文 | NeurIPS 2024 会议论文 |
| 定位 | 自动修复 GitHub Issue 的 AI Agent |
| 核心技术 | ACI(Agent-Computer Interface)自研交互界面 |
| SWE-Bench | SWE-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-agent | OpenHands | Aider |
|---|
| 定位 | 专注修复 Bug | 通用 AI 开发 | 终端编程助手 |
| 沙盒 | Docker | Docker | 无 |
| SWE-Bench | 74%+(mini) | 72% | N/A |
| 学术背景 | NeurIPS 2024 | ICLR 2025 | 无 |
| 使用场景 | 自动修 Bug | 全能开发 | 日常编码 |
| 上手难度 | 中等 | 中等 | 低 |
| 批量处理 | 支持 | 支持 | 不支持 |
| 网络安全 | EnIGMA 模块 | 不支持 | 不支持 |
白话总结:SWE-agent 是学术界出品的"Bug 杀手"——你把 GitHub Issue 扔给它,它就在 Docker 沙盒里自动找 Bug、改代码、跑测试。最酷的是它只有 100 行代码的 mini 版本也能达到 74% 的修复率。它最适合的场景是:你有一堆 Bug 要修,想让 AI 先自动处理一遍,你只需要审查结果。