简介
CubePod 是一个开源、云原生的 AI Agent 持久化可写 RootFS MicroVM 执行平台(Persistent Writable RootFS MicroVM Execution Platform for AI Agents),为 CubePlex 以及更广泛的 E2B / MCP 开源 Agent 生态提供底层算力与沙箱底座。
与在会话暂停或重启后即丢弃已安装依赖、浏览器状态与系统配置的无状态容器或瞬态沙箱不同,CubePod 为每个 AI Agent 提供具备硬件级隔离的沙箱,确保 完整操作系统根目录(/、/usr、/etc、/var/lib)与用户工作区(/workspace)双双独立持久化。
为什么持久化可写 RootFS 至关重要
Section titled “为什么持久化可写 RootFS 至关重要”现代自主 AI Agent 远不止执行单段 Python 脚本。在持续数小时乃至数天的复杂任务中,Agent 需要安装系统软件包(apt、pip、npm、Playwright 浏览器)、配置系统服务或守护进程、认证 CLI 工具、编译构建产物并持续修改代码仓库。
传统沙箱平台往往迫使开发者在两难中妥协:
- 瞬态 MicroVM:提供强 Hypervisor 隔离,但其 RootFS 仅驻留于内存或临时可写层——一旦暂停或重启,操作系统内安装的软件与系统配置便全部丢失,除非每次变更都重新构建镜像。
- 单卷持久化容器:保留
/workspace中的代码,但缺乏硬件级 VM 边界,且在 Pod 重建后依旧会丢失操作系统级软件安装与环境配置。
CubePod 彻底消除了这一取舍:直接在 Kata Containers MicroVM 中启动纯净无修改的标准 OCI 镜像,并挂载双持久化存储卷——一卷作为 Linux 完整 RootFS 的 OverlayFS 可写 upperdir,另一卷独立专供 /workspace。
平台能力对比
Section titled “平台能力对比”| 能力维度 | 普通容器 | 瞬态 MicroVM | CubePod |
|---|---|---|---|
| 计算隔离层 | 共享宿主机 Linux 内核 | 硬件 VM(Firecracker / QEMU) |
硬件 VM(Kata QEMU / Cloud Hypervisor)+ 本地 Docker Loopback |
| OS RootFS 持久化 | 临时可写层 | 临时 Scratch 层 | 持久化 OverlayFS upperdir(<box>-rootfs-pvc) |
| Workspace 持久化 | 可选 PVC 挂载 | 可选或随停止丢失 | 解耦的独立持久卷(<box>-workspace-pvc) |
| RootFS 重置 / 系统升级 | 重建整套容器 | 重新打包镜像 | 单调递增 rootfsGeneration 替换——/workspace 保持完好 |
| 冷启动延迟 | ~1–3 秒 | ~150 毫秒 | < 50 ms(基于预挂载 PodWarmPool 原子 CAS 认领) |
| 算力休眠降本 | 停止即丢弃运行态 | 快照或销毁 | desiredState: Paused 销毁计算 Pod(0 CPU / 0 RAM),保留双 PVC |
| 状态分支 (CoW Fork) | 镜像 Commit 耗时较长 | VM 快照 | 崩溃一致性 CoW Fork(FIFREEZE -> CSI 克隆 / reflink -> FITHAW) |
| 密钥与出站安全 | 真实环境变量注入沙箱 | 真实环境变量注入沙箱 | cpodref_ 占位符 + 基于每 Pod mTLS 的选择性 HTTPS MITM |
| SDK 与协议生态 | 自定义 API | E2B REST / Connect-RPC | 100% E2B 无缝协议兼容 + 原生 Python、TS、Go、CLI 与 MCP |
核心架构支柱
Section titled “核心架构支柱”- 双卷持久化存储:严格隔离可写操作系统 RootFS(
<box>-rootfs-pvc或<box>-rootfs-gen<N>-pvc)与用户项目数据(挂载至/workspace的<box>-workspace-pvc)。递增rootfsGeneration即可清理或升级 OS 状态,而/workspace字节不损。 - 基于
podd-init与podd的纯净镜像运行机制:用户镜像无需内嵌任何专用 Agent。Kubernetes 中通过initContainer(podd-installer)或本地 Docker 绑定挂载在启动期注入/opt/cubepod/bin/{podd-init,podd}。单线程 Rust PID 1(podd-init)完成ext4自愈检查、挂载OverlayFS、执行pivot_root并execvp移交至podd(:49983)。 - WarmPool、Pause-to-Zero、CoW Fork 与无状态高可用:
PodWarmPool预启动并预挂载备用 MicroVM,实现< 50 ms原子认领;spec.forkFrom提供FIFREEZE/FITHAW崩溃一致性克隆;cubepod-gateway直接基于 KubernetesPodBoxCRD 重建状态,实现无状态多副本高可用。 - E2B 无缝兼容:只需将
E2B_DOMAIN或E2B_API_URL指向cubepod-gateway,现有e2b、e2b-code-interpreter、@e2b/code-interpreter以及 LangChain、LlamaIndex、OpenHands 工作流即可零改代码运行。 - 零信任出站代理与凭证保险库:真实 API 密钥绝不进入沙箱内存或磁盘。沙箱内仅暴露 32 位 Base32 的
cpodref_占位符;cubepod-egress通过nftables透明劫持、DNS 策略拦截与选择性 HTTPS MITM,在每 Pod mTLS 认证下与cubepod-gateway实时完成密钥替换。 - 按需桌面与签名面板代理:桌面镜像待机内存接近 0 MiB,仅在调用时懒启动
Xvfb、openbox、Chromium CDP(:9222)、x11vnc/noVNC(:8080)与ttyd(:7681),并通过 HMAC-SHA256/panel/{token}/代理安全暴露。
双运行时对等设计
Section titled “双运行时对等设计”CubePod 的每一项核心机制均在两类运行环境中保持一致语义:
- 生产级 Kubernetes(
Kata + CSI Block):以kata-qemu/kata-clh硬件隔离 Pod 挂载两块volumeMode: BlockPVC(/dev/cubepod-rootfs与/dev/cubepod-workspace),并在集群不支持块存储时优雅回退至volumeMode: Filesystem。 - 本地开发(
Docker + Loopback ext4):启用CUBEPOD_RUNTIME_MODE=docker-loopback(例如通过 Docker Compose),在本地稀疏.ext4回环文件之上运行与生产完全一致的podd-init+poddGuest 栈。
- 通过 快速开始 在本地启动栈并运行首个持久化沙箱。
- 阅读 E2B 无缝兼容指南 接入现有 E2B Agent 代码。
- 深入 平台架构 了解控制面与数据面协作机制。
- 前往 Kubernetes 与 Helm 部署 将 CubePod 部署到生产集群。