Day 6 · 记忆与状态:会话、压缩、备份
让 Hermes 主动记住一条关于你的信息、把一段长对话压缩成一段摘要带到新会话、并做一次整盘备份。
已完成 Day 2;最好跟 Hermes 有过一些对话(本章的 session 演示需要历史记录)。
先理解:Hermes 记忆的三层结构
Section titled “先理解:Hermes 记忆的三层结构”很多人一开始把「记忆」想成一个大桶。Hermes 其实有三层独立系统,各管各的:
| 层 | 在哪 | 存什么 | 什么时候读写 |
|---|---|---|---|
| 长期记忆 | ~/.hermes/memories/MEMORY.md ~/.hermes/memories/USER.md | 环境事实、你的偏好、跨对话通用的经验 | 会话启动时注入 system prompt;会话中写入不会立即生效(prefix cache 优化) |
| 会话历史 | ~/.hermes/sessions/*.jsonl + ~/.hermes/state.db (SQLite) | 每次对话的完整消息、工具调用 | 会话进行中持续追加;结束后归档 |
| 会话全文搜索 | SQLite FTS5 索引 | 所有历史会话的可搜索副本 | session_search 工具在对话里按需查询 |
两个关键设计选择要记住:
- 长期记忆用 frozen snapshot 模式——你在这次对话里告诉它「以后请这样做」,它写入了磁盘,但要下一次启动会话才会进到它的系统提示里。这是为了最大化利用 LLM 的 prefix cache(省 token、更快)。
MEMORY.md有 2200 字符上限,USER.md有 1375 字符上限。超了就必须合并整理,这是故意的——强制保持精炼。
-
看一眼你现有的记忆
Terminal window ls ~/.hermes/memories/cat ~/.hermes/memories/MEMORY.mdcat ~/.hermes/memories/USER.md如果你之前没配置过记忆系统,这俩文件可能是空的或刚创建。先初始化一下:
Terminal window hermes memory setuphermes memory statusstatus会告诉你当前用量(字符数 / 上限)。 -
让 Hermes 主动记一件事
启动 Hermes,说一句明确的偏好:
你:记一下,以后我发代码让你 review,用中文反馈,不要英文。正常情况下 Hermes 会:
- 调用
memory工具(add动作) - 把这条偏好写到
USER.md - 回复你「记住了,下一次会话起开始生效」
- 调用
-
用
/compress把长对话压缩成短摘要假设你跟它聊了很久(上下文接近模型上限),或者你想换话题但不想彻底丢掉前情:
你:/compressHermes 会:
- 阅读当前全部对话
- 生成结构化摘要(保留关键决策、待办、已验证的事实)
- 把摘要写入长期记忆
- 创建一个 continuation session——新的会话,以这份摘要作为起点
带焦点参数可以让摘要更聚焦:
你:/compress --focus "登录模块重构的进展" -
给会话起名(
/title)默认 Hermes 会在第一轮对话后自动起标题。不满意就自己起:
你:/title Hermes 教程 Day 6限制:最长 100 字符、全局唯一、自动过滤控制字符。
-
查看历史 & 恢复会话
退出对话到终端:
Terminal window hermes sessions list # 默认显示最近 20 个hermes sessions list --limit 50hermes sessions list --source telegram # 按平台筛hermes sessions stats # 总数、消息量、数据库大小恢复对话有 3 种粒度:
Terminal window hermes --continue # 最近一次 CLI 会话hermes -c # 同上,简写hermes -c "项目 A" # 按标题找最新一个变体(A → A #2 → A #3)hermes --resume 7e4f2b8c # 按 session ID 精确恢复 -
查看 / 搜索历史对话
在当前对话里用
/history看本会话完整滚动记录:你:/history跨会话搜索用
session_search工具——这个是 Hermes 自己会调用的,你可以这样提示:你:上周我们聊过一个关于 K8s 的 operator 设计方案,帮我找回来Hermes 会用
session_search对 SQLite FTS5 索引做全文查询、归纳匹配段落。 -
做一次整盘备份
Hermes 把配置、skill、会话、cron、凭据全放在
~/.hermes/下。备份这整个状态:Terminal window hermes backup # 默认导到 ~/hermes-backup-<timestamp>.ziphermes backup -o /tmp/hermes.zip # 指定输出hermes backup --quick # 只备份核心状态(config + state.db + .env + cron)hermes backup --quick --label "pre-upgrade" # 升级前的安全快照 -
恢复备份
Terminal window hermes import hermes-backup-2026.04.15.ziphermes import backup.zip --force # 覆盖已存在文件不再确认
进阶:外部记忆提供商
Section titled “进阶:外部记忆提供商”如果内置记忆不够用(跨几百个会话做知识图谱检索、或跟团队共享长期记忆),可以挂外部 provider:
| Provider | 适用场景 |
|---|---|
| Mem0 | 轻量云服务,API 简单 |
| Honcho | 专做 AI agent 的用户建模 |
| Supermemory | 浏览器 / 笔记聚合检索 |
| 还有 OpenViking / Hindsight / Holographic / RetainDB / ByteRover | 各自细分场景 |
外部 provider 是增强不是替代——内置的 MEMORY.md 永远是首选,外部只负责补充语义检索。具体配置见官方 Memory 文档。
$ hermes memory statusMEMORY.md: 1423 / 2200 chars (64%)USER.md: 672 / 1375 chars (48%)
$ hermes sessions list --limit 3● 2026-04-23 21:10 Hermes 教程 Day 6 cli 24 messages● 2026-04-23 20:05 登录模块重构 cli 89 messages (compressed)● 2026-04-23 19:30 登录模块重构 #2 cli 11 messages
$ hermes backup --quick --label "day6-done"✓ state.db (WAL-safe copy)✓ config.yaml / .env✓ cron jobs✓ credentialsArchive: ~/hermes-backup-day6-done.zip (2.1 MB)