actors:基于多语言生态的长运行轻量级有状态进程框架项目

Rivet Actors are the primitive for stateful workloads. Built for AI agents, collaborative apps, and durable execution.

分支1036Tags99
当前项目代码仓暂无内容
Rivet

Rivet Actors 是有状态工作负载的基础组件。

专为 AI 智能体、协作应用和持久化执行打造。

快速开始文档更新日志DiscordX

什么是 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,并处理跨区域路由。

内置可观测性

从本地开发到大规模生产环境,提供强大的调试与监控工具。

Rivet Inspector

  • SQLite 查看器 — 实时浏览和查询 Actor 的 SQLite 数据库
  • 工作流状态 — 执行过程中检查工作流进度、步骤和重试情况
  • 事件监控 — 实时跟踪每一次状态变更和操作
  • REPL — 调用操作、订阅事件并直接与代码交互

部署选项

RivetKit 是一个库。需要扩展、容错和可观测性时,可将其连接到 Rivet Cloud 或进行自托管。

仅作为库

安装软件包并在本地运行。无需服务器,无需基础设施。开发期间,Actors 在进程内运行。

npm install rivetkit

开始使用 →

自托管

单个 Rust 二进制文件或 Docker 容器。支持与 Postgres、文件系统或 FoundationDB 配合使用。

docker run -p 6420:6420 rivetdev/engine

自托管文档 →

Rivet Cloud

全托管服务。全球边缘网络。可连接您现有的云服务——无论是 Vercel、Railway、AWS,还是您当前部署应用的任何平台。

立即注册 →

开源且采用宽松许可——自托管对于企业部署、云服务可移植性以及避免供应商锁定至关重要。Apache 2.0 许可意味着您拥有自己的基础设施。在 GitHub 上查看 →

快速开始

与您的编码代理配合使用

为您的编码代理赋予 Rivet 技能,以创建示例或将其集成到现有项目中:

npx skills add rivet-dev/skills

可与 Claude Code、Cursor、Windsurf 及其他 AI 编码工具配合使用。

从零开始

查看文档 →

集成

无论是无服务器架构、容器还是您自己的服务器,Rivet Actors 都能与您现有的基础设施、框架和工具协同工作。

基础设施VercelRailwayAWSDocker

框架ReactNext.jsHonoExpressElysiatRPC

运行时Node.jsBunDeno

工具VitestPinoAI SDKOpenAPIAsyncAPI

请求集成 →

本仓库中的项目

项目 描述
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 的源代码

社区

许可证

Apache 2.0

项目介绍

开源解决方案,助力部署、扩展及运营您的多人游戏【此简介由AI生成】

定制我的领域
186.12 K247访问 GitHub