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 就会变成复读机。阿奇用三级去重策略:

  1. 精确匹配:SHA-256 哈希,O(1)时间判断
  2. 近似匹配:SimHash 指纹,汉明距离 < 3 视为重复
  3. 语义匹配:关键词 Jaccard 相似度 > 0.7

三层过滤后,基本不会重复记录同一件事。

统一检索:混合打分

要找一段记忆,怎么搜最快?阿奇用混合检索:

1
final_score = 0.4 × 语义相似度 + 0.4 × BM25分数 + 0.2 × 时间衰减
  • 语义相似度:理解”天气”和”下雨”是相关的
  • BM25:经典的全文搜索算法
  • 时间衰减:越近的记忆权重越高

心跳维护:定期”整理房间”

记忆系统需要定期维护,阿奇用心跳机制触发:

频率 任务
每次心跳 清理工作记忆溢出
每6次心跳 短期记忆降级检查
每20次心跳 索引重建
每100次心跳 全量去重、统计报告

文件结构

1
2
3
4
5
6
7
8
memory/
├── MEMORY.md # 长期记忆核心
├── AGENT-INDEX.md # Agent 索引
├── LESSONS.md # 经验总结
├── 2026-03-28.md # 每日日志
├── lessons-learned/ # 错误案例
├── projects/ # 项目状态
└── preferences/ # 用户偏好

每个文件都有明确用途,会话启动时自动加载。

实施效果

这套系统上线后,阿奇的变化:

  • 不再失忆:跨会话记住用户偏好和历史决策
  • 不再唠叨:去重机制避免重复记录
  • 找得快:混合检索响应时间 < 100ms
  • 省资源:内存占用控制在 100MB 以内(适合手机)

小结

记忆系统是 AI 助手的”灵魂”。没有记忆,再聪明的 AI 也只是一个”每次都要重新认识你的陌生人”。

三层架构、去重机制、统一检索、心跳维护——这套组合拳,让阿奇真正”记住”了我是谁。


下一步:让阿奇学会”遗忘”——自动清理过期信息,保持记忆新鲜度。