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. 核心痛点

  1. 记忆只进不出:OpenClaw 的 MEMORY.md 是纯追加模式,用几个月就膨胀成几万行的"怪兽文件",患上了"数字囤积症"。
  2. 提炼依赖人工:从日志升级到长期记忆主要靠人手动维护,自动化程度有限。
  3. 记忆质量不稳定:写入决策完全由 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. 核心痛点

  1. 200 行索引硬上限:最多约 200 条记忆,超出无法写入。
  2. 仅精确关键词匹配:搜索依赖关键词匹配,"port conflicts"搜不到"docker-compose mapping"。
  3. 记忆不出 Claude Code:切换到其他 Agent 从零开始。
  4. 无中长期记忆桥接:Auto Dream 能处理几天内的杂讯,但无法跨越月级时间。

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

4.1. 核心设计

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

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

这两个严格的上限产生了巧妙的设计效果:容量有限迫使 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 的记忆系统是有机的

  1. 自动记忆写入:Agent 自主判断哪些信息值得存入 MEMORY.md/USER.md
  2. Skill 自主创建:当 Agent 调用 5 次以上工具、自我纠错或被用户纠正后,自动将成功经验蒸馏为结构化的 Skill 文件。如果后续发现更优路径,还会通过"补丁"方式优化已有技能
  3. Nudge Engine:定时提醒 Agent 回顾历史,检查是否有值得提炼的经验
  4. 用户建模(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 机制运作方式如下:

  1. 碎片合并:将多个内容高度重叠的笔记文件合并为一个概括性文件,原文件被新文件替代
  2. 生成摘要头:每个记忆文件开头生成一句不超过 150 字符的摘要行,作为索引条目
  3. 索引瘦身:合并后旧索引行删除,总索引行数不突破 200 行阈值

压缩策略特征

  • 算法类型:合并式压缩 + 提取式摘要,单向不可逆
  • 核心机制:基于 LLM 的文本整合,产生一个"覆盖旧事实的新版本",旧细节永久丢失
  • 压缩比:强制遵守索引上限,驱动压缩频率;压缩比受条目数量驱动,无固定值
  • 信息丢失风险:高,细节在合并中可能被平滑掉,特别是低频但重要的边缘案例
  • 遗忘控制:类似"覆盖式遗忘"------新综合描述替代细粒度历史记录,无法回退

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

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

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

  1. 原子写入失败触发 :当 add 操作超过字符上限时,API 返回失败,同时将现有全部条目序列化后送入 LLM
  2. 模型自主决策 :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 的定位:是一个需要你精心照料的无限记事本,还是一个能自己打理记忆、越用越懂你的智能伙伴。

相关推荐
山顶夕景9 小时前
【LLM】DeepSeek-V4模型架构和训练流程
agent·deepseek·推理优化·混合注意力
运维开发王义杰9 小时前
深入探索 AppleScript:它能做些什么?macOS 是否有更底层的 API?
agent
谭文涛博士9 小时前
智能竞品分析多Agent系统【附带源码】
大模型·agent·竞品分析
AI_小站18 小时前
6个GitHub爆火的免费大模型教程,助你快速进阶AI编程
人工智能·langchain·github·知识图谱·agent·llama·rag
陈佬昔没带相机19 小时前
Git Worktree: AI 编程 Agent 并行开发的秘密武器
git·agent
qcx231 天前
Warp源码深度解析(四):AI Agent原生集成——MCP协议、代码索引与Skills系统
人工智能·ai·agent·源码解析·wrap
hrhcode1 天前
【LangGraph】四.持久化:保存和恢复执行状态
python·ai·langchain·agent·langgraph
一直会游泳的小猫1 天前
Kode-Agent:新一代多模型协作 AI 编码助手
agent·ai助手·ai 编码工具·kode
Lw老王要学习1 天前
本地部署OpenClaw + WSL Ubuntu + 千问云+QQ+微信+飞书
ubuntu·llm·agent·openclaw·龙虾