SWE-agent 从源码安装完整指南:可编辑安装、环境配置与故障排查
【免费下载链接】SWE-agentSWE-agent takes a GitHub issue and tries to automatically fix it, using your LM of choice. It can also be employed for offensive cybersecurity or competitive coding challenges. [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/sw/SWE-agent
本篇技术指南围绕 SWE-agent 官方推荐的“从源码安装(Installation from source)”方式展开,覆盖克隆仓库、可编辑安装(pip install -e .)、语言模型与 API Key 配置、安装验证、可选依赖(Docker / Node.js)、版本升级与开发者模式安装等完整流程,并深入结合本仓库的 pyproject.toml 与 sweagent/run/run.py 等源码佐证底层实现。读完本文,你将能够在一台干净的机器上从零搭建可运行、可修改、可调试的 SWE-agent 开发环境。
为什么“从源码安装”是官方首选
SWE-agent 是一个让语言模型自主修复 GitHub issue、参与网络安全 CTF 挑战或编程竞赛的开源 Agent 框架。对于绝大多数使用场景,官方文档 source.md 明确将源码安装定义为首选方式(the preferred way)。
选择源码安装而非预构建包的核心原因有二:
- 可编辑安装(editable install):
pip install -e .将仓库目录直接链接到 Python 环境,你对仓库内任何.py文件的修改都会即时生效,无需反复重装,非常适合研究与二次开发。 - 与主仓库保持同步:SWE-agent 仍处于活跃开发期,功能迭代频繁,源码安装配合
git pull可以随时获取最新特性。
从仓库的 pyproject.toml 可以看到,该包名为sweagent,Python 版本要求为requires-python = ">=3.11",核心依赖包括litellm(统一接入各家模型)、swe-rex(环境部署与执行)、GitPython、pydantic、simple-parsing等。
前置条件:Python 环境与版本检查
安装前请确认你的机器满足以下条件:
- Python 3.11 或更高版本:这一要求同时写死在 pyproject.toml(
requires-python = ">=3.11")与 sweagent/init.py(PYTHON_MINIMUM_VERSION = (3, 11))中。若版本过低,导入包时会被直接拒绝并抛出RuntimeError。 - 虚拟环境:官方推荐使用 conda 或 Python 虚拟环境(venv)隔离依赖,避免与系统其他 Python 包冲突。
三步完成源码安装
第一步:克隆仓库
git clone https://github.com/SWE-agent/SWE-agent.git克隆完成后进入仓库根目录,后续所有命令都在该目录下执行。
第二步:可编辑安装
在仓库根目录运行:
python -m pip install --upgrade pip && pip install --editable .这条命令做了两件事:
- 先升级
pip本身,确保安装工具处于较新状态; - 以**可编辑模式(editable)**安装当前目录下的包。
从 pyproject.toml 的[project.scripts]段落可以看到,安装完成后会自动生成sweagent命令行入口,它指向sweagent.run.run:main函数:
[project.scripts] sweagent = "sweagent.run.run:main"这也是为什么安装完成后,你可以在任意终端直接使用sweagent命令。同时 sweagent/main.py 的存在意味着python -m sweagent也是合法的调用方式——这一点在后文“命令找不到”的排查中会用到。
第三步:配置语言模型与 API Key
SWE-agent 通过 litellm 统一接入各家语言模型。配置模型与密钥的方式在 docs/installation/keys.md 中有完整说明,常用做法有三种:
- 设置环境变量(推荐),例如:
export ANTHROPIC_API_KEY='your anthropic key' export OPENAI_API_KEY='your openai key'- 在仓库根目录创建
.env文件,其中的变量会自动取代环境变量:
# .env 文件示例 # GITHUB_TOKEN='GitHub Token for access to private repos' # OPENAI_API_KEY='OpenAI API Key Here if using OpenAI Model' # ANTHROPIC_API_KEY='Anthropic API Key Here if using Anthropic Model' # TOGETHER_API_KEY='Together API Key Here if using Together Model'- 在命令行通过
--agent.model.api_key直接传入。
官方推荐的模型为claude-sonnet-4-20250514(使用ANTHROPIC_API_KEY),也可使用gpt-4o、o1-preview等(使用OPENAI_API_KEY)。注意模型名称通常需带 provider 前缀,例如ollama/llama2这类本地模型写法。更多高级配置(成本限制、token 限制、自定义模型注册表)可参考 docs/config/models.md。
验证安装:sweagent --help
安装并配置好模型后,运行快速自检:
sweagent --help正常情况下会输出顶层命令概览。从 sweagent/run/run.py 的模块文档字符串可以看到,可用的顶层子命令包括:
| 命令 | 别名 | 用途 |
|---|---|---|
sweagent run | r | 在单个问题陈述(如一个 GitHub issue)上运行 agent |
sweagent run-batch | b | 在批量问题陈述上运行 agent(如 SWE-bench 基准测试) |
sweagent merge-preds | — | 合并多个预测结果文件 |
sweagent inspect | i | 在终端查看器打开单个轨迹文件 |
sweagent inspector | I | 在 Web 查看器中浏览轨迹 |
sweagent run-replay | — | 重放轨迹文件或 demo 文件 |
sweagent traj-to-demo | — | 将轨迹文件转换为易编辑的 demo 文件 |
sweagent run-api | — | 作为 GUI 后端运行 |
sweagent remove-unfinished | ru | 清理未完成的轨迹 |
sweagent quick-stats | qs | 从轨迹目录计算快速统计 |
sweagent shell | sh | 交互式 shell 模式 |
这些子命令的调度逻辑同样位于 sweagent/run/run.py:入口函数main解析命令后延迟导入对应模块(如run_single、run_batch),避免不必要的启动开销。
快速上手示例
安装验证通过后,一个最简的“Hello world”运行示例如下(完整教程见 docs/usage/hello_world.md):
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可以看到命令行选项是层级化的,分为三个核心部分:--problem_statement(要解决的问题)、--agent(如何解决,含模型配置--agent.model)、--env(执行环境,含仓库--env.repo与 Docker 镜像等)。典型运行流程包括:启动部署环境 → 安装工具 → 注入系统提示与实例提示 → 主循环(模型提议并执行动作)→ 调用submit提取补丁。
排查:sweagent 命令找不到怎么办
如果提示sweagent: command not found,官方文档给出了两条排查路径:
- 改用模块调用方式:尝试
python -m sweagent。这一入口由 sweagent/main.py 提供,它直接调用sweagent.run.run的main函数。 - 检查 Python 解释器是否一致:运行
which python,确认当前使用的python与安装 SWE-agent 时用的是同一个解释器。如果安装时用了某个虚拟环境或 conda 环境,而终端当前激活的是另一个环境,命令自然找不到。
可选安装步骤:Docker 与 Node.js
Docker(强烈推荐)
SWE-agent 的默认执行后端是Docker:agent 的每条命令都会在隔离的容器内执行,保证安全与可复现。从 sweagent/environment/swe_env.py 的EnvironmentConfig默认值可以看到,默认部署配置为DockerDeploymentConfig(image="python:3.11", ...),即基于python:3.11镜像启动沙箱。
安装方式:
- 参考 Docker 官方安装文档,或 Linux 下使用
get-docker.sh脚本; - 安装后启动 Docker 守护进程(Docker Desktop 或
systemctl start docker); - 验证:
docker run hello-world。
如果你不希望使用 Docker,SWE-agent 仍可通过云端执行(如 Modal、AWS Fargate)运行代码求值,部署层由 SWE-ReX 包统一管理。
遇到 Docker 问题时的排查要点见 docs/installation/tips.md,常见症状与处理包括:
permission denied while trying to connect to the Docker daemon socket:在 Docker Desktop 中开启Settings>Advanced>Allow the default Docker socket to be used,或将当前用户加入docker用户组;- Docker Hub 镜像版本过旧:即使镜像带有
latest标签也不会自动更新,请手动执行docker pull sweagent/swe-agent-run:latest。
Node.js(可选)
如果计划使用Web 版 GUI(如 inspector 网页查看器),需要额外安装 Node.js。纯命令行使用场景则无需安装。
日常维护:升级与版本切换
- 获取最新特性:SWE-agent 活跃开发中,建议周期性运行
git pull更新代码。由于采用可编辑安装,更新后无需重新执行pip install——源码改动会立即反映到运行中的包。 - EnIGMA 用户注意:SWE-agent EnIGMA(网络安全 CTF 模式)目前仅兼容
v0.7版本,如需使用请在第一步行克隆后执行git switch v0.7切换分支。更多说明见 README.md 的 EnIGMA 小节。 - SWE-ReX 版本约束:从 sweagent/init.py 可以看到,包会强制校验
swe-rex版本不低于1.2.0(推荐1.2.1)。若版本过旧,导入时会提示运行pip install --upgrade swe-rex或重新执行pip install -e .。
进阶:以开发者模式安装并运行测试
若你打算修改 SWE-agent 源码并贡献代码,官方建议在基础安装之上加装dev附加依赖(详见 docs/dev/contribute.md):
pip install -e '.[dev]'该选项在 pyproject.toml 的[project.optional-dependencies]中定义,包含pytest、pytest-cov、pytest-xdist、pre-commit、mkdocs-material等开发工具。随后建议启用 pre-commit 钩子:
pre-commit install它会自动检查代码格式与基础语法错误,多数问题(包括格式)可自动修复,首次提交失败时再运行一次即可。
运行仓库自带的测试套件:
pytest # 运行全部测试 pytest -m "not slow" # 跳过较慢的测试 pytest -n auto # 借助 pytest-xdist 并行执行这些测试覆盖了 agent 主循环、环境、模型配置、命令解析、批量运行等核心模块,是快速验证安装正确性与理解内部行为的绝佳入口。
总结
从源码安装 SWE-agent 本质上只有“克隆仓库 + 可编辑安装 + 配置模型密钥”三步,配合sweagent --help验证即可投入使用。得益于pip install -e .与git pull的组合,你可以始终运行最新版本,也可以随时深入 sweagent/ 目录阅读源码、运行 tests/ 测试套件进行二次开发。若安装过程中遇到 Docker 或命令缺失等问题,请优先查阅 docs/installation/tips.md 与本文的排查章节。
【免费下载链接】SWE-agentSWE-agent takes a GitHub issue and tries to automatically fix it, using your LM of choice. It can also be employed for offensive cybersecurity or competitive coding challenges. [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/sw/SWE-agent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考