
本工作来自北京大学王选所赵东岩、张辉帅老师团队,第一作者为北京大学前沿交叉学院三年级硕士袁旦龙。
AI 编程这么火,想训练个 SWE Agent 却没有资源怎么办?
最近,软件工程智能体(后统称 SWE Agent)由于其清晰的落地场景和巨大的应用价值受到了学术界和工业界的广泛关注。
然而,当上手训练 SWE Agent 时,却发现事情并不简单。当前 SWE Agent 的训练都是通过容器(Docker 或 Podman)来实现运行环境的隔离和复现。但是,容器的高昂开销却把很多从业者拒之门外。
那么能不能做一个不依赖容器的低成本框架,让资源不多的从业者也能训练自己的 SWE Agent 呢?SWE-MiniSandbox 正是在这样的初衷下开源了~

论文标题: SWE-MiniSandbox: Container-Free Reinforcement Learning for Building Software Engineering Agents
论文链接:https://arxiv.org/abs/2602.11210
代码链接:https://github.com/lblankl/SWE-MiniSandbox
文档链接:https://lblankl.github.io/SWE-MiniSandbox/
镜像链接:https://hub.docker.com/repository/docker/lblankl/swe-minisandbox/general
训练曲线 Demo 链接:https://wandb.ai/open_source_blank/SWE-MiniSandbox
SWE-MiniSandbox 是一个 无需容器(Container-Free)的软件工程沙盒环境 。其目标是解决当前 SWE Agent 训练中依赖容器的痛点:需要构建和维护大量的容器镜像,并运行高性能的容器服务器集群,导致了高昂基础设施和运维成本。因此,当扩展批量规模或提高 rollout 数量时,容器服务器承载量成为主要性能瓶颈,造成计算资源受限情况下训练无法扩展,而缺乏容器管理权限或没有专用编排基础设施的从业人员则无法训练自己的 Agent。
与容器环境相对,SWE-MiniSandbox 在实现进程和文件系统隔离的过程中绕过了对容器或重型镜像的依赖,通过按实例划分的挂载命名空间(mount namespaces)和基于 chroot 的文件系统隔离机制,为每个实例创建隔离的终端会话和私有目录。
在此基础上,SWE-MiniSandbox 实现了一套环境预缓存流水线:构建基于轻量级 Python conda+venv 的混合环境,安装特定任务的依赖项,并在不同运行间复用压缩的缓存产物。通过将环境和代码仓库打包成缓存,利用基于 Ray 的资源控制和信号量来限制并发解压,从而实现 I/O 的精细管理。
通过直接与现有核心 SWE 工具集成 ——SWE-Rex(终端管理)、SWE-agent(任务求解)和 SkyRL(可扩展的多节点 RL),SWE-MiniSandbox 成为了 SWE Agent 任务中容器后端的一个无缝、即插即用的替代品。
在实际效果上,SWE-MiniSandbox 使环境缓存大小降低至同类基于容器方法的 5% 左右,将环境准备时间缩短至容器基线的 25% ,并且消除了对额外容器服务器的需求。
而在这样低资源依赖下,该环境在同等数据和参数设置下训练出的 SWE Agent 和容器环境下训练出的 Agent 在 SWE-bench Verified 上评测效果相当,可以说,大幅降低了 SWE Agent 的入门门槛。
具体方法

I. 无容器隔离机制(Container-Free Isolation)
📌 核心优化:Chroot + Mount Namespaces + Terminal Isolation
Chroot
将每个任务的根目录(/)重定向到一个独立的、预先配置好的目录。
任务进程只能访问该目录下的文件,形成「虚拟根文件系统」,实现文件系统隔离。例如:任务 A 的根目录是 /sandbox/A,任务 B 是 /sandbox/B,彼此隔离。
Mount Namespaces(挂载命名空间)
每个任务拥有独立的挂载视图。可以在不干扰宿主机的情况下,挂载宿主文件系统(如 tmpfs、dev、mnt 等)。
混合只读,可写挂载模式保证任务间不冲突。
Terminal Isolation(终端隔离)
每个任务分配一个独立的伪终端,通过 SWE-Rex 进行终端会话管理。
支持标准输入 / 输出、信号传递(如 Ctrl+C 中断),确保交互式执行的完整性。
✅ 优势:
内核开销比容器小,速度更快
II. 环境预缓存流水线(Pre-Caching Pipeline)

传统解决方案
每个任务都需要建立独立镜像,并基于 conda 安装独立 python 环境
SWE-MiniSandbox 解决方案
1. 构建轻量级 Python 环境(conda+venv)
预制不同 python 版本的 conda 环境,每个任务根据需求选择对应的 conda 版本创建 venv 虚拟环境。
仅包含任务所需依赖(如 numpy, requests, pytest 等),体积平均不到 100MB。
摒弃直接用 conda(太重,通常 >500MB)。
将创建出的 venv 打包成 tar 文件,再次启动环境时直接解压加速启动。
2.I/O 瓶颈管理与并发控制
为解决任务高并发下磁盘队列拥堵问题,为并发任务总吞吐量设置上界:

其中
