Rivet Actors 是 Rivet 运行时上的有状态进程抽象,面向需要长生命周期、驻留内存且可持久化的后端场景。该技能定位为:当 HTTP 端点、数据库或队列无法满足需求时,改用 Actor 构建高性能后端,典型用途包括 AI 智能体、实时协作、工作流编排和地理分布式数据。
主要能力: 状态(state)是跨重启、崩溃和部署持久化的数据;支持静态初始状态与 createState 动态初始化,并可通过 getOrCreate 传入输入。临时变量(vars)不跨重启,适合存放事件发射器、连接等不可序列化对象。动作(actions)是客户端与其他 Actor 通信的主要方式。事件与广播(broadcast)支持向所有已连接客户端实时推送;连接(c.conns)可访问各客户端连接及其 connState,实现定向发送、排除当前连接、断开连接等。Actor 之间可通过 c.client() 相互调用。调度(c.schedule.after/at)支持延迟或定时执行动作,且跨重启、升级和崩溃保持。c.destroy() 可永久删除 Actor 及其状态。生命周期钩子涵盖 onCreate、onDestroy、onWake、onSleep、onStateChange、onBeforeConnect、onConnect、onDisconnect、onRequest、onWebSocket、onBeforeActionResponse 等。
使用方式:先执行 npm install rivetkit,用 actor() 定义 Actor,再用 setup({ use: { ... } }) 构建 registry;通过 registry.serve()、registry.handler()(无服务器)或 registry.startRunner()(runner 模式)暴露服务。部署前需确认 /api/rivet/metadata 返回 200,并配置 Rivet Cloud 或自托管引擎(registry token、项目、区域、metadata 端点)。可与 Hono、Elysia 等框架集成,将 /api/rivet/* 交给 registry.handler。客户端通过 rivetkit/client 的 createClient 使用:getOrCreate 按 key 获取或创建,get 仅获取已存在实例,create 带输入创建;无状态调用每次独立,有状态调用通过 connect() 建立持久连接并用 on/once 订阅事件。React 侧可用 @rivetkit/react 的 createRivetKit 生成 useActor 钩子,并在组件中用 useEvent 订阅。
适用场景:需要实时推送与连接管理的协作应用、需要跨重启保留状态的智能体与工作流、需要按 key 分片且地理分布的数据服务。
限制:资料要求安装 Rivet MCP 服务器以获得文档搜索能力,该步骤为推荐而非强制;状态持久化依赖 Rivet Cloud 或自托管引擎,部署前需完成相应配置;临时变量不跨重启;文档仅覆盖 JavaScript/TypeScript 与 React 客户端示例,Rust 等仅列于参考索引,具体用法暂未提供;具体收费、价格与性能指标暂未提供。