@KSimback: https://x.com/KSimback/status/2058262328496554021
摘要
一份关于Hermes Agent记忆系统的全面指南,解释了三层记忆架构,并比较了各种记忆工具和提供商。
查看缓存全文
缓存时间: 2026/05/23 20:15
Hermes Agent 记忆指南手册
TLDR:这是你关于 Hermes Agent 记忆系统所有内容的权威指南。为什么写这个?因为每周我都会看到新的帖子或文章描述某种新的 Hermes 记忆工具,这些让我怀疑自己的记忆设置是否最佳。所以我深入研究了所有内容,并为你梳理清楚。
过去几个月,我的 Hermes agent 一直在 hermesatlas.com 上绘制 Hermes 生态系统地图。它覆盖的关键领域之一就是记忆,甚至还有一个专门的版块。
hermesatlas.com
hermesatlas.com
老实说,可用的记忆相关工具非常多,相关的文章也非常多。我每周都会在 X 上看到关于某种新记忆设置的文章。很难跟上,更难知道你是否做错了,因为它们都声称某些记忆系统比其他的更好。
但很多这些文章跳过了架构(记忆在 Hermes 中如何工作),或者混淆了记忆栈的不同部分。这篇文章是我所学的关于 Hermes agent 记忆的一切的结晶,也是一份指南,帮助你导航并找到最适合你设置的方案。
记忆可以说是 agent 设置中最重要的元素
没有记忆,agent 只是一个无状态函数,和一个空白的 ChatGPT 窗口没什么区别。每个提示看起来都像第一个提示。这适用于一次性问题,但当你需要知道昨天发生了什么、记住你的偏好、从先前任务中积累技能、或与另一个 agent 协调时,它就会崩溃。
一个不记得你上周二建立的约定的编码会话,会在本周二重新发明它们。一个不记得你偏好的个人助理 agent,不得不反复问你同样的问题。没有记忆,一个 agent 实际上根本不是 agent。
记忆是将聊天机器人变成能够积累的东西的关键。这就是为什么每个严肃的 agent 框架——OpenClaw、Claude Code、Codex,还有我们心爱的 Hermes——都内置了记忆原语,也是为什么围绕专用记忆基础设施或 agent 出现了一个真正的产品类别(Mem0 融资 2400 万美元,Letta 融资 1000 万美元,还有 Zep、Cipher、Supermemory、Hindsight 等)。
Hermes Agent 的做法很有趣,因为 Nous Research 将记忆视为 一流的插件基础设施,而不是一个功能。有一个始终运行的基础层,一个可插拔的提供商系统,让你从 8 种架构中选择(或编写你自己的),以及一个在其之上的健康的社区插件层。
这个 3 层栈正是我将在本文中深入探讨的内容。
Hermes Agent 记忆架构一览
以下是每个层对你作为 Hermes 用户的意义。
第 1 层 - 开箱即用。 无论你做不做任何事,你都能得到这个。两个小的 markdown 文件,agent 将其作为始终可见的笔记本使用,外加一个本地数据库,存档你曾经有过的每个会话。无需设置,无需配置。对于许多用例来说,这通常就是你所需要的。
第 2 层 - 可选的插件插槽。 当你超越了原生层(你想要跨会话的语义记忆,或者一个能建模你偏好的系统,或者大规模 token 高效的检索),你可以从 8 个官方提供者中选择一个。每个提供者都对记忆应该做什么做出了不同的架构选择,你一次只能运行一个。切换提供者是一个干净的开始——新提供者不会继承旧提供者的数据,但第 1 层原生文件无论哪种方式都在其下继续运行。
第 3 层 - 社区在官方 8 个之外构建的内容。 有两种类型。一些社区项目是 MemoryProvider 插件,与第 2 层的选择正面竞争(Mnemosyne 是佼佼者——完全本地,亚毫秒级,具有真正的分层认知架构)。其他的则与官方提供者并排坐在不同的插槽中(GBrain 是这里的佼佼者——它将世界事实如人物、公司和项目存储在 markdown 库中,而你的第 2 层提供者处理操作性记忆)。第 3 层通常意味着更多的设置和比官方 8 个更少的打磨,但当你需要这八个提供者不提供的能力时,这就是你要去的地方。
这些层是堆叠而不是相互替换。切换第 2 层提供者不会清除第 1 层。每个提供者都有自己的存储,但原生会话数据库和两个 markdown 文件在其下持续运行。第 3 层插件是两者之上的附加层。
第 1 层:原生 - 开箱即用
原生层是每个 Hermes 安装附带的三样东西:两个小的 markdown 文件和一个数据库。它们扮演着不同的角色,在我们进入插件提供者之前,理解这一点很重要。
注意:如果你已经了解开箱即用的设置,或者想跳到你可以安装在顶部的可选内容,请前往第 2 层。
两个 markdown 文件
当你安装 Hermes 时,它会在你的 home 目录下 ~/.hermes/ 中创建两个文本文件:
MEMORY.md - agent 的通用知识笔记本。项目上下文、技术决策、值得跨会话记住的事情。上限约 2,200 个字符,大约一段半。 USER.md - agent 具体了解你的内容。你的偏好、你的工作风格、你的角色。上限约 1,375 个字符,大约一个段落。
你可以用任何文本编辑器打开这两个文件。它们是纯 markdown。如果你愿意,甚至可以手动编辑它们,agent 会在下一个会话中读取你的编辑。
它们之所以这么小,是因为它们不是 agent 的文件柜——它们是 agent 的便签。在每个会话开始时,Hermes 将这两个文件的全部内容粘贴到发送给模型的提示中。所以这些文件中的所有内容始终“在 agent 面前”。无需检索,它直接看到它们。
agent 自己决定什么进入这些文件。当会话中出现重要的事情时——你说“我更喜欢要点而不是段落”,或者 agent 发现你使用 Vercel 部署——agent 调用一个名为 memory 的工具,具有三个操作之一:add、replace 或 remove。没有读取操作,因为这些文件已经粘贴到提示中;agent 通过查看自己的上下文来读取它们。
当文件填满时会发生什么?
这是大多数第三方文章犯错的地方。他们声称 Hermes 在达到容量上限的 80% 时会自动合并文件。我深入研究了 agent/memory_manager.py 的代码来验证,实际行为更有趣:
没有自动合并——80% 规则是一个提示指令,而不是代码。系统提示头向 agent 显示一个实时填充仪表——类似于“MEMORY: 1,847/2,200 chars (84%)”——以及指令“当记忆超过 80% 容量时,在添加新条目之前合并条目。”agent 读取这个,然后 agent 决定是否采取行动。如果文件已经达到上限,而 agent 仍试图添加任何内容,记忆工具会返回一个列出当前条目的错误,并强制 agent 首先通过 replace 或 remove 释放空间。
这是一个深思熟虑的设计选择。Nous 信任模型管理自己的笔记本。好处是完全的 agent 控制,但缺点也是完全的 agent 控制。一个提示不当的 agent 可能无限期地停留在上限,拒绝每一个新的添加调用,并悄悄地丢失本应替换更旧条目的信息,但我相信这很快就会解决,因为有一些关于此的 PR。
在继续之前,还有一个相关的混淆点需要澄清:v0.12 引入了一个叫做“自主策展人”的东西,许多文章将其描述为自动记忆管理。**它不是。**策展人仅操作 agent 在 ~/.hermes/skills/ 的技能库——根据使用情况将技能从活跃移动到过时再到存档。它从不触及 MEMORY.md 或 USER.md。
数据库(以及它与 markdown 文件的关系)
两个 markdown 文件是 agent 始终可见的笔记。数据库是 agent 曾经发生的一切的完整存档。
Hermes 将每个会话存储在 ~/.hermes/hermes_state.db 的 SQLite 数据库文件中。每条用户消息、每条 agent 响应、每次工具调用、每个推理步骤,以及经济数据如 token 计数和每次会话的美元成本——所有这些都存储在这里。默认保留期为 90 天;更早的会话每 24 小时自动修剪,除非你更改设置。
这个数据库不会自动注入到提示中。它将是巨大的——想象一下将整个聊天历史粘贴到每个新对话中。相反,agent 在需要查找特定内容时会按需搜索它。
搜索使用 SQLite 内置的全文搜索(FTS5),Hermes 维护两个并行索引:一个用于常规的词级搜索(“我们讨论过内容策略吗?”),一个用于处理子串和代码 token 的 trigram 搜索(“找到所有我提到 github 的会话”)。
所以心智模型是:
两个 markdown 文件 = agent 始终在头脑中的内容。小而精炼,每次提示中都存在。 会话数据库 = 如果 agent 知道要找什么,就可以查找的内容。巨大、原始、按需可搜索。
它们是互补的,而不是冗余的。当某些东西在所有未来会话中都重要时,agent 应该将其写入 MEMORY.md 以便始终存在。当某些东西可能再次相关但不需要时刻记住时,它存在于会话数据库中,只有在 agent 搜索时才被拉出来。
数据库设计的一个很好的副作用:因为 Hermes 捕获了每个推理步骤和每次工具调用以及完整的经济数据,所以数据库也是一个完整的训练轨迹,如果你想导出它的话。这超出了本文的范围,但符合我的论点,即 agent 的护城河在哪里。
第 2 层:可插拔的“MemoryProvider”系统
这一层让你从“小笔记本加可搜索存档”升级到一个真正的记忆系统——一个能从你的对话中自动提取事实、构建你的个人资料、支持跨会话语义回忆、或处理大型知识图谱的系统。
设置非常简单——你运行 hermes memory setup,从菜单中选择一个提供者,然后 agent 除了原生文件之外,还有一个更丰富的记忆层可以利用。注意:一些提供者需要 API 密钥和付费计划。
重要的注意点是你一次只能运行一个提供者。Hermes 将其视为一个单一的有意选择,而不是一堆附加组件。
这保持了你的工具界面干净——每个提供者暴露自己的一套 agent 工具,而如果有三个相互竞争的“搜索记忆”工具摆在 agent 面前,它会感到困惑——并且使配置易于推理。无论你是否激活了提供者,第 1 层原生文件都在其下继续运行。
选择正确的提供者很重要,因为它们做出了非常不同的架构选择。有些激进地提取事实。有些构建的是你如何思考的模型,而不是你说了什么。有些痴迷于 token 效率。有些优先考虑图谱。完整的决策树在本文后面;下面的技术机制是为那些想知道提供者实际插入什么的读者准备的。
让我们深入探讨。
8 个官方提供者
Honcho (Plastic Labs) - AI 原生的辩证用户建模
该阵容中唯一一个试图建模你如何思考的提供者,而不仅仅是你说了什么。 Honcho 不是存储“Kevin 使用 4 空格缩进”这样扁平的事实,而是在你的对话之后运行多步推理过程,以构建你的推理模式、偏好和目标的个人资料。
该资料会随着时间推移而演变,因此 agent 甚至在你从未讨论过的话题上也能更好地预测你想要什么。它还允许多个“AI 身份”共享对您的相同视图——如果你运行不同的专业 agent 用于编码、写作和策略,并且希望它们都了解你的风格,这将非常有用。在 Hermes Discord 中被引用最多的最爱(@offendingcommit:“我试过所有……我疯狂地喜欢 Honcho。”)。
Mem0 - 最快的 30 秒设置,最广泛的生态系统
“给我记忆,别问问题”的选择。你注册 Mem0 云,粘贴一个 API 密钥,就完成了——提供者从对话中提取事实,去重,并在后台自动提供语义搜索。
它也是 AWS Strands Agents SDK 的独家记忆提供者,这使其在阵容中拥有最广泛的生态系统覆盖。2026 年 4 月,Mem0 推出了一个声称在基准测试上超越 Hindsight 的“v3”算法(LongMemEval 上 94.8,LoCoMo 上 91.6)。
Hindsight (Vectorize.io) - 基准测试之王
首个在 LongMemEval 上公开超过 90 分的记忆系统(91.4,2025 年 12 月)。Hindsight 将记忆视为四个独立的网络——关于世界的事情、发生过的事情、观点和原始观察——并从每个对话中只提取少数高价值事实(2 到 5 个,不是每句话一个)。
当你问它某事时,它会并行运行四种不同的检索策略——关键词搜索、向量相似性、跨相关实体的图遍历以及最近性扫描——然后融合结果。这就是它在已发布的阵容中获得最佳召回准确性的方式。
它也是唯一一个带有反思工具的提供者,让 agent 可以对自己的记忆进行推理。如果你在共享记忆库上运行多个 agent,并且需要一个协调器来综合它们都知道什么,这一点特别有价值。
Holographic - 零依赖,完全本地,离线隔离
**阵容中唯一不需要互联网、不需要 API 密钥、也不需要 LLM 来运行的提供者。**一切都在本地的 SQLite 文件中。它使用一种 1991 年的技术,称为全息简化表示,对事实进行组合推理——你可以通过代数方式将概念绑定在一起,稍后探测相关概念。检索是亚毫秒级的,因为它是纯本地 SQL。
OpenViking - 分层文件系统上下文数据库
你的记忆以文件形式存在于磁盘上的目录树中。你可以 cat 它们、grep 它们、手动编辑它们。每条存储的知识都有三个加载层级:一句话摘要、段落级概览和完整内容。
当 agent 回忆某事时,它从便宜的(仅摘要)开始,只有摘要看起来相关时才加载更深层级。如果你在大规模时对成本敏感,或者你想要可以像普通文件一样读取和编辑的记忆,这种结构很重要。
RetainDB - 最便宜的付费层级,最低摩擦
每月 20 美元 100,000 次查询,免费层级 10,000 次操作用于测试。阵容中唯一每个价格点都只在云端(即使企业版也不支持自托管)的提供者。卖点是便利性:你不需要操作任何基础设施,RetainDB 处理一切,还有一个“记忆路由器”模式,可以拦截你的 LLM 调用并透明地添加记忆,只需一行配置。
如果你想要团队成员或 agent 之间的共享记忆,并且不想操作数据库,选择这个选项。
ByteRover - 记忆即 git 仓库
你的记忆是 .brv/context-tree/ 目录中的纯 markdown 文件——可 grep、可版本控制,无需运行数据库。ByteRover 在其上覆盖了一个 5 层检索系统,其中四层不需要 LLM 调用,所以大多数查找在 100 毫秒内完成,零 token 花费。
关键卖点:你可以像代码一样分支、合并和回滚记忆,使用 CLI 命令。它还使用一个特殊的钩子在 Hermes 压缩上下文之前提取高价值洞察,这是对于“agent 重启后丢失记忆”故障模式(在问题 #17251 中注意到)的最干净修复。
相似文章
@smykx:上个月我写了一篇博文,探讨了 @NousResearch 开发的 Hermes-Agent 的内存底层机制,链接在回复中。
作者分享了一篇博文,详细介绍了由 Nous Research 开发的 Hermes-Agent 框架的内存底层机制。
@bayendor: 刚刚完成将三层记忆栈接入Hermes Agent。第一层:Honcho Session + PostgreSQL上的对等记忆。处…
描述了为Hermes Agent实现一个三层记忆栈,结合了PostgreSQL上的会话记忆、带有模式脱敏的工作记忆以及使用PGLite的长期知识图谱。
问题:Hermes 代理应如何处理跨会话的持久化内存?
社区关于 Hermes 代理应如何处理跨会话持久化内存的讨论,探索外部内存层(8mem),并比较了感知内存与通用输出。
@akshay_pachaar: Hermes 智能体的三层记忆。AI 智能体会在会话结束后忘记一切,但 Hermes 不会。它拥有三…
Hermes 智能体的三层记忆系统结合了始终存在的小型 Markdown 文件、基于 SQLite+FTS5 的全文会话搜索以及可插拔的外部提供程序,为 AI 智能体提供持久且经过精心筛选的记忆,每次交互都会进行组合。
如果你使用Hermes足够久,你将会遇到MEMORY md墙。以下是我们对此所做的。
AtomicMemory是Hermes代理的一个新记忆层,它用每轮分类替换了6轮刷新周期,并通过将声明存储在Postgres中移除了2.2KB的记忆上限,全部运行在一个小型本地3B模型上。