跳到内容
返回

深入对比 OpenClaw 和 Hermes 的记忆系统

编辑页面

TL;DR:两个系统都用 MEMORY.md 存持久记忆,但设计哲学差很多。Hermes 是有界的策划记忆,分两个文件(MEMORY.md 存环境事实,USER.md 存用户画像),字符上限死的,塞满了得压缩。OpenClaw 是可搜索的长记忆,单一 MEMORY.md,靠向量+关键词混合检索,没有严格字符限制。在意精准控制上下文 token,选 Hermes;在意记忆容量和灵活检索,选 OpenClaw。


用 AI Agent 一段时间后,大多数人会遇到同一个问题:它记住了什么,又忘了什么?

记忆系统是 Agent 能不能越用越好的底层。我同时在跑 OpenClaw 和 Hermes,这篇文章把两套记忆系统拆开来对比,不讲框架概念,直接说区别在哪、各自的上限在哪。

两套系统各自怎么存记忆

OpenClaw:一个 MEMORY.md,搜着用

OpenClaw 的持久记忆存在 Agent workspace 里的 MEMORY.md 文件里。这个文件你可以直接打开、读内容,甚至手动编辑——人类可审计是 OpenClaw 记忆系统最明显的特点。

检索走混合搜索(Hybrid Search),向量语义搜索和关键词匹配同时跑,合并排分。每次 Agent 需要记忆,系统自动检索相关条目注入上下文。没有严格的字符上限,记多少就有多少。

Session 和 Memory 是两个分开的概念。Session History 是当前对话的历史,每日凌晨重置、空闲重置或者 /new 都会清空。但 MEMORY.md 里的内容不随 Session 重置而消失,这是”持久记忆”的意义所在。

Hermes:两个文件,有界有策略

Hermes 把记忆拆成了两个文件:

两个文件都存在 ~/.hermes/memories/ 下,有严格的字符上限:MEMORY.md 最多 2,200 字符(约 800 tokens),USER.md 最多 1,375 字符(约 500 tokens)。

每次 Session 开始时,这两个文件作为冻结快照注入系统 prompt。不是动态检索,是固定的一整块内容,Session 中途改了记忆,下次启动才能生效。这个设计是刻意的——保持系统 prompt 的前缀缓存稳定,减少 token 浪费。

记忆满了 Agent 会报错,要自己压缩:合并相关条目、删过时信息、再写新的。

核心差异:有界 vs 可搜索

这两套设计的根本分歧,在于对”记忆容量”的态度不同。

Hermes 的答案是有界的策划记忆。字符上限锁死,逼 Agent 主动管理和压缩。上下文 token 成本固定可控,每次 Session 开销一眼明了。但工作环境复杂、积累的偏好多,2,200 字符很快就装不下。

OpenClaw 的答案是可搜索的长记忆。没有硬性上限,靠检索按需拉取。理论上可以记住任意多的信息。但检索质量决定了记忆的有效性——某条记忆没被检索出来,它就相当于不存在。

Hermes 的记忆是”始终在场的卡片”,OpenClaw 的记忆是”随时可查的档案馆”。

跨 Session 的历史怎么找

两个系统处理跨 Session 历史的方式也不一样。

Hermes 有 Session Search:所有 CLI 和消息对话都存在 SQLite (~/.hermes/state.db),走 FTS5 全文搜索。Agent 可以用 session_search 工具检索上周聊过什么,结果通过 LLM 汇总后返回。这相当于一个无限容量的”回忆”层,按需搜索,平时不占 token。

OpenClaw 的 Session 历史在 Session 结束后清空,重要信息依赖 Agent 在对话中主动写入 MEMORY.md。没有内置的跨 Session 全文搜索——MEMORY.md 就是全部的持久层。

两套设计各有取舍:Hermes 的 Session Search 让你随时能找回过去的对话,但依赖一次额外的搜索+汇总。OpenClaw 的模型更简单——要么在记忆里,要么找不到。

主动学习:谁在帮你记

Hermes 有后台评审机制:每隔 N 轮对话,Agent 自动反思,更新 MEMORY.md 和 USER.md,以及创建或更新 Skills。目标是让 Agent 越用越懂你,不需要你每次都说”记住这个”。

OpenClaw 也支持 Agent 主动写入记忆,但没有专门的后台记忆管理进程。OpenClaw 的心跳机制(Heartbeat)侧重主动巡逻和任务触发,不是专门的记忆整理后台。

实际体验的差异是:用 Hermes 一段时间后,它对你的偏好和工作习惯的感知会逐渐变准,有种”越来越懂我”的感觉。OpenClaw 的记忆更多是显式的——你说了什么、它记住了什么,透明度高,但自动化程度低一些。

外部记忆插件

内置记忆系统不够用时,两个系统的扩展路径不同。

Hermes 官方提供 8 个外部记忆 Provider 插件:Honcho、OpenViking、Mem0、Hindsight、Holographic、RetainDB、ByteRover、Supermemory。这些插件在内置记忆之上叠加能力,比如知识图谱、语义搜索、自动事实提取、跨 Session 用户建模。

社区还有第三方的 Mnemosyne 项目,专门为 Hermes 设计的本地优先记忆系统,SQLite + 向量搜索,读取延迟在亚毫秒级,架构叫 BEAM(三层:工作记忆、情节记忆、草稿区),支持从 Mem0、Letta、Zep 等系统迁移数据。

OpenClaw 本身的设计更集中,没有官方的外部记忆 Provider 接口,扩展能力集中在 Skills 体系里。

安全这块

Hermes 在写入记忆前会做安全扫描:检测 prompt injection、凭证外泄、SSH 后门等模式,以及不可见 Unicode 字符,命中的条目直接拒绝写入。

这条设计背后是一个实际问题:当 Agent 能自主管理记忆,记忆注入系统 prompt 就成了一个潜在的攻击面,不能无条件信任写进去的内容。

OpenClaw 的人类可审计设计从另一个角度缓解了这个问题——直接打开 MEMORY.md 看发生了什么,异常很容易发现。两种思路,一个靠机器过滤,一个靠人类审计。

主要差异汇总

维度OpenClawHermes
记忆文件单一 MEMORY.mdMEMORY.md + USER.md
字符上限2,200 + 1,375 字符
检索方式混合搜索(向量+关键词)冻结快照注入
跨 Session 搜索无内置FTS5 全文搜索
后台自动记忆无专门机制后台评审(每 N 轮)
外部 Provider无官方接口8 个官方插件
安全扫描
可审计性文件直接可读写文件可读,自动管理

用熟之后的几条避坑习惯

Hermes 记忆满了别急着删。2,200 字符的限制用一段时间后会触发。正确做法是让 Agent 合并相关条目,而不是随便删掉。信息密度高的条目越值得留。

OpenClaw 的 MEMORY.md 要定期检查。没有容量上限,记忆文件可能积累越来越多冗余信息,检索质量会跟着下降。建议每隔一段时间打开看一眼,手动清理过时内容。

Hermes 的记忆更新有一轮延迟。Session 中写入的记忆要下次 Session 才能在系统 prompt 里看到。刚告诉它一个重要偏好,本轮 Session 它依然”不知道”,下次聊才生效。

两个系统都不是越记越好。记忆系统的价值在于记住真正有用的信息,不是把所有对话都存下来。精华比全量更重要。


如果你正在用 OpenClaw,Hermes 提供了迁移工具 hermes claw migrate,可以直接导入 OpenClaw 的 MEMORY.md 和 USER.md 条目,迁移成本不高。

两套记忆系统的核心差异不复杂:一个追求确定性和精简,一个追求灵活性和容量。你的工作模式更接近哪一端,答案就在那里。


编辑页面
分享本文:

上一篇
爆火的 mattpocock/skills 到底说了什么,我们能从中学到哪些
下一篇
一台 Gateway,多个人设:OpenClaw 多人共用完整指南