fanfei's blog

Hermes Persistent Memory

Hermes Agent 的持久化记忆系统由 MEMORY.md 和 USER.md 两个文件组成,容量有界且由 agent 自行管理。记忆在会话开始时注入系统提示,跨会话持久保存。

记忆架构

文件 用途 字符限制
MEMORY.md Agent 个人笔记——环境事实、约定、经验教训 2,200 字符 (~800 tokens)
USER.md 用户画像——偏好、沟通风格、期望 1,375 字符 (~500 tokens)

存储位置:~/.hermes/memories/

工作机制

  1. 冻结快照模式:记忆在会话开始时作为冻结块注入系统提示,会话内不变
  2. 即时持久化:Agent 在会话中修改记忆时立即写入磁盘,但下次会话才在系统提示中生效
  3. 容量管理:超过 80% 容量时,Agent 应合并/精简条目后再添加新条目

记忆工具操作

  • add — 添加新条目
  • replace — 替换现有条目(通过子串匹配)
  • remove — 移除不再相关的条目

read 操作——记忆内容自动注入系统提示。

应该记住 vs 应该跳过

✅ 主动保存

  • 用户偏好(“偏好 TypeScript”)
  • 环境事实(“服务器运行 Debian 12”)
  • 纠正(“不要用 sudo 运行 Docker”)
  • 项目约定(“项目用 tabs, 120 字符行宽”)
  • 已完成的工作记录
  • 显式请求(“记住我的 API key 每月轮换”)

❌ 不保存

  • 显而易见的信息
  • 可轻松重查的事实
  • 大段数据/代码/日志
  • 会话级临时信息
  • 已在上下文文件中的内容

会话搜索

除持久化记忆外,Hermes 还提供 session_search 工具:

  • 所有会话存储在 SQLite (~/.hermes/state.db) 中,支持 FTS5 全文搜索
  • 返回相关历史对话,用 Gemini Flash 进行摘要
  • 适合"上周我们讨论过 X 吗?“类型的查询
特性 持久化记忆 会话搜索
容量 ~1,300 tokens 无限
速度 即时(在系统提示中) 需搜索 + LLM 摘要
用途 关键事实,始终可用 查找特定历史对话

外部记忆提供者

Hermes 还支持 8 个外部记忆插件(Honcho、OpenViking、Mem0、Hindsight 等),与内置记忆并行运行,提供知识图谱、语义搜索、自动事实提取等增强能力。

安全

记忆条目在保存前经过安全扫描,检测注入和泄露模式(prompt injection、凭证泄露、SSH 后门、不可见 Unicode 字符等)。


Timeline