SuperAPI AI 工具集

tanstack-ai-persistence-stores

数据与分析

查看项目

更新于 10-16 06:24

技能介绍

用途:@tanstack/ai-persistence 只提供契约,不提供数据库后端。本技能是契约参考,指导你针对已有数据库实现所需 store,并交给 withPersistence 使用;核心不会检查你的表结构,schema 由你决定。开发与测试可用 memoryPersistence(),持久化部分需自行编写适配器。

主要能力:defineAIPersistence 接受 stores 的四个键 messages、runs、interrupts、metadata,保留精确键并在运行时拒绝未知键;可用 ChatTranscriptPersistence、ChatWithInterruptsPersistence、ChatPersistence 等命名形状标注工厂。MessageStore 的 loadThread 对未知线程返回 [],saveThread 是全量覆盖而非追加。RunStore 必需 createOrResume、update、get、findActiveRun,可选 listByThread、listReclaimable;createOrResume 对已存在 runId 原样返回,update 对缺失 runId 为 no-op。InterruptStore 的 create 始终生成 pending 且按 interruptId 插入不覆盖。MetadataStore 以 namespace、key 两字段标识,不可用冒号拼接。

使用方式:用 defineMessageStore、defineRunStore、defineInterruptStore、defineMetadataStore 内联获得类型检查;用 composePersistence 只覆盖部分 store,其余沿用基础实现。时间戳在存储记录中用 epoch 毫秒,离开持久化层用 ISO-8601 字符串。授权应在路由层完成,store 方法只接收裸 threadId。

限制:stores 只接受四个键,locks 与 sandbox 实例映射会抛 Unknown AIPersistence store key。RunError 需从 @tanstack/ai 导入,@tanstack/ai-persistence 未再导出。update 对 sandboxKey、detachedSince、cancelRequested、driverEpoch 必须用 'field' in patch 判断,以区分显式 undefined 与未提及。无跨 store 事务。一致性测试套件不做特性探测,缺失的可选方法需在 skipMethods 中声明。具体数据库配方与完整 sqlite 示例见资料中提到的 build-{drizzle,prisma,cloudflare,custom}-adapter 与 examples/ts-react-chat/src/lib/sqlite-persistence.ts。