用途:当 Cloudflare Worker 需要 TanStack AI 聊天持久化时,本技能在应用内生成一个 src/lib/chat-persistence.ts 文件,导出一个根据请求 D1 绑定构建 ChatPersistence 的工厂,并在需要协调时另提供 Durable Object 锁存储。表写入应用现有 migrations/ 目录,用 wrangler d1 migrations apply 应用,不新建包或迁移运行器。
主要能力:先读取应用,确认 D1 绑定名、env 传递方式、是否使用 Drizzle、迁移目录与既有表名(用 chat_* 前缀避免冲突)。D1 存储覆盖 messages、runs、interrupts、metadata 四类;锁存储单独实现,不与 stores 组合(放入会抛 Unknown AIPersistence store key: locks)。
必要用法:绑定是每请求的,必须导出工厂而非 const,例如 export function chatPersistence(d1: D1Database): ChatPersistence。Drizzle 路径按 build-drizzle-adapter 处理;原生 D1 用 d1.prepare(sql).bind(...) 的 .first()/.all()/.run()。在路由中用 withPersistence(chatPersistence(env.DB)) 接入,并集成为 withLocks。threadId 只是字符串,路由层必须自行鉴权,不能信任客户端传入 id。
限制与注意:check 'field' in patch 处理可空列的显式清除;update 未知 id 为静默空操作;listByThread、listByParentRun、listReclaimable 为可选,缺省需在测试 skipMethods 中声明。conformance 测试对生成类存储需声明 skip,skip 不接受 locks。Durable Object 锁需自行编写测试。未提供具体价格或平台支持范围。