Skip to content
懒人吧
Go back

Hermes 记忆链路:从搜索到存储的完整流程

编辑页面

记忆链路概览

Hermes 的记忆系统有三层:

用户输入
  → 短期上下文(当前对话窗口)
  → Auto-Memory 提取(是否值得记?)
  → 长期记忆存储(写入记忆库)
  
下次对话时:
  用户输入 → 记忆库搜索(Auto-Memory-Search)
  → 相关记忆注入系统提示 → 模型感知到记忆

第一步:Auto-Memory(提取)

每轮对话结束后,Hermes 会判断当前对话中是否有值得记忆的信息。

触发条件:

模型根据系统提示中的指令,判断哪些信息需要存储。存储的内容包括:

{
  "content": "用户偏好使用中文回复",
  "type": "preference",
  "timestamp": "...",
  "importance": 0.8
}

每条记忆都有重要度评分,评分低的可能被后续记忆覆盖。

第二步:Auto-Memory-Search(检索)

每次用户输入新消息时,Hermes 会:

  1. 将用户输入转为嵌入向量(通过 Bridge)
  2. 在记忆库中搜索语义相似的记忆
  3. 按相关度排序,取 top-N
  4. 注入到系统提示中

检索结果类似:

[
  {"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 没有主动更新或删除旧记忆的机制。

没有遗忘机制

记忆库只增不减。长期使用后记忆越来越多,检索噪音也随之增加。

实践建议

  1. max_memories 不宜超过 10。太多记忆模型处理不过来,也占 token。
  2. min_score 设为 0.5-0.6。太低会加载噪音记忆。
  3. 定期检查记忆库。Hermes 有记忆管理工具,可以查看和删除记忆。
  4. 重要信息在对话中重复。如果有什么信息必须记住,隔几轮再提一次,模型会更重视。

总结

Hermes 的记忆链路设计合理:自动提取-向量检索-动态注入。三层协作让 Agent 有「记忆力」。

但默认参数可能不够优化,理解链路后可以根据使用场景调整参数,让记忆更精准。


编辑页面
Share this post on:

Previous Post
Hermes tool_use_enforcement 参数深挖:force、true、always 到底有什么区别?
Next Post
Hermes Bridge 嵌入模型离线部署:解决反复重启的联网依赖