Py学习  »  Git

GitHub 3.2万 Star,又一款开源的 Agent 记忆系统火出圈了

AI开源无界 • 11 小时前 • 15 次点击  

 

今天写一下 Hindsight,Vectorize.io 开源的 Agent 记忆系统,MIT 协议,现在 GitHub 上 3.2 万 Star。

先说一下为什么关注记忆这个方向,模型本身不存状态,这轮对话里用户说过的偏好、纠正过的错误,下次启动就全没了。常见的办法是往上下文里塞历史记录,或者接个 RAG 做检索。这些办法解决的是存和搜的问题,Agent 从过去的交互里学不到什么。Hindsight 想解决的是另一件事:让 Agent 把过去的交互变成以后能用的经验。

Hindsight 是什么

Hindsight 把记忆拆成几类:事实、经历、从经历里归纳出的结论,分开存。项目配套发了一篇论文,《Hindsight is 20/20》,合作方里有弗吉尼亚理工 Sanghani 中心和华盛顿邮报的研究人员。官方说论文里的基准测试结果由这两家独立复现过,不过这两家本身也参与了研究,这个大家自己判断。

测试成绩方面,LongMemEval 长期记忆基准上,Hindsight 配 Gemini-3 Pro 拿了 91.4%,论文里说这是公开报告里的最高分。我更感兴趣的是另一个数,它配一个 20B 的开源模型能跑到 83.6%,同一个模型不用 Hindsight、把全部对话历史直接塞进上下文,只有 39.0%。差了 44.6 个点,模型还是同一个模型,提升出在记忆这部分的做法上。官方仓库现在挂出来的对比图里,成绩已经更新到 94.6% 了。

LongMemEval 基准对比
LongMemEval 基准对比

功能详情

四种记忆分开存放

很多记忆系统是把所有内容混在一个库里,Hindsight 分了四类:

  • • 世界事实,就是客观知识。
  • • 经历,Agent 自己做过什么、被用户纠正过什么。
  • • 观察,从很多条记忆里归纳出来的结论,每条都带证据。
  • • 心智模型,对某个问题的理解,会跟着新记忆更新。

分开存以后,查到的是事实,还是系统归纳出的判断,一眼能分清。

Hindsight 记忆网络结构
Hindsight 记忆网络结构

Retain:写入前会先理解内容

retain 是写入。原文不会直接进数据库,写入前先让 LLM 抽事实、实体、关系和时间,再归一化建索引。纯向量库只做 embedding,这里多了一步理解。

retain 操作流程
retain 操作流程

Recall:四路检索同时跑

recall 是查询。一次查询会同时跑四路,语义向量匹配、BM25 关键词匹配、沿实体和时间关系的图谱检索、按时间范围过滤。四路结果汇总到一起,先拿 RRF 算法做融合排序,再过一个重排模型,最后按 token 预算裁剪输出。“六月那段时间发生了什么”这种带时间条件的问题也能答。

recall 操作流程
recall 操作流程

Reflect:在已有记忆上做分析

reflect 是在已有记忆上做分析,得出新的结论。

官方举了几个例子:

项目管理 Agent 可以分析一下当前项目有哪些风险要处理。销售 Agent 可以总结一下哪类 outreach 话术回复率高;客服 Agent 能发现哪些问题在产品文档里还没有答案。

记忆库还能配性格参数,怀疑度、字面度、共情度,同样的证据,不同性格的 Agent 形成的观点不一样。观点带置信度,来了新证据会在原来的判断上更新,不会直接覆盖掉。

reflect 操作流程
reflect 操作流程

记忆银行:每个用户一个独立的库

记忆存在 bank 里,一个用户或者一个项目对应一个 bank,库之间严格隔离,不会互相泄露。多语言这块做得比较细,中文人名张伟存进去还是张伟,不会被转成 Zhang Wei。

另外有个 Memory Defense 功能,写入的时候自动扫描密钥和个人隐私信息,内置 45 种匹配模式,发现了可以打码,也可以直接拦下来不进存储。

心智模型和知识页

心智模型可以理解成给 bank 提一个固定问题,比如“这个用户的偏好是什么”,Hindsight 把答案写好存起来,后台来了新记忆就重写一遍。读它就是一次数据库读取,不走检索也不调模型,Agent 每次启动可以直接带着一页现成的知识开工。

知识页是它的简化版,像 wiki 一样按目录组织,能导出成普通的 markdown 文件。

怎么接进现有 Agent

已有的 Agent 要接的话,最简单的是 LLM Wrapper,把原来的 LLM 客户端包一层,两行代码,之后每次调用自动完成记忆的存和取。

官方列了 60 多个集成,LangGraph、CrewAI、n8n、Dify 这些都能接。每个 bank 自带一个 MCP 端点,支持 MCP 的客户端把地址指过去就能用。

写代码的场景官方出了个单独的包,一条 npx 命令就能给 Claude Code、Codex、Cursor 这类命令行编码工具装上项目级长期记忆,记忆库根据 git 历史和历史会话自动建立,不用手动配置。

快速开始

我本地是用 Docker 起的服务,一条命令:

export OPENAI_API_KEY=sk-xxx

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

起来以后 API 在 8888 端口,管理界面在 9999 端口,浏览器打开就能看到记忆库的内容。

命令里的 OPENAI_API_KEY 是官方文档沿用的变量名,实际用哪家的 key 都可以,不绑定某一家。

模型支持 25 家以上,DeepSeek、MiniMax 都在里面。想本地跑就接 Ollama、LM Studio 或 llama.cpp;任何 OpenAI 兼容接口也能用,改 HINDSIGHT_API_LLM_PROVIDER 就行。

代码里主要就三个方法:




    
from hindsight_client import Hindsight

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

# 存

client.retain(bank_id="my-bank", content="Alice works at Google as a software engineer")

# 查

client.recall(bank_id="my-bank", query="What does Alice do?")

# 反思

client.reflect(bank_id="my-bank", query="Tell me about Alice")

不想起服务的话,Python 里 pip install hindsight-all 可以嵌入式跑,不用单独部署。生产环境的存储用的是 PostgreSQL 加 pgvector,要上 Kubernetes 也有现成的 Helm chart。官方也有托管版 Hindsight Cloud,按量计费,不想自己运维可以看这个。

最后聊聊

记忆这块今年项目挺多,Hindsight 是我看下来做得比较全的:存、取、反思都有,论文、基准、SDK、集成也齐了。

不过它的测试成绩主要来自官方和合作方,Zep 团队对检索 token 开销提过不同看法,要选型的话建议拿自己的场景实际跑一遍再定。项目更新挺快,最近也挺火,连续几天在 GitHub 日榜前三,感兴趣直接去仓库翻。

开源地址

https://github.com/vectorize-io/hindsight

 

欢迎关注AI开源无界,聚焦AI开源、编程技术与互联网趋势,一起进化。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/201604