记忆链路概览
Hermes 的记忆系统有三层:
用户输入
→ 短期上下文(当前对话窗口)
→ Auto-Memory 提取(是否值得记?)
→ 长期记忆存储(写入记忆库)
下次对话时:
用户输入 → 记忆库搜索(Auto-Memory-Search)
→ 相关记忆注入系统提示 → 模型感知到记忆
第一步:Auto-Memory(提取)
每轮对话结束后,Hermes 会判断当前对话中是否有值得记忆的信息。
触发条件:
- 用户透露了个人信息(名字、偏好)
- 做出了重要决策
- 完成了关键任务
- 设置了偏好或规则
模型根据系统提示中的指令,判断哪些信息需要存储。存储的内容包括:
{
"content": "用户偏好使用中文回复",
"type": "preference",
"timestamp": "...",
"importance": 0.8
}
每条记忆都有重要度评分,评分低的可能被后续记忆覆盖。
第二步:Auto-Memory-Search(检索)
每次用户输入新消息时,Hermes 会:
- 将用户输入转为嵌入向量(通过 Bridge)
- 在记忆库中搜索语义相似的记忆
- 按相关度排序,取 top-N
- 注入到系统提示中
检索结果类似:
[
{"content": "用户偏好使用中文回复", "score": 0.92},
{"content": "用户之前在排查 vLLM OOM", "score": 0.45}
]
只有高于相关度阈值的记忆才会被注入。
第三步:记忆注入
注入到系统提示的记忆格式:
## 用户记忆
- 用户偏好使用中文回复
- 用户正在使用 Qwen3.5-9B 模型
- 用户之前排查过断流问题
模型看到这些记忆后,就能在回答中参考历史信息。
关键参数
memory:
max_memories: 10 # 每次最多加载几条记忆
min_score: 0.5 # 相关度阈值,低于此值不加载
importance_threshold: 0.3 # 存储记忆的最低重要度
调整 max_memories 可以控制 token 消耗。
记忆系统的问题
记忆过多占用 token
默认加载 10 条记忆,每条约 50-100 tokens,合计 500-1000 tokens。如果关联度阈值设得太低,可能会加载不相关的记忆浪费 token。
记忆更新不及时
变更偏好后,旧记忆仍可能被检索到,导致矛盾信息。Hermes 没有主动更新或删除旧记忆的机制。
没有遗忘机制
记忆库只增不减。长期使用后记忆越来越多,检索噪音也随之增加。
实践建议
- max_memories 不宜超过 10。太多记忆模型处理不过来,也占 token。
- min_score 设为 0.5-0.6。太低会加载噪音记忆。
- 定期检查记忆库。Hermes 有记忆管理工具,可以查看和删除记忆。
- 重要信息在对话中重复。如果有什么信息必须记住,隔几轮再提一次,模型会更重视。
总结
Hermes 的记忆链路设计合理:自动提取-向量检索-动态注入。三层协作让 Agent 有「记忆力」。
但默认参数可能不够优化,理解链路后可以根据使用场景调整参数,让记忆更精准。