Hermes Agent Hindsight 记忆系统
概述
Hindsight 是 Hermes Agent 的外部记忆提供商(Memory Provider)之一,基于知识图谱(Knowledge Graph)实现长期记忆。与内置的 MEMORY.md / USER.md 不同,Hindsight 提供实体解析、多策略检索和跨记忆综合(cross-memory synthesis)能力,是 8 个可选记忆提供商中唯一具备 hindsight_reflect 综合推理工具的。
核心架构
三层记忆体系
| 层级 | 组件 | 说明 |
|---|---|---|
| L0 内置记忆 | MEMORY.md / USER.md | 固定注入 system prompt,~1,300 tokens |
| L1 会话搜索 | session_search (FTS5) | 跨会话全文搜索 + LLM 摘要 |
| L2 外部提供商 | Hindsight / Honcho / OpenViking 等 | 知识图谱、语义检索、自动提取 |
Hindsight 特有能力
- 知识图谱存储:自动从对话中提取实体和关系,构建图谱
- 实体解析:识别并关联同一实体的不同表述
- 多策略检索:语义搜索 + 关键词匹配 + 图遍历
- 跨记忆综合(
hindsight_reflect):对所有存储记忆进行推理综合,生成连贯回答 - 自动保留对话:完整保留对话轮次(含工具调用),支持会话级文档追踪
三个工具
| 工具 | 功能 | 使用场景 |
|---|---|---|
hindsight_retain | 存储信息,自动提取实体 | 主动保存事实、决策、偏好 |
hindsight_recall | 多策略语义搜索 | 查找相关历史记忆 |
hindsight_reflect | 跨记忆综合推理 | 基于所有记忆生成分析回答 |
hindsight_retain
存储信息到长期记忆,自动进行实体提取和索引。
参数:
content(必填):要存储的信息context(可选):上下文标签(如 “user preference”、“project decision”)tags(可选):标签列表,与配置的默认标签合并
hindsight_recall
多策略检索相关记忆。返回按相关度排序的记忆列表,综合使用语义搜索、关键词匹配、实体图遍历和重排序。
参数:
query(必填):搜索查询
hindsight_reflect
Hindsight 独有功能。与 recall 不同,reflect 对所有存储记忆进行推理,生成连贯的综合回答,而非返回原始记忆片段。
参数:
query(必填):需要综合分析的问题
部署模式
Cloud 模式(默认)
- 需要 API Key:从 ui.hindsight.vectorize.io 获取
- 数据存储在 Hindsight Cloud
- 依赖:
hindsight-client >= 0.4.22
Local 模式
- 需要 LLM API Key(OpenAI、Groq、OpenRouter 等)
- 本地嵌入式 PostgreSQL 存储
- 依赖:
hindsight-all - 本地 UI:
hindsight-embed -p hermes ui start
配置
配置文件:$HERMES_HOME/hindsight/config.json
设置方式
# 方式一:交互式向导(推荐)
hermes memory setup # 选择 "hindsight"
# 方式二:手动配置
hermes config set memory.provider hindsight
echo "HINDSIGHT_API_KEY=***" >> ~/.hermes/.env配置参数
| 参数 | 默认值 | 说明 |
|---|---|---|
mode | cloud | cloud 或 local |
bank_id | hermes | 记忆库标识符 |
recall_budget | mid | 检索深度:low / mid / high |
memory_mode | hybrid | hybrid(上下文 + 工具)/ context(仅注入)/ tools(仅工具) |
auto_retain | true | 自动保留对话轮次 |
auto_recall | true | 每轮对话前自动召回相关记忆 |
retain_async | true | 异步处理保留请求 |
retain_context | conversation between Hermes Agent and the User | 保留记忆的上下文标签 |
retain_tags | — | 默认标签,与每次调用的标签合并 |
retain_source | — | 可选的 metadata.source |
retain_user_prefix | User | 用户发言前缀 |
retain_assistant_prefix | Assistant | 助手发言前缀 |
recall_tags | — | 召回时的标签过滤 |
与其他提供商对比
| 特性 | Hindsight | Honcho | OpenViking | Mem0 |
|---|---|---|---|---|
| 存储方式 | 知识图谱 | 对话建模 | 文件系统层级 | 事实提取 |
| 跨记忆综合 | ✅ reflect | ✅ dialectic | ❌ | ❌ |
| 实体解析 | ✅ | ✅ peer cards | ❌ | ❌ |
| 自动保留 | ✅ 全量对话 | ✅ 消息 | ✅ 6 类提取 | ✅ 事实 |
| 本地部署 | ✅ PostgreSQL | ✅ 自托管 | ✅ 本地 | ❌ 仅云端 |
| 免费 | 本地免费 | 自托管免费 | 完全免费 | ❌ |
工作流程
对话开始
↓
auto_recall → 从知识图谱检索相关记忆 → 注入 system prompt
↓
用户对话
↓
auto_retain → 异步保留对话到知识图谱(含实体提取)
↓
agent 可主动调用:
- hindsight_retain → 保存重要事实
- hindsight_recall → 搜索历史记忆
- hindsight_reflect → 综合分析所有记忆
↓
会话结束 → 完整对话归档
最佳实践
- recall_budget 选择:日常用
mid,需要深度回忆时用high - memory_mode 选择:
hybrid最灵活(自动注入 + 手动工具),context最省 token - 标签策略:用
retain_tags按项目/主题分类,便于后续过滤检索 - 配合内置记忆:Hindsight 是增量的,内置 MEMORY.md/USER.md 始终工作
- 本地 vs 云端:敏感数据用 local 模式,省心用 cloud 模式
注意事项
- 同一时间只能激活一个外部记忆提供商
- 内置记忆(MEMORY.md / USER.md)始终独立运行,不受外部提供商影响
hindsight-client版本要求 >= 0.4.22,会在会话启动时自动升级- 本地模式需要额外的 LLM API 调用成本(用于实体提取和嵌入)
hermes tools disable memory可以手动禁用本地记忆