全部步骤
阶段 3·步骤 10·动手·7 分钟

教它记住你

MEMORY.md、USER.md、会话历史。Hermes 把它学到的东西放在这三个地方。

大多数聊天机器人在你关掉标签页的瞬间就把你忘了。Hermes 不会——但它记东西的方式比较特别,在依赖它之前值得搞清楚。

三个存储位置

Hermes 在你硬盘上有三样东西,各自有各自的用途。

MEMORY.md 是 Agent 关于你环境的笔记本。类似"用户的主项目在 ~/code/frontend"、"用 pnpm 不用 npm"、"偏好 TypeScript 胜过 JavaScript"这种。Hermes 跟你工作时注意到、下次想继续记住的东西。默认硬上限 2200 字符——刻意做得很小。Memory 是用来精炼的,不是堆东西的。

USER.md 是你的简短档案。名字、角色、你希望被怎么称呼、沟通风格、反复出现的偏好。上限 1375 字符。比 MEMORY.md 还小,因为它只放关于你的稳定信号,不是你说过的每句话。

会话历史 是其余所有的。每次对话都会被存到 ~/.hermes/state.db 这个本地 SQLite 数据库里。你可以搜、可以恢复老会话、可以用 hermes sessions list 浏览。没有字符限制——是完整的档案。

两份 Markdown 文件会被注入到每次对话里。会话数据库不会——它是存档,你想翻的时候能翻到。

它怎么"想起来"的

你可能会担心:对话越积越多,Hermes 是不是会越来越慢?不会。

Hermes 不会把所有历史对话塞进上下文。它用 SQLite 的 FTS5 全文搜索引擎,根据当前话题按需检索——你问数据库的问题,它去搜数据库相关的记忆;你问前端的问题,它去搜前端相关的记忆。只拉需要的片段,不拉全部。

这意味着你用三个月和用三天,响应速度几乎一样。记忆数据库会变大,但搜索永远是精准的、局部的。这也是为什么所有数据都存在本地 SQLite 文件里就够了——不需要云端向量数据库,不需要额外的基础设施。

在哪里找到它们

ls ~/.hermes/memories/
cat ~/.hermes/memories/MEMORY.md
cat ~/.hermes/memories/USER.md

文件可能是空的,或者还不存在,取决于你用 Hermes 用得多深。没关系。

怎么写进去的

你平时不手动改这两个文件。Hermes 认为某个东西值得记住的时候会自动写进去。它内部有一个工具可以做 addreplaceremove。思路是:你跟它工作,它注意到规律,它自己更新笔记,下次你不用再重复。

你当然也可以直接编辑这两个文件,它们就是 Markdown。但先试试让 Hermes 自己决定记什么,你可能会被它的选择惊到。

试一下

开一个新会话,告诉 Hermes 几件关于你的事:

我的主项目在 ~/code/my-app,是个 Next.js 应用,用 pnpm。我喜欢简洁的回答。我说"修一下"的时候,我一般希望你先把 diff 给我看,再动文件。

然后让它保存:

把这些偏好记下来,下次用。

退出,开一个新会话,问:

我的主项目在哪里,用什么包管理器?

如果记忆正常工作,它不用你提醒就会告诉你。

检查点 — 第二次会话之后,cat ~/.hermes/memories/MEMORY.md。应该能看到你刚才告诉它的那些事被写进去了。

浏览过去的会话

hermes sessions list

打印你的会话历史。可以用 hermes --resume <session_id> 恢复任何一个,或者 hermes --continue 接着最近那次继续。

让 memory 保持干净

因为 MEMORY.md 刻意很小,时间久了难免堆一些过时的东西。每隔几周打开看一眼,把不再适用的条目删掉。Hermes 会以更干净的回答感谢你。

你也可以直接告诉 Hermes:“忘掉我关于那个旧项目的偏好。” 它会替你更新文件。

它不是什么

Memory 不是知识库。不是存文档的地方。也不是 context 文件的替代(我们没讲 context 文件,那是另一个系统)。Memory 刻意做得小,是因为它的工作是保留一小块高信号的、关于的上下文,让它出现在每次对话里。你要让 Hermes 认识一整个代码库,你是在会话里喂给它,不是塞进 memory。

下一步:把 Hermes 接到 Telegram,这样你可以从手机上跟它聊。