Skip to content

OpenDsec给每一次 rollout 一个隔离的 sandbox

在你自己的机器上运行大批 Firecracker microVM、容器和 QEMU 虚拟机,供强化学习训练和会执行代码的智能体使用。照 DeepSeek 的 DSec 论文实现,兼容 E2B 的 SDK。

一个 microVM 的生命周期
create冷启动到可执行命令~100 ms
pause拍快照后结束进程,内存释放
resume从快照恢复,进程原样继续~50 ms
fork ×8连同内存复制,源 VM 只停顿~10 ms
restore ×64同节点并发恢复,共享内存页~0.2 s
python:3.12 · 2 vCPU · 裸金属实测典型值

OpenDsec 是什么 ​

OpenDsec 是开源的 sandbox 基础设施:在你自己的 Linux 机器上,为强化学习 rollout 和会执行代码的 AI 智能体运行大批相互隔离的 sandbox,从一台机器到整个集群都可以。它提供 Python SDK、命令行工具和兼容 E2B 的 API,以 AGPL-3.0 开源。

  • 适合:sandbox 必须跑在自己机房或离线环境里的团队;一次要起几千个 sandbox 的强化学习训练;需要连同内存 fork 运行中的环境;想保留 E2B SDK 代码、但换到自己的基础设施上。
  • 不适合:只想用托管服务、不想运维任何机器(OpenDsec 没有托管版);需要在 Linux x86_64 以外的平台上运行。

和 E2B、Daytona、Modal 的区别见对比,常见疑问见常见问题。

实测数据 ​

在 2 × AMD EPYC 9Y24(384 线程)、1.5 TB 内存、NVMe RAID0、Ubuntu 24.04 的裸金属机上测得,不是论文中的数据。测量方法见仓库里的 docs/SPEC.md。

参数典型值
microVM 冷启动
到第一条命令可以执行
0.1 s
从内存快照创建
快照在本节点
55 ms
暂停后恢复
暂停时内存已全部释放
50 ms
fork 时源 VM 停顿
增量快照,只写脏页
10 ms
跨节点 fork 8 个副本
直接从源节点拉取快照
0.58 s
64 个副本并发恢复
同一节点,共享内存页
0.2 s
一次突发创建 5120 个 microVM
单节点 384 线程
37 s
一次突发创建 8192 个容器
两个节点
0 失败
FnCall 创建
预建池,经 API
2 ms
E2B code interpreter
Sandbox.create() / 第一次 run_code
280 / 45 ms

架构 ​

apiserver 无状态,按 watcher 汇总的状态用 power-of-k 选节点;每个节点上的 edge 根据实际资源决定接不接。任何一个组件重启,运行中的 sandbox 都不受影响。

Python SDKopendsecctlE2B SDKPython · JSE2B 网关:7400apiserver ×N无状态 · 调度power-of-kIAM · Raft ×3项目 · 配额 · tokenwatcher ×N探测 edge · 汇总调度状态edgemicroVM · container · FnCalledgemicroVM · container · full VMedge每个 sandbox 内:aether · chronus共享镜像库NFS 4.2 · CephFS · JuiceFS

左右滑动查看完整架构图

借鉴自 DSec 论文 ​

OpenDsec 照论文 DeepSeek Elastic Compute (DSec): A Sandbox Infrastructure for Effective Agentic Training at Scale(arXiv:2609.22978)实现,整体架构和大部分设计来自论文;网络策略的执行方式、共享文件系统镜像库、以 Firecracker 为主力后端、fleet 运维和 E2B 兼容是我们自己的部分。仓库的 SPEC 逐条标注了出处。感谢论文作者公开了如此详细的设计。

本项目独立开发,与 DeepSeek 没有关系,未经其认可,也不包含其代码。「DeepSeek」和「DSec」归各自的所有者所有,这里使用只为指明所实现的论文。

基于论文 DeepSeek Elastic Compute (DSec)(arXiv:2609.22978)实现。本项目独立开发,与 DeepSeek 没有关系。