Loading...

文章背景图

SWE-agent:让大模型在 Docker 沙箱里自主排查并修复 GitHub Issue 的开源软件工程 Agent|部署与使用全指南

2026-10-26
0
- 字
- 分钟
|

图1 SWE-agent 官方横幅(README 官方素材)

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 方式回传观察。

图2 SWE-agent 官方架构图:CLI 入口、SWEEnv、Agent、历史处理器、模型与 SWE-ReX 部署后端

3.2 Web 轨迹检查器 · 轨迹列表

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

图3 官方轨迹检查器(Web Inspector)轨迹列表:成功/失败状态、成本与 Token 统计

3.3 Web 轨迹检查器 · 对话回放

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

图4 官方轨迹检查器对话视图:Agent 动作与工具 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 在线试用

  1. 打开官方 Codespaces 入口:codespaces.new/SWE-agent/SWE-agent,按页面提示创建云端开发环境。
  2. 在 Codespaces 终端中按官方文档完成源码安装与模型密钥配置(命令同第 7 节)。
  3. 在云端环境内运行 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/1

6.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/1

8 配置项说明

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: 2
  • history_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 或敏感代码。

评论交流

文章目录