🤖HermesBlog
Hermes 功能详解 · 第5篇2026/8/9· Easy Understand Hermes Agent

记忆后端——记忆存在哪里

Hermes 功能详解第5篇:记忆提供方。内置记忆、Honcho、各种记忆后端任你选。

记忆后端:记忆存在哪里

记忆后端——记忆存在哪里

嘿,朋友们!今天咱们来聊聊一个特别接地气的话题:Hermes 的记忆到底存哪儿了?

你可能已经用过 /remember 或者让 Agent 记住了一些事情,但有没有好奇过——这些记忆是放在云端、本地,还是某个神秘的小黑盒里?别急,咱们一层层扒开看。

记忆的“家”:本地文件

Hermes 默认把记忆存在你电脑上的 ~/.hermes/ 目录里。你可以把它理解成 Agent 的“日记本”——所有长期记忆、技能索引、配置文件,都安安静静躺在这个文件夹里。

想亲眼看看?打开终端,输入:

ls ~/.hermes/

你会看到一堆文件和文件夹,其中就有记忆相关的存储。放心,这些数据不会上传到任何云端,除非你主动配置了外部服务。

记忆的“外挂”:外部记忆后端

除了内置的 MEMORY.md 和 USER.md,Hermes 还自带 2 个外部记忆后端插件(RetainDB 和 ByteRover),能给 Agent 提供跨会话的持久知识;更多后端(比如 Honcho、Hindsight、Supermemory、Holographic)可以从插件目录里装。同一时间只能启用一个外部后端,内置记忆始终和它一起工作。

hermes memory setup      # 交互式选择 + 配置
hermes memory status     # 查看当前启用了什么
hermes memory off        # 关闭外部后端

也可以手动在 ~/.hermes/config.yaml 里指定:

memory:
  provider: retaindb  # 或者 byterover,
                      # 或者 honcho / hindsight / supermemory / mem0 / openviking / holographic
                      # (插件目录——先跑 `hermes plugins install <name>`)

启用后,Hermes 会自动把后端上下文注入系统提示词、在每轮对话前预取相关记忆、在回复后同步对话内容,并给 Agent 加上后端专属的记忆工具。内置记忆照常工作,外部后端只是“叠加”上去的。

还有一点值得知道:Hermes 交给后端的所有内容(对话轮次、包含工具输出的完整记录、召回查询、会话结束和压缩前的记录、镜像写入的记忆、委派结果,以及后端自己那些工具的参数),都会先过一遍和聊天平台、cron 投递相同的密钥擦洗,所以哪怕某个 key 被回显进了工具输出,也会在存进后端之前被遮掉。和投递擦洗一样,这个机制在 security.redact_secrets: false 时也照样生效。不过没有可识别形状的凭据(随便一个密码、不在 key=value 或 Bearer 上下文里的不透明 token)是检测不到的;你本地的记录里仍然保留原文。

顺带一提,每个后端的数据都是按 profile 隔离的,不同 profile 之间互不串味。

另外,记忆后端正在陆续搬到插件目录里,由各自的维护者在自己的仓库发布。对你来说没啥变化:后端名字、memory.<name> 配置、数据目录和工具都照旧。如果某个你配置过的后端不再随 Hermes 一起发布,hermes update 会自动为用到它的 profile 装上对应的目录插件;走桌面端更新的话,Agent 首次启动时也会做同样的事(除非 security.allow_lazy_installs 被设成了 false,那它会打印一行 hermes plugins install <name> 让你自己装)。

Honcho 也搬到了插件目录

Honcho 现在由 Plastic Labs 维护,从插件目录安装,不再随 Hermes 一起发布。它和以前内置的那个是同一个后端:工具、配置文件和 hermes honcho 命令都没变。

从内置 Honcho 升级: 早期版本里 Honcho 是随 Hermes 一起发布的。如果你的 profile 里还写着 memory.provider: honcho,Hermes 会在下次启动或跑 hermes update 时自动装上目录插件——你的 ~/.honcho/config.json(或 $HERMES_HOME/honcho.json)、host 配置、peers 和会话映射都照旧读取,记忆不会丢。想手动装、或者启动时没网,跑 hermes plugins install honcho 就行。

hermes plugins install honcho   # 从插件目录安装(会一起装上 honcho-ai SDK)
hermes memory setup             # 选择 "honcho"——会跑 Honcho 专属的后续配置

需要 API key 或者自建实例。配置文件是 $HERMES_HOME/honcho.json(profile 本地)或 ~/.honcho/config.json(全局),查找顺序是 $HERMES_HOME/honcho.json > ~/.hermes/honcho.json > ~/.honcho/config.json。细节见插件 README 和 Honcho 集成指南。

OpenViking 也搬到了插件目录

OpenViking 由火山引擎(Volcengine)维护,从插件目录安装,不再随 Hermes 一起发布。源码见 volcengine/OpenViking — examples/hermes-plugin。

# 先装并配置好 Hermes 插件
hermes plugins install openviking

需要 OpenViking 已经初始化、校验通过并且正在运行。

:::warning 插件会自己拉起服务 当端点在本机、又没有任何东西在监听时,插件会在后台启动 openviking-server。在当前目录版本里,这个 server 会继承 Hermes 进程的完整环境变量(除了 PYTHONPATH),包括你在里面设置的任何 bot、gateway 或 relay token。如果你在意这一点,就在启动 Hermes 之前自己先把 openviking-server 跑起来,这样插件就不会去拉它。这个问题的修复在上游跟进:volcengine/OpenViking#5553。 :::

从内置 OpenViking 升级: OpenViking 以前是随 Hermes 一起发布的。如果你的 config.yaml 里已经写了 memory.provider: openviking,大多数用户啥都不用做:

  • hermes update 会为每个用到它的 profile home 装上目录插件。
  • 如果 Agent 首次启动(hermes chat、gateway、Desktop)时插件还没装上,Hermes 会自动装好并告诉你。
  • 如果 security.allow_lazy_installs: false,Agent 启动路径不会装任何东西,而是打印出准确的 hermes plugins install openviking 命令让你自己跑。

memory.provider、memory.openviking.*、.env 里的 OPENVIKING_* 键、~/.openviking/ 以及你 OpenViking 服务器上的记忆都不变。用 hermes memory status 和 hermes plugins list 验证状态。

Mem0 也搬到了插件目录

Mem0 由 Mem0 官方维护,从插件目录安装,不再随 Hermes 一起发布。源码见 mem0ai/mem0 — integrations/hermes-plugin-mem0。

hermes plugins install mem0   # 从插件目录安装(会一起装上 Mem0 SDK)

需要 API key(平台版)、一个跑着的 Mem0 服务器(自托管 dashboard),或者一套 LLM + 向量库(OSS 版)。

:::warning 遥测 mem0ai SDK 会向 PostHog 发送匿名使用遥测,除非你在 shell 或 ~/.hermes/.env 里设了 MEM0_TELEMETRY=false。 :::

从内置 Mem0 升级: Mem0 以前是随 Hermes 一起发布的(还有 hermes-agent[mem0] 这个 pip extra)。如果你的 config.yaml 里已经写了 memory.provider: mem0,大多数用户啥都不用做:

  • hermes update 会为每个用到它的 profile home 装上目录插件。
  • 如果 Agent 首次启动(hermes chat、gateway、Desktop)时插件还没装上,Hermes 会自动装好并告诉你。
  • 如果 security.allow_lazy_installs: false,Agent 启动路径不会装任何东西,而是打印出准确的 hermes plugins install mem0 命令让你自己跑。

memory.provider、$HERMES_HOME/mem0.json、.env 里的 MEM0_* 键,以及存在 Mem0 Cloud、你的 Mem0 服务器或本地 OSS 存储里的记忆都不变。用 hermes memory status 和 hermes plugins list 验证状态。

Hindsight 从内置搬到了插件目录

Hindsight 以前是随 Hermes 一起发布的(还有 hermes-agent[hindsight] 这个 pip extra),现在改由 vectorize-io 维护、从插件目录安装。如果你的 config.yaml 里已经写了 memory.provider: hindsight,大多数情况下啥都不用做:hermes update 会为每个用到它的 profile 装上插件,memory.provider、$HERMES_HOME/hindsight/config.json、.env 里的 HINDSIGHT_API_KEY 和你的记忆数据都原封不动。想手动装也行:

hermes plugins install hindsight   # 从插件目录安装;会问 "Use 'hindsight' as the memory provider now?"
hermes memory setup                # 选择 "hindsight"

装好后插件落在 ~/.hermes/plugins/hindsight/(每个 profile home 一个)。记忆后端是靠 config.yaml 里的 memory.provider 激活的,不是 plugins.enabled:接受安装时的提示(或者加 --enable)会把它设上,拒绝则保持不变,之后还能用 hermes memory setup 再选。hermes plugins enable hindsight 并不会激活记忆后端。hermes memory setup、hermes memory status、hermes plugins list 和 dashboard 的 Memory 设置都能配合目录安装的插件使用。本地嵌入模式下,插件首次使用时会通过 Hermes 的懒安装路径装上 hindsight-all,这条路径同样遵守 security.allow_lazy_installs。

如果 Agent 启动时插件装不上,你会看到原因,而不是悄悄地在没有外部记忆的情况下跑起来:security.allow_lazy_installs: false 时警告会给出该 profile 对应的安装命令;离线或拒绝安装时也会显示错误和同样的命令。安装失败后,接下来一小时内 Agent 启动会跳过安装、只重复那条命令;hermes update 则总会重试。

Agent 启动从不弹问题(终端归 chat 提示符管)。所以一个从来没随 Hermes 发布过的目录后端(比如 mnemosyne)不会在 Agent 启动时被装上:警告会给出该 profile 对应的 hermes plugins install <name>,或者你也可以从 dashboard / Desktop 的 Plugins 页面装。

:::warning 插件读配置的位置 Hindsight 读的是 $HERMES_HOME/hindsight/config.json(每个 profile 自己的家目录)、~/.hindsight/config.json(旧的共享位置),以及 .env 里的 HINDSIGHT_* 变量。它不读 config.yaml 里的 memory.hindsight 段——写在那儿的 memory.hindsight.* 会被忽略。要改配置就编辑插件自己的 config.json,或者用 hermes memory setup。 :::

Supermemory 也搬到了插件目录

Supermemory 由 Supermemory 官方维护,从插件目录安装,不再随 Hermes 一起发布。源码和完整配置参考见 supermemoryai/hermes-supermemory。

hermes plugins install supermemory   # 从插件目录安装(会一起装上 Supermemory SDK)
hermes memory setup                  # 选择 "supermemory"

需要云端 API key,或者自建服务器。跑完 hermes plugins install supermemory、还没跑 hermes memory setup 之前,记得先在配置里设好 base_url。

从内置 Supermemory 升级: 如果你的 config.yaml 里已经有 memory.provider: supermemory,大多数用户啥都不用做:hermes update 会为每个用到它的 profile 装上目录插件(就算 security.allow_lazy_installs 是 false 也会跑)。如果 Agent 首次启动时插件还没装上,Hermes 会自动装好并打印一行提示。装好后插件落在 ~/.hermes/plugins/supermemory/,config.yaml 里会多出 plugins.enabled: [supermemory]。SDK 由插件自己的包元数据安装,所以 hermes-agent[supermemory] 这个 pip extra 不再需要了。memory.provider、$HERMES_HOME/supermemory.json 和你的数据都不变。

Holographic 也搬到了插件目录

Holographic 由 itpartypattaya 维护,从插件目录安装,不再随 Hermes 一起发布。

记忆的“备份”:checkpoints

Hermes 还藏了一个“后悔药”机制——checkpoints。它会在 ~/.hermes/checkpoints/ 里存下一些关键时刻的快照,方便你随时用 /rollback 回到之前的状态。

想看看有多少“后悔药”?

hermes checkpoints

这个命令会给你一个状态总览,还能帮你清理或清空旧快照。相当于给记忆上了个保险,再也不怕手滑改坏东西了。

记忆的“搬运工”:backup 和 import

好记性不如烂笔头,烂笔头不如备份!Hermes 提供了超简单的备份方案:

# 备份整个 Hermes 家目录(包括记忆)到 zip
hermes backup

# 从 zip 恢复
hermes import backup-file.zip

这招特别适合换电脑或者折腾配置前——先备份,随便折腾,出问题一键还原。

记忆的“体检”:prompt-size

好奇你的记忆占了多少“脑容量”?Hermes 有个贴心小工具:

hermes prompt-size

它会给你展示系统提示词 + 工具定义 + 记忆索引的字节级明细,让你清楚知道每次对话“脑子里”装了多少东西。而且这个命令完全离线运行,不会泄露任何隐私。

记忆的“开关”:ignore-rules

有时候你可能想“失忆”一下——比如测试时不想让 Agent 自动加载记忆和规则。这时候用:

hermes --ignore-rules chat

这个参数会跳过 AGENTS.md、SOUL.md、记忆和预加载技能的自动注入。相当于让 Agent 以“出厂状态”跟你聊天,特别适合排查问题。

小结

所以,Hermes 的记忆默认存在本地,有备份、有快照、有体检工具,还有“失忆开关”。一切都是透明、可控的——你的数据,你做主!

下次再有人问“记忆存哪儿”,你就可以拍着胸脯说:就在我电脑里,清清楚楚,明明白白!

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/features/memory-providers