Hermes 记忆系统深度分析:5 层记忆架构 vs OpenClaw——"不是记更多,是记对的东西"

> 来源: X/Twitter 原文

> 作者: Manthan Gupta (@manthanguptaa),AI Research Engineer

> 互动: 546 赞 / 1,092 收藏 / 133K 浏览

> 之前的 Hermes 报告: Hermes Agent 深度研究

> 研究时间: 2026-03-21

🎯 一句话版本

一位 AI 研究工程师通读了 Hermes Agent 的源码,发现它有 5 层记忆系统(热记忆+冷搜索+压缩刷盘+技能+用户模型),核心设计哲学是"prompt 稳定性优先"——不是记更多,是在正确的层、以正确的成本记正确的东西。

📝 背景

Manthan Gupta 之前写过 ChatGPT、Claude、OpenClaw 的记忆系统分析,这次是 Hermes Agent。不同之处:Hermes 开源,所以他直接读源码,不是黑盒逆向工程。

这篇文章在 X 上获得了 1,092 收藏——说明 Agent 记忆架构是当前开发者社区最关注的话题之一。

🧠 Hermes 的 5 层记忆架构

Layer 1: Frozen Prompt Memory(热记忆)

文件用途限制
`MEMORY.md`环境/惯例/工具怪癖/教训**2,200 字符**
`USER.md`用户偏好/沟通风格/身份**1,375 字符**

合计 ~1,300 tokens。故意很小。

关键设计:

超过限制怎么办? 写入工具会直接拒绝。源码有容量检查,超了返回错误,逼模型先 replaceremove 旧内容腾位置。这才是核心——不是"记不下就扩容",而是逼模型做优先级排序。就像只有一张 A4 纸写备忘录,写满了就得擦掉不重要的才能写新的。

三个改进一起构成第一层的设计:

1. 硬字符限制 — 控制 prompt 大小

2. 冻结快照 — 会话中改了也不立即生效,保护 prompt cache

3. 策展式管理 — 只存高价值事实,拒绝临时内容

Layer 2: session_search(情节回忆)

所有历史会话存在 SQLite (state.db):

检索流程:


FTS5 搜索 → 按 session 分组 → 解析父子关系
→ 截取相关片段 → 用便宜模型摘要 → 返回精炼结果

哲学:热记忆保持小,真实历史在 SQLite,按需检索,返回前先摘要。

为什么不用向量数据库?

FTS5向量数据库
依赖**零**(SQLite 内置)需要 embedding 模型 + 专门的 DB
速度毫秒级取决于索引大小
成本**免费**embedding 调用有成本
语义理解❌ 关键词匹配✅ 语义相似

FTS5(Full-Text Search 5)是 SQLite 内置的全文搜索引擎,用倒排索引实现毫秒级关键词检索。Agent 历史会话有明确关键词,FTS5 够用,且零依赖、零成本。搜到结果后用便宜模型摘要,补足语义短板。

FTS5 的中文问题

FTS5 默认用空格分词,英文没问题,但中文"部署脚本写好了"会被当成一整个 token。解决方案:

Hermes 主要面向英文,用默认 unicode61。中文场景需额外处理。

Layer 3: Compression Memory Flush(压缩前刷盘)

这是最精妙的设计——当对话太长需要压缩时:


长对话 → 注入"保存值得记住的"指令
→ 用只有 memory 工具的额外模型调用
→ flush 持久事实到 MEMORY.md/USER.md
→ 压缩旧轮次 → 重建 prompt(含新记忆)→ 继续

给模型"最后一次机会"在对话被压缩前提取关键信息。 压缩后重建 prompt snapshot,刷新后的记忆立即生效。

Layer 4: Skills(程序记忆)

Layer 5: Honcho(可选用户模型)

前四层都是本地的(文件/SQLite/Skills 都在 ~/.hermes/)。Honcho 解决的问题是:换台电脑,记忆全没了。

双 Peer 建模

Peer观察来源学到什么
**用户**用户消息偏好、目标、沟通风格、习惯
**AI 助手**助手消息自己的知识边界、行为模式

不只是记住你,还记住"我自己是什么样的"。换一个 Agent 接手时,新 Agent 能知道"上一个 Agent 是怎么跟这个用户互动的"——对多 Agent 协作很有价值。

不破坏 prompt cache 的秘诀

Dialectic Reasoning(辩证推理)

Honcho 不只存键值对,它用 LLM 生成"关于用户的推理":

> "这个用户倾向于先看架构全局再看细节,给他解释时应该 top-down"

这种推理比"用户喜欢简洁回复"更深一层,是行为模式级别的理解。支持 5 级推理深度(minimal → low → medium → high → max)。

跨平台同步

在笔记本上用 Hermes 聊了一周,回家换台式机——Honcho 把偏好、沟通风格、项目上下文同步过来,不用重新"教"它。支持 per-sessionper-directoryper-repoglobal 四种会话策略。

代价

依赖云服务(app.honcho.dev),需要 API key。不像前四层完全本地。这也是为什么设计成可选的。

🆚 Hermes vs OpenClaw 记忆对比

维度OpenClawHermes
存储方式Markdown 文件SQLite + 小 Markdown
记忆大小无硬限制,可能很大**严格限制**(3,575 chars)
注入方式全量注入 prompt冻结快照 + 按需检索
历史回忆混合搜索 stored notesFTS5 搜索 SQLite + 摘要
程序记忆Skills(类似)Skills(类似)
用户模型无专门层Honcho(可选)
Cache 友好一般(记忆变大 prompt 变)**优先**(冻结+延迟更新)

作者的判断:Hermes 更 cache-aware。OpenClaw 是"记忆=可搜索知识",Hermes 是"热工作集+冷检索层"。

> "I actually think this is the right direction for production agents. Not everything deserves to live in the system prompt."

💡 作者总结的三个关键洞察

1. 分离热记忆和冷召回

小 prompt memory 放永远重要的。搜索给偶尔需要的。

2. Prompt 稳定性是一等约束

冻结快照、延迟 prompt 更新、轮级 Honcho 注入、压缩后重建——所有设计都指向同一原则:不要随便改 prompt,否则缓存失效、延迟上升、成本飙升。

3. 记忆是复数的

一个存储解决不了所有问题:

💡 与我们的关联

1. 我们的 MEMORY.md 问题被精准点名

作者说 OpenClaw "append-only flavor to daily logs"——这正是我们面临的问题。MEMORY.md 越来越大,每次全量注入,token 成本线性增长。

2. 压缩前刷盘值得立即采用

Hermes 的 compression flush 模式(压缩前给模型一次"保存重要内容"的机会)非常聪明。我们可以要求 OpenClaw 在压缩前执行类似操作。

3. 与 OpenViking 形成互补

今天调研的 OpenViking 也是分层加载(L0/L1/L2),和 Hermes 的"热+冷"理念一致。两者可以结合:

4. 字符限制 vs Token 限制

Hermes 用字符限制(2,200 chars)而非 token 限制,因为不同模型 tokenizer 不同。这是一个简单但实用的设计决策。

5. 安全扫描记忆内容

写入 MEMORY.md 的内容实际上成为未来 system prompt 的一部分。Hermes 扫描注入/凭证/后门——我们也应该做。

6. 实施路线

短期

中期

长期

📊 评分

维度评分(/10)
技术深度9.5 — 源码级分析,5 层架构拆解清晰,对比公允
原创性8.5 — 系列文章的集大成,但核心洞察(热/冷分离)不算全新
实用性9.0 — 每个层都有清晰的设计理由和实施启示
社区影响8.5 — 1,092 收藏说明戳中了痛点
与我们的关联9.5 — 直接点名 OpenClaw 的问题,提供了具体改进方向
**综合****9.0**

报告由深度研究助手自动生成 | 2026-03-21

来源: X/Twitter 原文