乐于分享
好东西不私藏

OpenClaw、Claude Code、Hermes Agent 记忆系统比较

OpenClaw、Claude Code、Hermes Agent 记忆系统比较

● ● ●

1. 背景与理论框架

1.1. 核心问题

大语言模型本身是无状态的——每次调用都从零开始,它不记得任何事情。这个根本约束决定了所有 Agent 框架都必须在模型外面搭一套记忆系统,并回答四个架构问题: 存什么、存在哪、怎么取、怎么管 。

1.2. 记忆的四个层次

Agent 记忆通常被划分为四种类型,其中 外部记忆 和 情景记忆 是三个框架差异最大的地方:

记忆类型
特征
三家差异度
上下文记忆 (In-context)
Token 窗口内,零延迟,会话结束即消失
无差异
外部记忆 (External)
文件、数据库、向量库,跨会话存活
差异大
情景记忆 (Episodic)
“做过什么、怎么做的、结果如何”的结构化记录
差异最大
参数记忆 (Parametric)
模型训练权重中的知识
无差异

● ● ●

2. OpenClaw:文件系统即记忆

2.1. 核心设计

OpenClaw 的记忆架构建立在一个极简原则上: 没有写进文件的,不存在 。所有长期状态必须持久化到磁盘上的 Markdown 文件里,文件本身就是记忆的存储介质,也是人机协作的接口。

为什么选择文件而不是数据库? 文件的人类可读性、手动可编辑性和 Git 版本可回溯性是数据库不具备的。代价是查询能力远不如数据库。

2.2. 三层记忆结构

层级
存储位置
内容
加载策略
短期记忆 (Daily Log)
memory/YYYY-MM-DD.md
当天活动 append-only 日志
当日 + 昨日自动注入
近端记忆 (Sessions)
sessions/ 目录
完整会话存档
对话过长时冲刷到此
长期记忆
MEMORY.md
偏好、决策、持久事实
每次 DM 会话自动加载

这套分层设计的核心思想是: 模型不需要知道所有事,只需要知道此刻最相关的事 。

2.3. 检索机制:BM25 + 向量混合搜索

底层以 SQLite 为基础,建立 FTS5 全文索引和 sqlite-vec 向量索引,支持语义搜索与精确匹配的混合检索。向量维度为 1536,且具备优雅降级能力——如果没有安装向量扩展,系统回退到 JS 暴力计算。

2.4. 长期记忆演进:Dreaming 系统

OpenClaw 设计了一套名为 “Dreaming” 的后台记忆巩固系统,通过 Cron 定时任务自动运行,将短期信号逐步转化为长期记忆。Dreaming 由三个阶段组成,按顺序依次执行: Light → REM → Deep 。


  • Light :识别当日日志中的关键信息

  • REM :跨日志关联,发现模式和趋势

  • Deep :将经过验证的模式写入长期 MEMORY.md

2.5. 核心痛点


  • 记忆只进不出 :OpenClaw 的 MEMORY.md 是纯追加模式,用几个月就膨胀成几万行的“怪兽文件”,患上了“数字囤积症”。

  • 提炼依赖人工 :从日志升级到长期记忆主要靠人手动维护,自动化程度有限。

  • 记忆质量不稳定 :写入决策完全由 LLM 自主判断,无结构化约束。

● ● ●

3. Claude Code:分层索引的 Hint 型记忆

3.1. 核心设计

Claude Code 的记忆系统定位为 Hint 型记忆 ,以项目为单位的文件系统方案,提供结构化分层组织。它没有一个庞大的知识库,而是将记忆划分为多个主题文件,通过一个索引文件串联。

3.2. 四层架构

层级
文件
说明
CLAUDE.md
CLAUDE.md (项目/个人/组织三级 scope)
静态规则文件,由用户手动编写
Auto Memory
memory/ 目录(MEMORY.md 索引 + 多主题 .md)
Agent 会话中自动记录,200 行索引上限
Auto Dream
后台压缩整理
空闲时合并碎片化记忆
KAIROS (未发布)
常驻守护进程模式
源码泄露中发现,尚不开放

用户写入的 CLAUDE.md 是静态的、预先设定的规则;而 Auto Memory 是动态的——Agent 在会话中发现有价值的信息时,会自动保存为 Markdown 文件。

3.3. 四种记忆类型

系统通过 memoryTypes.ts 严格定义了四种记忆类型,各有明确的作用域和存储规则:

类型
用途
作用域
举例
User (用户记忆)
角色、职责、偏好
始终私有
“用户是数据科学家,专注于日志系统”
Feedback (反馈记忆)
用户纠正、偏好反馈
私有/团队
“集成测试必须用真实数据库,禁止 mock”
Project (项目记忆)
决策、截止日期、技术选型
团队共享
“认证模块重写是由合规需求驱动的”
Reference (参考记忆)
外部系统指针
团队共享
“Bug 跟踪在 Linear INGEST 项目”

每个笔记是独立的 Markdown 文件,MEMORY.md 充当索引——每行不超过 150 字符的简短标签指向详细文件,Claude 先读索引再按需拉取具体文件。

3.4. 存储路径

~/.claude/projects/<project-path>/memory/ ├── MEMORY.md          # 索引文件,每行一个条目指针 ├── user_role.md       # 用户的角色和技能 ├── feedback_testing.md # 测试规范的反馈 ├── project_auth.md    # 认证模块的决策 └── reference_linear.md # 外部工具引用

3.5. 核心痛点


  • 200 行索引硬上限 :最多约 200 条记忆,超出无法写入。

  • 仅精确关键词匹配 :搜索依赖关键词匹配,“port conflicts”搜不到“docker-compose mapping”。

  • 记忆不出 Claude Code :切换到其他 Agent 从零开始。

  • 无中长期记忆桥接 :Auto Dream 能处理几天内的杂讯,但无法跨越月级时间。

● ● ●

4. Hermes Agent:主动学习型的自进化记忆

4.1. 核心设计

Hermes Agent 的记忆系统是其“自我成长”能力的核心支撑。它设计得极为克制——核心记忆仅由 两个纯文本文件 承载,用 § 分隔条目:

~/.hermes/memories/ ├── MEMORY.md   # Agent 的个人笔记(环境事实、项目约定、工具怪癖) └── USER.md     # Agent 对用户的认知(偏好、沟通风格、工作习惯)

  • MEMORY.md :限 2,200 字符

  • USER.md :限 1,375 字符

这两个严格的上限产生了巧妙的设计效果:容量有限迫使 Agent 挑重要的事情记,不重要的自然被挤掉。与 OpenClaw 的“只进不出”形成鲜明对比——Hermes 通过硬约束迫使 Agent 做信息压缩,过时的自然被淘汰,留下的都是高密度事实。

4.2. 超限处理机制

当新记忆会导致超限时,Hermes 选择让 add 操作直接失败,并把当前所有条目返回给 LLM,让模型自己决策保留什么、删除什么——而非静默丢弃或自动压缩。这种设计赋予模型对记忆的完全掌控权。

4.3. 三层记忆架构

层级
存储方式
功能
瞬时记忆层
Redis 缓存
毫秒级响应,最大 100 MB/Session
工作记忆层
SQLite + FTS5 全文搜索 + 向量索引
跨会话语义检索,10 万条对话关键信息召回率 92.3%
长期记忆层
MEMORY.md + USER.md
结构化知识,字符硬上限约束

工作记忆层的 FTS5 检索引擎支持 TB 级上下文数据的毫秒级检索,辅以 LLM 生成的摘要,确保 Agent 能想起数周前的对话细节。

4.4. 主动触发与自我进化

Hermes 的最大区别在于 触发时机的主动性 。OpenClaw 是被动触发式记忆——用户说“记住”才会记;Claude Code 做到了主动记录,但底线是“对事不对人”。

而 Hermes 的记忆系统是 有机的 :


  • 自动记忆写入 :Agent 自主判断哪些信息值得存入 MEMORY.md/USER.md

  • Skill 自主创建 :当 Agent 调用 5 次以上工具、自我纠错或被用户纠正后,自动将成功经验蒸馏为结构化的 Skill 文件。如果后续发现更优路径,还会通过“补丁”方式优化已有技能

  • Nudge Engine :定时提醒 Agent 回顾历史,检查是否有值得提炼的经验

  • 用户建模(Honcho 引擎) :感知用户的回复风格偏好(简洁 vs 详细)、领域背景(资深工程师 vs 初学者),实现“辩证式”用户理解

4.5. 记忆冻结快照

MemoryStore 维护两组平行状态——实时可写的条目列表和会话开始时冻结的快照。这种设计保证了前缀缓存效率——同一会话中 system prompt 不必反复变化。

● ● ●

5. 记忆压缩算法深度对比

记忆的“存储”只是手段,“记住该记的、忘掉该忘的”才是目的。三个框架在 压缩算法上的分歧 ,比存储结构上的分歧更本质——它直接决定 Agent 长期运行后的信息密度有多高。

5.1. OpenClaw:渐进式巩固(Dreaming 管线)

OpenClaw 不删除数据,而是通过 “巩固” 模拟人类睡眠的记忆加工过程,将原始日志逐级抽象。其压缩管线可抽象为三层提炼:

原始日志 (Daily Log)     │     ▼ Light : 提取当日实体、决策、关键事件,消除时间线冗余,生成结构化摘要     │     ▼ REM : 跨日志关联,合并重复事实,识别模式(如“用户总是拒绝 Docker 方案”)     │     ▼ Deep: 将高置信度模式蒸馏为持久记忆规则,写入 MEMORY.md

压缩策略特征 :


  • 算法类型 :提取式摘要 + 多步关联推理,基于 LLM 提示链

  • 核心机制 :不丢弃任何原始数据,原始日志始终保留;上层提取物仅作为快捷索引

  • 压缩比 :无硬约束,压缩比取决于 LLM 输出长度,典型 20:1~50:1

  • 信息丢失风险 :极低(原始完整日志可回溯),但检索效率随日志膨胀而线性下降

  • 遗忘控制 :无主动遗忘机制,冗余信息通过人工清理实现

优劣 :信息保真度最高,但“数字囤积症”是最大代价——三个月后 Agent 调取记忆需要扫描数万行日志。

5.2. Claude Code:索引合并 + 摘要头

Claude Code 的压力来自 200 行索引硬上限 。当记忆条目逼近阈值时,需执行压缩。其 Auto Dream 机制运作方式如下:


  • 碎片合并 :将多个内容高度重叠的笔记文件合并为一个概括性文件,原文件被新文件替代

  • 生成摘要头 :每个记忆文件开头生成一句不超过 150 字符的摘要行,作为索引条目

  • 索引瘦身 :合并后旧索引行删除,总索引行数不突破 200 行阈值

压缩策略特征 :


  • 算法类型 :合并式压缩 + 提取式摘要,单向不可逆

  • 核心机制 :基于 LLM 的文本整合,产生一个“覆盖旧事实的新版本”,旧细节永久丢失

  • 压缩比 :强制遵守索引上限,驱动压缩频率;压缩比受条目数量驱动,无固定值

  • 信息丢失风险 :高,细节在合并中可能被平滑掉,特别是低频但重要的边缘案例

  • 遗忘控制 :类似“覆盖式遗忘”——新综合描述替代细粒度历史记录,无法回退

优劣 :查询极快(索引文件仅 200 行),但语义保真度在迭代压缩中持续衰减,对长期跨项目知识积累不友好。

5.3. Hermes Agent:有界淘汰 + 模型自主裁剪

Hermes 的压缩由其 硬字符上限 驱动,不依赖后台定时任务,而是在记忆写入时实时判断。实现机制分两层:


  • 原子写入失败触发 :当 add 操作超过字符上限时,API 返回失败,同时将现有全部条目序列化后送入 LLM

  • 模型自主决策 :LLM 需要同时完成两件事——评估新记忆的重要程度,并从现有条目中 自选淘汰对象 。它可能选择: 直接丢弃新记忆(如果新信息重要性低) 删除一条旧的不再相关的条目(如一个已修复的工具 Bug 怪癖) 将两条高度相关的旧条目压缩合并为一条高密度表述,腾出空间 重新权衡全局优先级,进行大规模重排

压缩算法可以被形式化为一个受限优化问题:

给定现有记忆集合 M,每条记忆 m_i 有价值分数 s_i(LLM 自行评估),总字符约束 C_max,新记忆 m_new 的估计价值 s_new。求解子集 M’ ⊆ M ∪ {m_new},满足 ∑ len(m_i) ≤ C_max 且 ∑ s_i 最大化。

压缩策略特征 :


  • 算法类型 :淘汰式裁剪 + 信息高度浓缩,LLM 作为剪枝函数

  • 核心机制 :硬约束倒逼;淘汰在写入时刻 同步 完成,不依赖后台定时任务

  • 压缩比 :确定性的 2,200 / 1,375 字符硬分割,信息密度随时间持续上升

  • 信息丢失风险 :中等,且有“结构性遗忘”风险——被淘汰的条目不可恢复

  • 遗忘控制 :主动自然淘汰——旧的不相关记忆被新信息挤出,模仿人类有限记忆模型

对比 OpenClaw 的“只进不出”和 Claude Code 的“后台合并覆盖”,Hermes 的淘汰是显性、有记录且由模型全权决策的 ——每次决策都是一个完整的记忆管理对话回合。

5.4. 压缩算法三向对比

维度
OpenClaw
Claude Code
Hermes Agent
压缩触发时机
后台定时(Cron)
后台空闲时自动触发
写入超限时实时同步触发
压缩方法
三阶段提取式巩固,原始数据永存
多文件合并 + 摘要头生成,覆盖旧文件
模型自主裁剪 + 淘汰或浓缩,旧条目不可恢复
压缩约束
无上限约束,压缩为优化索引
200 行索引上限驱动
硬字符上限 2200/1375 强约束
信息丢失模式
无丢失,但检索效率逐日衰减
细节在合并中消失,不可逆
模型自选遗忘对象,记忆密度递增
遗忘哲学
不遗忘,只提炼
新版覆盖旧版,事实被平滑
主动选择性遗忘,模仿人类记忆
适合的长期运行时序
知识库型长期积累
中短期项目周期
长期自主学习与自适应 Agent

● ● ●

6. 三框架核心对比总览

对比维度
OpenClaw
Claude Code
Hermes Agent
设计哲学
文件是唯一真理
Hint 型记忆,按需加载
主动学习,自我进化
存储介质
Markdown + SQLite + 向量索引
Markdown 索引文件体系
有界 MD + SQLite + FTS5
记忆分层
三级(日志→会话→长期)
四层(CLAUDE.md→Auto Mem→Dream→KAIROS)
三层(瞬时→工作→长期)
长期记忆上限
无(纯追加,易膨胀)
200 行索引硬上限
硬约束(2,200 + 1,375 字符)
检索方式
BM25 + 向量混合搜索
精确关键词匹配
FTS5 全文搜索 + LLM 摘要
触发方式
被动(用户说“记住”)
主动但“对事不对人”
主动,全历史检索
压缩算法
三阶段提取式巩固,原始数据不丢
合并式压缩 + 摘要头,覆盖旧版
实时淘汰式裁剪,模型自主决策
遗忘/压缩哲学
不遗忘,只提炼(数字囤积)
新覆盖旧,细节被平滑
主动选择性遗忘,密度持续上升
自动化程度
低(人工提炼为主)
中(自动记录但需用户指导)
高(Skill 自动蒸馏 + Nudge)
跨会话连续性
48 小时日志 + 长期文件
项目内持久化
跨会话主动检索历史
可迁移性
本地文件,可移植
绑定 Claude Code 生态
记忆插件可切换,全局共享
核心局限
数字囤积症,记忆质量不稳
无语义搜索,记忆量小
硬上限可能丢失细节

● ● ●

7. 选型建议

场景
推荐框架
理由
知识库型长期积累 / 需完整审计
OpenClaw
信息不丢失,文件透明可审计,适合需要完整记录的场景
AI 编程 / 项目周期中短期协作
Claude Code
精准上下文管理,索引式快速定位,与开发流程深度集成
需自主进化、长期共处的智能伙伴
Hermes Agent
主动学习、自适应压缩,从工具进化为“另一半脑”
追求极致简化同时保持成长性
Hermes Agent (轻量部署)
两个文件即可承载完整长期记忆,自然淘汰噪音
多 Agent 协作 / 团队共享记忆
OpenClaw + 共享记忆插件
支持记忆按客户隔离、跨 Agent 共享与版本回溯

三个框架的压缩算法分歧,本质上是对「完美记忆」与「有用记忆」的不同追求—— OpenClaw 保证你什么都不丢,Claude Code 保证你找得快,Hermes Agent 保证你记下的都是值得的 。没有绝对优劣,核心取决于你对 Agent 的定位:是一个需要你精心照料的无限记事本,还是一个能自己打理记忆、越用越懂你的智能伙伴。