模块 6 / 10

记忆系统 (Memory)

跨会话持久化——Agent 不会"失忆",你也不用重复说同样的话。

预计阅读时间:10 分钟

📑 本模块目录

  1. 两类 Memory
  2. Memory 的运作方式
  3. 操作命令
  4. Memory Backend
  5. 最佳实践
1 两类 Memory
维度User ProfileAgent Memory
存什么用户是谁——姓名、角色、偏好、环境Agent 的笔记——项目路径、工具版本、踩过的坑
谁写Agent 观察到用户信息后自动保存Agent 主动保存环境事实、约定、经验
目标减少用户重复自我介绍积累跨会话知识,越用越聪明
示例"用户偏好直接执行,不要确认""JDK 21 路径在 /opt/jdk-21"
💡 好的 Memory:跨会话仍然有效的事实。不要存会话进度、TODO、commit SHA 等一周后就过期的信息。原则:如果 7 天后还需要这个信息,就存。

2 Memory 的运作方式

Memory 在每个 turn 的 System Prompt 构建时自动注入(Layer 3 和 Layer 4)。Agent 看到 Memory 就像看到"背景知识"——不需要主动查询。

flowchart LR A["Agent 会话"] --> B["Memory 自动注入
System Prompt Layer 3+4"] B --> C["Agent 基于 Memory 工作"] C --> D{"学到新事实?"} D -->|"是"| E["保存到 Memory"] D -->|"否"| F["继续"] E --> G["下次会话自动加载"]

Memory 有字符预算(默认 2,200 字符)。快满时需要合并优化——删掉过时条目、缩短冗余内容、为新事实腾空间。


3 操作命令
# 配置
hermes memory status   # 查看状态
hermes memory setup    # 配置 Backend
hermes memory off      # 关闭 Memory

# config.yaml
memory:
memory_enabled: true
user_profile_enabled: true
provider: builtin  # builtin / honcho / mem0

4 Memory Backend

🏠 builtin

默认。SQLite 存储,零配置。数据在 state.db 中。

🧠 Honcho

独立 Memory 服务。支持向量搜索、对话级记忆隔离。需要 hermes honcho setup。

🧪 Mem0

云端 Memory。自动提取实体、关系。适合多 Agent 共享记忆。


5 最佳实践

✅ 该存的

  • 用户偏好和习惯
  • 环境配置路径
  • 工具版本、兼容性问题
  • 项目约定和命名规范

❌ 不该存的

  • 会话进度、TODO
  • 临时文件路径
  • PR 号、Issue 号、commit SHA
  • 一周内会过期的信息
📌 要点
  • User Profile 存"你是谁",Agent Memory 存"什么环境"
  • Memory 自动注入 System Prompt,Agent 无需主动查询
  • 字符预算有限,定期清理过时信息
  • 不要存会话进度——用 session_search 回溯