使用 Hermes Agent(爱马仕)一阵子了,还是喜欢称呼为:爱马仕毕竟要比起赫美斯要好上口点,它确实如宣传的那样是越用越懂你.但还是会出现大模型都有的通病,就是有时明明说过的事,它还是像失忆了一样;技能学会了,却不知道什么时候该主动掏出来用。
Hermes 的记忆已经很能打:MEMORY.md 记重点,USER.md 记你的人设,SKILL.md 记做法,再加 Honcho backend 默默画你的“心理侧写”。但是要让记忆从“能存”变成“好用”,还有几个挺实在的点可以做得更好。
🧐 现在的记忆:聪明,但有点“紧巴巴”
Hermes 的核心记忆文件大小卡得很严:MEMORY.md 大约 2200 字符,USER.md 大概 1375 字符。它怕你把上下文塞爆,所以逼着你只留“最重要的事”。
按照Claude Code的最佳实践手册给出的建议是
MEMORY.md文件最多不要超过200行限制,主要还是在于Token的消耗
但问题来了:很多你觉得有用的细节(比如“我在 A 项目里常用 redis,B 项目只用 postgres”)因为字数限制,可能被挤出去。结果就是它记住了你的大原则,却忘了具体场景的小习惯,聊深了还是会露馅。
另外,它的技能(SKILL.md)是靠语义检索来触发。你写过一套“部署到 k8s”的流程,下次你说“帮我把 demo 上线”,它得靠关键词匹配才会想起来用它,而不是像老同事那样“一看你在搞什么,就自然掏出对应的工具箱”。
🚀 怎么让它的记忆更“像人”?
1. 给记忆分层,别一刀切砍字数
现在 MEMORY.md 几乎是“平铺的一团”,建议改成三层:
-
金记忆:姓名、绝对雷区、必带密钥——永远在 prompt 里。
-
银记忆:当前项目背景、近期习惯——占大头,但可滚动淘汰。
-
铜记忆:细节、旧项目流水——丢进向量库或 SQLite,用时再捞。
哪怕把总容量扩到 6000–8000 字符,只要做好分层加载,token 也不会乱飙,但连贯性会好很多。
当前我的做法是把Obsidian笔记做成RAG向量数据库,目前没有10W条数据,所以暂时试用的本地Sqlite数据库。然后制作skill加入指定关键字让AI进行搜索触发技能。
2. 技能别只“存”,要加“触发器”
SKILL.md 现在主要是步骤,缺“什么时候用”。可以在技能markdown文件头的YAML Front Matter里面加一段:
适用场景:
- 用户在 git 项目根目录下
- 且提到「deploy」「上线」「发布」
- 且项目含 deploy/ 或 .k8s.yaml
Agent 在规划任务时扫一眼这些条件,就容易把“我会这个”和“现在该用”连起来,而不是等你口令匹配。
3. 让 USER.md 也会“新陈代谢”
Honcho 会不停把你的新行为融进画像,但旧的、错的印象有时还留着。比如你以前说“我不喜欢太啰嗦”,后来习惯了它的详细报告却没纠正,画像可能还是“用户喜欢简短”。
可以加个轻量规则:当新证据和旧画像明显冲突,让 LLM 做一次“裁决”,更新 USER.md 并标注替换理由。记忆不该只增不减,也得会自我修正。
4. 把“项目记忆”挂载上来
现在记忆基本是全局的。你在工作频道聊的和在家闲聊的都混在同一堆文件里。
理想情况是:进 ~/work/project-a,自动挂载 project-a-memory.md;回到 home 目录,切回个人记忆。这样它不会把工作里的术语带到生活里瞎用,RAG 召回也更准。
🛠️ 你自己可以先改的小技巧
-
手动给 MEMORY.md 分块:用
## 通用、## 项目A、## 临时分段,定期把“临时”里稳定的挪进“项目”,过时的删掉。 -
给技能文件名加前缀:
[deploy] k8s 发布.md、[code] ts 接口生成.md,Agent 检索时更容易联想。 -
偶尔跑个“记忆整理”任务:让 Hermes 把自己最近的
MEMORY.md和会话摘要读一遍,重写一版更紧凑的,顺便把矛盾点理清。
📌 总结
Hermes 的记忆已经比多数框架更像“长期搭档”,但它还可以再大胆一点:多记一点、分层一点、带上情境一点。我们不需要它变成硬盘怪兽,而是要它能分清“此刻什么对你最重要”。
毕竟,真正的好搭档,不是背下你所有日记的人,而是关键时刻总能拿出你最需要的那条信息的人。