deeplethe/forkd
Fork() for AI agent microVMs. Spawn 100 children in ~100ms from a warm parent; BRANCH a live VM in ~150ms. KVM-isolated, snapshot CoW.
解决的问题
forkd 是专为 AI Agent 扇出设计的 microVM 沙箱运行时。它消除了在为代码解释、工具使用或评估展开等任务创建大量短寿命沙箱时,启动 VM 或容器所带来的高昂冷启动成本。通过允许从预热的父级快照进行 fork,它消除了为每个新请求重复导入沉重 ML 库(如 NumPy 或 PyTorch)的需要。
工作原理
forkd 基于 Firecracker 构建,采用“从预热中 fork”的方法。父 VM 启动一次并加载必要的运行时(例如 Python 及其依赖项)。该状态会被暂停并快照到磁盘。当需要新的沙箱时,forkd 会通过 MAP_PRIVATE 使用 mmap 父级内存镜像来生成子 microVM。这利用了 Linux 内核的写时复制 (CoW) 机制,这意味着子进程在发生分歧之前会共享父进程的驻留内存,从而实现近乎瞬时的启动时间。
它还支持 BRANCH 操作,允许在执行过程中(思考过程中)对正在运行的沙箱进行快照并恢复,使 Agent 能够 fork 它们的状态并并行探索不同的路径。
适用对象
- AI Agent 开发者:正在构建代码解释器或 Jupyter 内核沙箱,且每次迭代都需要全新的隔离环境的开发者。
- ML 评估框架:需要运行数百个并行测试展开(例如 SWE-bench)而无需承担 Docker 冷启动开销的用户。
- 注重安全的开发者:在 CI 或用户环境中,需要 KVM 级硬件隔离来执行不可信代码的开发者。
- 自托管用户:正在寻找托管沙箱 SaaS 提供商的开源 Apache 2.0 替代方案的开发者。
亮点
- 极速启动:可以在约 101 ms 内 fork 100 个 microVM。
- 硬件隔离:每个子进程都是由 KVM 支持的独立 Firecracker microVM,提供比标准容器更强的隔离性。
- 实时分支:能够在短短 56 ms (p50) 内对运行中的 VM 进行快照和恢复,允许 Agent 在执行中途进行 fork。
- Diff-Snapshot 链:支持堆叠快照(例如 base $ ightarrow$ numpy $ ightarrow$ pandas),以节省磁盘空间并避免重复基础镜像。
- 完整的 Linux 环境:与某些函数级运行时不同,子进程是真实的 Linux VM,支持多 vCPU 和完整的 TCP 网络。