Rivet Actors are the primitive for stateful workloads. Built for AI agents, collaborative apps, and durable execution.
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 29 天前 | ||
| 1 天前 | ||
| 4 个月前 | ||
| 6 天前 | ||
| 1 个月前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 1 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 4 个月前 | ||
| 6 天前 | ||
| 3 个月前 | ||
| 1 天前 | ||
| 4 个月前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 6 天前 | ||
| 5 天前 | ||
| 1 个月前 | ||
| 1 年前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 7 个月前 | ||
| 6 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 3 年前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 1 年前 | ||
| 22 天前 | ||
| 3 个月前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 6 天前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 2 个月前 | ||
| 4 个月前 |
什么是 Rivet?
Rivet Actors 是为有状态工作负载设计的长时间运行、轻量级进程。状态驻留在内存中并具有自动持久化能力。可针对每个智能体、每个会话或每个用户创建一个 Actor,并内置工作流、队列和调度功能。
后端
const agent = actor({
// In-memory, persisted state for the actor
state: { messages: [] as Message[] },
// Long-running actor process
run: async (c) => {
// Process incoming messages from the queue
for await (const msg of c.queue.iter()) {
c.state.messages.push({ role: "user", content: msg.body.text });
const response = streamText({ model: openai("gpt-5"), messages: c.state.messages });
// Stream realtime events to all connected clients
for await (const delta of response.textStream) {
c.broadcast("token", delta);
}
c.state.messages.push({ role: "assistant", content: await response.text });
}
},
});
客户端(前端或后端)
// Connect to an actor
const agent = client.agent.getOrCreate("agent-123").connect();
// Listen for realtime events
agent.on("token", delta => process.stdout.write(delta));
// Send message to actor
await agent.queue.send("how many r's in strawberry?");
特性
每个智能体、每个会话、每个用户对应一个 Actor——内置状态、存储和网络功能。
Rivet 提供:
- 内存状态 — 与计算紧密结合,支持即时读写。可通过 SQLite 或自定义数据库实现持久化。
- 无限期运行,闲置时休眠 — 活跃时长期运行,闲置时自动休眠。
- 无限扩展,零资源扩展 — 支持突发工作负载,兼具成本效益。
- 全球边缘网络 — 轻松在用户附近或特定法律管辖区部署,无需复杂配置。
Actors 支持:
- WebSockets — 内置实时双向流传输。
- 工作流 — 带自动重试机制的多步骤操作。
- 队列 — 用于可靠异步处理的持久化消息队列。
- 调度 — Actor 内部的定时器和 cron 任务。
应用场景
一个基础组件,可适应智能体、工作流、协作等多种场景。
- AI 智能体 — 每个智能体作为独立 Actor 运行,拥有持久化上下文、内存及工具调用调度能力。
- 沙箱编排 — 为每个工作区分配一个长期运行的 Actor,负责协调沙箱会话、任务排队和清理调度。
- 工作流 — 多步骤操作,跨步骤自动重试、调度和持久化状态。
- 协作文档 — 实时协作编辑,每个文档作为一个 Actor,向所有连接用户广播变更。
- 租户专属数据库 — 每个租户一个 Actor,提供低延迟内存读取和持久化租户数据存储。
- 聊天 — 每个房间或对话一个 Actor,具备内存状态、持久化历史记录和实时消息传递功能。
Actors 对比
Rivet Actors 与传统基础设施对比
| 指标 | Rivet Actor | Kubernetes Pod | 虚拟机 |
|---|---|---|---|
| 冷启动 | ~20ms | ~6s | ~30s |
| 单实例内存 | ~0.6KB | ~50MB | ~512MB |
| 闲置成本 | $0 | ~$85/月 (集群) | ~$5/月 |
| 水平扩展 | 无限 | ~5k 节点 | 手动 |
| 多区域 | 全球边缘 | 1 个区域 | 1 个区域 |
状态对比
| 指标 | Rivet Actor | Redis | Postgres |
|---|---|---|---|
| 读取延迟 | 0ms | ~1ms | ~5ms |
基准测试详情与方法
冷启动
- Rivet Actor (~20ms): 包含持久化状态初始化,不仅是进程启动。无 Actor 密钥,因此无跨区域锁定。使用 Node.js 和 FoundationDB 测量。
- Kubernetes Pod (~6s): Node.js 24 Alpine 镜像(压缩后 56MB)在 AWS EKS 上,使用预配置的 m5.large 节点。分解:约 1s 镜像拉取和提取,约 3-4s 调度和容器运行时设置,约 1s 容器启动。
- 虚拟机 (~30s): AWS EC2 t3.nano 从启动到 SSH 就绪,使用 Amazon Linux 2 AMI。t3.nano 是最小的 EC2 实例(512MB RAM)。
单实例内存
- Rivet Actor (~0.6KB): RSS 增量除以 Actor 数量,通过在 Linux x86 上的 Node.js v24 中生成 10,000 个 Actor 测量。
- Kubernetes Pod (~50MB): Linux x86 上最小的闲置 Node.js 容器:Node.js v24 运行时(~43MB RSS),containerd-shim(~3MB),pause 容器(~1MB),以及 kubelet 每 pod 跟踪(~2MB)。
- 虚拟机 (~512MB): AWS EC2 t3.nano,最小的 EC2 实例,分配 512MB 内存。
读取延迟
- Rivet Actor (0ms): 状态从与 Actor 同一台机器上的协同定位 SQLite/KV 存储读取,无网络往返。
- Redis (~1ms): AWS ElastiCache Redis(cache.t3.micro),与应用在同一可用区。
- Postgres (~5ms): AWS RDS PostgreSQL(db.t3.micro),与应用在同一可用区。
闲置成本
- Rivet Actor ($0): 假设 Rivet Actors 运行在无服务器平台上。Actors 可缩容至零,无闲置基础设施成本。传统容器部署可能产生闲置成本。
- 虚拟机 (~$5/月): AWS EC2 t3.nano($0.0052/小时计算费用 + $1.60/月 20GB gp3 存储),7x24 运行。t3.nano 是最小的 EC2 实例(512MB RAM)。
- Kubernetes 集群 (~$85/月): AWS EKS 控制平面($73/月)加上单个 t3.nano 工作节点(含 20GB gp3 存储),7x24 运行。
水平扩展
- Rivet Actors (无限): 通过添加节点线性扩展,无单一集群大小限制。
- Kubernetes (~5k 节点): 根据 Kubernetes 可扩展性文档,官方支持每个集群最多 5,000 个节点。
多区域
- Rivet (全球边缘网络): 自动在用户附近生成 Actor,并处理跨区域路由。
内置可观测性
从本地开发到大规模生产环境,提供强大的调试与监控工具。
- SQLite 查看器 — 实时浏览和查询 Actor 的 SQLite 数据库
- 工作流状态 — 执行过程中检查工作流进度、步骤和重试情况
- 事件监控 — 实时跟踪每一次状态变更和操作
- REPL — 调用操作、订阅事件并直接与代码交互
部署选项
RivetKit 是一个库。需要扩展、容错和可观测性时,可将其连接到 Rivet Cloud 或进行自托管。
开源且采用宽松许可——自托管对于企业部署、云服务可移植性以及避免供应商锁定至关重要。Apache 2.0 许可意味着您拥有自己的基础设施。在 GitHub 上查看 →
快速开始
与您的编码代理配合使用为您的编码代理赋予 Rivet 技能,以创建示例或将其集成到现有项目中:
可与 Claude Code、Cursor、Windsurf 及其他 AI 编码工具配合使用。 |
从零开始 |
集成
无论是无服务器架构、容器还是您自己的服务器,Rivet Actors 都能与您现有的基础设施、框架和工具协同工作。
基础设施:Vercel • Railway • AWS • Docker
框架:React • Next.js • Hono • Express • Elysia • tRPC
工具:Vitest • Pino • AI SDK • OpenAPI • AsyncAPI
本仓库中的项目
| 项目 | 描述 |
|---|---|
| RivetKit TypeScript | 用于构建 actors 的客户端和服务器库 |
| RivetKit Rust | Rust 客户端(实验性) |
| RivetKit Python | Python 客户端(实验性) |
| Rivet Engine | Rust 编排引擎 |
| ↳ Pegboard | Actor 编排器和网络 |
| ↳ Gasoline | 持久化执行引擎 |
| ↳ Guard | 流量路由代理 |
| ↳ Epoxy | 多区域 KV 存储(EPaxos) |
| Dashboard | 用于调试 actors 的检查器 |
| Website | rivet.dev 的源代码 |
| Documentation | rivet.dev/docs 的源代码 |
社区
- Discord - 与社区交流
- X/Twitter - 关注获取更新
- Bluesky - 关注获取更新
- GitHub Discussions - 提问交流
- GitHub Issues - 报告缺陷
- Talk to an engineer - 讨论您的使用场景
许可证
项目介绍
开源解决方案,助力部署、扩展及运营您的多人游戏【此简介由AI生成】