Hermes 应用

Hermes Memory 实战:长期记忆适合存什么,不适合存什么

理解 Hermes persistent memory、USER.md、MEMORY.md、session search、provider 边界和容量限制,避免把记忆用成垃圾桶。

进阶 预计 17 分钟 核验 2026/6/6
本页目录

完成结果

学完后你会留下什么

一份 memory 写入/跳过/清理规则,一次 USER.md 与 MEMORY.md 整理结果,以及是否启用外部 memory provider 的判断。

适合谁
想让 Hermes 长期记住项目、偏好和工作方式的用户
开始前确认
  • 已经能启动 Hermes
  • 知道自己希望 Agent 长期记住哪些项目或偏好
  • 愿意定期整理记忆内容
  • 能区分长期事实、项目文档和历史会话

搜索 “Hermes memory” 的用户,多半已经跑通了 Hermes,但开始担心另一个问题:哪些东西应该让 Agent 长期记住,哪些东西应该留在项目文档、session search 或一次性上下文里?

Hermes Memory 的价值不在于“什么都记”,而在于把少量长期事实注入新会话。官方 memory 文档强调它是 bounded、curated memory,并说明 Hermes 会把 MEMORY.mdUSER.md 的内容合并进上下文。记忆一旦污染,后续每一次判断都会被带偏。

先抓住 4 个判断

  1. Memory 适合保存会反复影响未来决策的事实和偏好,不适合保存临时日志。
  2. MEMORY.md 更偏项目与环境事实,USER.md 更偏用户偏好和长期工作方式。
  3. Memory 会在会话开始时进入上下文;session search 是查历史,不是把历史全部塞进 memory。
  4. 外部 memory provider 是扩展选择,不是默认必需;启用前要先想清隐私、权限和同步边界。

两类长期记忆怎么分

文件更适合保存不适合保存
MEMORY.md项目路径、工具链、构建命令、部署约定、已验证踩坑、长期禁用动作临时日志、整段代码、一次性报错、未验证猜测
USER.md用户偏好、沟通风格、长期工作期待、固定输出格式API Key、隐私凭据、短期情绪、一次性喜好
Session Search查过去某段对话、命令、决定或上下文代替结构化项目文档或长期规则
项目 README公开或团队共享的架构、命令、部署步骤个人偏好、私密身份信息

一个简单判断:如果这条信息会在未来 5 次以上影响 Hermes 的选择,就可以考虑 memory;如果只是今天这次任务要用,放在当前上下文或任务记录里就够了。

推荐写入的内容

适合写入 memory:

  • 这个项目使用 Astro,发布前必须依次跑 npm run buildnpm run seo:checknpm run smoke:check
  • 用户偏好中文短段落,不要写空泛营销话术。
  • 某个仓库禁止使用 destructive git 命令。
  • 某个部署环境固定 Node 版本,不能临时升级。
  • 某次迁移已经完成,后续不要重复执行。
  • 某个 profile 只用于测试,不能访问生产 secrets。

不适合写入 memory:

  • “用户今天问了 Python” 这种太模糊的信息。
  • 大段错误日志和完整终端输出。
  • 能轻易重新搜索到的通用知识。
  • token、密码、私钥、session cookie、OAuth refresh token。
  • 尚未验证的一次性猜测。
  • 高频变化的待办事项,例如“明天上午十点发消息”。

三个真实场景

场景一:你长期维护一个 Astro 站点。适合写入 memory 的不是“今天改了首页”,而是“这个项目发布前必须串行跑 build、seo-check、smoke-check;smoke 会启动本地 listener;不要把 .codex/ 提交”。这类规则会反复影响后续任务。

场景二:你常让 Hermes 帮你写内容。适合写入 USER.md 的不是临时情绪,而是稳定偏好,例如“标题要具体,不写空泛口号,中文段落保持短句,并给出下一步内链”。这样 Agent 后续会延续你的写作标准。

场景三:你让 Hermes 接了消息入口。不要把群聊里的所有临时讨论写进 memory。只有当某个决定会长期影响项目,例如“生产环境不能自动执行 destructive 命令”或“外部消息入口只能触发只读检查”,才应该沉淀。

Memory 写入规则

建议你给 Hermes 一条明确约束:

只有当信息会在未来多次影响项目决策、工具调用或沟通偏好时,才写入 memory。
不要保存 secrets,不要保存临时日志,不要保存未验证猜测。
当 memory 接近容量或出现重复时,先合并旧条目,再写入新条目。

如果你和 Hermes 一起维护多个项目,可以再加一条:

写入项必须标明适用项目、profile 或环境;不确定适用范围时,先不要写入全局 memory。

session search 更适合回答“之前我们怎么做过”:

问题推荐位置
上次迁移失败的报错是什么session search
这个项目永久不用 force pushmemory
这周讨论过哪些候选标题session search 或任务文档
发布前必须串行跑哪些命令memory 或 skill
某个功能的长期架构说明项目 README

不要把 session search 查出来的整段历史复制进 memory。更好的做法是把历史压缩成一句可执行规则,再决定是否写入。

外部 memory provider 怎么判断

官方 Memory Providers 文档提供了外部 provider 的配置方向。对个人用户来说,默认文件记忆通常已经够用;外部 provider 更适合团队、跨设备、集中管理或需要更强检索能力的场景。

启用前先回答这些问题:

  • 这份记忆会不会包含客户、团队或个人隐私?
  • 谁能读取 provider 里的数据?
  • profile 切换后是否会共享同一套 memory?
  • provider 挂掉时 Hermes 应该继续运行、降级还是停止?
  • 如何导出、清理或撤回错误写入?

如果这些问题答不上来,不要为了“更高级”而启用外部 provider。memory 是长期输入源,权限边界比功能数量更重要。

每周维护节奏

每周或每次大项目完成后,做一次记忆整理:

  1. 删除过期项目路径。
  2. 合并重复偏好。
  3. 把“踩坑”改写成可执行约定。
  4. 把临时任务记录移出 memory。
  5. 检查是否出现 secrets、token 或内部链接。
  6. 确认每条规则都有适用项目或 profile。
  7. 把稳定流程移到 skill,把公开团队约定移到 README。

很多 memory 问题不是“记得太少”,而是“记得太杂”。越是长期运行的 Agent,越需要定期把记忆压缩成清晰规则。

记忆失效时先查什么

如果你觉得 Hermes “明明应该记得却没记住”,不要立刻继续追加 memory。先按顺序检查:

  1. 这条信息是否真的写入了 MEMORY.mdUSER.md
  2. 写法是否太长、太散,导致模型抓不到关键约束。
  3. 是否存在相互矛盾的旧记忆。
  4. 当前 profile 是否和写入 memory 的 profile 一致。
  5. 是否被新会话、provider、session 或上下文边界影响。
  6. 这个场景是否更适合 skill、项目 README 或 session search,而不是 memory。

如果你已经遇到具体故障,下一步看 Hermes memory 不生效排查。那篇会按“没写入、没注入、被覆盖、profile 错配、内容太散”逐层定位。

和 Skills 的关系

Memory 存事实,Skills 存动作。比如:

  • “这个项目使用 pnpm” 适合进入 memory。
  • “发布前依次跑 lint、build、seo-check、smoke-check” 更适合变成 skill。
  • “这个用户不喜欢营销话术” 适合进入 USER.md
  • “每周生成内容缺口报告并输出表格” 适合进入 skill 候选池。

如果把动作塞进 memory,会让上下文变长但执行仍不稳定;如果把事实写进 skill,又会让技能在不同项目里变得脆弱。长期协作要把事实、流程和历史分别放在正确位置。

完成检查

  • 你能分清 MEMORY.mdUSER.md 的用途。
  • 你知道哪些信息绝不能写入 memory。
  • 你已经给 Hermes 一条明确的 memory 写入原则。
  • 你知道 session search 不是 memory 的替代品,而是查历史对话的工具。
  • 你能判断是否真的需要外部 memory provider。
  • 你知道什么时候应该把稳定动作沉淀成 skill。

官方资料

版本和参数,以这些来源为准

本文按实际任务重写,快速变化的信息仍应在操作前回到官方页面核对。

常见问题

继续操作前,先确认这些边界

Hermes memory 适合保存 API Key 吗?

不适合。长期记忆应该保存偏好、项目约定和环境事实,不应保存 secrets、token、密码、cookie、私钥或高风险凭据。

memory 和 session search 的区别是什么?

memory 适合少量关键事实,会进入新会话上下文;session search 更适合检索过去对话,不应该把所有历史都塞进 memory。

Hermes 外部 memory provider 是不是越多越好?

不是。官方文档把外部 provider 定位为补充长期记忆的后端选择,启用前应先确认隐私、团队权限、同步范围和回滚方式。

继续学习

按当前任务继续推进