智客 ZICQ
EN 登录 / 注册
智客信息 智能体 #Rivet #Actor模型 #智能体编排 #S3分层存储 #Rust

Rivet开源Actor智能体编排器:以S3分层存储替代重型沙箱

Mr.Xu 的头像

文 / Mr.Xu 社区投稿

发布时间:

中文阅读 (Chinese) English Version

摘要:Rivet 开源了一套面向长时程智能体工作负载的 Actor 编排器,以常驻轻量进程替代按会话启动的完整沙箱,并通过 SSD 缓存与 S3 对象存储组成分层持久化层。其 Actor 基线内存为 72 KB、p99 启动延迟为 4.9 ms,写入在三个可用区中的两个 SSD 副本落盘后确认,后台批量同步至 S3。系统支持 TypeScript、Rust、WebSocket 协作及本地与生产环境的一致运行,但官方性能与“成本降低 10 倍”等结论仍需在真实智能体负载中独立复现。


Rivet 开源了一套以 Actor 模型为中心的智能体编排基础设施,目标不是再造一个通用工作流框架,而是解决长时程智能体的状态驻留、并发协作和持久化成本问题。其核心思路是:每个智能体对应一个轻量 Actor,而不是运行完整容器沙箱;Actor 可以保留内存状态、执行 SQLite 事务,并通过 WebSocket 接入实时协作。

从沙箱转向常驻 Actor

传统智能体沙箱为每个任务提供隔离环境,优势是边界清晰、依赖管理简单,但通常伴随较高的常驻内存、镜像加载和冷启动开销。Rivet 的 Actor 基线内存为 72 KB,对比其公布的最小沙箱 512 MB;p99 启动延迟分别为 4.9 ms 和 1.7 秒。

这一差异对多智能体系统尤其重要。若系统同时维护数千个等待工具调用、用户输入或协作事件的 Actor,按沙箱计费会为大部分空闲实例持续付费;按 Actor 计费则可以把成本更多地绑定到实际活动。Rivet 还支持 Actor 休眠与唤醒,使暂时无任务的实例不必持续占用计算资源。

不过,Actor 模型并不天然等价于更强的安全隔离。沙箱通常提供进程、文件系统和网络边界,而 Actor 若在同一运行时内执行不可信代码,仍需要单独设计权限、CPU 配额、超时和内存限制。Rivet 宣称支持运行 AI 生成代码,但生产部署必须将代码执行隔离与会话状态编排分开评估。

Actor 的状态与并发边界

Rivet Actor 提供长生命周期进程、内存上下文、SQLite 持久化存储和 WebSocket 服务。其设计接近 Cloudflare Durable Objects,但允许自托管,并通过单一 Rust 二进制运行。

Actor 状态通常围绕单一逻辑身份或任务分区,消息处理天然具有串行语义。这能够避免多个并发请求同时修改同一会话状态所产生的竞态,也比让多个无状态 Worker 直接写同一数据库更容易保持顺序。

但串行消息处理也是吞吐上限。如果单个 Actor 需要执行耗时较长的模型推理、工具调用或外部 I/O,事件循环就可能被阻塞。工程上需要区分短状态变更与长任务:前者保持 Actor 内有序处理,后者通过任务队列、工作流步骤或独立 Worker 卸载,并将结果写回 Actor。Rivet 同时支持 workflows 与 Durable Streams,架构上需要由开发者明确划分“状态所有者”和“计算执行者”,而不是把所有逻辑都塞进常驻进程。

SSD 与 S3 如何组成持久化层

Rivet 最初的存储后端是 FoundationDB,后来转向以 S3 为主、SSD 为缓存的分层方案。原因是智能体会生成会话记录、构建产物乃至完整 POSIX 文件系统,数据规模可能远大于传统业务数据库;为长期冷数据持续购买高成本 SSD 不经济。

它并不是把每次 SQLite 写入直接同步到 S3。小对象的大量 PUT 请求会引入高延迟和请求成本,因此系统采用两阶段路径:

  1. 写入先进入 SSD 层;
  2. 三个可用区中的两个 SSD 副本完成后,向调用方确认持久化写入;
  3. 后台将数据批量同步到 S3;
  4. 读取时优先访问 SSD 缓存,未命中再从对象存储回源。

这实际上是把“持久化确认”和“对象存储归档”解耦。S3 不在同步写入路径上,因此可以同时获得较低的写入延迟和较低的对象存储调用成本。官方给出的 p99 数据为:跨三个可用区的持久化写入 1.07 ms、缓存读取 1.36 ms、对象存储回源读取 138 ms。

可用区复制还意味着系统用部分写放大换取故障恢复能力。若三个可用区中的两个完成复制便确认写入,那么单个可用区故障不应导致已确认数据丢失;但后台向 S3 的批量同步若存在时间窗口,节点永久故障后能否仅凭 S3 完整重建仍需结合日志复制协议确认。

性能数字背后的工程权衡

Actor 的 72 KB 基线内存和 4.9 ms p99 启动时间说明其适合大量短生命周期会话,但不应直接外推到完整智能体负载。真实运行成本还包括模型上下文、工具输出、SQLite 页缓存、序列化缓冲区以及 Actor 中的第三方依赖。

Rivet 宣称其存储成本约为 EBS gp3 的十分之一,同时保持 SSD 级速度。这个比较高度依赖对象大小、访问模式、SSD 容量、缓存命中率、S3 请求费用和 EBS 区域价格。若工作负载频繁修改大型 POSIX 文件系统,SSD 与 S3 之间反复同步会增加后台带宽和一致性管理成本;若数据主要追加写入且冷数据占比高,分层存储才更有优势。

官方的 1.07 ms 写入与 1.36 ms 缓存读取数据也主要反映存储路径,不代表端到端智能体延迟。模型推理、工具 API、WebSocket 序列化和事件循环调度往往占据更大时间预算。部署评估应以完整任务耗时、每个活跃 Actor 成本和每秒完成的工具调用数为主,而不是只看数据库延迟。

与沙箱及 Durable Objects 的取舍

Rivet 的主要差异化不是提供新的 Actor 编程模型,而是把智能体需要的运行状态、协作连接、持久化数据和本地开发体验组合为一套部署方案。

与 Cloudflare Durable Objects 相比,Rivet 的优势是可自托管、能够进入客户 VPC,并且不绑定特定云平台;代价是用户需要自行承担容量规划、升级、可用区配置和备份恢复。与每个任务一个沙箱相比,Rivet 能显著降低空闲开销和冷启动时间,但沙箱提供的强隔离边界不能直接由 Actor 生命周期自动获得。

对于“长期等待工具结果或人类输入”的智能体,Actor 常驻尤其合理;对于执行未知代码、需要访问内核或要求严格租户隔离的任务,仍应采用独立沙箱或微虚拟机。Rivet 更适合作为控制面与状态层,而不是替代所有执行隔离。

部署与开发者落地建议

Rivet 支持三种运行方式:自托管单个 Rust 二进制并在任意区域接入 S3;在 AWS 或 GCP 上部署专属集群;或者通过 BYOC 将集群部署到客户自己的 VPC。Actor 可使用 TypeScript 或 Rust 编写,本地开发与生产环境使用相同的轻量运行时。

实际落地可按以下顺序推进:

  • 先用非敏感工作负载验证 Actor 状态模型,并测量峰值活跃数、空闲比例和每 Actor 内存;
  • 为长耗时模型调用和外部工具设置独立 Worker,避免阻塞 Actor 消息循环;
  • 明确哪些 SQLite 数据必须进入 SSD 确认路径,哪些大文件可以后台归档至 S3;
  • 在生产压测中记录缓存命中率、S3 回源比例、后台同步积压和跨可用区故障恢复时间;
  • 对运行生成代码的 Actor 额外设置网络白名单、文件权限、资源限额和审计日志;
  • 将“72 KB 内存”“毫秒级写入”与完整智能体任务成本分开核算,避免把微基准指标误当成端到端收益。

Rivet 的价值在于提供了一种介于无状态函数和重型沙箱之间的智能体执行抽象。它尤其适合需要持久状态、实时协作与长时间等待的 Actor 系统,但现阶段公开数据主要来自厂商自测,真实多租户规模、故障恢复、后台同步一致性以及安全隔离边界仍需通过独立基准验证。


消息来源:GitHub Projects via Hacker News (2026-11-05)

—— 完 ——

主题标签: #Rivet #Actor模型 #智能体编排 #S3分层存储 #Rust

编辑部与事实核查说明:本篇专刊由智客前沿资讯管线根据官方技术公告、学术论文及开源工程文档整理编译,经算法实体核验与人工编辑审校后发布。若发现技术事实纰漏,欢迎依据勘误方针或一键向编辑部发送勘误反馈。

社区整体评论区

正在加载实时智能评论与划词标注…