AI Blog
← 返回首页
Hermes · AI Agent · 记忆系统

Hermes Agent 记忆系统:三层架构详解

Hermes 记忆系统三层架构

在之前的文章《Claude Code、OpenClaw 和 Hermes Agent,记忆系统到底有什么不同?》里,我们对比了三种 AI Agent 的记忆方案。今天深入剖析其中一种——Hermes Agent 的三层记忆架构

Hermes 的记忆系统设计得非常清晰:Memory(长期记忆)+ Skills(程序记忆)+ Session History(对话历史)。三层各有分工,协作完成"记住用户、掌握技能、回溯历史"的任务。

三层架构总览

┌─────────────────────────────────────────────┐
│  第1层: Memory (长期记忆)                     │
│  2,200 字符硬限制                             │
│  每次启动自动注入 system prompt               │
└─────────────────────────────────────────────┘
         ↕ 读写
┌─────────────────────────────────────────────┐
│  第2层: Skills (程序记忆)                     │
│  ~/.hermes/skills/                           │
│  无字符限制,按需加载                         │
└─────────────────────────────────────────────┘
         ↕ 读写
┌─────────────────────────────────────────────┐
│  第3层: Session History (对话历史)            │
│  ~/.hermes/sessions/ (SQLite)                │
│  完整对话记录,可搜索                         │
└─────────────────────────────────────────────┘

一句话总结:

第1层:Memory — "笔记本首页"

基本信息

属性
存储位置SQLite,内嵌在 Hermes 状态数据库
容量限制2,200 字符(分 user 和 memory 两个 store)
注入时机每次对话开始时,自动拼入 system prompt

两个 target

Memory 分成两个独立的存储空间:

target用途存什么
user存"主人是谁"偏好、习惯、角色设定
memory存"我的笔记"环境信息、工具知识、经验教训

操作指令

# 新增条目
memory(action="add", target="user", content="用户偏好简洁回复")
memory(action="add", target="memory", content="VPS 环境: Ubuntu 24.04")

# 替换旧条目(通过 old_text 定位)
memory(action="replace", target="memory", content="新内容", old_text="旧内容片段")

# 删除条目
memory(action="remove", target="memory", old_text="要删除的内容片段")

核心特点

  1. 每次新对话自动注入,无需手动加载
  2. 2,200 字符硬上限,写满只能压缩旧条目
  3. 压缩是 LLM 主观判断,可能丢失细节
  4. 只能存文字,不能存文件/图片/二进制

用户启动新对话时,Hermes 不需要重新问"你是谁、用什么时区、偏好什么"——全靠 memory 里注入的 2,200 字符。

第2层:Skills — "操作手册"

基本信息

属性
存储位置~/.hermes/skills/ 下的目录
容量限制无硬限制(但加载会消耗 context window)
加载方式按需加载,不是每次都读

两种来源

  1. 内置技能 — 随 Hermes 安装自带(如 hermes-agent, xray-vless-reality 等)
  2. 手动创建 — 解决复杂问题后主动保存

目录结构

~/.hermes/skills/
└── my-skill/
    ├── SKILL.md          ← 主文件(YAML frontmatter + markdown)
    ├── references/       ← 参考资料
    ├── scripts/          ← 脚本
    └── templates/        ← 模板

SKILL.md 格式

---
name: my-skill
description: "什么时候触发这个技能"
tags: [tag1, tag2]
---

# 标题

## 使用场景
描述什么时候该用这个技能

## 步骤
1. 先做这个
2. 再做那个

## 常见坑
- 别踩这个
- 注意那个

## 验证
怎么确认做对了

触发机制

管理命令

hermes skills list              # 列出已安装技能
hermes skills search QUERY      # 搜索技能仓库
hermes skills install ID        # 安装技能
hermes skills update            # 更新过时技能
hermes skills uninstall NAME    # 卸载技能
hermes skills publish PATH      # 发布技能到仓库

比如部署 VLESS+Reality 后保存成 skill,下次部署类似项目时直接加载——不用重新探索,不占 memory 空间。

第3层:Session History — "日记柜"

基本信息

属性
存储位置~/.hermes/sessions/ (SQLite)
容量限制无硬限制(受磁盘空间约束)
查询方式session_search 工具

两种查询模式

# 模式1:浏览最近会话(无参数)
session_search()
# 返回:标题、摘要、时间戳

# 模式2:关键词搜索
session_search("VPS方案")
# 返回:跨所有历史会话的匹配摘要

搜索语法

语法示例效果
OR 连接elevenlabs OR baseten更宽泛结果
精确短语"docker networking"精确匹配
布尔搜索python NOT java排除关键词
前缀搜索deploy*匹配前缀

管理命令

hermes sessions list              # 列出最近会话
hermes sessions browse            # 交互式浏览
hermes sessions export OUT        # 导出为 JSONL
hermes sessions rename ID TITLE   # 重命名会话
hermes sessions delete ID         # 删除会话
hermes sessions prune --older-than 30  # 清理 30 天前的会话
hermes sessions stats             # 查看存储统计

三层协作:真实场景演示

用户说:"帮我用之前的方案部署个新 VPS"

Hermes 的思考过程:

1. 先看 memory → 知道用户有 VPS 经验,常用配置
2. 再看 skills → 加载 vps-deployment 技能,获得完整流程
3. 如果还不够 → session_search("VPS部署"),找历史细节
4. 执行任务 → 结果自动存入 session history
5. 发现新经验 → 更新 skill 或 memory

信息流向图

用户输入
  ↓
memory (自动注入,提供背景)
  ↓
skills (按需加载,提供方法)
  ↓
session_search (按需查询,提供历史)
  ↓
执行任务
  ↓
session history (自动保存完整记录)
  ↓
memory/skills (选择性更新)

与其他工具对比

工具第1层 Memory第2层 Skills第3层 Sessions
Hermes✅ 2,200字符自动注入✅ 按需加载无限制✅ SQLite可搜索
OpenClaw✅ MEMORY.md 手动读写✅ skills 目录❌ 无跨会话搜索
Claude❌ 无❌ 无⚠️ 仅会话内上下文
Codex❌ 无❌ 无❌ 纯无状态

对比结论:Hermes 在三层记忆上都做了"原生支持",而其他工具要么缺层、要么靠外部补。

Memory 容量管理策略

问题

2,200 字符硬限制,积累过多信息后会出现"遗忘"。

对策

1. 重要信息存文件,记忆里只放路径

❌ 错误做法:

"VPS 在洛杉矶,2GB 内存,30GB SSD,Ubuntu 24.04,已装 fail2ban 和 ufw,SSH 端口 xxx..."

✅ 正确做法:

"VPS 详情见 ~/docs/vps-config.md"

2. 记忆分层存储

层级存什么特点
记忆本 (2,200字)高频、必须每次启动都知道的自动注入
文件系统详细方案、SOP、报告手动管理
历史对话通过 session_search 按需回溯可搜索

3. 技能系统兜底

反复用的工作流存成 skill——不占 memory 空间,按需加载。

4. 主动管理

配置参考

# ~/.hermes/config.yaml 中的 memory 段
memory:
  memory_enabled: true
  user_profile_enabled: true
  provider: builtin    # 可选: builtin, honcho, mem0

可选后端

后端说明
builtin默认,SQLite 本地存储
honcho云端记忆服务,需注册
mem0第三方记忆平台

查看状态:hermes memory status
配置向导:hermes memory setup

总结

Hermes 的三层记忆架构,本质上是把人类的记忆模型映射到 AI:

三层协作,让 Agent 不只是"能对话",而是"能记住、能学习、能积累经验"。

这套设计值得其他 Agent 框架借鉴——记忆不应该只是一个黑盒,而是可观测、可管理、可分层的系统。