
SWE-agent:让大模型在 Docker 沙箱里自主排查并修复 GitHub Issue 的开源软件工程 Agent|部署与使用全指南
项目仓库: https://github.com/SWE-agent/SWE-agent
开源协议:MIT · 主要语言:Python(要求 Python ≥ 3.11) ·
交付形态:Python 命令行工具 sweagent、命令行轨迹检查器、Web
轨迹检查器 · 代码执行后端:本地 Docker(默认,基础镜像
python:3.11)、Modal 云端、AWS Fargate、直接本机(不推荐)
· Web 轨迹检查器默认端口 8000 · 官方文档:swe-agent.com/latest
非官方声明:SWE-agent 是普林斯顿大学与斯坦福大学研究者发起的学术开源项目,与 Anthropic、OpenAI、Google、Modal、AWS 等模型与云服务厂商不存在隶属、授权或合作关系;文中出现的模型与服务名称仅用于说明兼容目标。API Key、GitHub Token 与模型服务条款由对应厂商约束,使用者须自行确认合规边界。需要特别说明:官方 README 已注明 SWE-agent 当前被更简洁的 mini-swe-agent 接替、项目处于维护模式,新用户可结合官方 FAQ 评估是否直接选用 mini-swe-agent。
1 项目简介
SWE-agent 是一款把大语言模型(如 Claude Sonnet
4、GPT-4o)变成“软件工程师”的开源 Agent
框架。模型在一个受控的执行环境(默认是 Docker
容器)中自主使用工具:浏览目录与源码、查看文件内容、运行命令与复现脚本、用编辑器工具修改代码、重新运行验证,最后调用
submit 提交一份补丁(patch)。它最初用于在 SWE-bench 这类真实
GitHub Issue
数据集上评测自动软件工程能力,也可以用来处理自定义编码任务、编程挑战,以及(在特定分支上)攻防
CTF 挑战。
1.1 核心信息一览
| 项目项 | 内容 |
|---|---|
| 项目名称 | SWE-agent(命令行入口 sweagent,Python 包名
sweagent) |
| 仓库地址 | github.com/SWE-agent/SWE-agent |
| 项目定位 | 开源 Agent-Computer Interface,让语言模型在沙箱环境中自主使用工具修复真实代码仓库中的问题 |
| 开源协议 | MIT(见仓库 LICENSE) |
| 主要语言 | Python;requires-python = ">=3.11",分类器覆盖 3.11
/ 3.12 |
| 交付形态 | Python
CLI(sweagent run、run-batch、run-replay
等)、终端轨迹检查器、Web 轨迹检查器 |
| 模型接入 | 通过 litellm 接入 OpenAI、Anthropic、Together 等提供者,以及任意 OpenAI 兼容本地端点 |
| 执行后端 | Docker(默认)、Modal 云端、AWS Fargate、直接本机执行(官方不推荐) |
| 应用自身部署形态 | 本地 Python 包,官方未提供面向 SWE-agent 自身的 Docker Compose 服务;Docker 仅作为代码执行沙箱 |
| Web 检查器端口 | 默认 8000,可用 --port 修改 |
| 本地模型示例端点 | Ollama 默认
http://localhost:11434(仅在配置本地模型时使用) |
| 配置文件 | config/default.yaml(默认)、config/default_mm_with_images.yaml(多模态) |
| 官方文档 | swe-agent.com/latest |
| 学术出处 | arXiv:2405.15793《SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering》 |
1.2 适用场景
- 把单个 GitHub Issue(仓库链接 + Issue 链接)交给 Agent,在沙箱中自主复现、定位、修改并产出可审阅补丁。
- 用本地仓库路径 + 自定义问题描述(文本或本地 Markdown 文件)让 Agent 修复私有或离线代码仓库中的问题。
- 在 SWE-bench
等基准数据集上批量运行(
run-batch),做模型与提示词的自动化评测,支持多实例并行。 - 研究人员基于单一 YAML 配置调整工具集、提示词模板、演示轨迹(demonstration)、模型行为与历史处理器,开展 Agent 行为实验。
- 通过轨迹(
.traj)文件回放、检查与转换,调试自定义工具、构建新的演示样本。 - 多模态场景:让支持视觉的模型读取 GitHub Issue
中的截图、图表与界面草图(需使用
default_mm_with_images.yaml配置)。
1.3 能力边界(官方口径)
- 官方 README 自述定位为 “enables your language model of choice to autonomously use tools to fix issues in real GitHub repositories, find cybersecurity vulnerabilities, or perform any custom task”;设计上把最大自由度交给模型,同时通过工具集、提示词模板与沙箱环境约束交互界面。
- 模型不绑定单一厂商:官方推荐模型为
claude-sonnet-4-20250514,示例模型包括gpt-4o、o1-preview;模型可用性、计费与能力边界由对应提供者决定。o1等模型需要按官方文档调整temperature、top_p等采样参数。 - 官方明确提示:**当前开发重心已转向 mini-swe-agent**,后者在性能持平的同时更简单、更灵活;SWE-agent
本体处于维护模式。EnIGMA 攻防(CTF)模式目前仅兼容
v0.7分支,使用该能力时需要切换到对应版本。 - Agent 在沙箱内读写文件、执行命令并访问网络;补丁是否正确、测试是否通过需要使用者审阅,项目不保证模型输出正确,也不替代代码评审与 CI 验证。
- 本地模型必须提供 OpenAI 兼容接口;不支持函数调用的模型需要切换
thought_action解析器,并在提示词中自行说明工具签名。
2 功能特性
2.1 Agent-Computer Interface 与工具集
- 模型通过一组受控工具与环境交互:
bash工具执行 shell 命令(含调用 Python 脚本)、文件查看器浏览代码、基于搜索替换或行区间的代码编辑器;工具以 tool bundle 目录组织,可在 YAML 中增删。 - 每个动作执行后,特殊的
state命令返回 JSON 状态(如当前工作目录、当前打开文件),用于填充提示词模板中的占位变量。 - 默认配置
config/default.yaml包含tools/registry、tools/edit_anthropic、tools/review_on_submit_m三个工具包,并开启bash工具。
2.2 单一 YAML 配置驱动
- 工具、提示词模板、演示轨迹、模型行为、历史处理器、输入输出接口全部由一个或多个
YAML 文件控制;命令行参数与配置文件等价,可多次
--config叠加,自 1.1.0 版本起配置按层级合并。 - 提供多模态配置
config/default_mm_with_images.yaml:自动下载并把 Issue 图片转成 base64、扩展观察长度、接入image_tools与web_browser工具、启用image_parsing历史处理器。
2.3 沙箱化代码执行(SWE-ReX 后端)
- 执行环境由配套的 SWE-ReX 管理:默认在本地 Docker 容器中启动一个小型服务端,接收 Agent 命令并执行;也可以切换到 Modal 云端、AWS Fargate,或直接在本机运行(官方不推荐直接本机执行)。
- 支持自定义 Docker 镜像:在镜像内预装项目依赖(如
flake8),通过--env.deployment.image指定;也可以用env.post_startup_commands在 Agent 启动前追加执行命令。
2.4 单任务与批量评测两种模式
sweagent run:针对单个问题描述运行一次,产出补丁与轨迹文件。sweagent run-batch:针对 SWE-bench 等数据集批量运行,支持--num_workers并行、实例切片、打乱顺序;配合sb-cli可在运行中自动提交评测。
2.5 轨迹记录、检查器与回放
- 每次运行的完整思考过程、动作、观察与补丁保存为轨迹文件(
*.traj),是理解 Agent 行为与调试工具的主要依据。 - 提供终端检查器(
sweagent inspect/i,vim 风格按键)与 Web 检查器(sweagent inspector/I,默认8000端口);run-replay可按轨迹在环境中重新执行动作,用于调试工具或构建演示。
2.6 多模型与本地模型支持
- 基于 litellm 接入绝大多数云端模型;本地模型只要提供 OpenAI 兼容端点即可接入(如 Ollama)。
- 支持多 Key 轮换:批量运行时用
:::拼接多个 API Key,每个并行线程在整轮运行中固定使用一个 Key,避免破坏提示词缓存。 - 提供
HumanModel、HumanThoughtModel、ReplayModel、InstantEmptySubmitTestModel等测试模型,可在不消耗额度的情况下走通流程。
2.7 动作落地与自动 PR
--actions.apply_patch_locally:把成功的解决方案补丁应用到本地文件。--actions.open_pr:在修复对应 GitHub Issue 后自动创建 Pull Request;官方提示该功能需谨慎使用,建议只在自有仓库或经过充分评估后开启。
3 官方界面预览
3.1 整体架构
下图为官方文档中的架构示意图:sweagent run /
run-batch 为入口,Agent 依据 config.yaml
组织模型调用,经历史处理器(History
Processor)与模型(Model)交互;动作通过 forward() 下发到
SWEEnv,再由 SWE-ReX 部署后端(Docker、Modal、AWS
等)在容器内执行,结果以 REST 方式回传观察。

3.2 Web 轨迹检查器 · 轨迹列表
在轨迹目录下运行 sweagent inspector
后,浏览器中打开的检查器会列出全部 .traj 文件,用 ✅ / ❌
标注成功与失败状态,失败条目附提交步数或退出原因;下方展示评估报告,包含退出状态、实例成本、发送
/ 接收 Token 数与 API 调用次数。

3.3 Web 轨迹检查器 · 对话回放
点击某条轨迹后,检查器按时间顺序回放 Agent 的每一步:绿色标题栏区分
SWE-Agent 发言与 tool 观察,Agent
写出的工具命令(如创建复现脚本、执行 Python 文件)与工具返回的
OBSERVATION
逐条对应,便于核对动作是否合理、补丁从何而来。

4 官方跳转链接汇总
| 类别 | 链接 | 说明 |
|---|---|---|
| 仓库主页 | https://github.com/SWE-agent/SWE-agent | 源码、默认配置、工具包与文档源文件 |
| 官方文档 | https://swe-agent.com/latest/ | 安装、模型密钥、教程、配置与 API 参考 |
| 浏览器试用 | codespaces.new/SWE-agent/SWE-agent | GitHub Codespaces 在线环境入口 |
| Issues | github.com/SWE-agent/SWE-agent/issues | Bug 跟踪与功能反馈 |
| Pull Requests | github.com/SWE-agent/SWE-agent/pulls | 贡献代码入口 |
| Releases | github.com/SWE-agent/SWE-agent/releases | 版本发布与变更说明 |
| 学术论文 | arxiv.org/abs/2405.15793 | NeurIPS 2024 原始论文 |
| SWE-bench | github.com/SWE-bench/SWE-bench | 真实 Issue 评测数据集 |
| SWE-ReX 后端 | swe-rex.com/latest/ | 沙箱执行后端文档 |
| mini-swe-agent | github.com/SWE-agent/mini-swe-agent | 官方推荐的后继简化版本 |
| Slack 社区 | swe-bench.slack.com | 使用交流与问题反馈 |
| EnIGMA 攻防模式 | enigma-agent.com | CTF 模式说明与榜单(兼容 v0.7 分支) |
5 前置要求与服务器配置
5.1 软件前提
- Python ≥ 3.11:
pyproject.toml中requires-python = ">=3.11",官方建议使用 conda 或虚拟环境隔离依赖。 - Docker(默认后端):本地代码执行默认在 Docker 容器中进行,需先安装并启动 Docker 守护进程;无法使用 Docker 时可改用 Modal 云端或 AWS Fargate 执行。
- Node.js(可选):仅在使用 Web 轨迹检查器时需要安装。
- Git:克隆仓库、拉取 Issue 对应代码与查看补丁差异需要。
- 模型凭据:至少准备一个支持模型的 API Key(Anthropic
/ OpenAI / Together 等);访问私有 GitHub 仓库还需要
GITHUB_TOKEN。 - Modal 账号(可选):使用 Modal
云端执行后端时,需先注册账号并安装额外依赖
pip install 'swe-rex[modal]'。
5.2 硬件与系统建议
| 项目 | 说明 |
|---|---|
| 操作系统 | 官方 FAQ 确认支持 Windows / macOS / Linux;主要限制是对应环境的 Docker 容器可用性,无法本地跑容器时可改用云端执行 |
| 本机内存 | 模型推理在云端 API 完成时,本机只需运行 CLI 与沙箱管理进程;本地模型按模型参数规模预留显存与内存 |
| 磁盘 | 预留 Docker 镜像、依赖包与轨迹文件空间;批量评测时轨迹与日志会随实例数量增长 |
| 网络 | 需访问所选模型提供者接口;拉取 Docker 基础镜像(如
python:3.11)与 GitHub 仓库 |
| 显卡 | 默认云端模型不需要本机 GPU;本地模型按所选推理框架要求配置显卡与驱动 |
5.3 端口与目录
| 项 | 默认值 | 用途 |
|---|---|---|
| Web 检查器端口 | 8000 |
sweagent inspector 启动的浏览器面板端口,可用
--port 修改 |
| 本地模型端点示例 | http://localhost:11434 |
Ollama 默认服务地址,仅本地模型配置时填写 |
| 沙箱容器端口 | 运行时自动分配空闲端口 | 容器内 SWE-ReX 服务端使用,由 CLI 内部管理,不对外暴露 |
| 轨迹目录 | 默认包目录下 trajectories/ |
可用 SWE_AGENT_TRAJECTORY_DIR
覆盖;检查器默认读取当前目录 |
| 配置目录 | 默认包目录下 config/ |
可用 SWE_AGENT_CONFIG_DIR 覆盖 |
| 工具目录 | 默认包目录下 tools/ |
可用 SWE_AGENT_TOOLS_DIR 覆盖 |
6 方式一:浏览器 Codespaces 在线试用与 Docker 沙箱后端准备
说明:SWE-agent 本体是本地 Python 命令行工具,官方没有提供面向应用自身的 Docker Compose 一键部署服务;Docker 在这里承担的是“代码执行沙箱”角色,而不是应用服务端。本节先给出免本地环境的浏览器试用入口,再准备默认的 Docker 沙箱后端;应用自身的源码安装见第 7 节。
6.1 GitHub Codespaces 在线试用
- 打开官方 Codespaces 入口:codespaces.new/SWE-agent/SWE-agent,按页面提示创建云端开发环境。
- 在 Codespaces 终端中按官方文档完成源码安装与模型密钥配置(命令同第 7 节)。
- 在云端环境内运行
sweagent run处理示例 Issue;该方式省去本地 Docker 与系统依赖配置,适合初次体验与文档学习。
6.2 安装并验证 Docker(默认沙箱后端)
官方默认后端为 Docker,先确认本机 Docker 可用:
# 验证 Docker 守护进程可正常运行
docker run hello-world- Linux 环境可参考官方 Docker 安装脚本与 docker/docker-install 文档完成安装;安装后启动 Docker 服务。
- 若出现
permission denied while trying to connect to the Docker daemon socket:把当前用户加入docker用户组后重新登录,或按官方安装提示调整/var/run/docker.sock权限;Docker Desktop 中在 Settings → Advanced 里允许使用默认 Docker socket。
6.3 准备沙箱基础镜像与自定义镜像
# 确保拉取最新官方运行镜像(latest 标签不会自动更新)
docker pull sweagent/swe-agent-run:latest默认使用 python:3.11
基础镜像。需要预装依赖时,可基于官方
docker/tiny_test.Dockerfile 编写自定义镜像,例如:
FROM python:3.11.10-bullseye
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Etc/UTC
WORKDIR /
# 预装 SWE-ReX 服务端,缩短启动时间
RUN pip install pipx
RUN pipx install swe-rex
RUN pipx ensurepath
ENV PATH="$PATH:/root/.local/bin/"
# 按需追加项目依赖
RUN pip install flake8
SHELL ["/bin/bash", "-c"]构建并在 Agent 运行时指定:
docker build -f tiny.Dockerfile -t swe-agent-tiny .
sweagent run \
--agent.model.name=claude-sonnet-4-20250514 \
--env.deployment.image=swe-agent-tiny \
--env.repo.github_url=https://github.com/SWE-agent/test-repo \
--problem_statement.github_url=https://github.com/SWE-agent/test-repo/issues/16.4 云端后端:Modal 执行
不希望本地占用 Docker 资源时,可改用 Modal 云端后端:
# 安装 Modal 执行后端的额外依赖
pip install 'swe-rex[modal]'
# 按 Modal 官方文档完成账号认证后运行
sweagent run \
--agent.model.name=claude-sonnet-4-20250514 \
--env.deployment.type=modal \
--env.deployment.image=python:3.11 \
--env.repo.github_url=https://github.com/SWE-agent/test-repo \
--problem_statement.github_url=https://github.com/SWE-agent/test-repo/issues/1直接在本机(不经过容器)执行代码的模式官方明确标注“不推荐”,仅用于特殊调试场景;生产与评测请使用容器或云端隔离环境。
7 方式二:源码本地安装(官方首选)与 CLI 运行
7.1 克隆与可编辑安装
官方文档把源码安装作为首选方式:
git clone https://github.com/SWE-agent/SWE-agent.git
cd SWE-agent
# 建议先创建 conda / virtualenv 虚拟环境,再执行:
python -m pip install --upgrade pip
pip install --editable .安装完成后验证命令是否可用:
sweagent --help
# 若提示 command not found,可尝试:
python -m sweagent --help
# 仍失败时用 `which python` 核对当前使用的 Python 是否与安装时一致后续更新只需在仓库目录执行 git pull,无需重复
pip install。
7.2 配置模型 API Key
支持三种设置方式(优先级:命令行 --agent.model.api_key
> 环境变量 / .env 文件):
# 方式一:环境变量
export ANTHROPIC_API_KEY=<your-key>
export OPENAI_API_KEY=<your-key>
export TOGETHER_API_KEY=<your-key>
export GITHUB_TOKEN=<github-token>
# 方式二:在仓库根目录创建 .env 文件,内容等价于环境变量
# ANTHROPIC_API_KEY=<your-key>
# OPENAI_API_KEY=<your-key>
# TOGETHER_API_KEY=<your-key>
# GITHUB_TOKEN=<github-token>
# 方式三:单次运行通过命令行传入
# --agent.model.api_key=<your-key>官方推荐模型 claude-sonnet-4-20250514(对应
ANTHROPIC_API_KEY);示例模型
gpt-4o、o1-preview 对应
OPENAI_API_KEY。
7.3 第一个命令:修复示例 GitHub Issue
sweagent run \
--agent.model.name=claude-sonnet-4-20250514 \
--agent.model.per_instance_cost_limit=2.00 \
--env.repo.github_url=https://github.com/SWE-agent/test-repo \
--problem_statement.github_url=https://github.com/SWE-agent/test-repo/issues/1运行过程依次为:部署后端启动(“starting runtime”)→ 安装工具集 →
注入系统与实例提示词 → 主循环(模型建议动作、工具执行、观察回传)→
模型调用 submit,抽取源码补丁。日志中出现
🎉 Submission successful 提示后,按提示给出的
PATCH_FILE_PATH 查看并应用补丁:
# 查看补丁
cat "${PATCH_FILE_PATH}"
# 应用到本地仓库
cd <your local repo root>
git apply "${PATCH_FILE_PATH}"7.4 本地仓库 + 自定义问题描述
git clone https://github.com/SWE-agent/test-repo.git
sweagent run \
--agent.model.name=claude-sonnet-4-20250514 \
--env.repo.path=test-repo \
--problem_statement.path=test-repo/problem_statements/1.md \
--env.deployment.image=python:3.12问题描述三种来源:
| 类型 | 参数 | 适用场景 |
|---|---|---|
GithubIssue |
--problem_statement.github_url=<issue 链接> |
直接指定公开 Issue |
TextProblemStatement |
--problem_statement.text="..." |
内联自定义任务描述 |
FileProblemStatement |
--problem_statement.path=<本地 md 文件> |
较长或需要版本管理的问题描述 |
仓库来源同样分三类:GithubRepoConfig(github_url
拉取)、LocalRepoConfig(path
复制本地目录进容器)、PreExistingRepoConfig(容器内已存在的仓库)。
7.5 批量模式:在 SWE-bench 上并行评测
sweagent run-batch \
--config config/default.yaml \
--agent.model.name=gpt-4o \
--agent.model.per_instance_cost_limit=2.00 \
--num_workers 3 \
--instances.type swe_bench \
--instances.subset lite \
--instances.split dev \
--instances.slice :3 \
--instances.shuffle=True--instances.subset选择数据集子集(lite、multimodal等);--instances.split选择dev/test;--instances.slice按 Python 切片选择实例;--instances.shuffle=True为确定性打乱。- 多模态数据集需改用
--config config/default_mm_with_images.yaml与--instances.subset multimodal。 - 配合
sb-cli可加--evaluate=True在运行中自动提交评测结果。
7.6 接入本地 OpenAI 兼容模型
# config/local_model.yaml
agent:
model:
name: ollama/llama2
api_base: http://localhost:11434
per_instance_cost_limit: 0 # 本地模型无法跟踪成本,必须关闭
total_cost_limit: 0
per_instance_call_limit: 100
max_input_tokens: 0
tools:
parse_function:
type: "thought_action" # 本地模型不支持函数调用时切换
history_processors: [] # 非 Claude 模型移除缓存控制历史处理器sweagent run --config config/default.yaml --config config/local_model.yaml \
--env.repo.github_url=https://github.com/SWE-agent/test-repo \
--problem_statement.github_url=https://github.com/SWE-agent/test-repo/issues/18 配置项说明
8.1 顶层配置分区
| 配置分区 | 控制内容 |
|---|---|
agent.model |
模型名称、API Key、api_base、成本 / 调用次数 / 输入
Token 上限、温度、采样参数、自定义模型注册表 |
agent.templates |
system_template、instance_template、next_step_template、next_step_no_output_template、format_error_template
等提示词模板 |
agent.tools |
工具包
bundles、环境变量、注册表变量、enable_bash_tool、parse_function
解析器类型 |
agent.history_processors |
cache_control(Claude
提示词缓存)、image_parsing(多模态)等历史处理器 |
env.repo |
仓库来源(GitHub 链接 / 本地路径 / 容器内已有仓库) |
env.deployment |
部署类型(docker / modal / fargate / local)、镜像
image |
env.post_startup_commands |
环境启动后、Agent 开始前追加执行的命令列表 |
problem_statement |
问题描述来源(GitHub Issue / 文本 / 文件) |
actions |
补丁本地落地 apply_patch_locally、自动开 PR
open_pr 等动作选项 |
8.2 常用模型配置项
| 配置项 | 说明 |
|---|---|
agent.model.name |
模型名,需带 provider 前缀(如
claude-sonnet-4-20250514、gpt-4o、ollama/llama2) |
agent.model.api_key |
单次运行覆盖用 API Key;优先级高于环境变量 |
agent.model.api_base |
自定义 / 本地端点地址,如 http://localhost:11434 |
agent.model.per_instance_cost_limit |
单实例成本上限(美元);本地模型设为 0
关闭成本跟踪 |
agent.model.total_cost_limit |
整轮运行总成本上限;本地模型设为 0 |
agent.model.per_instance_call_limit |
单实例模型调用次数上限,替代成本限额作为本地模型的运行限制 |
agent.model.max_input_tokens |
输入 Token 上限检查;本地模型按官方提示设置非 None
值以规避告警 |
agent.model.temperature / top_p |
采样参数;o1 等模型需按官方文档把 top_p
置空、temperature 设为 1. |
agent.model.litellm_model_registry |
自定义模型注册表 JSON,用于跟踪本地 / 新模型成本 |
agent.tools.parse_function.type |
function_calling(默认,模型直接返回 JSON 动作)或
thought_action(从回复中抽取最后一个三反引号代码块) |
8.3
默认配置(config/default.yaml)要点
agent:
templates:
system_template: |-
You are a helpful assistant that can interact with a computer to solve tasks.
# instance_template 注入仓库目录与 PR 描述,next_step_template 回传观察结果
tools:
env_variables:
PAGER: cat
MANPAGER: cat
LESS: -R
PIP_PROGRESS_BAR: 'off'
TQDM_DISABLE: '1'
GIT_PAGER: cat
bundles:
- path: tools/registry
- path: tools/edit_anthropic
- path: tools/review_on_submit_m
registry_variables:
USE_FILEMAP: 'true'
enable_bash_tool: true
parse_function:
type: function_calling
history_processors:
- type: cache_control
last_n_messages: 2history_processors中的cache_control主要服务 Anthropic Claude 的提示词缓存;换用其他模型时按官方文档移除或替换。- 多个配置文件按层级合并;命令行参数最后生效。
8.4 环境变量
| 变量 | 用途 |
|---|---|
ANTHROPIC_API_KEY |
Anthropic 模型 API Key |
OPENAI_API_KEY |
OpenAI 模型 API Key |
TOGETHER_API_KEY |
Together 模型 API Key |
GITHUB_TOKEN |
访问私有 GitHub 仓库与 Issue 所需令牌 |
OPENAI_API_BASE_URL |
自定义 OpenAI 兼容端点;不使用时应注释或删除,避免 404 |
SWE_AGENT_CONFIG_ROOT |
解析配置文件中相对路径的根目录,默认为 swe-agent
包目录 |
SWE_AGENT_CONFIG_DIR |
配置文件目录(非可编辑安装时需指定,默认
<PACKAGE>/config) |
SWE_AGENT_TOOLS_DIR |
工具包目录(默认 <PACKAGE>/tools) |
SWE_AGENT_TRAJECTORY_DIR |
轨迹输出目录(默认 <PACKAGE>/trajectories) |
SWE_AGENT_LOG_TIME |
日志中追加时间戳 |
SWE_AGENT_LOG_STREAM_LEVEL |
命令行日志级别(TRACE 为低于 DEBUG
的自定义级别);对 run-batch 不生效 |
EDITOR |
终端检查器中按 e
用编辑器打开文件时使用的编辑器命令 |
8.5 动作与部署配置示例
# 补丁应用到本地文件
sweagent run --actions.apply_patch_locally ...
# 修复成功后自动创建 PR(仅限自有仓库或充分评估后使用)
sweagent run --actions.open_pr ...
# 环境启动前预装命令(注意 zsh 下方括号需用单引号包裹)
sweagent run \
--env.post_startup_commands='["pip install flake8"]' \
...9 常用运维命令
# ---- 安装与版本 ----
sweagent --help # 查看顶层子命令
python -m sweagent --help # 命令未找到时的替代入口
# ---- 单任务运行 ----
sweagent run ... # 单个问题描述
sweagent run-batch ... # 批量数据集评测
sweagent run-replay ... # 回放轨迹 / 演示文件
# ---- 轨迹检查 ----
cd trajectories/<experiment-dir>
sweagent inspect # 终端检查器(简写 sweagent i)
sweagent inspector # Web 检查器(简写 sweagent I,默认 8000 端口)
sweagent inspector --port 9000 --directory .
sweagent quick-stats # 简写 sweagent qs:当前目录轨迹状态汇总
# ---- 轨迹工具 ----
sweagent merge-preds # 合并多个预测文件
sweagent traj-to-demo # 轨迹文件转换为便于编辑的演示文件
sweagent remove-unfinished # 清理未完成轨迹
# ---- Docker 沙箱 ----
docker run hello-world # 验证 Docker 守护进程
docker pull sweagent/swe-agent-run:latest
docker ps # 查看运行中的沙箱容器
# ---- 代码更新 ----
cd SWE-agent && git pull # 拉取最新代码,无需重复 pip install终端检查器按键:q 退出;H / L
上一条 / 下一条轨迹;t
调出轨迹列表并输入关键字搜索;h / l
切换轨迹内步骤;j / k 上下滚动;v
切换精简 / 完整视图;o 打开日志;e 在
$EDITOR 中打开文件。
10 常见故障排查
10.1
command not found: sweagent
- 先尝试
python -m sweagent --help;用which python核对当前 Python 是否就是执行pip install --editable .的解释器,必要时在同一虚拟环境中重装。 - 非可编辑安装时检查
SWE_AGENT_CONFIG_DIR、SWE_AGENT_TOOLS_DIR、SWE_AGENT_TRAJECTORY_DIR是否指向正确的包目录。
10.2 Docker 权限被拒绝
报错
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
时:将当前用户加入 docker 用户组并重新登录;Docker Desktop
在 Settings → Advanced 中允许默认
socket;临时排障可按安装文档调整 socket
权限,不要长期使用放宽权限的不安全配置。
10.3 容器镜像过旧导致异常
sweagent/swe-agent-run:latest 的 latest
标签不会自动更新;出现依赖缺失或后端版本不匹配时,先执行
docker pull sweagent/swe-agent-run:latest
拉取最新镜像后重试。
10.4 模型 404 或密钥错误
- 返回
Error code: 404时优先核对模型名、提供者与密钥;检查OPENAI_API_BASE_URL是否被旧值占用,不使用自定义端点时把该行注释或删除。 - 换用本地模型仍报成本错误,说明未关闭成本跟踪:把
per_instance_cost_limit、total_cost_limit设为0,改用per_instance_call_limit限制运行;或提供自定义litellm_model_registry。
10.5 模型不支持函数调用导致动作解析失败
默认 function_calling 要求模型直接返回 JSON
动作;模型不支持时,在配置中把
agent.tools.parse_function.type 改为
thought_action,并确保提示词文档化工具签名——模型无法像函数调用那样看到参数定义。
10.6 配置报错信息很长(union types)
repository 与 problem_statement
都是联合类型:CLI
会依次尝试各配置结构,全部不匹配时才报错,因此错误信息会同时列出多个类型的缺失项。对照第
7.4 节确认当前传入的是哪一类参数(github_url /
path / text),避免同时混用互斥参数;必要时用
--problem_statement.type 显式指定类型。
10.7 本地模型消息格式不兼容
cache_control 历史处理器要求特定的消息结构(Anthropic
格式),其他模型可能无法解析;非 Claude 模型在配置中把
history_processors 置空或替换为适用的处理器。
10.8 多模态 Issue 图片未被处理
确认使用
--config config/default_mm_with_images.yaml、模型具备视觉能力、运行环境可访问网络,且
Issue 图片小于 10MB;观察长度、图片工具与 image_parsing
处理器均需在该配置中启用。
10.9 Web 检查器端口冲突
sweagent inspector 默认使用 8000
端口;被占用时通过 --port <其他端口> 启动,用
--directory
指定轨迹目录。仅在受信内网使用,不要在未设置访问控制的情况下把检查器直接暴露到公网。
10.10 Claude 缓存额度与并行实例
Anthropic Claude 每个 Key 有 4 个缓存断点,单次 Agent 运行占用 2
个(读取与写入各一),因此单个 Key
同时只适合两个并行实例;需要更多并行度时,用 ::: 拼接多个
Key 通过 --agent.model.api_key 轮换。
11 风险与合规说明
以下条款整理自官方 README、MIT 许可证、官方文档与 FAQ 口径;如与官方原文不一致,以仓库
LICENSE、README 与 swe-agent.com 为准。
11.1 开源协议
SWE-agent 开源代码采用 MIT 许可证,允许自由使用、修改与再分发,保留版权声明与许可证副本即可;第三方依赖(litellm、SWE-ReX、各工具包等)分别遵循其自身许可证。模型、数据集与云服务归对应提供者所有,不在 MIT 覆盖范围内。
11.2 项目维护状态与选型提示
官方 README 与文档站点均提示:当前开发重心已转向 mini-swe-agent,SWE-agent
处于维护模式;日常任务选型前建议先阅读官方 FAQ
中两个版本的差异说明。EnIGMA 攻防模式仅兼容 v0.7
分支,主分支上的新功能不会回填到该分支。
11.3 模型与数据隐私
- 项目本身不提供模型、API Key 与订阅账号;代码、文件路径、命令输出与 Issue 内容会按所选模型发送到对应服务。
- 处理含商业机密、未公开补丁或敏感凭据的仓库时,优先评估本地模型与离线端点;不要把密钥、令牌、内部地址粘贴到任务描述或提示词中。
- 访问私有仓库使用的
GITHUB_TOKEN遵循最小权限原则,仅授予必要仓库与只读 / 写范围。
11.4 自主执行风险
- Agent 可以在沙箱内读写文件、执行命令、访问网络;补丁在
submit前未经人工审批,可能引入错误、删除文件或破坏依赖。建议在隔离容器中运行、先审阅补丁与 diff,再合入主干;自动开 PR 功能仅限自有仓库或充分评估后开启。 - 直接本机执行模式绕过了容器隔离,官方明确不推荐;服务器与 CI 环境务必使用 Docker 或云端沙箱。
11.5 商业使用与免责
MIT 不限制商业场景使用,但把 SWE-agent 集成进商业产品时须同时满足各模型提供者、第三方依赖与数据集的许可要求。项目按现状(AS-IS)提供,不保证模型输出正确、不保证平台兼容性与持续可用性;使用者自行承担代码质量、数据泄露、服务中断与业务损失风险。如认为仓库内特定文件侵犯合法权益,请通过 GitHub Issues 提交说明,不要在公开 Issue 中提交账号凭据、Token 或敏感代码。