rivet-dev/dynamic-apps
Deploy an AI-generated backend for every user.
Rivet Dynamic Apps – 是什么
Rivet Dynamic Apps 是一个框架,允许您在安全的沙箱环境中运行用户提供的请求处理器代码。每个处理器的代码及其发布状态都存储在 Rivet 动作(轻量级、有状态的服务)中。当请求到达时,系统可以通过两种方式响应:
- 快速路径 – 如果请求可以从缓存中回答,则由一个小型、受限的 V8 隔离环境(轻量级 JavaScript 引擎)直接处理,避免向动作发送任何网络请求。
- 执行路径 – 对于未命中缓存的请求,请求将被路由到相应的 Rivet 动作,由其在沙箱 VM 中运行用户生成的处理器。
该设计旨在结合 安全性(隔离的 V8 沙箱)、低延迟(本地缓存隔离环境)和 有状态版本控制(动作保存发布元数据)。
核心概念
| 概念 | 含义 |
|---|---|
| Rivet 动作 | 一个轻量级、有状态的服务,用于存储用户生成处理器的当前版本,并在需要时执行它。 |
| 沙箱部署 VM | 基于 V8 的隔离环境,允许任意用户代码安全运行,而不会影响主机系统。 |
| 受限的本地 V8 隔离环境 | 小型、短暂的 JavaScript 运行时,直接在边缘处理缓存命中请求,保持低延迟。 |
| 发布状态 | 当前活跃的处理器版本的元数据;存储在动作中,确保更新是原子且可追溯的。 |
工作原理(高层次流程)
- 开发者上传:上传一个 JavaScript 请求处理器。
- Rivet 将代码及其发布元数据存储在动作中。
- 当请求到达时:
- 系统检查缓存。
- 缓存命中 → 本地 V8 隔离环境立即运行处理器。
- 缓存未命中 → 请求被转发到动作,动作在其沙箱 VM 中运行处理器并返回结果。
- 结果可被缓存,用于未来的快速路径处理。
为何对 AI / LLM 工作负载可能很重要
README 链接到一个 RivetKit 参考文档,其中提到了 llms.txt,表明该平台旨在托管 基于 LLM 的请求处理器(例如,提示处理函数、自定义路由逻辑或轻量级推理包装器)。通过隔离每个处理器,开发者可以安全地暴露用户生成的 AI 逻辑,而不会危及底层服务的稳定性。
获取更多详细信息
- 包指南 –
packages/dynamic-apps/README.md– 说明如何将库添加到项目并配置动作。 - API 合约 –
packages/dynamic-apps/API_CONTRACT.md– 定义调用者与处理器之间使用的基于 JSON 的请求/响应模式。 - 基准报告 –
benchmarks/dynamic-apps/RESULTS.md– 展示缓存命中路径与完整动作执行的性能数据。 - RivetKit 参考 – https://rivet.dev/llms.txt – 提供 Rivet 如何与以 LLM 为中心的工作流集成的上下文。
TL;DR
Rivet Dynamic Apps 允许您在隔离的 V8 沙箱中安全运行用户提供的 JavaScript 请求处理器,将其版本状态保存在轻量级动作中。缓存命中请求由本地隔离环境即时响应,未命中请求则由动作处理。该设置专为需要快速、安全且可更新的自定义逻辑的 AI/LLM 用例而设计。
相关
- 项目
- 项目
- 项目
- 项目
- 项目