本文是 Hermes Agent 教学系列 第 05 篇。这一篇拆开「会成长」背后的第一个机制:记忆。
为什么记忆是关键
你能说出 Claude、ChatGPT 跟 Hermes 最本质的区别吗?
不是模型能力,不是工具数量,是跨会话状态。Claude.ai 里每开一个新对话,模型对你一无所知(即使有 memory 功能,也只是几句话的摘要)。Hermes 的设计是反过来的:默认在累积记忆,需要才遗忘。
记忆的物理形态
记忆全部存在本地一个 SQLite 文件里:
可以用
sqlite3 打开看:主要几张表:
conversations—— 原始对话历史
summaries—— LLM 生成的会话摘要
facts—— 提取出的用户状态/偏好
fts—— 基于 SQLite FTS5 的全文索引
重点是记忆全部在你本机,不传云端,也不会被任何人远程读取(除非你手动同步)。
三层记忆结构
Hermes 的记忆不是一平二的,是三层:
第一层:完整对话历史
所有你跟 Hermes 说过的话、它调过的工具、调用的返回值,原样存。体积最大,但是证据。
第二层:会话摘要
每个会话结束后,Hermes 调用 LLM 生成一段摘要:本次聊了什么、干了什么、有什么结论。这是后期检索的主力。
第三层:结构化事实
从多个会话里提炼出持久事实:「用户使用 WSL2 + Ubuntu」「偏好中文回复」「项目代码在 ~/vvemperor」。这些是「用户模型」的原材料。
记忆是怎么被「想起」的
你可能以为每次 Hermes 都会把全部记忆塞进上下文——不是,那样 token 成本会爆炸。
实际机制:
FTS5 是 SQLite 内置的全文检索引擎,检索速度在千条量级的记忆上是毫秒级的,成本几乎为零。
这意味着:
- 记忆库越大越准(词频、共现信息越富),跟人类同事干得越久越了解你是一个原理
- 不会因为记忆多而变慢——只检索相关的
- 是检索不是生成——Hermes 不会「编造」你跟它说过的话,检索不到就是检索不到
手动管理记忆
多数时候让 Hermes 自动管就行。但某些场景你会想介入:
查看记忆
手动增加
有时你想让某个信息务必记住,不依赖 LLM 提取:
Hermes 会调
memory.add 工具写入 facts 表。删除记忆
说错了?不想让它记住?
导出 / 迁移
推荐定期备份。记忆丢了不能复原。
上下文 nudges
Hermes 还有个隐藏机制叫 记忆推送(memory nudges)。它不是你每次问什么才检索,而是在适当的时机主动「提醒」自己去查:
- 你提到某个项目名称,它会检索上次跟这个项目相关的对话
- 你问一个之前问过的问题,它会召回上次的回复避免重复劳动
- 你讨论一个都跳性话题,它会看看之前是不是存了相关偏好
这个机制不需要你调什么,但知道它在跑有助于理解为什么 Hermes “似乎记得”你以前提过的东西。
Honcho:用户模型是怎么建的
Hermes 用了一个叫 Honcho 的开源项目做用户模型。能力总结:
- 从多轮对话中归纳你的问题风格、决策习惯、专业领域
- 生成一个隐式的「你是谁」描述,这个描述随说话增多不断修正
- 下次你问问题,Hermes 会参考这个描述调整回答风格和深度
具体表现在:同样一个「解释 docker」的请求,面对重点问过 Linux 领域的你跟面对一个从未接触过服务器的人,回答会完全不一样。
隐私与边界
记忆太多也是个问题。几个建议:
- 别在 Hermes 里输真密码。它是个 agent 不是密码管理器。需要调用服务用环境变量或专门的凭证库
- 敏感对话可以不走记忆。启动时加
hermes --no-memory
- 定期检查 facts 表。
/memory list --type facts看看 Hermes 记住了哪些关于你的东西,有问题的 forget 掉
- 多用户场景要隔离。公司 Slack bot 跟你个人 Telegram 走同一个 Hermes,事实会混在一起
下一篇
记忆是「记事」(发生过什么),Skills 是「记法」(怎么做事)。下一篇我们进入 Hermes 最独特的部分——agent 如何从成功经验中自动提炼出可复用的 skill。
本系列文章持续更新,下篇见。
上一篇
Hermes Agent 教学 06 | Skills 系统:让 agent 自我成长
下一篇
Hermes Agent 教学 04 | 接入消息平台:Telegram / Discord / Slack 与更多
- 作者:Vemperor
- 链接:https://tangly1024.com/article/hermes-05-memory
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。


