SuperAPI AI 工具集

tanstack-ai-memory

通用与其它

查看项目

更新于 10-16 00:02

技能介绍

用途:为 chat() 调用添加服务端记忆,实现跨回合、跨会话的召回,例如“记住上次告诉你的内容”,或按用户、按线程保存上下文。仅需保留最近消息时不要用它,那属于 chat() 的 messages 数组。

主要能力:记忆适配器是一个契约,包含 recall 和 save 两个动作。recall 决定相关性并渲染 systemPrompt,也可返回 tools 与 toolGuidance 让模型直接控制记忆;save 负责把原始回合(user、assistant)抽取为持久化内容。中间件在模型运行前召回进系统提示,回合结束后延迟保存。

使用方式:从 @tanstack/ai-memory 引入 memoryMiddleware,并传入 adapter 与 scope。scope 可为静态对象或基于 ctx 的函数,应从可信会话状态在服务端推导。选项还包括 role(默认 recall+save,或 save-only)以及 onRecall、onSave 遥测回调。示例:memoryMiddleware({ adapter: memory, scope: (ctx) => { const session = getSession(ctx); return { threadId: session.threadId, userId: session.userId } } })。

适配器:inMemory() 与 redis() 按 threadId 加可选 userId/tenantId 精确匹配;hindsight() 使用 bank {tenant|}{user}{threadId};mem0() 使用 user_id 与 run_id,无 tenantId;honcho() 使用 session {tenant|}__{threadId}。自定义适配器需实现 recall/save 并通过 @tanstack/ai-memory/tests/contract。

限制与安全:MemoryScope 是隔离边界,包含 threadId、可选 userId、tenantId、namespace,绝不能信任客户端提供的 userId/threadId,必须在服务端从会话或鉴权解析;若从请求体接受线程 id,使用前须校验其属于当前会话用户。记忆失败不致命:recall 或 save 抛错会发出 memory:error,运行以降级记忆继续,流式不会被阻塞,保存失败也不会导致回合失败。开发工具通过 aiEventClient 发出五个事件,负载只含适配器 id 与片段/回执数量,不含完整记忆文本。