用ChatGPT最烦的就是每次新开对话要重新交代一遍背景。Hermes解决了这个问题,而且解决得挺优雅的。
为什么记忆很重要
想象一下这个场景:
你用ChatGPT:
-
• 第一次:"我是个产品经理,在做一款社交APP"
-
• 第二次(新对话):"我是个产品经理,在做一款社交APP,之前我们聊到..."
-
• 第三次(又新对话):"我是个产品经理..."
每次都要重复自我介绍,累不累?
用Hermes:
-
• 第一次:"我是个产品经理,在做一款社交APP"
-
• Hermes默默记下
-
• 第二次打开:"继续上次的想法"------它知道你是谁、在做什么
这就是持久记忆的价值。
Hermes怎么记
Hermes的记忆分两个文件,都在 ~/.hermes/memories/ 目录下:
| 文件 | 记什么 | 容量 |
|---|---|---|
| MEMORY.md | 环境信息、项目情况、学到的经验 | 约2200字符 |
| USER.md | 你的偏好、沟通风格、身份信息 | 约1375字符 |
为什么容量这么小?因为要塞进每次对话的系统提示里。如果记忆太大,占用的token就多,留给对话的空间就少了。所以Hermes会精选最重要的信息记下来。
记忆是怎么自动更新的
你不需要手动编辑这些文件。Hermes会在对话中自动判断什么值得记:
会自动记的:
-
• 你的偏好("我喜欢简洁的回复")
-
• 环境信息("我的项目在~/code/myapp,用React")
-
• 学到的经验("上次用这个方法解决了某个问题")
-
• 重要约定("我们团队用tab缩进,不用空格")
不会记的:
-
• 一次性的信息("今天天气不错")
-
• 很容易重新获取的("Python怎么装"------这个搜一下就有)
-
• 太大的内容(日志、代码块)
记忆长什么样
每次启动会话,Hermes会在系统提示里加载记忆,格式大概这样:
══════════════════════════════════════════════
MEMORY (your personal notes) [67% --- 1,474/2,200 chars]
══════════════════════════════════════════════
用户项目是一个Rust web服务,在~/code/myapi,用Axum+SQLx
§
这台机器是Ubuntu 22.04,装了Docker和Podman
§
用户喜欢简洁回复,不喜欢啰嗦
每个条目之间用 § 分隔。上面还显示了占用比例,满了就会提示。
手动管理记忆
虽然自动记很方便,但有时候你也想手动整理。
查看记忆
❯ /memory
或者在命令行:
hermes curator
curator 是个交互式界面,可以看到所有记忆条目,删、改、合并都行。
让Hermes记住某件事
直接告诉它就行:
❯ 记住,我每次发给你代码的时候都希望你在回复里标注行号
它会自动把这条加到USER.md里。
让Hermes忘掉某件事
❯ 忘掉我之前说的关于那个旧项目的信息,那个项目已经结束了
修改已有的记忆
❯ 更新记忆:我不用VS Code了,现在用Cursor
记忆的容量管理
记忆快满的时候(超过80%),Hermes会自动合并相关条目,腾出空间。
你也可以主动整理:
❯ 整理一下记忆,把关于项目的信息合并成一条
Session Search:搜索过往对话
除了MEMORY.md和USER.md这两份"精华笔记",Hermes还保存了所有对话的完整记录 ,存在SQLite数据库里(~/.hermes/state.db)。
你可以搜索过往对话:
❯ 我们上周是不是聊过一个关于数据库迁移的话题?帮我找找
Hermes会用全文搜索找到相关对话,然后用模型给你总结。
命令行也可以查:
hermes sessions list # 列出所有会话
hermes sessions search 关键词 # 搜索内容
记忆 vs 会话搜索的区别
| 持久记忆 | 会话搜索 | |
|---|---|---|
| 速度 | 秒开(在系统提示里) | 需要搜索+总结 |
| 容量 | 约1300 token | 无限(所有会话) |
| 用途 | 关键信息随时可用 | 找某次具体聊了什么 |
| 管理 | Hermes自动维护 | 自动保存,无需管理 |
简单说:记忆是"常用知识点",会话搜索是"历史档案"。
外部记忆(可选进阶)
如果你觉得内置记忆不够用,Hermes还支持外部记忆提供商:
hermes memory setup
可选的提供商包括Honcho、Mem0等,它们提供知识图谱、语义搜索等更强大的记忆能力。但这些需要额外配置,新手可以先不用管。