rivet-dev/dynamic-apps

Deploy an AI-generated backend for every user.

Rivet Dynamic Apps – 是什么

Rivet Dynamic Apps 是一个框架,允许您在安全的沙箱环境中运行用户提供的请求处理器代码。每个处理器的代码及其发布状态都存储在 Rivet 动作(轻量级、有状态的服务)中。当请求到达时,系统可以通过两种方式响应:

  1. 快速路径 – 如果请求可以从缓存中回答,则由一个小型、受限的 V8 隔离环境(轻量级 JavaScript 引擎)直接处理,避免向动作发送任何网络请求。
  2. 执行路径 – 对于未命中缓存的请求,请求将被路由到相应的 Rivet 动作,由其在沙箱 VM 中运行用户生成的处理器。

该设计旨在结合 安全性(隔离的 V8 沙箱)、低延迟(本地缓存隔离环境)和 有状态版本控制(动作保存发布元数据)。


核心概念

概念 含义
Rivet 动作 一个轻量级、有状态的服务,用于存储用户生成处理器的当前版本,并在需要时执行它。
沙箱部署 VM 基于 V8 的隔离环境,允许任意用户代码安全运行,而不会影响主机系统。
受限的本地 V8 隔离环境 小型、短暂的 JavaScript 运行时,直接在边缘处理缓存命中请求,保持低延迟。
发布状态 当前活跃的处理器版本的元数据;存储在动作中,确保更新是原子且可追溯的。

工作原理(高层次流程)

  1. 开发者上传:上传一个 JavaScript 请求处理器。
  2. Rivet 将代码及其发布元数据存储在动作中。
  3. 当请求到达时:
    • 系统检查缓存。
    • 缓存命中 → 本地 V8 隔离环境立即运行处理器。
    • 缓存未命中 → 请求被转发到动作,动作在其沙箱 VM 中运行处理器并返回结果。
  4. 结果可被缓存,用于未来的快速路径处理。

为何对 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 用例而设计。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目