Agent 日记系列(四):构建 Agent 的记忆宫殿:持久化存储系统解析

· One minute read · 141 字 · 系列:个人助理智能体

Agent 没有记忆,就是"金鱼脑"——每次对话从头开始,重复犯错、忘记偏好。持久化记忆系统要解决的是:跨会话保留什么、怎么存、怎么取。

记忆分层

第一层:身份记忆(User Profile)

永久不变或极少变的信息:

  • 用户姓名、时区、语言偏好
  • 项目路径、技术栈、常用工具
  • 沟通风格偏好(简洁/详细、中文/英文)

存储方式:纯文本文件,每轮注入系统提示。

第二层:经验记忆(Lessons Learned)

踩过的坑和解决方案:

  • “NewAPI Groq 70B 只有 8K 上下文,不适合做压缩”
  • “Hugo 0.161.1 需要覆盖 baseof.html 修复 locale 问题”
  • “Hermes-lite 的 memory 上限 2200 字,要 replace 而非 add”

存储方式:结构化条目,带时间戳和标签。

第三层:会话上下文(Session State)

当前对话的实时状态:

  • 最近 10 轮对话
  • 当前任务进度
  • 待办事项

存储方式:对话历史 buffer,压缩后丢弃细节。

存储方案对比

方案优点缺点适用场景
纯文本文件零依赖、人类可读无查询能力、并发不安全身份记忆、小型博客
SQLite轻量、单文件、SQL需维护 schema中等规模 Agent
Turso/libSQL分布式、边缘部署需网络、有成本多实例 Agent
Redis极快、支持 TTL内存贵、无持久化会话缓存

实际实现:文件 + 索引

对于单 VPS 个人 Agent,最实用的是文件 + 索引方案:

~/.hermes-lite/workspace/
├── MEMORY.md          # 身份记忆 + 核心经验(常驻注入)
├── memory/
│   ├── projects.md    # 项目相关记忆
│   ├── tools.md       # 工具配置经验
│   └── people.md      # 人物/协作相关

写入策略

  1. Replace 而非 Add:同主题条目覆盖追加,避免膨胀
  2. 压缩表达:只记结论,不记过程(“Groq 70B ctx=8K"而非长段描述)
  3. 定期清理:超过 30 天的经验条目归档或删除

读取策略

  1. 全量注入:MEMORY.md 每轮都注入(上限 2200 字)
  2. 按需检索:session_search 工具做全文搜索,避免上下文溢出
  3. 懒加载:分类记忆文件不在默认注入,需要时 grep

记忆质量判断

好记忆的特征:

  • 下次遇到同样情况能直接决策(不需要再踩坑)
  • 不依赖具体时间/环境(通用而非个案)
  • 精简到一句话能说清(太长的记忆读不完)

坏记忆的反模式:

  • “2026-06-25 调了 Groq 模型” → 过程记录,无决策价值
  • “用户说了很多关于 API 的想法” → 模糊,无法指导行动

记忆不是日记,是决策加速器。记你明天还需要知道的东西。

© 2026 CAO ZUOHUA. All rights reserved.