跳转到内容
全部开发指南

AI Agent 记忆怎么从“记住”变成“学会”?Hindsight 的记忆分层与 retain、recall、reflect 用法

AIGoCode发布于 更新于

AI Agent 记忆怎么从“记住”变成“学会”?Hindsight 的记忆分层与 retain、recall、reflect 用法 封面

给 AI Agent 接记忆,常见做法是把历史对话存进向量库,下次提问时捞几条相关的拼进 prompt。看起来 Agent 记住了用户,其实只是把聊天记录翻出来又念了一遍。

真正有用的记忆不只是记得说过什么。一个人帮你做事,会从过去的经验里总结规律:上次这么做踩了坑,这次就换个办法。大多数记忆方案只管存和取,不管学。

Hindsight 就是冲着这个问题来的。它是 Vectorize 开源的 Agent 记忆系统,MIT 协议,GitHub star 已超过 5 万(2026 年 11 月数据),目标是让 Agent 学会东西,而不只是记住东西。这篇讲清楚它的记忆怎么分层、三个核心操作怎么用、怎么部署和接入,以及适合哪些场景。适合正在做 Agent 应用、或者想给 AI 编程工具加长期记忆的开发者。

Hindsight 原文配图 1

Hindsight 和普通 Agent 记忆有什么不同

传统的 Agent 记忆本质上是 RAG:对话切块、向量化、查询时按相似度捞回来。它的问题和在文档检索里一样,只看像不像,不看对不对,也不会自己总结。

Hindsight 参照人脑的记忆结构来组织信息,分成几类:

记忆类型含义例子
World facts(世界事实)关于外部世界的客观知识炉子是烫的
Experiences(自身经验)Agent 自己经历过的事我碰了炉子,很疼
Observations(观察)从多条记忆里归纳出、有证据支撑的判断由多条事实和经验汇总而来
Mental models(心智模型)在事实和观察基础上形成的整体理解Agent 对自身所处环境的认识

关键在后两层。普通记忆系统存进去什么就是什么,Hindsight 会回头看已经存下的内容,归纳出新的认识。名字也由此而来:hindsight,事后之明。

记忆存放在 bank(记忆库)里。新内容写入时会进入世界事实或自身经验的通道,再拆成实体、关系和时间序列,并带上稀疏和稠密向量,方便之后检索。

在长期记忆评测 LongMemEval 上,Hindsight 公布的准确率在已测的记忆方案里最高,这组成绩由弗吉尼亚理工 Sanghani 人工智能与数据分析中心和华盛顿邮报的研究合作者独立复现过,其他方案的分数是厂商自报。实时更新的评测结果可以在官方的 benchmark 页面查看。

三个核心操作:retain、recall、reflect

Hindsight 对外的核心方法只有三个。

retain(存):把想让它记住的信息写进去。背后会用 LLM 抽取关键事实、时间、实体和关系,整理成可检索的结构,而不是直接存原文。

from hindsight_client import Hindsight

client = Hindsight(base_url="http://localhost:8888")

# 存一条记忆
client.retain(bank_id="my-bank", content="Alice 是 Google 的软件工程师")

# 带上下文和时间戳
client.retain(
    bank_id="my-bank",
    content="Alice 升任高级工程师",
    context="career update",
    timestamp="2025-06-15T10:00:00Z"
)

recall(取):检索记忆。它不是单一的向量查询,而是语义检索、关键词检索(BM25)、图检索(实体和时序关联)、时间检索四路并行,合并后用 reciprocal rank fusion 重排,再用 cross-encoder 精排,最后按 token 上限裁剪。

client.recall(bank_id="my-bank", query="Alice 是做什么的?")
client.recall(bank_id="my-bank", query="六月发生了什么?")  # 支持时间类查询

reflect(想):让 Agent 基于已有记忆做更深的分析,建立联系、生成新的判断。比如销售 Agent 反思为什么有些外联邮件有回复、有些没有;项目管理 Agent 反思项目还有哪些风险。

client.reflect(bank_id="my-bank", query="关于 Alice 我应该知道些什么?")

Hindsight 原文配图 2

Hindsight 部署:Docker 一条命令

官方推荐用 Docker 部署。把下面的 sk-xxx 换成你自己的模型 API Key:

docker run -it --pull always --name hindsight --restart unless-stopped \
  -p 8888:8888 -p 9999:9999 \
  -e HINDSIGHT_API_LLM_API_KEY=sk-xxx \
  -v hindsight-data:/home/hindsight/.pg0 \
  ghcr.io/vectorize-io/hindsight:latest

启动后 API 在 http://localhost:8888,自带的管理界面在 http://localhost:9999。

模型后端不绑定 OpenAI。通过环境变量 HINDSIGHT_API_LLM_PROVIDER 可以切换到 25 种以上的模型服务,包括 Anthropic、Gemini、Groq、DeepSeek 等托管服务,Ollama、LM Studio 等本地方案,以及任意 OpenAI 兼容接口。

客户端 SDK 的安装:

pip install hindsight-client -U
npm install @vectorize-io/hindsight-client

Hindsight 原文配图 3

接入方式:从两行代码到 MCP

LLM Wrapper:最省事的方式。把现有的 LLM 客户端换成包装版,之后每次调用前会自动检索相关记忆,调用后自动保存对话,业务代码基本不用改。

from openai import OpenAI
from hindsight_litellm import wrap_openai

client = wrap_openai(
    OpenAI(),
    bank_id="user-123",
    hindsight_api_url="http://localhost:8888",
)

Anthropic SDK 有对应的 wrap_anthropic()。需要精确控制什么时候存、什么时候取,就直接用 SDK 或 REST API。

MCP Server:每个 Hindsight 服务默认带 MCP 端点,每个 bank 一个,地址形如 http://localhost:8888/mcp/<bank_id>/。任何 MCP 客户端接上后,都能把 retain、recall、reflect 当工具调用。

AI 编程工具:官方提供了一个给命令行编程 Agent 用的包,会根据 git 历史和过往会话为每个仓库自动建记忆库,并在 Agent 开始工作时注入:

npx @vectorize-io/hindsight-coding-agents install claude-code

支持 Claude Code、Codex CLI、Cursor CLI、GitHub Copilot CLI、opencode 等。如果你主要想给 Claude Code 加记忆,也可以对比一下更轻量的方案:claude-mem 安装与使用教程:给 Claude Code 加上跨会话记忆。

适合哪些场景

Hindsight 不是所有 Agent 都需要。它更适合需要长期记忆、还要从经验里成长的场景:

  • 处理开放式任务的 AI 员工:根据反馈调整做法,慢慢把复杂工作做好;
  • 个性化聊天机器人:每个用户一个 bank 或用 metadata 隔离,记忆互不串台;
  • AI 编程工具的项目记忆:让编程 Agent 记住仓库的架构、约定和进行中的工作。

如果只是用 n8n 搭一个简单的 AI 工作流,Hindsight 可能有点重,没必要上。

同类方案的取舍可以参考 Mem0:给 AI 应用和 Claude Code 加长期记忆的开源记忆层。Mem0 侧重轻量的记忆层,Hindsight 多了反思和心智模型这一层,适合更看重“学习”的场景。

注意事项

  • 写入有模型开销:retain 要调用 LLM 抽取事实,reflect 也要推理,记忆量大时要算一下成本。
  • 记忆隔离要提前规划:多用户场景用不同的 bank 或 metadata 标签区分,避免串台。
  • 注意端口暴露:上面的 Docker 命令会把 8888 和 9999 两个端口映射到宿主机,部署在服务器上时要用防火墙或反向代理限制访问,不要直接暴露到公网。

总结

市面上很多 Agent 记忆方案还停在把对话存进向量库再捞出来的阶段。Hindsight 把“记住”和“学会”拆开:前者是检索问题,用四路检索和重排来解决;后者是反思问题,用 observation 和 mental model 来承载。如果你在做需要长期和用户打交道、或者要自主完成复杂任务的 Agent,值得花一两个小时接进去试试。

想让 Claude Code 或 Codex 也用上这类记忆能力,可以先在 AIGoCode 上创建 API Key 接入编程工具,再装上 Hindsight 的编程 Agent 集成。

参考链接