AI-Workshop 文献分享 2026-07-11 21:30

AI-Workshop 文献分享 #10 — Hermes Agent 记忆框架:四层架构与设计哲学

qyr 深入拆解 Hermes Agent 的四层记忆架构——工作记忆、内建长期记忆(MEMORY.md + USER.md 快照机制)、完整会话历史和可插拔外部记忆组件,及其内核级工具设计和威胁扫描机制。

AI-Workshop 文献分享 Hermes Agent记忆 系统设计

AI-Workshop 文献分享 #10 -- Hermes Agent 记忆框架:四层架构与设计哲学

分享人:qyr | 日期:2026-07-11

主题:Hermes Agent 记忆框架设计与实现


一、四层记忆架构

Hermes 采用四层分层结构:

工作记忆 -> 内建长期记忆 -> 完整会话历史 -> 可插拔的外部记忆组件

核心设计理念:不是尽可能的多记,而是判断哪些是值得记住的。

记忆拆成两个部分:稳定的事实(长期记忆) vs 完整的历史。


二、工作记忆(L1)

  • 存储位置:内存,不持久化
  • 生命周期:仅单轮推理步骤,结束后丢弃
  • 包含内容:调试信息、报错信息、中间变量等临时信息
  • 设计原则:不会也不应该进入上下文和长期记忆,避免污染

工作记忆与会话历史是不同的概念。工作记忆是单轮内部的临时工作区,而非跨轮次的记忆。


三、内建长期记忆(L2)

3.1 快照机制

两个 Markdown 文件管理内建记忆:

  • MEMORY.md:环境信息、项目约定等(上限 2200 字符)
  • USER.md:用户风格、偏好等(上限 1375 字符)

会话加载时,读取这两个文件生成系统提示词,并创建快照。快照缓存在 session.db(SQLite)中。

关键规则: 1. 本轮会话中使用的快照不会改变,即使修改了源文件 2. 通常要到下次会话启动或记忆压缩才更新快照 3. 通过 gateway 调用时,新建 AI 实例仍使用 session 缓存的快照

设计目的:确保 prefix 稳定性,提高 prefix cache 命中率(降低费用),便于调试。

3.2 内核级工具

memory 操作在 Hermes 中是内核操作,不走通用流水线。

通用流水线(不持久化):

LLM tool_call -> 分发器 -> 参数校验 -> 初始化 -> 执行 -> 序列化 -> 回填

memory 操作单独处理,因会直接修改记忆文件。

操作原语:只有三种——add、replace、remove。没有 embedding,没有图谱化,但人能看懂。

匹配算法:KMP 字符串匹配。匹配到多个结果时报歧义。

原子写入流程: 1. 上锁——避免其他会话同时修改 2. 重新读取 MEMORY.md 和 USER.md 最新内容(不用快照) 3. 修改并写入临时文件 4. 原子覆盖——用 tempfile 一次性覆盖目标文件

3.3 威胁扫描

memory 操作在写入前进行威胁扫描,因这两个文件作为 system prompt 在每次对话中使用。

检查内容包括: - 角色劫持 - 恶意指令注入 - 密钥诱导 - SSH 后门 - 隐形 Unicode 字符


四、完整会话历史(L3)

  • 记录当前会话的完整对话过程,保证上下文连贯性
  • 区别于 L1(单轮内部)和 L2(跨会话),L3 是会话级的
  • 会话过长时可进行压缩或摘要处理
  • 与 L2 配合:稳定事实进 L2,过程记录留 L3

五、外部记忆组件(L4)

  • 对接外部存储,按需扩展记忆能力
  • 典型组件:RAG、知识图谱、向量数据库
  • 可插拔设计,按场景选择启用
  • 与 L2 互补:L2 管精简稳定的核心事实,L4 管大规模检索

六、总结

三个要点:

  1. 四层架构各司其职:工作记忆(单轮临时)-> 内建长期记忆(跨会话稳定事实)-> 会话历史(跨轮次上下文)-> 外部记忆(大规模检索)
  2. 快照机制:牺牲实时性换取 prefix 稳定性,提升 cache 命中率
  3. 设计哲学:稳定优于实时,简单优于复杂,安全内建于流程