
Rivet 推出基于 S3 的 AI Agent 编排器,用轻量 actor 替代重型沙箱
来源标题:Launch HN: Rivet (YC W23) – Scale and Orchestrate Agents on S3
Rivet 发布开源、可自托管的 AI Agent 编排器,用由 S3 支撑的轻量 actor 取代每个 Agent 一个重型沙箱。每个 actor 提供长时进程、内存态上下文、WebSocket 多人服务、S3 持久化 SQLite 存储及空闲休眠,类似 Cloudflare Durable Objects。团队曾为多人游戏做基础设施,因 Postgres 吞吐不足而扩展出该方案。
以下正文由 AI 翻译自 Hacker News(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
大家好,我是 Nathan,和 Nicholas 一起来自 Rivet(https://rivet.dev)。Rivet 是一个快速、高密度、可扩展的 agentic 工作负载编排器,基于 actor 模型。我们不是为每个 agent 运行一个重量级沙箱,而是让每个 agent 拥有一个由 S3 支撑的轻量级 actor。Actor 为长时间的 agent 回合提供长生命周期进程,为上下文提供内存状态,为多人协作提供 WebSocket 服务器,提供由 S3 支撑的持久化 SQLite 存储,并在空闲时休眠。这和 Cloudflare Durable Objects 的模型类似,但它是开源的,并且可以自托管。这里有一个视频演示:https://www.youtube.com/watch?v=3Ev6I7DOV9c。2023 年参加 YC 时,我们正在为 Diep 和 Krunker 这类多人游戏构建基础设施。这涉及对高吞吐匹配、实时玩家消息和快速弹性伸缩进行大量优化。在这个过程中,我们花了大量时间处理 Postgres 无法跟上吞吐量的工作负载。我们最初是在 Redis 之上拼凑 Lua 脚本来解决,但维护和升级变得过于繁琐。这促使我们扩展游戏服务器编排器,支持我们今天称为 Rivet Actors 的东西:大量带有内存状态和持久化存储的轻量级 worker。通过使用 actor,我们成功服务了数千万月活跃用户。随着 agent 越来越流行,很明显在沙箱中运行 agent 是低效的。沙箱昂贵、大部分时间空闲,而且启动缓慢。开发者开始使用 actor,因为它们在内存效率上高得多(actor 基线为 72 KB,而最小沙箱为 512 MB),启动也快得多(actor 的 p99 为 4.9 ms,沙箱的 p99 为 1.7 s)。例如,Amp 正在使用 Rivet 编排多人 agent。他们最初尝试基于 Cloudflare Durable Objects 构建,但由于该平台的限制和无响应支持而无法上线。他们在一个周末内迁移到 Rivet Actors,并部署在本地。Rivet 灵活的架构让他们能够将其适配到自己的用例,而不受框架或 Cloudflare Durable Objects 的内存、存储和运行时限制的约束。在底层,Rivet 由 S3 支撑,同时保持 SSD 速度。为什么选择 S3?此前,Rivet 运行在 FoundationDB 上。然而,我们惊讶地发现,公司在 Rivet Actors 上存储的数据量比在 Postgres 中高出几个数量级,例如大型会话记录、agent 产物和完整的 POSIX 文件系统。随着数据增长,他们不得不开始为大部分时间闲置、只存放旧会话记录的 SSD 付费。这促使我们加倍投入 S3 作为主要存储介质,同时不牺牲性能。这一选择意味着存储在 Rivet 上的数据比 EBS gp3 便宜 10 倍,同时保持 SSD 速度。这并不是简单地把数据直接写入 S3。大量针对小数据块的 PUT 操作又慢又贵。相反,我们使用 SSD 层来优化速度和成本:当你将数据写入 actor 的 SQLite 数据库时,一旦 3 个可用区中有 2 个的 SSD 收到数据,写入就会被确认。然后,数据会在后台批量写入 S3。这意味着 S3 永远不在写入路径上,从而降低了延迟和成本。在读取数据或唤醒 actor 时,Rivet 会从 SSD 读取(如果已缓存),否则回退到 S3。SSD 缓存可以根据你的需求进行调整,为你的 actor 提供可配置的分层存储。这一架构让 Rivet 能够提供 1.07 ms 的持久化写入(3 AZ,p99)、1.36 ms 的读取(p99),以及 138 ms 的对象存储读取(p99)。我们花了大量时间确保 Rivet 可以在任何你需要的地方运行。自托管需要部署一个 Rust 二进制文件,唯一依赖是 S3;Rivet Cloud 让你可以在 AWS 或 GCP 的任何区域部署专用集群;BYOC 让我们可以将 Rivet 部署到你的 VPC 中,而无需你自己运维。Rivet 在本地开发和生产环境中的运行方式完全一致,因为 Rivet 是一个轻量级二进制文件,可以在任何地方运行。Rivet Actors 可以用 TypeScript 或 Rust 编写。开箱即用,它们支持 agent(Pi Durable)、工作流、实时、多人、运行 AI 生成的代码、Durable Streams,以及与 Vercel 的 Eve 和 Turso 等工具的集成。查看我们所有可用的指南,或者让你的 agent 去阅读它们:https://rivet.dev/docs/#guides。现在就试试吧,阅读我们的快速入门指南(https://rivet.dev/docs/),或者让你的 agent 执行:“Run npx skills add rivet-dev/skills, then build a multiplayer chat agent and run it locally.”我们很乐意听取你使用 Rivet 的反馈!我们正深入投入,让 Rivet 成为易于自托管、灵活且高效的 agentic 工作负载运行方式。GitHub:https://github.com/rivet-dev/rivet 架构:https://rivet.dev/docs/architecture/ 基准测试:https://rivet.dev/docs/benchmarking/ 自托管:https://rivet.dev/docs/deploy/self-host/
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。