让 Hermes 像人类一样记忆,极空间部署 Hindsight
Hindsight,翻译给它翻成了「事后诸葛亮」,我觉得挺有意思的。
平时大家部署了 Hermes ,其实遇到最大的问题就是「失忆」。它解决了 OpenClaw 无法长期工作的问题,但是却带来了令人无奈的「失忆」问题。原因很简单,Hermes 在处理上下文的时候,是自己选择重要的,这个太随机了,上一秒说的话,它可能因为篇幅少直接忽略了,所以你刚发给它一个链接,下一秒问你让我下载什么?
再来说 Hindsight,它是一套智能体记忆系统,而且已经集成到了 Hermes 外挂记忆库中,开启就能直接用。
它的设计风格很有意思,包括 世界事实、经历、观察、心智模型 四个部分。
世界事实:火是烫的、光线是亮的。用来存储外部来源提供的客观世界事实。

经历:那个亮的东西,我摸了一下被烫了。存储记忆库自身的行为、交互和第一人称经历。

观察:那个光亮的东西,很烫,可能是火。从事实中合成的整合知识 — 从积累的证据中涌现出的模式、偏好和学习。

心智模型:亮的实体不要碰,可能烫。从查询生成的精选摘要,然后记录下来。这个模型本质上,是可随记忆演变而刷新的可复用知识快照。

这就是事实链接。在 Hindsight 官网有一句话 AI 代理会在会话间忘记所有内容。每次对话都是从零开始——没有关于你是谁、讨论过什么或助理学到了什么的背景信息。这不仅仅是实现细节;它从根本上限制了人工智能代理的能力。 这话说得太准了,Hindsight 把问题拆到了最原始的角度,是简单向量搜索搞不定时间和事实推理。
Agent 知道火会发光,也只是火是烫的,但是没有想过发光的东西也会烫。因为事实之间会断联。Hindsight 通过 retain() 存储信息,通过 recall() 进行搜索,通
过 reflect() 进行推理,所有交互都与其专用的 memory bank。
🔻这是 Hindsight 在 LongMemEval 上的评分。

一. Docker 部署 Hindsight
Hindsight 有一套 Saas 服务,需要去云端申请 API,也可以自托管本地向量。但是对于拥有 NAS 的我们来说,完全的自托管 + 自用 API ,肯定是更好的选择。
这是我日常跑 Hindsight 的性能消耗,平均 1G 内存的占用。

在 Hermes 的配置文件里,我们可以看到它提供了多个外部记忆库。其中 Mem0、OpenViking、Supermemory 我们之前其实都介绍过,各有利弊。

首先我们来搭建本地的 AIO 容器,该容器内包含了完整的前端、数据库代码。docker-compose.yaml 文件如下。
项目一共使用了三个模型,分别是 LLMs、向量、重排序。前者任何模型都通用,后者推荐硅基。
services:
hindsight:
image: ghcr.io/vectorize-io/hindsight:latest
container_name: hindsight
ports:
- "8888:8888"
- "9999:9999"
environment:
# 下面是 LLMs 模型
HINDSIGHT_API_LLM_PROVIDER: openai
HINDSIGHT_API_LLM_BASE_URL: openai 兼容端点
HINDSIGHT_API_LLM_API_KEY: 你自己的 api key
HINDSIGHT_API_LLM_MODEL: 模型名称
# 下面是向量模式
HINDSIGHT_API_EMBEDDINGS_PROVIDER: litellm-sdk
HINDSIGHT_API_EMBEDDINGS_LITELLM_SDK_API_KEY: 硅基 Key
HINDSIGHT_API_EMBEDDINGS_LITELLM_SDK_MODEL: openai/BAAI/bge-large-zh-v1.5
OPENAI_API_BASE: 换硅基 端点
# 下面是重排序模型
HINDSIGHT_API_RERANKER_PROVIDER: siliconflow
HINDSIGHT_API_RERANKER_SILICONFLOW_API_KEY: 硅基 Key
HINDSIGHT_API_RERANKER_SILICONFLOW_MODEL: BAAI/bge-reranker-v2-m3
volumes:
- hindsight_data:/home/hindsight/.pg0
restart: unless-stopped
volumes:
hindsight_data:
打开极空间 Docker 应用,创建一个全新的 Compose 项目,名称、目录自定义。在 yaml 代码里把上面内容复制进去创建。
需要注意的是,在这里我使用了 docker volume 以解决数据库文件的权限问题。如果你想直接绑定在文件夹里,需要自行更改极空间文件夹权限 chown -R hindsight:hindsight /你的项目路径

接着,去修改极空间 Hermes 目录下的 config.yaml 或者直接告诉 Hermes,让它帮你配置并在 config.yaml 里开启。
🔻config.yaml 修改方式

🔻 Hermes 自行修改

二. Hindsight 前端介绍
这个项目还有一个前端面板,可以脱离 Agent 查看记忆信息。默认 9999 端口就是对应的 webui。

如果你为多个 Agent 都提供了 Hindsight 记忆库的,那么需要设定不同的 memory bank ,在记忆库中挑选实际在用的节点查看。
值得注意的是,如果多个 Agent 共用了一个 memory bank ,那么它们的记忆就可以共享,这也是 Hindsight 的特点。

开头其实已经介绍过了项目的四大基础内容,在世界事实、观察、经历里,都拥有星座图、图谱、表格、时间线等四种展示方式,每一个节点打开后都有具体的内容、实体、标签和关联线。

实体,代表着一个独立的个体,也是一个逻辑单位。比如我最常用的 NAS ,点击实体可以看到和它关系的图谱信息。

Hindsight 的核心是三个 API,retain、recall、reflect。听起来简单,但背后的设计真的很深。
先看 recall,在页面上可以模拟召回指令。从效果上看,它不仅仅只是一个向量搜索,而是采用了四种策略并行检索,语义搜索找概念相关的,BM25关键词搜索找精确匹配的,时间推理处理「去年春天」这种表达,图遍历处理事实之间的关联。

它能根据事实、经历等检索出不同的内容,并且给出可信打分。

reflect 是非常让我惊艳的部分,它的检索是会思考的。它会检查 mental model 里的用户偏好,将观察结果与当前情境进行权衡,然后综合所有信息给出一个有判断力的回答。这个过程中它还会更新自己的 mental model,把新学到的知识沉淀下来。
这不仅是静态的存储,更是动态演化的认知系统。虽然事后诸葛亮,但是活过来了。

甚至这些相关行为,你还在 Hindsight 的设置里进行修改。这就非常有意思了。

写在最后
Hindsight 这个记忆工具,初次使用的时候可能跟普通RAG没什么区别。但随着你越用越多,它会越来越懂你。它知道你偏好什么代码风格,知道你习惯用什么技术栈,知道你之前踩过哪些坑。这种个性化的积累,是任何通用大模型都给不了的。
在我尝试了那么多款记忆系统后,我还是真正感受到一个从认知科学角度出发设计的分层记忆架构是怎样的。之前在网上看到很多所谓的科学认知分层,什么三层记忆、九层宝塔,真的落地全靠 LLMs 自觉,根本不靠谱。
而 Hindsight 目前体验下来,工程化程度非常高,可能是我目前看到的最接近「可用」的那个。
但如果你在使用 Hermes,并且很头痛它的记忆能力,这个工具值得投入时间去研究。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

信太多因为知道太少
校验提示文案
信太多因为知道太少
校验提示文案