一、为什么记忆是 AI Agent 的核心
用过 AI 聊天的人都有这种感觉:每次打开一个新对话,AI 就像从来没认识过你一样,一切都要重新交代。你上周告诉过它的偏好、项目配置、踩过的坑——全都不记得了。
这正是传统 AI 助手的最大短板:没有记忆。而 Hermes Agent 之所以能被称为"越用越聪明的 AI 代理",最核心的原因就是它拥有一个完整的长久记忆技术架构。
在 MotoAgent 中使用的 Hermes Agent,是目前唯一内置了完整学习回路的 AI 代理。它的记忆系统不是简单的"存个聊天记录",而是一套精密的分层记忆架构。
二、两层核心记忆文件
Hermes Agent 的记忆系统由两个纯文本文件组成,存放在本地磁盘上:
| 文件 | 用途 | 容量限制 | 约合 Token |
|---|---|---|---|
| MEMORY.md | 代理的个人笔记 | 2,200 字符 | 约 800 tokens |
| USER.md | 用户画像配置 | 1,375 字符 | 约 500 tokens |
MEMORY.md —— 代理的"笔记本"
这个文件存储的是代理在工作过程中积累的环境事实、项目约定、工具使用技巧等。比如:
- 当前机器的操作系统和已安装的工具
- 项目使用的技术栈和配置规范
- 踩过的坑和解决方案
- 用户反复纠正过的细节
USER.md —— 用户的"档案卡"
这个文件存储的是关于用户个人的信息,包括:
- 名字、角色、时区
- 沟通偏好(喜欢简洁还是详细)
- 禁忌和雷区(哪些事不要做)
- 工作习惯和技术水平
这两个文件加起来约 1,300 tokens,在每次对话开始时作为系统提示的一部分注入到上下文中。这意味着——每一句话,Hermes Agent 都带着对你的记忆在回复。访问 MotoAgent 可以亲身体验这一效果。
三、记忆加载机制:冻结快照模式
Hermes Agent 采用了一个巧妙的设计——"冻结快照"模式。具体来说:
- 每次会话开始时,从磁盘读取 MEMORY.md 和 USER.md
- 将内容格式化为一个固定的文本块,注入系统提示
- 这个文本块在整个会话期间不会变化
- 即使用户通过记忆工具修改了内容,也要等到下一次会话才会反映到提示中
这样做的好处是什么?答案是 性能。固定不变的提示内容可以让 LLM 复用前缀缓存,大幅降低每次请求的 Token 消耗和处理时间。也就是说,带着记忆回复,但几乎不增加额外成本。
四、记忆写入与自改进循环
很多人会问:记忆是自动存的还是手动写的?答案是——两者都有,但 Hermes Agent 会主动替你管理。
后台自改进回顾
每次对话结束后,Hermes Agent 都会在后台自动运行一次"自改进回顾"。这个回顾会:
1. 审视本次对话的内容
2. 判断有没有值得记住的新信息
3. 如果有,自动写入 MEMORY.md 或 USER.md
4. 评估是否需要创建新的技能或改进已有的技能
整个过程是静默运行的,你不需要做任何操作。默认情况下,界面上会显示一行"Memory updated"告诉你记忆已更新。
技能自主创建
除了保存事实性信息,Hermes Agent 还能从成功完成的任务中创建可复用的技能。技能存储在 ~/.hermes/skills/ 目录下,每个技能包含一份完整的 SKILL.md 说明书。
技能的完整生命周期包括:
1. 创建:复杂任务完成后自动生成
2. 使用:下次遇到类似任务时自动加载
3. 改进:在使用过程中自我修正和优化
4. 策展:30 天未使用标记为"陈旧",90 天未使用自动归档
5. 归档:归档到 .archive 目录,随时可恢复
这套机制让 Hermes Agent 的能力随着使用时间不断增长——做得越多、会的越多。
五、跨会话检索:FTS5 全文搜索
前面说的 MEMORY.md 和 USER.md 只能存 3,000 多字符,放不下所有历史信息。那更早之前的对话怎么查?
Hermes Agent 将所有历史会话存储在 SQLite 数据库中,并建立了 FTS5 全文搜索索引。当用户提到之前做过的事情时,Agent 可以通过 session_search 工具:
- 搜索过去所有会话中的相关对话
- 查看匹配会话的完整内容
- 在会话内上下滚动浏览
| 对比维度 | 持久化记忆 | 会话搜索 |
|---|---|---|
| 容量 | 约 1,300 tokens | 不限(所有历史会话) |
| 速度 | 即时(在系统提示中) | 约 20ms 搜索 |
| 成本 | 每次提示都占用 | 按需使用,无额外 LLM 调用 |
| 用途 | 关键事实时刻可用 | 查找特定历史对话 |
持久化记忆负责"时刻记得",会话搜索负责"随时翻查"——两者互补,构成了完整的记忆覆盖。
六、记忆管理:满了怎么办
2,200 字符的 MEMORY.md 听起来不大,但如果满了怎么办?
Hermes Agent 的设计哲学是:不是存得越多越好,而是存得越精越好。当记忆超过 80% 容量时,代理会自动做以下事情:
1. 读取当前所有记忆条目
2. 判断哪些已经过时或不再重要
3. 合并相似或重复的条目
4. 删除不再相关的旧信息
5. 腾出空间存入新的有价值信息
这个过程不是自动触发的,而是当工具返回"超出容量限制"的错误后,Agent 会主动执行合并操作。这种"人肉压缩"的设计确保了记忆空间永远留给最有价值的信息。
七、拓展:外部记忆提供者
除了内置的两层记忆系统,Hermes Agent 还支持 8 种外部记忆提供者,包括语义搜索、知识图谱等高级存储方案。这些外部提供者可以:
- 提供向量化语义搜索(不只是关键词匹配)
- 实现分层检索(先查摘要、再查细节)
- 跨会话上下文注入
但即使不使用任何外部提供者,内置的两层记忆 + FTS5 搜索已经足够应对绝大多数日常使用场景。
八、总结
Hermes Agent 的记忆架构可以用一句话概括:精巧的设计胜过庞大的存储。
两个小小的文本文件,加上一个 SQLite 全文搜索,再加上后台自改进循环——这套组合拳让 Hermes Agent 在不到 2,000 tokens 的固定开销下,实现了真正的"越用越聪明"。
与市面上其他 AI Agent 相比,Hermes Agent 最大的不同不是模型更强或工具更多,而是它拥有一个真正的学习回路——每一次对话都不是终点,而是下一次更好服务的起点。
去 MotoAgent 下载桌面端,创建一个配置了 Hermes Agent 后端的 Agent,用一段时间你就会发现——它真的在一天天变聪明。
作者:程默的博客 QQ:8292669
原文网址:http://blog.chacuo.net/1534.html
订阅保持关注:http://blog.chacuo.net/feed
本文版权归作者所有,欢迎转载,请务必添加原文链接。