你是否希望 Hermes Agent 能够牢牢记住你的代码风格偏好、项目中的特殊约束,以及上次调试时踩过的环境陷阱?我们都不愿每次重启对话后,还得重新向它解释一遍基础配置。掌握它的四层记忆架构正是解题关键——这并非简单的信息堆叠,而是严格按照信息的生命周期进行分层驻留。一旦选错层级,那些本应被永久保存的关键偏好,很可能被系统当作临时日志随意丢弃。

第一层:冻结提示记忆(随身笔记本)
你可以将这一层视为 Agent 启动时必须随身携带的笔记本。它的内容会在每次新会话开始时,以快照形式硬编码到系统提示词的前缀中,模型“睁眼”即可读取。但这里有一个关键设定需要注意:一旦会话开始,后续对 MEMORY.md 或 USER.md 文件的任何修改都不会在当前会话中生效。
操作十分简便。在终端输入命令 hermes mem edit,系统会自动唤起默认编辑器,打开位于 ~/.hermes/memories/ 目录下的 MEMORY.md 文件。
在这里,你应该写入那些稳定不变、长期有效的事实,总字符数建议控制在2200以内。例如:“本项目使用 Poetry 管理依赖”、“禁止在 prod 环境直接执行 raw SQL 语句”、“所有 API 响应必须携带 X-Request-ID 头”。
USER.md 文件同理,专门用于存放用户级别的长期偏好,比如:“我习惯编写英文注释,拒绝使用中文变量名”、“调试时,请优先分析 stack trace,而不是单纯依赖日志时间戳”。
保存退出后,这些改动只会在你下一次全新会话开始时被加载。当前正在进行的会话仍沿用旧快照——这种设计主要是为了保证提示词缓存的命中率,强制刷新反而可能导致不必要的 token 消耗激增。
第二层:会话归档(智能档案馆)
所有对话的原始记录都会自动存入本地的 SQLite 数据库 state.db 中。这层记忆不依赖大语言模型实时解析,而是凭借 FTS5 全文索引技术,实现毫秒级的信息召回。
调用方式主要有两种:
方法一:关键词检索
在任何会话中,直接输入指令 /search “git commit 失败”。此时,Agent 会从历史归档中提取出所有匹配该关键词的对话片段摘要,而不是把整段冗长的日志直接扔给你。
方法二:按时间回溯
输入 /history -n 5,可以列出最近5条会话的完整ID。随后使用 /session [ID] 指令,即可调取某次特定会话的全部内容。
需要注意的是,这层记忆库不会主动将信息推送给模型。它遵循“按需索取”原则,只有在显式触发检索指令时才会被读取。否则,海量的历史信息会瞬间撑爆模型的上下文窗口。
第三层:技能沉淀(武功秘籍)
当你连续多次成功完成某一类复杂任务后,系统后端的 Review Agent 便会自动行动。例如,你三次成功重构了 `utils.py` 文件中的 `validate_input` 函数,它就会默默生成一份对应的 Skill.md 文件,宛如一本记录独家经验的“武功秘籍”。
这个过程通常分为四步:
第一步:确认技能已生成
检查 ~/.hermes/skills/ 目录下,是否出现了类似 refactor-validate-input-async.md 这样的新文件。
第二步:验证触发条件
打开该文件,其开头必须包含清晰明确的触发规则。例如:IF user asks to “refactor validate_input with async support” AND file is utils.py。
第三步:手动修正技能逻辑
如果自动生成的步骤漏掉了某些环节(比如忘了加入 pytest 验证),你可以直接编辑这份 Skill.md 文件。在“执行步骤”区块的末尾,手动追加一行:- 运行 pytest test_utils.py::test_validate_input_async。
第四步:强制重载技能
在对话中输入指令 /skills reload,Agent 会立即识别并加载所有变更。下次遇到同类请求时,它将跳过复杂的推理过程,直接执行这份优化后的“秘籍”。
第四层:外部记忆扩展(可选知心朋友)
这一层属于可选的扩展能力。当你启用了 Honcho 插件后,Agent 便能动态构建一个关于你的用户画像图谱。它能将你不同时间点表达的相关偏好自动关联起来,比如,把“你上周提到讨厌冗余日志”和“今天又关闭了 debug 级别输出”这两件事联系到一起。
启用方式很简单:执行 hermes plugin install honcho 完成安装。之后无需额外配置,Honcho 插件会在每次会话结束时,自动提取对话中的语义节点,并更新本地的知识图谱。
这部分记忆有个特别之处:它不参与日常对话的提示词构建,只在接收到特定的检索指令(如 /search)或查询指令(如 /profile)时才会被调用。可以说,它像一位独立运营的顾问,只在你主动询问“我之前是怎么评价日志设计的?”这类问题时,才会给出基于长期观察的精准回答。
