这一页只解决一件事: 把真正值得跨会话保留的信息,写进 Hermes 的持久记忆里,让它在下一次新会话里更像是真的记住了你。

🎯 先说结论:不是“什么都记”,而是“只记高价值事实”
很多人第一次接触记忆,会自动把它想成:
- 聊过的都会永远记住
- 上一轮说过的,下次一定还能接上
- 历史聊天会自动完整带进新会话
这 3 种理解都不对。
Hermes 的持久记忆更像一个刻意压小的长期备忘区:
- 有边界
- 有容量限制
- 只保留高价值事实
- 不是整段会话历史回放
一句话记住: 持久记忆不是“自动记住一切”,而是“提前保留最值得下次直接知道的东西”。
✨ 这件事为什么现在就值得做
当你已经开始稳定使用 Hermes,下一步最容易遇到的问题就是:
- 每次都要重复说自己的偏好
- 每次都要重新解释环境事实
- 明明已经踩过的坑,下次还要再讲一遍
这时记忆层的价值就出来了。
它能帮你减少重复沟通,尤其是这些内容:
- 你的语言和回答偏好
- 你的角色、时区、工作方式
- 稳定环境事实
- 项目长期约定
- 已确认过的复用经验
这页的重点不是“记得越多越厉害”。 而是“记得越准越值钱”。
📦 持久记忆放在哪里
默认目录通常是:
~/.hermes/memories/
如果你使用了自定义 HERMES_HOME,就是:
$HERMES_HOME/memories/
官方默认这一层主要看两份文件:
USER.mdMEMORY.md
这两份合起来,才是这里说的“持久记忆”。
🧭 USER.md 和 MEMORY.md 到底怎么分
这是这一页最关键的分层。
| 文件 | 该记什么 | 典型内容 | 官方默认字符上限 |
|---|---|---|---|
USER.md | 用户是谁、喜欢怎样被协作 | 语言偏好、回复风格、角色、时区、技术熟悉度、长期习惯 | 1,375 chars(约 500 tokens) |
MEMORY.md | 环境、项目、约定、经验事实 | 机器信息、工具约束、仓库常识、工作流纠正、稳定可复用的教训 | 2,200 chars(约 800 tokens) |
最短记法:
USER.md记“你这个人”MEMORY.md记“你所在的环境与事情”
如果主语是“你喜欢怎样回答、怎样协作”,更像 USER.md。
如果主语是“这台机器、这个项目、这个工作流有什么稳定事实”,更像 MEMORY.md。
✅ 什么该记,什么不该记
适合放进 USER.md 的
- 中文优先还是英文优先
- 喜欢短答还是展开答
- 先结论后展开,还是先分析后结论
- 讨厌什么表达方式
- 长期角色、时区、协作偏好
适合放进 MEMORY.md 的
- 这台机器的稳定环境事实
- 项目的长期约定
- 已经确认过的工作流纠正
- 反复会遇到的环境坑和正确做法
- 下次做同类任务仍然有用的经验
不该放进去的
- 一次性任务进度
- 临时 TODO
- 某次排障里才有用的短期上下文
- 大段日志、代码、表格原文
- API key、密码、令牌、隐私敏感数据
- 已经属于 SOUL.md 或
AGENTS.md的内容
判断标准很简单: 如果这条信息下周、下个月仍然值得在新会话一开始就带进来,它才像持久记忆。
🔀 短期上下文、持久记忆、session_search 不是一回事
这 3 个最容易混。
短期上下文
解决的是: 当前这段会话里刚刚聊过什么。
比如:
- 我们刚刚排到第几步
- 刚才哪个命令报了什么错
- 这个需求今天改到哪了
持久记忆
解决的是: 下次新会话开始时,Hermes 仍然默认值得知道什么。
比如:
- 你偏好先结论后展开
- 你默认用中文协作
- 这个项目状态默认按北京时间写
session_search
解决的是: 需要时再去翻历史会话,而不是把它们常驻进每个新会话。
一句话记住:
- 短期上下文 = 当前正在聊什么
- 持久记忆 = 下次开场也该知道什么
session_search= 需要时再翻旧账
⚙️ 这些记忆是怎么生效的
这里有一个很关键的机制:
USER.md 和 MEMORY.md 会在每次新会话开始时载入,然后进入系统提示里的一个 frozen snapshot。
这意味着:
- 新会话启动时,Hermes 会先读取磁盘上的两份记忆文件
- 然后把当时的内容注入系统提示
- 注入之后,这一会话拿到的是当时那一版快照
所以常见误解是: “我明明已经改了文件,为什么当前会话还像没变?”
最常见答案就是: 因为你改的是磁盘上的长期记忆,但当前会话已经带着旧快照开始了。
🛠️ 现在具体怎么做
按这个顺序做就够了:
第 1 步:先选一条最值得长期保留的内容
第一次别贪多。 先只写 1 到 3 条最容易验证的长期事实。
例如:
- 中文优先
- 默认先结论后列表展开
- 这个项目状态汇报默认用北京时间
第 2 步:分清写到 USER.md 还是 MEMORY.md
如果是“你喜欢怎样协作”,写 USER.md。
如果是“环境和项目有什么稳定事实”,写 MEMORY.md。
第 3 步:写短、写清楚、写可复用
不要写成长篇叙事。 尽量写成简洁稳定的条目。
例如:
# USER
- 默认使用中文回答
- 优先先给结论,再用列表展开
- 不确定时直接说明不确定
# MEMORY
- 本项目状态汇报默认使用北京时间
- 这台机器上的 Hermes 配置目录以 ~/.hermes 为准
- 同类排障时先检查 toolsets 和模型 provider,再看业务逻辑
第 4 步:开新会话验证
不要在当前会话里反复追问“你是不是记住了”。 最稳的方法是结束当前会话,然后开一个全新会话验证默认表现。
🔍 怎么判断自己改成功了
最稳的最小自检流程是:
- 在
USER.md或MEMORY.md写入一条非常清晰、可观察的长期事实 - 结束当前会话
- 新开一个会话
- 问一条能明显看出差异的问题
例如:
- 在
USER.md写:默认先给结论,再用列表展开,控制在短句内 - 然后新开会话问:请给我一个建议,并说明你会怎样回答
什么算成功:
- 新会话一开始就更贴近你的偏好
- 不需要你重新提醒,它也会默认这样协作
- 它表现出来的是风格和行为变化,不只是机械复述你写的原文
🩺 如果没生效,先检查这 6 件事
-
你是不是还在旧会话里验证
- 改完后先开新会话
-
你是不是写错文件了
USER.md和MEMORY.md不在仓库里,在~/.hermes/memories/或$HERMES_HOME/memories/
-
你是不是把短期上下文硬塞进长期记忆
- 一次性进度和临时报错不该放这里
-
你是不是把人格内容写进记忆了
- 长期说话风格优先放 SOUL.md
-
你是不是写得太长、太碎、太难复用
- 第一次先保留最关键几条
-
你是不是把敏感信息写进去了
- 持久记忆不是保险箱,不要放秘钥和隐私数据
如果你确认不是记忆边界问题,而是会话、CLI 或环境本身有异常,先看:
- [04-CLI TUI 与会话问题](../../05-遇到问题/04-CLI TUI 与会话问题.md)
- [07-配置 Profiles 与环境隔离问题](../../05-遇到问题/07-配置 Profiles 与环境隔离问题.md)
✅ 这一页的过关标准
当下面这些状态已经成立,这一页就算通过:
- 你知道持久记忆不是“自动记住一切”
- 你能分清短期上下文、持久记忆、
session_search的边界 - 你能分清
USER.md和MEMORY.md各记什么 - 你知道什么该记、什么不该记
- 你知道为什么很多改动要到下一次新会话才真正生效
- 你已经完成一次“写入后开新会话”的验证
➡️ 下一步
完成后进入:
如果你想先回到上一阶段入口重新确认位置: