ai-persistent-memory-system
触发条件
需要让 AI 跨对话积累知识、决策记录和踩坑历史时使用。在每次对话结束时触发 AI 自动提取摘要,append 写入持久化的 memory.md 文件,下次对话将相关片段注入 SYSTEM_PROMPT 上下文。
反触发(不适用)
- 单次一次性任务无需记忆时
- 对话内容涉及隐私不宜持久化时
- 上下文窗口已接近上限、注入记忆会挤占有效空间时
- 用户明确"这次不要带上次记忆"时
Gotchas(易错点)
- memory 无限增长 → 必须有容量上限(单文件 ≤ 1MB 或 1000 条),超了触发压缩(AI 重写为摘要)
- "相关片段"检索不准 → 关键词匹配太宽召回噪音,太窄漏掉重要记忆;先用 embedding 相似度 + 关键词 fallback
- 注入时机错了打断对话 → 不能每轮都注入全部记忆,只在对话开头注入 + 用户主动说"看看之前 X 怎么处理的"时再注入
- 去重逻辑遗漏 → 用户多次重复同一条信息,如果不去重 memory 会越长越臃肿;按"主题 + 关键决策点"哈希去重
- 四类信息(知识/决策/待办/踩坑)容易混在一起 → 写文件时分四块,检索时按块过滤;不然读起来像流水账
- 隐私泄露 → 敏感信息(密码/医疗/财务/人名)写入前要脱敏或跳过,默认开启"敏感词检测"
覆盖操作(必须支持)
- 对话结束钩子设计(用户主动触发 / 自动检测"对话空闲 > 5 分钟")
- AI 提取摘要的 prompt 模板(四类:知识点 / 决策 / 待办 / 踩坑)
- memory.md 的追加写入与去重逻辑
- 相关记忆的检索与注入策略(全量注入 / 关键词匹配 / embedding 相似度)
- localStorage / IndexedDB / 纯文件 三种存储方案选择
- 容量上限 + 自动压缩(老条目合并为摘要)
- 隐私脱敏(检测敏感词 → 跳过或脱敏)
- 手动编辑入口(用户能改 memory.md)
工作流(分阶段)
1. 立项
- 决定存储后端(纯文件 / SQLite / Notion API)
- 决定注入策略(全量 / 检索 / 用户触发)
- 定四类信息边界(知识 = 事实,决策 = 选择,待办 = 未完成,踩坑 = 错误经验)
2. Prompt 设计
- 提取 prompt:输入整段对话,输出四类条目(JSON 数组)
- 去重 prompt:输入新条目 + 已有 memory,输出"追加/合并/跳过"判断
- 注入 prompt:输入当前对话开头,输出"该注入哪些 memory 片段"
3. 实现
- 对话结束时检测("用户停止输入 5 分钟"或显式按钮)
- 调用 AI 提取 → 写入 → 去重 → 压缩
- 下一轮对话开始时,根据用户首条消息关键词检索 → 注入
- 所有 IO 异步,不能阻塞主对话
4. 运营
- 每周看一次 memory.md → 删错记 / 补重要信息
- 每月导出一份 → 备份到云端
- 季度清理:压缩老条目,删除已失效的决策
交付清单(checklist)
- 四类信息边界清楚
- 对话结束自动提取
- 写入 + 去重 + 压缩 三步走
- 检索支持关键词 + 相似度
- 注入时机合理(不打断主对话)
- 容量上限 + 自动压缩
- 隐私脱敏默认开启
- 用户能手动编辑 memory