我读了 Hermes 的记忆系统,发现 AI 记性好不是好事
凌晨翻到一篇长文,Manthan Gupta 写的,讲 Hermes Agent 的记忆系统。
他之前写过 ChatGPT 的记忆、Claude 的记忆、OpenClaw 的记忆,翻来覆去一个问题:这些 agent 到底是怎么”记住”的?
这次不一样。Hermes 是开源的,不用黑盒猜,直接看代码。
看完之后我最大的感受就一句话——
记性好,对 AI 来说可能不是优点。
先说 Hermes 做了什么。
它没有”一个”记忆系统。它有四层。
第一层是最小的,两个文件:MEMORY.md 和 USER.md。加起来不到 3600 个字符,大概 1300 个 token。记什么?用户偏好、环境信息、踩过的坑。不记什么?任务进度、对话结果、临时 TODO。
第二层是 SQLite 数据库,存所有历史对话。用的时候才搜,不用的时候躺在那里。
第三层是 skills,相当于”程序性记忆”——不是记住了什么事实,而是记住了怎么做一件事。
第四层是可选的 Honcho,做跨会话的用户建模。
听起来复杂?但核心设计原则极其简单:
让 prompt 保持稳定,其他一切推到工具里去做。

这里有个很有意思的对比。
OpenClaw 的记忆是 Markdown 优先的,日志式的,append-only。像写日记,一天天堆上去。
Hermes 反着来。它说:不,记忆不该是日记。记忆应该是策展过的状态。
它明确告诉自己的 memory 工具:
保存用户偏好。保存环境事实。保存反复出现的纠正。
不要保存任务进度。不要保存对话结果。不要保存临时状态。
这个区别乍一看很小,往深了想其实很大。
日记的逻辑是”都记下来,以后有用”。策展的逻辑是”只留真正重要的,其余的该扔就扔”。
你想想人脑是怎么工作的。你不会记住每天早上刷牙的每一个细节,但你会记住”这家牙膏太辣了下次不买”。前者是流水账,后者是经验。
Hermes 做的就是把流水账和经验分开。

更狠的是它的压缩机制。
当对话太长,需要压缩中间部分时,Hermes 不会直接截断。它会先做一件事——
往对话里注入一条指令:
“对话即将被压缩。把值得记住的东西存下来。”
然后单独调一次模型,只给它 memory 工具的权限。模型自己判断哪些东西值得留,写进 MEMORY.md 或 USER.md。写完之后再压缩。
让 AI 自己决定什么值得记住。
这个设计让我愣了几秒。
大多数人做记忆系统,想的是”怎么让 AI 记住更多”。Hermes 想的是”怎么让 AI 在忘记之前,把该留的留下”。
这不是记忆。这是遗忘管理。

再往下挖一层。
Hermes 为什么要花这么大力气保持 prompt 稳定?
因为 prompt 缓存。
大模型提供商会对重复的 prompt 前缀做缓存。前缀不变,推理速度更快、成本更低。所以 Hermes 把 prompt 分成了”冻结的”和”动态的”两部分。冻结的部分每次会话只加载一次,动态的部分按需注入。
这就引出了一个我之前没意识到的问题:
记忆和成本,是绑在一起的。
你把越多东西塞进 prompt,每次对话就越贵、越慢。所以记忆不是越多越好——它是有代价的。
Hermes 的答案是分冷热。热的放 prompt 里,冷的放数据库里按需查。就像 CPU 的 L1 缓存和内存的关系。
等等——这不就是计算机体系结构里早就解决了的问题吗?
寄存器 → L1 → L2 → L3 → 内存 → 磁盘。每一层更大、更慢、更便宜。没有哪个系统会把所有数据都塞进寄存器。
但做 AI agent 的人,好像经常忘记这件事。
回头看最开始那个观点:记性好不是好事。
更准确的说法应该是——没有分层的记忆,越多越糟。
Hermes 真正做对的,不是它用了 SQLite 或者 FTS5 全文搜索。而是它承认了一件事:记忆不是单数的。语义记忆、情景记忆、程序性记忆、用户建模,各有各的位置,各有各的代价。
不是记得越多越好。
是把对的东西,放在对的层级,用对的代价。
你用的 AI 助手,是像写日记一样什么都记,还是像策展一样只留重要的?你觉得哪种更好用?
Manthan Gupta. I Read Hermes Agent’s Memory System, and It Fixes What OpenClaw Got Wrong. X/Twitter. https://x.com/manthanguptaa/status/2034849672985288957