SuperAPI AI 工具集

tanstack-ai-core-client-persistence

智能体与模型

查看项目

更新于 10-16 00:02

技能介绍

用途:为 TanStack AI 的 useChat / ChatClient 增加浏览器端持久化,让页面刷新或浏览器重启后能重绘对话记录、恢复待审批的中断,并重新加入进行中的运行。适配器随框架包(如 @tanstack/ai-react,从 @tanstack/ai-client 再导出)提供,无需额外安装;服务端部分属于独立包 @tanstack/ai-persistence。

主要能力:提供 localStoragePersistence()(跨刷新与重启,同步水合,受配额限制,默认 JSON 编解码)、sessionStoragePersistence()(同一标签页内刷新有效,会话结束清除)、indexedDBPersistence()(跨刷新与重启,异步打开,结构化克隆)。三者默认使用聊天持久化状态结构,常规使用无需类型参数或编解码器。

使用方式:客户端权威模式在 useChat 中传入稳定的 threadId、connection 与 persistence: localStoragePersistence(),浏览器保存完整记录与恢复指针;服务端权威模式传 persistence: true,不在客户端缓存,挂载时按 threadId 从服务端水合,需配合服务端 withPersistence 与水合路由。生成类钩子(useGenerateImage、useGenerateVideo、useGeneration、useSummarize、useTranscription 等)的 persistence 仅支持布尔值,无存储适配器模式,浏览器不缓存内容;持久化记录只保存运行标识、状态、错误与结果元数据,不保存生成的媒体字节。恢复媒体需服务端持久化字节并提供 artifactUrl 映射。

适用场景:SPA、离线优先、单设备、中等对话量适合客户端缓存;大记录、多设备、合规要求适合服务端权威模式。

限制:threadId 是唯一身份,必须稳定,缺失则刷新后找不到记录;useChat 不再接受 id 选项;persistence: true 需服务端能按 threadId 重建,否则刷新后为空;localStorage 有配额与主线程开销,且仅限单浏览器,不能实现多设备同步;进行中的流还需路由端交付持久性(durability)才能重新加入;水合记录不会自动运行,generate(...) 始终需显式调用;stop() 标记记录不可恢复,reset() 清除内存快照。