SWE-ReX
AI Agent 编程沙箱运行时,支持本地/云端 Shell 会话并行管理,pip 一键安装
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI Agent 编程沙箱运行时,支持本地/云端 Shell 会话并行管理,pip 一键安装
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2023 年,AI 编程助手开始爆发式增长。无论是 GitHub Copilot、Cursor 还是 Claude Code,背后的 AI 模型已经能够写出相当不错的代码。然而,当这些 Agent 被要求在真实代码仓库中执行任务时——读取文件、运行测试、提交 Git——它们几乎立刻遇到了一个根本性的难题:如何让 AI 安全地控制一台电脑?
想象一下,你让一个 AI Agent 去修复一个 GitHub Issue。它需要:克隆代码仓库、理解项目结构、运行测试套件、修改源码、再次运行测试验证。这是一个涉及文件系统、网络、进程调度的复杂交互流程。传统方案要么把整个系统暴露给 Agent(不安全),要么用简陋的子进程调用(功能残缺,比如不支持交互式工具、无法正确解析命令边界)。
SWE-ReX 就是为解决这个难题而生的。它是 SWE-agent 团队从自身实践出发,专门为 AI 编程 Agent 设计的一个「沙箱化代码执行运行时」。核心定位是:让 AI Agent 安全地、可扩展地在任意环境(本地或云端)中执行任意 Shell 命令。

图1:SWE-ReX 运行效果——单个控制器同时管理多个远程 Shell 会话(来源:项目官方文档)
SWE-ReX 并非凭空诞生。它的「祖先」是 SWE-agent——一个专门用于解决 SWE-bench 基准测试题目的 AI Agent。SWE-agent 的作者团队(主要来自普林斯顿大学)在评估 Agent 能力时发现,市面上缺乏一个足够好用的沙箱执行方案。
他们的核心诉求是:
subprocess.run() 无法处理交互式工具(gdb、ipython、vim)和长时运行进程。带着这些需求,SWE-agent 团队从 2023 年中开始重构自己的运行时,最终将通用部分剥离出来,诞生了 SWE-ReX。
SWE-ReX 的设计精髓在于两层抽象。
Runtime 负责管理具体的 Shell 会话。核心是 BashSession——一个封装了 pexpect 的会话管理器。它不依赖 Docker 或虚拟机,而是直接在宿主机上通过伪终端(PTY)运行 Bash 命令。
为什么选 pexpect?因为它天然解决了命令解析的难题:
echo "hello world" 中的换行搞混,bashlex 则能正确识别这是一个单条 echo 命令。expect/send 模式完美匹配这个场景。核心动作模型(由 AbstractRuntime 定义)包括:
此外还有 Session 机制:Agent 可以创建多个命名会话(session),每个会话有自己的上下文。例如 Agent 可以同时拥有「主会话」(运行测试)和「调试会话」(运行 gdb),两者互不干扰。
Deployment 负责在哪里运行 Runtime。这是 SWE-ReX 最有特色的设计——Runtime 和 Deployment 完全解耦,切换后端时 Agent 代码无需任何修改。
目前支持的后端包括:
| 后端 | 说明 | 适用场景 |
|---|---|---|
| LocalRuntime | 本地直接运行(pexpect) | 开发调试、小规模并行 |
| Docker | Docker 容器隔离 | 需要安全隔离的环境 |
| Modal | Modal 云函数 | 云端弹性扩展 |
| AWS Fargate | AWS 容器服务 | 企业级大规模并行 |
| Daytona | Daytona 云 IDE | 沙箱化开发环境 |
每种 Deployment 都实现同一个抽象接口 AbstractDeployment,返回对应的 Runtime 实例。Agent 只需要调用 get_deployment() 获取一个 Runtime,然后像使用本地会话一样使用它——底层连接的是本地机器还是 AWS Fargate,完全透明。
SWE-ReX 还提供了 FastAPI Server(swerex.server:main),通过 REST API 暴露所有 Runtime 能力。Agent 不需要是 Python 程序——任何能发 HTTP 请求的系统(甚至是一个 curl 命令)都可以控制 SWE-ReX 执行命令。
Server 支持:
X-API-Key Header)这意味着 SWE-ReX 可以作为独立服务部署,Agent 通过网络调用,天然支持分布式架构。
语言:Python 3.11(仅支持 3.11)
核心依赖:
pexpect:伪终端管理,Bash 会话控制bashlex:Bash 语法解析,命令边界识别fastapi + uvicorn:REST API 服务端pydantic >= 2:数据模型与验证boto3:AWS 集成(Modal/Fargate)代码质量:
ruff 进行代码风格检查和格式化文档质量:极高的文档标准。Sphinx + MkDocs 构建,MkDocs-Material 主题,提供完整的 API 参考、部署指南和开发文档。
安装 SWE-ReX 非常简单:
pip install swe-rex
# 如需 Modal 云支持
pip install 'swe-rex[modal]'
安装完成后,有两种使用方式:
方式一:直接 Python API
from swerex.runtime.local import LocalRuntime
runtime = LocalRuntime()
session_id = runtime.create_session()
result = runtime.run(
BashAction(command="python -m pytest tests/", timeout=60.0)
)
print(result.output)
runtime.close_session(session_id)
方式二:HTTP Server
swerex-remote
# 默认监听 localhost:8000
然后通过 HTTP 调用:
import requests
resp = requests.post(
"http://localhost:8000/sessions/default/bash",
headers={"X-API-Key": "your-key"},
json={"command": "ls -la", "timeout": 30.0}
)
print(resp.json())
云端部署需要配置对应平台的凭证。例如使用 Modal:
from swerex.deployment.modal import ModalDeployment
deployment = ModalDeployment()
runtime = deployment.get_runtime()
# 后续使用方式与 LocalRuntime 完全一致
SWE-ReX 最初就是为了解决 SWE-bench 评估中的并行问题而诞生的。官方测试显示,SWE-ReX 可以稳定支持 30 个 Agent 实例并发运行,每个实例独立控制自己的 Shell 会话,共享同一台机器的算力。
这在 SWE-agent 的实际评估中大幅缩短了基准测试时间。传统的串行测试方案跑完 30 个 Issue 需要数小时,而 SWE-ReX 的并行模式将这一时间压缩到原来的几分之一。
并行能力的核心在于:SWE-ReX 的 BashSession 基于异步 I/O(asyncio)实现,每个会话不阻塞主线程,可以高效地在单个进程中管理数十个并发会话。
没有 Web UI:SWE-ReX 是纯 API/CLI 工具,没有独立的图形界面。对于不熟悉命令行的用户,上手门槛较高。需要配合 SWE-agent 或其他 Agent 系统使用。
不支持 Windows:核心依赖 pexpect 是 Unix-only(Linux/macOS),不支持 Windows 环境。不过 Docker 部署可以在 Windows 上运行(需要 WSL2)。
安全性边界:LocalRuntime 直接在宿主机上运行命令,没有容器隔离。如果 Agent 执行了 rm -rf /,后果由宿主承担。官方推荐在 Docker 或云端后端中使用以获得真正隔离。
云端部署门槛:虽然设计优雅,但 Modal/Fargate/Daytona 等云端后端需要用户自行配置云账号和凭证,文档中这部分相对薄弱。
SWE-ReX 的出现代表了 AI Agent 发展中一个重要的基础设施方向:执行层的标准化与抽象化。
当前 AI Agent 开发中存在一个普遍问题:Agent 代码和执行环境深度耦合。换一个运行环境(本地→Docker→云端),Agent 代码可能要大改。SWE-ReX 通过 Runtime/Deployment 分离的模式,首次为这个领域提供了一个可插拔的执行层标准。
它的影响力已经超越了 SWE-agent 本身。虽然 SWE-ReX 由 SWE-agent 团队维护,但它被设计为一个通用基础设施库。任何需要让 AI 控制 Shell 的项目都可以使用它,无论是代码审查 Agent、自动化测试 Agent,还是 DevOps 工具。
| 维度 | 评分 | 说明 |
|---|---|---|
| 架构设计 | ⭐⭐⭐⭐⭐ | Runtime/Deployment 解耦设计极具前瞻性 |
| 代码质量 | ⭐⭐⭐⭐ | 类型完备,测试覆盖良好,代码可读性高 |
| 文档质量 | ⭐⭐⭐⭐⭐ | 完整 API 文档、部署指南、开发文档 |
| 上手难度 | ⭐⭐⭐ | pip 安装简单,但需配合 Agent 使用 |
| 并行能力 | ⭐⭐⭐⭐⭐ | 30 路并发稳定运行 |
| 安全性 | ⭐⭐⭐ | LocalRuntime 无隔离,云端后端更安全 |
一句话评价:SWE-ReX 是目前开源社区中,为 AI 编程 Agent 提供安全、可扩展 Shell 执行能力的最成熟方案。如果你正在开发或使用 AI 编程 Agent,SWE-ReX 值得深入了解——它很可能解决你一直头疼的「命令执行」问题。
本报告由 PIFS 自动分析系统生成,基于 GitHub 仓库源码、README 文档和技术架构分析。