Hindsight 深度评测:4.6 万 Star 的 Agent 记忆系统,2538 条行为快照我重跑零处不一致,5 条日期误判却被冻在测试里

用 AI 编程助手写代码的人,几乎都吃过同一类闷亏:上周明明让它查过一遍、结论都写在对话里了,这周开个新会话,它又把同一个坑重新踩一次。你骂它失忆,其实它没坏——它的「记忆」就是这次对话,会话一关就清零。

Hindsight 想解决的就是这件事,而且它卖的不是「记住对话」,是「越用越懂」。它已经拿到 4.6 万 Star,官方还挂出一句话:据其测试,它是目前被测过的记忆系统里最准的一个。

比星数更让我想认真写它的是另一件事:这个项目给自己的测试下了极重的功夫。它有一份 2538 条的标准答案表,专门锁住「日期理解」这一项行为——换个人改代码,答案变一条就算错。我把这份表原样跑了一遍,一条没差。

先说它到底是什么

一句话:Hindsight 是一个给 AI 智能体(也就是能自己动手干活的 AI 程序)用的长期记忆系统。它跟「把聊天记录扔进向量数据库」的做法不是一个路子。

它自己给记忆分了四类,也是它宣称更准的原因:

记忆类型 装什么 举个例
世界事实 关于外部世界的知识 「那个灶台是烫的」
经历事实 智能体自己的经历 「我碰了那个灶台,真的很疼」
观察 从多条记忆里归纳出的信念 「碰灶台会疼,别碰」
心智模型 长期沉淀成的稳定认识 「这台设备的高温区在哪」

它的核心动作只有三个:retain(存进去)、recall(取出来)、reflect(让它自己想一遍、形成新结论)。差别在于存的时候不是原样丢进去,而是让大模型先抽出事实、时间、实体和关系,再归一化成结构化的东西;取的时候也不是单靠相似度,而是四条路同时走——语义相似、关键词精确匹配、实体关系图、时间范围过滤——再把四路结果合并排序。

规模是这样的:

部分 作用 实测规模
服务端核心 记忆引擎、接口、任务调度 16.8 万行 Python
客户端 四套语言的 SDK 6.4 万行 Python(仅 Python 那套)
命令行工具 终端里直接操作 1.7 万行 Rust
网页控制台 管理界面 15.6 万行 TypeScript
现成集成 把记忆接进各种现成工具 55 个集成目录,官方文档站列了 62 个
数据库迁移 表结构历史 111 个迁移脚本

把仓库里所有 Python 代码(含测试、各语言客户端和集成)加在一起是 56.6 万行,上面只列了主要几块。

代码量最大的一个文件是记忆引擎主文件,单个文件 23213 行——这一点见仁见智,我在下面「不完美的地方」里单独说。

它是怎么做到「越用越懂」的

三个设计值得单独拎出来,因为它们决定了它和「一个向量库 + 一段提示词」的区别。

存进去的东西会被反复整理,而不是越堆越多

新事实进来后,后台不是不管了,而是把相关的记忆慢慢归并成「观察」——一条带证据的信念。关键在于:新证据来了不是覆盖旧的,而是修正它,还会保留原话和证据条数。这意味着一条被推翻的旧结论是有痕迹的,而不是无声消失。

这一点为什么重要?因为智能体记错事实,通常不是「没查到」,而是「查到了一条早就过期的事实但不知道它过期了」。

时间理解是手写的,而且被 2538 条答案锁死

「上周三的报错」这句话,机器要理解成一段时间范围,才能去查。多数方案直接交给一个现成的时间解析库,出错就出错。Hindsight 的做法是手写规则,其中中文规则占比最大——单个中文时间规则文件 1845 行。

我把它拷进沙箱单独跑了一遍,用固定的「今天 = 2026 年 8 月 12 日」当参照,中文的 57 条时间说法里 49 条给出了明确区间,结果都对:

输入 它解析出的区间 对不对
昨天 8 月 11 日 到 8 月 11 日 对
上周 8 月 3 日 到 8 月 9 日 对
上个月 7 月 1 日 到 7 月 31 日 对
第一季度 1 月 1 日 到 3 月 31 日 对
最近三天 8 月 9 日 到 8 月 12 日 对
这周末 8 月 15 日 到 8 月 16 日 对(当周还没到)
上海的天气 不给区间 对(没当成时间)

这套规则不是只写在文档里的想法,它有一份锁死行为的答案表:整个语料库 423 条查询,每条配 6 个不同参照日期,一共 2538 个结果全部快照存盘,改代码后任何一条答案变了就测试失败。我把这份表原样重算了一遍,2538 条结果与快照零处不一致,跑完 24 秒。

最后一行是最容易翻车的地方:「上海」含「上」,「东京」含「东」,瞎认时间会污染检索。它专门存了一份「不该被当成时间」的陷阱句清单,包含中文地名和英文里的假时间词(比如连接这个单词里含「ect」、问题这个词含「hat」,都是时区缩写)。这份清单共 36 条,我逐条跑了一遍,31 条干净,5 条仍然被误判成具体日期。

误判集中在英文的「may」(五月/may 情态动词)上——四句话里带着「may」,全被判成 5 月 12 日那一天:

输入(英文) 它解析出的区间 应该
may 5 月 12 日 不是时间,是情态动词
the may report 5 月 12 日 「那份可能有的报告」或「五月报告」存疑,不该直接定死
may I ask a question 5 月 12 日 「我可以问个问题吗」
so what do we do now 8 月 12 日(当天) 「那我们现在怎么办」

这不只是数字好看不好看的问题:它在取记忆的时候,解析出的区间会被直接当成时间过滤器用,把检索范围收窄到那一天。也就是说,一句「我们可以问个问题吗」可能让这次检索只翻当天的记忆,把真正相关但更早的事实筛掉——而且它不会报错,只会安静地少召回几条(也就是漏掉本该找回来的记忆)。

「跑绿 2538 条」和「有 5 条误判」听着矛盾,其实是同一件事的两面,也是它自己写清楚的:测试文件里直说这 2538 条记录的是旧实现的答案,包括那些可能本来就错的答案;优化不许改动其中任何一条,真要修正确性得另开一个可复核的改动。所以那 5 条不是漏网,是被刻意冻结住的既知缺陷——它们有测试覆盖,只是测试断言的是「行为不变」而不是「行为正确」。这个取舍本身是成熟的工程做法,但它也说明:这份表是防回归的护栏,不是正确性的证明。

存进去之前,先把密钥擦掉

给智能体加记忆有个现实风险:它会记住你贴进去的一切,包括你误粘的 API 密钥。Hindsight 的做法是在存之前过一道正则闸门,命中就替换成 [REDACTED:类型],或者直接拦下不存。

它官方文档说这套规则有 45 条。我把源码拉出来数了一遍:实际声明了 46 条,能编译生效的也是 46 条,但文档的规则清单表格里只列了 44 条。对不上。

差的那两条我逐条查了来源:

规则 状态 来源
它自己家的密钥格式 hsk_ 代码有、表格漏列 2026-09-14 那次提交补的(补之前是 45 条),提交信息说「给所有厂商都写了规则,唯独漏了自己家的密钥」
AWS 密钥的第二种写法 代码有、表格漏列 靠上下文才能认出来,测试文件里把它单独归为非边界类,所以没进那张表

也就是说,「45」这个数不是笔误,是改代码时忘了同步文档:补自家密钥那天,代码从 45 变成 46,文档三处写「45」的地方一个字没动。这类漂移不致命,但对一个把「准确」当卖点的项目来说,是值得记一笔的小账。

规则本身是真在干活。我按它测试文件里的样例造了 34 个假密钥,覆盖代码仓库令牌、云厂商密钥、支付平台密钥、消息服务令牌、数据库连接串、私钥文件六类,34 个全部被擦掉,一个不漏;反过来,普通句子里的时间戳「2026 03 18」、端口列表、版本号「1.2.3.4」都没被误伤——信用卡规则只认「数字成组 + 校验位通过」的写法,不是见数字就擦。中文紧贴着密钥写(密钥ghp_…结束)也能擦掉,这一点它有专门的提交修过。

不完美的地方

仓库不收外部贡献。它的贡献指南第一段写着:不接受团队外的 pull request,外部提交的 PR 直接关闭不审。作者的解释很坦诚——这样能让团队自己决定做什么、少审半成品、修 bug 时能把改动一起发出去。你可以说这是纪律,也可以说是把社区挡在门外,但它是明说的,不是暗着来的。

核心文件已经不短了。记忆引擎主文件单个 23213 行、1138 KB,接口层 10597 行。这不是那种「一个人一下午能读完」的代码库。它靠 622 个测试文件兜住机制层面的正确性,又用单独的「黑盒测试」(不给内部细节、只从外部调用)和「质量评测」(用真模型打分)兜住组合层面的正确性——后者自己承认单次跑红不代表回归,得重跑,因为同一个请求两次可能给出不同答案。

它宣传的 4.6 万 Star 和别人的评分,我没能独立复核。 它给出的最好成绩是 LongMemEval 基准 94.6%,并说这个成绩被弗吉尼亚理工的研究者和《华盛顿邮报》复现过。我没法验证这句话——仓库里没有第三方复现报告,只有它自己的一句话。它自己也写了「其他厂商的分数都是自报的」,这话反过来说也成立:它的分数在仓库里同样只有自报。基准成绩这件事,建议自己装一遍用自家数据跑,这也是它官方文档自己给的建议。

谁该用它,谁不该

适合:真的在做有状态智能体的人——一个助手要跨会话记住用户偏好、一个客服智能体要记住三个月前的工单、一个编码助手要记住这个项目的约定。它的四条检索路子不是营销词,是真在跑,对这种「需要精确回忆某条旧事实」的场景有实际意义。

不适合:只是想让聊天机器人更懂你的个人用户——太重了。它需要一整套服务端、一个数据库,要么自己部署,要么用它的云服务。如果你只是想让 AI 记住几句话,本号之前评过的 Mnemosyne OS 那种零依赖的小东西更合适——那篇里我也实测过,它的卖点就是轻。

它是 2025 年 10 月建仓的,到现在 3421 个提交,最近 90 天就有 1378 个,节奏很快,不是那种建完就没人管的仓库。但它也是商业公司的开源核心:Memory Defense 这类安全能力在开源版只给基础规则,企业版给的是 200 条以上的规则库——这条边界看它控制台里的文案就知道。

我的判断:值得放进观察清单,尤其是你真在做跨会话记忆的智能体。它最值得学的地方不完全是功能,而是那份 2538 条的答案表和「改代码不许改答案」的纪律——大部分项目连自己的输出都没锁住,就急着改架构了。至于它「最准」这句宣传,听完就当听完,自己跑一遍再信。

关注 AI商业快讯,每天一篇 AI 热点深度解读。

相关阅读:Mnemosyne OS 深度评测:31 星的零依赖 AI 记忆系统,自曝 11 个缺陷,我实测又挖出 7 个 · Paperclip 深度评测:4775 个提交里 2127 个署名 AI 员工

发表评论