换台电脑,或者换个编程代理,你的 AI 助手就变成一个陌生人。上周为什么放弃了流式解析,为什么绕开了某个依赖,它统统不记得。这些推理过程只活在会话日志里,会话一关,记忆归零。

Hugging Face 刚开源的 funes,想解决的就是这件小事却很烦人的问题。它把代理留下的本地会话变成可检索记忆,还能同步到你自己的私有 Hub 数据集——不是让模型更聪明,而是把最容易丢的推理过程,存成一份你能带走、能追溯的数据。

funes 怎么运作

funes 是一个单文件二进制工具,一条命令接入代理:

Code
funes add claude

它支持 Claude Code、Codex、pi、Hermes 等代理。接入后,本地会话被统一解析、切块、嵌入,写进本机的 Lance 数据集。嵌入和重排默认在你自己的机器上跑,不依赖云端模型。

代理工作时可以自己调用 recall,返回的是原始文本片段,标明来自哪个代理、哪次会话、第几轮对话。想看完整上下文,再用 get 展开。

funes 索引到检索的路径 本地会话 Claude/Codex pi/Hermes 原始日志 本机索引 嵌入+重排 不出机器 Lance数据集 recall/get 原文+来源 代理自己调用 可选 Hub 数据集 本地记忆默认不出机;绑定后才同步到你拥有的私有数据集

记忆归谁所有,对谁有用

funes 最实在的设计,是把记忆当成你拥有的数据集,不是租来的服务。本地记忆默认不出机。绑定一个 Hugging Face 数据集后,记忆才会跟着你的账号走——换机器、换代理都能 recall 到旧的决策和失败路径。

发布前会先脱敏一次,推送前再扫描一遍,尽量拦住看起来像密钥的内容。但这不是绝对保证,官方也没说能识别所有敏感信息。

这对两类人意义不一样。经常换电脑、换代理干活的程序员,能省掉手写交接记录的功夫——上次为什么放弃某个方案,recall 一下就能翻出来,不用凭记忆重述。

关注代理基础设施和数据治理的技术负责人,该盯的是另一件事:funes 只解决了存储和检索,权限没解决。谁能读团队记忆、哪些项目的会话不该同步到 Hub,都得自己定规则,现在没有现成方案。涉及客户密钥、合规数据的项目,建议先在本地测一遍脱敏效果,再决定要不要绑定 Hub 同步。

省钱是真的,但两项基准别急着外推

官方在 handoff-vs-recall 基准上测了两项任务,都必须依赖会话历史才能回答。对比三种延续上下文的方式:压缩重述、写书面交接、直接 recall。

任务recall 成本(相对书面交接)压缩重述表现
任务一约 1/8稳定
任务二约 1/4关键发现被压没,直接答错
官方基准:两项任务的成功成本 任务一 交接 recall,约1/8成本 任务二 交接 recall,约1/4成本 压缩重述在其中一项任务上把关键发现丢了,直接答错

这个数字很吸引人,但只成立于项目方自己设计的这两项任务,不能当成所有编码场景的通用比例。

检索本身会漏召回,脱敏扫描不是万能防线,记忆是追加式积累,用久了会膨胀出噪声。团队共享还牵扯权限管理,funes 本身没给出治理方案。

接下来值得盯的,是社区能不能在真实项目里复现类似的省钱比例,以及记忆库变大之后,recall 的召回质量会不会跟着下降。


funes 的名字取自博尔赫斯的短篇《博闻强记的富内斯》,那个记得一切细节却无法归纳思考的人。博尔赫斯写道:"思考就是忘记差异,做概括,做抽象。"funes 想做的正好相反:细节留着,变得可检索、可追溯;归纳交给使用它的人和代理去做。

它省的是重建上下文的钱,不是替你做判断的钱。索引质量、排序算法、原始记录本身的好坏,决定了 recall 能捞出什么。检索工具再好,也只是把史料整理清楚,不代表理解了历史。

博闻强记者不善归纳,funes 也一样:它替你记住细节,却从不替你下判断。