Rivet 3 + Pi Durable
当前倾向:复用 Rivet 的 Actor 与 Pi 集成;我们维护 Worker、Engine、独立块盘和对象桶。
保留可自部署方案;三者均可接 Pi Durable,差别在会话管理与存储底座。
| 比较什么 | Rivet 3 · 当前倾向 | durable-harness + PG | celld |
|---|---|---|---|
| 会话模型 | Actor key → Agent 实体 原生路由、激活与休眠 | sessionId → World run 请求 / 队列重开 Session | Cell 名称 → DO 实体 按请求激活 |
| Pi 与恢复 | Pi Durable + Actor SQLite 检查点与恢复;由 Engine 持久化 | Pi Durable + World 日志 检查点、回放与写入 fencing | 可接 Pi Durable 会话与生命周期需验证 |
| 实时与派发 | 已有订阅 / Steer / Abort 批量与子 Agent 使用独立 key | 已有 SSE / Steer 批量与子会话由队列派发 | 沿用 DO 接口 流式与子 Agent 接入需验证 |
| 状态与扩容 | 每 Actor SQLite Worker / Engine 分别伸缩 | 集中 PG 日志与队列 加 Worker 不直接增加 PG 写容量 | 每 Cell SQLite 节点盘 + 对象桶 |
| 我们运维什么 | Worker + Engine + 持久盘 + CAS 桶 | Agent Server + 托管 PG | celld 节点 + 持久盘 + CAS 桶 |
| 取舍 | 当前倾向:实体管理完整 Preview 稳定性与恢复需验 | 结构直接;运行层仍为 Beta PG World 负载与接管需验 | 组件少 Pi 兼容与节点恢复需验 |
当前倾向:复用 Rivet 的 Actor 与 Pi 集成;我们维护 Worker、Engine、独立块盘和对象桶。
Pi Durable 运行 Agent;durable-harness 接入日志与恢复,PG World 连接托管 PG。
每节点部署 celld 进程,同时承载 Cell 与存储协议;需要本地状态盘和满足 CAS 的对象桶。
| 候选 | 正常开发 | POC 验证 | 可能阻塞 |
|---|---|---|---|
| Rivet 3自运维 Engine / 磁盘 / 对象桶 | OpenSandbox provider Engine / 独立块盘 / 桶配置 | TOS 的 CAS / Range;单节点失效 当前升级需全停;演练维护窗口 备份桶 → 新集群恢复:官方尚未验证 | OSS 缺所需 CAS;TOS 待验 恢复缺陷可能迫使我们接手 WarpDrive |
| durable-harnessPG 底座托管;维护服务与队列接入 | 模型 / 远程工具适配 Agent 定义、发布与配额 | PG 队列与日志负载 多 Pod 接管、长会话重开 长视频工具、热池 / NAS | PG World 尚未针对规模优化 若负载 / 恢复不达标,可能需改核心 |
| celld自运维节点 / 本地盘 / 对象桶 | 示例升级、PiHarness / 会话 API Virtual-hosted 寻址 模型与 OpenSandbox provider | TOS 的 CAS / Range Pi / SQLite / 生命周期兼容 热池 / NAS、领取与产物保存 | OSS 缺所需 CAS;TOS 待验 所有权 / 复制缺陷可能需长期维护 |
S3 从备份存储走向 System of Record(权威数据源)。
Rivet / celld 的近期复制日志仍需保留;仅靠桶不一定能恢复最新状态。
| 项目 | 逻辑实体 | 本地计算/状态 | 对象存储的作用 |
|---|---|---|---|
| celld | Actor / Session | SQLite / 本地日志 | SQLite 状态持久化、所有权协调 |
| Rivet | Actor / Agent | SQLite / WarpDrive | 卷数据的长期持久化 |
| Cursor Continuity | Git 仓库 | Git / 本地仓库缓存 | 权威 WAL / 索引 / CAS 提交 |
| SlateDB | KV 数据库 | Memtable / 本地缓存 | SST / Manifest / 版本控制 |
事务局部化 + 存算分离。单热点和跨 Actor 事务仍需处理;PG 也可通过分片扩展。
当前倾向:OpenSandbox + 现有 ACK + NAS/PVC。复用现有集群与文件存储;我们维护控制组件和执行节点,先验证热池预挂 NAS 与冷启动。云托管方案仍可选,不以复用 ACK 节点为硬门槛。
✅ 可覆盖;❌ 未完整覆盖或未确认。悬停查看条件;复杂度为接入估计。
| 比较什么 | OpenSandbox 普通 ACK | ACS 容器版 | FC 极速版 一代 | FC 极速版 二代 | SPACE |
|---|---|---|---|---|---|
| 部署位置与算力归属 | 我们在现有 ACK 部署 Server、Controller 与沙箱 Pod;使用自己的节点算力。 | 基于 Kubernetes;沙箱使用 ACS 托管算力,Agent Server 可继续留在 ACK。无需把复用现有 ACK 节点作为硬门槛。 | 沙箱运行在 FC 托管底座;Agent Server 可继续留在 ACK,通过 API 调用。 | 沙箱运行在 FC 托管 MicroVM;Agent Server 可继续留在 ACK,通过 API 调用。 | 可用 Kubernetes adapter;我们维护满足 KVM、btrfs 等要求的执行节点,ACK 部署待验证。 |
| 资源规格 | K8s 后端传递 resource requests / limits,可配置 ephemeral-storage;它是 kubelet 资源计量与驱逐边界,不是即时磁盘硬配额。 | SandboxSet 支持 CPU、内存和 ephemeral-storage 规格;按 ACS 支持的算力组合配置。 | CPU / 内存可配;文档列临时磁盘默认 15GB,但完整可调范围未确认,不把整项视为满足。 | CPU / 内存可配且最少 1 Core;临时磁盘配置边界尚未确认。 | 创建接口支持 vCPU、memory_mib、disk_mib;自定义 disk_mib 会绕过现有 warm pool。 |
| PVC/NAS 挂载 | 普通 K8s 后端支持 PVC、readOnly 与 subPath;Pool 需模板提前挂卷,领取时不能追加卷。 | 已有 CSI / NAS 动态挂载和 readOnly / subPath 配置。 | 一代支持 NAS;需配置 VPC、挂载路径与读写权限。 | 二代动态存储目前列 OSS / AgenticFS,未列普通 NAS;不能直接用 AgenticFS 替代现有 NAS。 | VM 到现有 NAS 的挂载通道与权限路径尚未验证,不能直接套用 K8s PVC。 |
| Warm Pool | K8s Pool 支持预备 Pod 与补池;NAS / PVC 必须在模板中提前挂载。 | SandboxSet / PoolAutoscaler 提供热池容量、补充与伸缩;NAS 通过模板或 CSI 挂载配置。 | 已有镜像预热;尚未确认同时覆盖可控实例池容量、补池与 NAS 预挂的完整要求。 | 已有模板预热,但普通 NAS 挂载不在二代已确认能力中。 | 已有 VM warm pool、目标容量与补池;NAS 预挂尚未确认,按完整要求不打勾。 |
| 启动就绪检查 | 可配置 Pod readinessProbe 联检 execd、工具和预挂目录;Pool 依据 Pod Ready 分配。需实测领取到可执行延迟,挂载成功不代表视频已缓存。 | 已有 Ready / Claim 状态;领取后动态挂载与工具就绪的完整联检路径仍需核实。 | 镜像预热不等于业务工具与 NAS 均已就绪;完整就绪联检待确认。 | 模板支持启动 / 就绪命令;现有 NAS 路径未覆盖,因此整项尚未满足。 | 已有运行状态与进程端点就绪检查;NAS 就绪链路未验证。 |
| NAS 文件恢复 | 独立管理的 NAS / PVC 不随沙箱删除。新沙箱重新挂载同一任务目录;我们保存 run 与目录绑定。无需 rootfs 或内存快照,运行中命令需重启。低 · 重新挂载 | 使用外部 NAS,销毁与重建不删除文件;配置 CSI / NAS 并重新绑定任务目录。低 · 重新挂载 | 一代支持 NAS;配置 VPC、目录与权限后,新实例重新挂载原目录。低 · 重新挂载 | 二代已列 OSS / AgenticFS,普通 NAS 的挂载路径未确认;不能将其他持久存储直接当作 NAS。接入路径待确认 | VM 到现有 NAS 的挂载、权限与重建路径未确认;自身 VM 快照不等于 NAS 文件恢复。挂载适配待验证 |
| rootfs 快照 | 普通 K8s 已有 rootfs-v1:提交为 OCI 镜像并恢复。配置 Snapshot CRD / Controller、同节点 commit Job、镜像仓库与推拉凭证;需访问节点 containerd。单副本,不保存进程内存,也不包含 NAS 内容;不兼容 runsc,其他运行时需核实。中 · 快照组件 / 仓库 | 已有云盘休眠、快照休眠与 Checkpoint;配置受支持组件和休眠策略。NAS 数据独立保留,不由 rootfs 快照回滚。低—中 · 策略 / API | 通过 Pause / Resume 保留实例文件系统;需要开通权限。一代没有二代独立 Snapshot / Fork 接口,不能据此理解为可任意克隆。低—中 · 开通 / API | 支持 Pause / Resume 与 Snapshot / Fork;Snapshot / Fork 需开通。模板、镜像兼容与恢复行为需验证,二代仍为 Beta。低—中 · 开通 / API | suspend 保存 VM 文件系统及运行状态,wake 恢复;需部署 worker、快照对象存储并验证上传与恢复。中 · 快照存储 / 流程 |
| 比较什么 | 具体要求 | 优先级 | OpenSandbox 普通 ACK | ACS 容器版 | FC 极速版 一代 | FC 极速版 二代 | SPACE |
|---|---|---|---|---|---|---|---|
| 部署位置与算力归属 | 比较执行底座位置,不作为必需项淘汰条件 | 部署取舍 | 我们在现有 ACK 部署 Server、Controller 与沙箱 Pod;使用自己的节点算力。 | 基于 Kubernetes;沙箱使用 ACS 托管算力,Agent Server 可继续留在 ACK。无需把复用现有 ACK 节点作为硬门槛。 | 沙箱运行在 FC 托管底座;Agent Server 可继续留在 ACK,通过 API 调用。 | 沙箱运行在 FC 托管 MicroVM;Agent Server 可继续留在 ACK,通过 API 调用。 | 可用 Kubernetes adapter;我们维护满足 KVM、btrfs 等要求的执行节点,ACK 部署待验证。 |
| 自定义镜像 | ACR 固定版本镜像;包含 ffmpeg、依赖、Skill 与初始文件 | 必需 | 支持自定义 OCI 镜像与镜像仓库认证,可配置 ACR 镜像及固定 digest。 | SandboxSet Pod 模板支持自定义镜像和拉取配置。 | 一代兼容 OCI 镜像,可从自定义镜像构建环境。 | 可从自定义镜像构建模板,但须使用兼容的 Ubuntu/Debian 系镜像并保留规定系统组件。 | 使用专用 VM 模板发布流程;直接消费私有 ACR OCI 镜像的完整路径尚未确认,不能将模板支持等同于 ACR 镜像支持。 |
| 资源规格 | 配置 CPU、内存、临时磁盘;限制单个沙箱资源 | 必需 | K8s 后端传递 resource requests / limits,可配置 ephemeral-storage;它是 kubelet 资源计量与驱逐边界,不是即时磁盘硬配额。 | SandboxSet 支持 CPU、内存和 ephemeral-storage 规格;按 ACS 支持的算力组合配置。 | CPU / 内存可配;文档列临时磁盘默认 15GB,但完整可调范围未确认,不把整项视为满足。 | CPU / 内存可配且最少 1 Core;临时磁盘配置边界尚未确认。 | 创建接口支持 vCPU、memory_mib、disk_mib;自定义 disk_mib 会绕过现有 warm pool。 |
| PVC/NAS 挂载 | 直接访问大视频与产物;支持只读/读写挂载 | 必需 | 普通 K8s 后端支持 PVC、readOnly 与 subPath;Pool 需模板提前挂卷,领取时不能追加卷。 | 已有 CSI / NAS 动态挂载和 readOnly / subPath 配置。 | 一代支持 NAS;需配置 VPC、挂载路径与读写权限。 | 二代动态存储目前列 OSS / AgenticFS,未列普通 NAS;不能直接用 AgenticFS 替代现有 NAS。 | VM 到现有 NAS 的挂载通道与权限路径尚未验证,不能直接套用 K8s PVC。 |
| 任务目录隔离 | 每任务独立目录;共享输入与独立输出权限明确 | 必需 | 可配置只读输入挂载和独立输出子目录;Pool 按预绑目录分配,run → sandbox → 目录映射由我们接入。cwd 本身不是权限边界。 | 通过 CSI readOnly / subPath 或 Access Point 配置目录权限;任务与目录归属由我们绑定。 | 通过 NAS 挂载范围、独立目录与文件权限配置;任务目录与产物归属由我们管理。 | 尚未覆盖现有 NAS 上共享输入、独立输出的完整路径。 | 每 VM 的 rootfs 独立,但不能据此认定现有 NAS 共享输入和独立输出权限已解决。 |
| 统一文件与命令接口 | Pi read/write/edit/bash 使用同一沙箱、同一目录 | 必需 | 已有文件与命令接口;Pi ExecutionEnv / provider 由我们正常接入,同一任务复用同一沙箱与 cwd。 | 已有文件与命令接口;Pi ExecutionEnv / provider 由我们正常接入,同一任务复用同一沙箱与 cwd。 | 已有文件与命令接口;Pi ExecutionEnv / provider 由我们正常接入,同一任务复用同一沙箱与 cwd。 | 已有文件与命令接口;Pi ExecutionEnv / provider 由我们正常接入,同一任务复用同一沙箱与 cwd。 | SPACE 提供文件传输、进程与命令数据通道;Pi 工具统一连接同一 VM,edit 可通过受控命令适配。 |
| 长命令执行 | 异步 ffmpeg;查询、日志、超时与终止进程 | 必需 | execd / SDK 提供后台命令、输出、状态、超时与终止接口。 | E2B 命令与运行中进程管理接口。 | Commands 支持后台进程、流式输出、连接与 kill。 | Commands 支持后台进程、流式输出、连接与 kill。 | Process / Command Session 独立于创建请求,支持输出通道和进程控制;调用端超时不等于终止进程。 |
| 生命周期 API | 创建、领取、查询、释放/销毁;重复请求行为明确 | 必需 | 已有创建、连接或领取、查询、销毁接口;按 sandbox ID 管理,业务重复提交策略由接入层定义,不承诺重复创建自动去重。 | 已有创建、连接或领取、查询、销毁接口;按 sandbox ID 管理,业务重复提交策略由接入层定义,不承诺重复创建自动去重。 | 已有创建、连接或领取、查询、销毁接口;按 sandbox ID 管理,业务重复提交策略由接入层定义,不承诺重复创建自动去重。 | 已有创建、连接或领取、查询、销毁接口;按 sandbox ID 管理,业务重复提交策略由接入层定义,不承诺重复创建自动去重。 | Sandbox 与异步 Operation 分开管理;创建、查询、wake、delete 等接口已有,业务请求去重仍需接入层定义。 |
| Warm Pool | 池容量、补池、回收;可预挂 NAS | 高 | K8s Pool 支持预备 Pod 与补池;NAS / PVC 必须在模板中提前挂载。 | SandboxSet / PoolAutoscaler 提供热池容量、补充与伸缩;NAS 通过模板或 CSI 挂载配置。 | 已有镜像预热;尚未确认同时覆盖可控实例池容量、补池与 NAS 预挂的完整要求。 | 已有模板预热,但普通 NAS 挂载不在二代已确认能力中。 | 已有 VM warm pool、目标容量与补池;NAS 预挂尚未确认,按完整要求不打勾。 |
| 启动就绪检查 | 领取时工具、文件接口、挂载可用;测量可执行延迟 | 高 | 可配置 Pod readinessProbe 联检 execd、工具和预挂目录;Pool 依据 Pod Ready 分配。需实测领取到可执行延迟,挂载成功不代表视频已缓存。 | 已有 Ready / Claim 状态;领取后动态挂载与工具就绪的完整联检路径仍需核实。 | 镜像预热不等于业务工具与 NAS 均已就绪;完整就绪联检待确认。 | 模板支持启动 / 就绪命令;现有 NAS 路径未覆盖,因此整项尚未满足。 | 已有运行状态与进程端点就绪检查;NAS 就绪链路未验证。 |
| 超时与自动回收 | 任务结束或失联后回收,避免资源泄漏 | 必需 | 支持 sandbox 到期 / TTL 回收;任务完成时由业务显式释放,客户端断开不直接等同失联。 | 生命周期超时与回收机制;业务结束时显式释放。 | Sandbox timeout / setTimeout / kill;业务结束时显式释放。 | Sandbox timeout / setTimeout / kill;业务结束时显式释放。 | 执行租约与空闲回收机制;调用端超时不自动终止,按配置窗口与显式删除管理。 |
| 隔离方式可配置 | 可选择容器、gVisor/Kata;NAS 兼容性明确 | 必需,强度待定 | 支持配置 RuntimeClass / 安全运行时;但 ACK 上 gVisor / Kata 与 NAS 的具体组合尚未实测,不能把整项标为已确认。 | 使用 ACS 托管沙箱运行时,不能按当前要求自由切换普通容器 / gVisor / Kata。 | 云侧固定运行时;不提供现有 ACK 的 RuntimeClass 选择。 | 采用云侧 MicroVM;不提供普通容器 / gVisor / Kata 切换。 | 以 Firecracker VM 为主;不是可自由切换 K8s 容器 / gVisor / Kata 的后端,NAS 组合待验证。 |
| 网络与凭证控制 | 出网权限;按任务注入所需凭证 | 必需 | 已有 egress 网络策略、环境变量与镜像拉取凭证;任务凭证生命周期由我们接入。 | TrafficPolicy / SecurityProfile 与 CredentialProvider / Agent Identity 提供网络和凭证能力。 | 支持 L7 网络策略、VPC 与凭证替换;规则和任务授权由我们配置。 | 支持 L7 网络策略、VPC 与凭证替换;规则和任务授权由我们配置。 | 已有 egress profile、NetworkPolicy、命令环境与凭证管理路径;按任务限定授权需我们配置。 |
| 环境模板/基础快照 | 复用装好依赖的环境,减少准备时间 | 增强 | 固定 OCI 镜像 + Pool 模板即可复用环境;本行不代表支持完整 VM 内存快照。 | SandboxSet 模板、镜像和预热环境可复用。 | 支持自定义环境镜像及镜像预热。 | 支持模板构建、启动 / 就绪配置与预热。 | 支持发布版本化 VM 模板;单节点基础快照与 K8s warm pool 分别优化启动。 |
| NAS 文件恢复 | 重建沙箱后挂回任务目录;保留输入、工作文件与产物 | 必需 | 独立管理的 NAS / PVC 不随沙箱删除。新沙箱重新挂载同一任务目录;我们保存 run 与目录绑定。无需 rootfs 或内存快照,运行中命令需重启。低 · 重新挂载 | 使用外部 NAS,销毁与重建不删除文件;配置 CSI / NAS 并重新绑定任务目录。低 · 重新挂载 | 一代支持 NAS;配置 VPC、目录与权限后,新实例重新挂载原目录。低 · 重新挂载 | 二代已列 OSS / AgenticFS,普通 NAS 的挂载路径未确认;不能将其他持久存储直接当作 NAS。接入路径待确认 | VM 到现有 NAS 的挂载、权限与重建路径未确认;自身 VM 快照不等于 NAS 文件恢复。挂载适配待验证 |
| rootfs 快照 | 保留运行期间系统盘变更;不要求内存续跑 | 增强 | 普通 K8s 已有 rootfs-v1:提交为 OCI 镜像并恢复。配置 Snapshot CRD / Controller、同节点 commit Job、镜像仓库与推拉凭证;需访问节点 containerd。单副本,不保存进程内存,也不包含 NAS 内容;不兼容 runsc,其他运行时需核实。中 · 快照组件 / 仓库 | 已有云盘休眠、快照休眠与 Checkpoint;配置受支持组件和休眠策略。NAS 数据独立保留,不由 rootfs 快照回滚。低—中 · 策略 / API | 通过 Pause / Resume 保留实例文件系统;需要开通权限。一代没有二代独立 Snapshot / Fork 接口,不能据此理解为可任意克隆。低—中 · 开通 / API | 支持 Pause / Resume 与 Snapshot / Fork;Snapshot / Fork 需开通。模板、镜像兼容与恢复行为需验证,二代仍为 Beta。低—中 · 开通 / API | suspend 保存 VM 文件系统及运行状态,wake 恢复;需部署 worker、快照对象存储并验证上传与恢复。中 · 快照存储 / 流程 |
| 内存恢复 | 恢复进程内存与执行位置;外部连接仍需重连 | 本期降权 | 普通 rootfs-v1 不保存内存。已有额外的实验性 QEMU-in-runc VMState 路线,保存 Guest 内存 / vCPU / 设备状态;需改 VM 镜像、QMP 启动与恢复协议并验证节点兼容。不是给现有普通容器加一个开关,外层进程仍重启;NAS 内容不随 VMState 回滚。高 · 实验 QEMU 路线 | 支持内存级休眠唤醒与 Checkpoint / Restore;使用支持的 ACS 算力、组件和策略,验证实际进程与外部连接恢复。低—中 · 策略 / 验证 | 深休眠保留内存、文件系统和进程;需账号开通并验证工具与连接恢复。一代无独立 Snapshot / Fork。低—中 · 开通 / 验证 | 支持暂停恢复及 Snapshot / Fork;按权限开通并验证 Guest、工具及外部连接,二代仍为 Beta。低—中 · 开通 / 验证 | suspend 持久化 VM 内存 / 状态并释放资源,wake 恢复;pause 仅冻结并保留驻留内存,不能代替持久快照。需验证兼容节点与恢复流程。中—高 · VM 恢复运维 |
复用现有 ACK、ACR 和 NAS;安装现成沙箱管理组件,执行实例是 ACK 节点上的 Pod。
管理组件仍由我们安装,执行算力由 ACS 托管;Agent 服务可以继续留在现有 ACK。
沙箱管理和执行底座交给云侧,我们提供环境与 API 接入;视频存储路径需按运行时代际选择。
自行部署完整 VM 沙箱平台,已有热池与基础快照优化;需准备 VM 宿主环境并验证 NAS 接入。
| 已支持 | 普通 K8s PVC / subPath;Pool 模板静态预挂 RWX PVC。领取时不能追加卷。 |
|---|---|
| 正常开发 | provider 接入;按 Pod 身份预绑 NAS 子目录(候选:subPathExpr);run → sandbox → 目录;确认产物后销毁补池与目录清理。 |
| 待实测 | ACK + NAS + 隔离 runtime;目录可见范围、销毁后产物保留;领取到工具就绪、视频首读 / seek、并发吞吐与池耗尽。 |
| 降权 | 暂停 / 恢复、进程内存快照;主负载为后台 Agent 跑完结束、保留产物。 |
Actor / Pi 会话与调度;外接工具沙箱。
环境、热池、文件与命令执行;独立于 Agent Harness。
声明式 Agent 项目;参考定义与发布格式。
agent/
├── agent.ts
├── instructions.md
├── tools/inspect_video.ts
├── skills/video/SKILL.md
├── connections/media.ts
├── hooks/check.ts
├── schedules/daily.md
├── subagents/editor/agent.ts
└── sandbox/
├── sandbox.ts
└── workspace/import { defineAgent } from "eve";
export default defineAgent({
model: "anthropic/claude-opus-5.5",
});我们的接入:参考目录组织;工具与 hook 采用 Pi Durable 原生接口,Environment 另行绑定镜像与资源。
完整团队 Agent 平台;Harness 在沙箱内运行。
闭源托管参考;Harness 与工具沙箱分离。
有状态 Actor 执行底座;关注激活、隔离与快照。
Firecracker 沙箱控制面;热池与 VM 快照。
可分叉的工作目录;本期不引入独立 FS 层。