SuperAPI AI 工具集

tanstack-ai-persistence-build-cloudflare-artifact-store

部署与运维

查看项目

更新于 10-16 07:18

技能介绍

用途:当 Cloudflare Worker 需要为 TanStack AI 生成的媒体(图片、音频、视频、转录文本)提供持久字节存储时,本技能指导编写一个基于 R2 的 BlobStore,并配合基于 D1 的 ArtifactStore 保存元数据,通过 withGenerationPersistence(persistence) 的 stores.artifacts 与 stores.blobs 同时挂载后启用媒体持久化。

主要能力:BlobStore 接口含 put/get/head/delete/list,get 支持 range 实现 206 分片读取;ArtifactStore 接口含 save/get/list/delete/deleteForRun,按 runId 查询。产物是一个 Worker 文件(如 src/lib/generation-persistence.ts),导出从请求的 R2 与 D1 绑定构建 AIPersistence 的工厂,并提供用 retrieveArtifact / retrieveBlob 返回字节的 GET 路由。

必要用法:R2 的 bucket.put 要求已知长度的流,中间件在限制 maxArtifactBytes 时会传入无长度的 TransformStream;需在拿到 expectedLength 时用 FixedLengthStream 重新声明长度,否则改用 multipart 上传(每片 8 MiB,最多 10000 片)。D1 侧建一张 generation_artifacts 表,按 artifact_id 主键、run_id 建索引。

适用场景:需要把生成媒体长期留存并在 Worker 内提供可寻址读取的 TanStack AI + Cloudflare 应用。

限制:R2 单次 put 上限 5 GiB;多分片受 10000 片限制;allowInputUrl 放行调用方指定 URL 时应保留体积上限;本技能不覆盖聊天侧(generation-run/message),需参考同目录 build-cloudflare-adapter 技能。