Hindsight:让 OpenClaw "自动记住一切"的记忆插件
> 来源: Hindsight Blog
> GitHub: vectorize-io/hindsight
> 公司: Vectorize.io
> 前置报告: Hermes 记忆系统分析 / OpenClaw 记忆改进可行性
> 研究时间: 2026-03-21
🎯 一句话版本
Hindsight 是一个 OpenClaw 记忆插件——装上后 Agent 不再需要"主动决定记什么",系统自动从每轮对话中提取事实/实体/关系,下次对话自动注入相关记忆。本地运行,开源,LongMemEval 基准 SOTA。
🧠 它解决了什么问题?
OpenClaw 内置记忆的核心痛点(Manthan Gupta 也指出过):
> "Agent 必须自己决定记什么"——模型不总是记得存盘,重要信息会丢失。
Hindsight 的解法:别让 Agent 决定了,全自动。
| OpenClaw 内置 | Hindsight | |
|---|---|---|
| 什么时候存 | Agent 主动写入 | **每轮自动捕获** |
| 存什么 | Agent 决定 | **自动提取事实/实体/关系** |
| 什么时候用 | Agent 调 memory_search | **自动注入 context** |
| 存储格式 | Markdown 文本 | **结构化知识**(facts + entities + relationships) |
| 存储引擎 | SQLite + 向量 | **PostgreSQL**(内嵌) |
🏗️ 架构
┌─────────────────┐ ┌────────────────────────────────┐
│ OpenClaw │ │ hindsight-embed daemon │
│ Gateway │────▶│ ┌──────────┐ ┌───────────┐ │
│ │◀────│ │ Memory │ │PostgreSQL │ │
│ Discord/TG/... │ │ │ API │──│(embedded) │ │
└─────────────────┘ │ └──────────┘ └───────────┘ │
└────────────────────────────────┘
runs locally · port 9077
关键组件:
- hindsight-embed:单进程捆绑 API + PostgreSQL(via pg0)
- 独立 LLM:用小模型做后台提取(gpt-4o-mini / claude-3-5-haiku / gemini-2.5-flash)
- Web UI:
uvx hindsight-embed@latest -p openclaw ui可视化查看记忆
📦 安装(极简)
# 1. 设置提取用 LLM
export OPENAI_API_KEY="YOUR_KEY"
# 2. 安装插件(自动替换 memory-core)
openclaw plugins install @vectorize-io/hindsight-openclaw
# 3. 启动(daemon 自动随 gateway 启动)
openclaw gateway
就这三步。插件接管 memory 插件槽,替换掉内置的 memory-core。
🔄 工作流程
Retain(自动保存)
每轮对话结束后:
1. 捕获 user + assistant 消息
2. 后台调小 LLM 提取 facts / entities / relationships
3. 存入 PostgreSQL
4. 自动去重(防止 feedback loop——strip tags)
Recall(自动注入)
每轮响应前:
1. 用最近 N 轮用户消息构造查询
2. 从 memory bank 检索相关记忆
3. 自动注入到 context(Agent 完全不知道记忆系统存在)
4. 默认注入 1,024 tokens(可调高)
关键:Agent 不需要调用任何工具
Hindsight 在 hook 层面 运行——beforeAgentResponse 注入记忆,afterAgentResponse 保存对话。Agent 的 prompt 里甚至不需要提到"记忆"。
🔒 记忆隔离
默认按 agent + channel + user 三维隔离:
| 维度 | 效果 |
|---|---|
| agent | 不同 bot 身份的记忆分离 |
| channel | Discord #deep-research 和 Telegram 的记忆不混 |
| user | 不同用户的记忆不混 |
可调整为:
["provider", "user"]:同平台跨频道共享["user"]:跨平台跨频道全共享dynamicBankId: false:所有对话共享一个 bank
⚙️ 可配置项
Retention(保存策略)
| 选项 | 默认 | 说明 |
|---|---|---|
| autoRetain | true | 每轮自动保存 |
| retainRoles | ["user", "assistant"] | 保存哪些角色 |
| retainEveryNTurns | 1 | 每 N 轮保存(>1 为 chunked) |
| retainOverlapTurns | 0 | chunked 模式的重叠轮数 |
Recall(注入策略)
| 选项 | 默认 | 说明 |
|---|---|---|
| autoRecall | true | 自动注入 |
| recallBudget | "mid" | low/mid/high 检索力度 |
| recallMaxTokens | 1024 | 注入上限 |
| recallTypes | ["world", "experience"] | 排除 observation 类型 |
| recallTopK | unlimited | 条数上限 |
| recallContextTurns | 1 | 用多少轮消息构造查询 |
📊 Benchmark
- LongMemEval SOTA(Agent 长期记忆评测基准)
- Virginia Tech Sanghani Center + Washington Post 独立验证
- Fortune 500 企业生产使用
🆚 与 Hermes 记忆系统的对比
| 维度 | Hermes | Hindsight |
|---|---|---|
| 理念 | Agent 策展式管理 | **全自动捕获+提取** |
| 热记忆 | MEMORY.md 冻结快照 | 自动注入相关记忆 |
| 存储 | SQLite + Markdown | **PostgreSQL + 结构化知识** |
| 检索 | FTS5 关键词 | **语义检索**(recall budget) |
| 提取 | Agent 手动写 | **后台 LLM 自动提取** |
| 安全 | 注入扫描 | feedback loop 防止 |
| 透明度 | ✅ 文件可编辑/git | ❌ 数据在 PostgreSQL |
| 额外成本 | 无 | LLM 提取调用 + 3GB 依赖 |
核心区别:Hermes 信任 Agent 的判断力("你决定记什么"),Hindsight 不信任("我帮你全记,你只管用")。
💡 与我们的关联
1. 可以直接安装试用
一条命令:openclaw plugins install @vectorize-io/hindsight-openclaw
但需要注意:
- 替换 memory-core,不是并行(二选一)
- 失去 Markdown 文件透明度(不能
cat MEMORY.md看记忆了) - 首次下载 ~3GB(PyTorch + sentence-transformers)
- 额外 LLM 调用成本(每轮一次提取)
2. 对我们深度研究场景的评估
| 优点 | 顾虑 |
|---|---|
| 不用手动记"报告链接"/"规则" | 失去 memory 文件的 git 版本控制 |
| 跨频道记忆共享 | PostgreSQL 增加系统复杂度 |
| 自动注入报告上下文 | 每轮额外 LLM 调用有成本 |
| Web UI 可视化记忆 | 3GB 首次下载,VPS 磁盘本就紧张 |
3. 推荐策略
短期不建议替换,原因:
1. 我们的 MEMORY.md + memory/ 工作流已经稳定
2. 报告/规则需要可编辑的 Markdown(Hindsight 的 PostgreSQL 不够透明)
3. VPS 磁盘 87GB free,3GB 下载 + PostgreSQL 数据会进一步挤压
4. 每轮额外 LLM 调用在 Opus 价格下不划算
中期值得关注:
- 如果 Hindsight 支持 hybrid 模式(自动提取 + Markdown 同步),就是最佳方案
- 外部 API 模式适合多 Agent 共享记忆(我们有 researcher/codex 等多个 Agent)
4. 与上一篇可行性报告的关系
在 OpenClaw 记忆改进可行性报告 中我们提到 Layer 5(用户模型)需要第三方方案。Hindsight 就是当前最成熟的选项之一,但它走的是"替换"路线而非"增强"路线。
⚠️ 注意事项
1. 不能和 memory-core 并行:接管 memory slot,二选一
2. 不支持 root 运行:PostgreSQL initdb 拒绝 root
3. 首次 3GB 下载:包含 PyTorch、sentence-transformers、CUDA
4. 提取是异步的:会话结束后几秒内提取可能还没完成
5. 提取质量依赖模型:太小的模型会丢失技术细节
📊 评分
| 维度 | 评分(/10) |
|---|---|
| 技术方案 | 9.0 — 全自动 retain/recall + 结构化知识 + feedback loop 防止,设计精良 |
| 易用性 | 8.5 — 三步安装,但 3GB 依赖和 PostgreSQL 增加复杂度 |
| 与 OpenClaw 集成度 | 9.0 — 原生插件槽,hook 级别集成,零 prompt 修改 |
| 透明度 | 6.0 — 失去 Markdown 文件可编辑性,数据在 PostgreSQL |
| 与我们的适配度 | 7.0 — 方案优秀但短期不适合我们(Markdown 工作流优先) |
| **综合** | **8.0** |
报告由深度研究助手自动生成 | 2026-03-21
来源: Hindsight Blog