05 · 记忆与召回
区分 Hermes 的 curated memory、USER.md、MEMORY.md、session_search 和外部 memory provider。
Hermes 的 memory 不是无限日志,而是“精选长期事实”。它的目标是让新 session 一开始就知道关键偏好、环境事实和项目约定。
两个核心文件
内置记忆在:
~/.hermes/memories/
├── MEMORY.md
└── USER.mdMEMORY.md 保存 agent 需要记住的环境和工作事实,例如项目约定、工具坑、完成过的关键工作。
USER.md 保存用户画像,例如沟通偏好、常用技术栈、明确偏好、反复纠正过的要求。
两者会在 session 启动时注入 system prompt。当前 session 中新增的记忆会写盘,但不会刷新当前 system prompt;新 session 才能看到。
该保存什么
适合保存:
- 用户明确偏好。
- 稳定环境事实。
- 项目长期规则。
- 反复出现的工具问题。
- 已验证过的修复结论。
不适合保存:
- 一次性任务细节。
- 大段日志。
- 大段代码。
- 临时文件路径。
- 可以从项目文档直接读到的内容。
记忆容量有限,应该保存高密度事实,不保存流水账。
session_search 是另一回事
session_search 是历史会话检索,不是 curated memory。
它适合问:
- 之前怎么修过类似问题。
- 某个长期任务上次停在哪里。
- 用户曾经纠正过什么。
- 某个项目以前跑过哪些命令。
它不适合替代 MEMORY.md。如果一条信息以后一定会反复用,就应该进 curated memory;如果只是可能需要回查,就留在 session history。
外部 memory provider
Hermes 支持外部 memory provider,例如 Honcho、OpenViking、Mem0、Hindsight、Holographic、RetainDB、ByteRover、Supermemory 等。
外部 provider 适合更复杂的长期用户建模或跨系统记忆,但不要一开始就接。先把内置 memory 用好,再判断是否需要外部 provider。
常用入口:
hermes memory setup
hermes memory status记忆治理
记忆最大的风险不是“不够多”,而是“脏”。错误记忆会持续污染后续 session。
推荐规则:
事实必须可验证
偏好必须来自用户明确表达
临时信息不入库
低密度内容先合并再保存
超过 80% 容量就主动压缩
发现错误立即 replace 或 remove好的 memory 会让 Hermes 越用越贴合;坏的 memory 会让它越来越固执。