04 阿奇的记忆系统架构
缘起:AI的”失忆症”
阿奇是一个运行在 Android Termux 环境上的 AI 助手。每次会话结束后,它就像”失忆”了一样——上一次聊了什么、做了什么决策、学到了什么,全都忘了。
这个问题困扰了我很久。直到有一天,我决定给它建一个”大脑”。
三层记忆架构
人的记忆有短期、中期、长期之分。阿奇的记忆系统也采用了类似的三层架构:
| 层级 | 名称 | 生命周期 | 容量 | 存储方式 |
|---|---|---|---|---|
| Layer 1 | 工作记忆 | 当前会话 | 50-100条 | 内存环形缓冲 |
| Layer 2 | 短期记忆 | 7天自动降级 | 500-1000条 | SQLite + 热缓存 |
| Layer 3 | 长期记忆 | 永久 | 无限制 | SQLite + Markdown |
Layer 1:工作记忆
就像人的”工作记忆”,只记住当前对话的上下文。用环形缓冲实现,超出容量自动淘汰最早的记录。
Layer 2:短期记忆
记录7天内的所有交互。每天检查一次,超过7天的记忆自动”降级”到长期记忆。这个设计避免了长期记忆被大量琐碎信息污染。
Layer 3:长期记忆
真正需要”记住一辈子”的东西:用户偏好、重要决策、错误教训。用 SQLite 索引 + Markdown 文件存储,支持全文检索。
去重机制:避免”唠叨”
同一个信息记两遍,AI 就会变成复读机。阿奇用三级去重策略:
- 精确匹配:SHA-256 哈希,O(1)时间判断
- 近似匹配:SimHash 指纹,汉明距离 < 3 视为重复
- 语义匹配:关键词 Jaccard 相似度 > 0.7
三层过滤后,基本不会重复记录同一件事。
统一检索:混合打分
要找一段记忆,怎么搜最快?阿奇用混合检索:
1 | |
- 语义相似度:理解”天气”和”下雨”是相关的
- BM25:经典的全文搜索算法
- 时间衰减:越近的记忆权重越高
心跳维护:定期”整理房间”
记忆系统需要定期维护,阿奇用心跳机制触发:
| 频率 | 任务 |
|---|---|
| 每次心跳 | 清理工作记忆溢出 |
| 每6次心跳 | 短期记忆降级检查 |
| 每20次心跳 | 索引重建 |
| 每100次心跳 | 全量去重、统计报告 |
文件结构
1 | |
每个文件都有明确用途,会话启动时自动加载。
实施效果
这套系统上线后,阿奇的变化:
- 不再失忆:跨会话记住用户偏好和历史决策
- 不再唠叨:去重机制避免重复记录
- 找得快:混合检索响应时间 < 100ms
- 省资源:内存占用控制在 100MB 以内(适合手机)
小结
记忆系统是 AI 助手的”灵魂”。没有记忆,再聪明的 AI 也只是一个”每次都要重新认识你的陌生人”。
三层架构、去重机制、统一检索、心跳维护——这套组合拳,让阿奇真正”记住”了我是谁。
下一步:让阿奇学会”遗忘”——自动清理过期信息,保持记忆新鲜度。