SuperAPI AI 工具集

ai-core/client-persistence

智能体与模型

查看项目

更新于 10-16 09:59

技能介绍

用途:为基于 ai-core/chat-experience 的聊天界面提供浏览器端持久化,让 useChat/ChatClient 在重载后重绘消息记录、恢复待处理的中断(审批界面)并重新加入进行中的运行。无需额外安装包,适配器随框架包(如 @tanstack/ai-react,源自 @tanstack/ai-client)提供,服务端部分另见 @tanstack/ai-persistence。

主要能力与用法:客户端权威模式(模式 A)直接传入适配器,如 persistence: localStoragePersistence()(重载与浏览器重启后仍在,同步、受配额限制)、sessionStoragePersistence()(同一标签页重载有效,会话结束清除)、indexedDBPersistence()(重载与重启后仍在,异步打开、结构化克隆)。裸适配器等价于完整记录加恢复指针。服务端权威模式(模式 B)写 persistence: true,不在浏览器缓存记录,挂载时按 threadId 从服务端水合,适合大记录、多设备与合规场景,需服务端 withPersistence 与 hydrate 路由。持久化以 threadId 为身份键,必须稳定,不要每次挂载随机生成。中途断流恢复还需路由具备投递持久性(toServerSentEventsResponse 的 durability),仅靠持久化不够。

生成类 hook(useGenerateImage、useGenerateVideo、useGeneration、useSummarize、useTranscription 等)的 persistence 只接受布尔值,无存储适配器模式,浏览器不缓存内容;重载后按 threadId 从服务端水合最后状态、错误与结果,额外提供 runId 表示正在运行的任务或 null。恢复媒体需服务端保存字节并配置 artifactUrl 映射,否则重载只恢复状态与错误,result 为 null。stop() 标记记录不可恢复,reset() 清空内存快照,水合后不会自动运行 generate。

限制:localStorage 仅限单个浏览器,无法跨设备同步,大记录有配额与主线程开销;缺少稳定 threadId、给 useChat 传 id、或在无服务端历史时使用 persistence: true 都会导致重载后为空。多用户路由必须自行鉴权。其余细节暂未提供。