返回 AI 情报
产品精选 722026-09-03 08:00Hugging Face:Blog(RSS)

Hugging Face 发布开源工具 funes,为编码智能体提供可本地持有的记忆层

Give Your Coding Agents a Memory You Own

精选理由

原文给出本地记忆层的检索机制、跨 Agent 复用方式,以及召回比压缩和交接更省成本的基准数字,方法可直接复用。

AI 摘要

Hugging Face 发布开源工具 funes,为 Claude Code、Codex、pi、Hermes 等编码智能体提供本地记忆层,把已有会话记录索引成 Lance 数据集,一条 funes add 命令即可让 Agent 自主召回原始出处(Agent、时间戳、会话、轮次)。

正文 · AI 翻译

我在多台机器上工作,会根据任务切换不同的编码智能体。它们每一个面对我的项目时都形同陌路。“上周二”的推理过程在会话结束时便消失无踪。每个新智能体,在每台新主机上,都从零开始。今年早些时候,《软件会遗忘:智能体轨迹才是记忆》一文指出,编码智能体其实早已产出了我们一直在丢失的那份记录。当它们搜索代码库、尝试各种方案、遭遇错误、阅读文档、改变方向时,会留下详尽的轨迹,不仅记录了改了什么,更记录了为什么这么改。

虽然诊断是正确的,但轨迹只是潜在的记忆。智能体的会话日志仍然只是一份存档。你无法靠 grep 在上万轮对话中检索出“我们为什么放弃了流式解析器?”这个问题。要让智能体在工作时利用这些轨迹,就需要对它们进行索引、检索、排序,并确保精确的来源追溯。

这正是 funes 所提供的。它是为你的智能体(Claude Code、Codex、pi 和 Hermes)打造的持久记忆层。它基于你机器上已有的会话构建。它在本地运行,只需一条命令即可成为智能体日常工作流程的一部分。当你需要时,它还可以将数据传送到你拥有的 Hugging Face 数据集上,默认设为私有。

为你正在使用的智能体添加记忆

funes 是一个单一二进制文件。其默认推理后端不依赖任何 ML 运行时,嵌入向量和重排序都在你的机器上本地完成。安装它:

curl -fsSL https://huggingface.co/buckets/huggingface/funes/resolve/install.sh | sh

然后将其添加到某个智能体:

funes add claude # or: codex, pi, hermes

这一条 add 命令会构建首个索引,让智能体具备 recall 和 get 工具,并安装自动化流程,对每一轮已完成的对话进行索引。索引是增量式的,新的运行只会新增对话轮次,而不会重新嵌入整个历史记录。较旧且更深层的内容可以在有界步骤中回填。

从那里开始,你只需正常工作。当某个任务涉及过去的决策、理由或发现时,智能体可以自行调用 recall。你无需记住旧的会话,也无需将其上下文粘贴到新会话中。

加入 funes 之后,回忆发生在对话内部。智能体会自行调用其记忆,并在其回答背后标明对应的会话。

recall 返回的是原始文本而非摘要,并精确显示其来源(智能体、时间戳、会话和轮次)。每个结果都包含一个 get 命令,可打开完整的对话轮次及其上下文。

在底层,一条确定性的流水线将每种受支持的 trace 解析为统一的轮次与块结构,对其进行分块,用固定的本地模型嵌入,并写入本地 Lance 数据集。查询时结合向量搜索和 BM25 搜索,融合两者的排序结果,用 cross-encoder 对候选进行重排,按时间远近重新加权,并附上相邻的块。

这种设计赋予了 funes 三个重要特性:

跨智能体的统一记忆:Claude Code、Codex、pi 和 Hermes 都写入相同的数据结构。recall 可跨越它们的历史记录,每条命中结果都会标明是由哪个智能体产生的。

原始证据保持完整:写入时不会将任何内容蒸馏成一条事实。任何结果都可以回溯到产生它的那一轮对话。

默认情况下,召回是本地化的:不需要任何账户或 Hub 仓库。托管模型不会处理你的会话用于索引;嵌入向量和重排序都在你的机器上运行,而你的编码智能体负责推理。

“智能体是陌生人”的问题在一台机器上已经解决了。但当下一个智能体在别处运行时,记忆会变得更加有用。

记忆是一个数据集,而不是一项服务

要让记忆跟随你的工作流转,在向智能体添加 funes 时绑定一个即可:

funes add codex acme/funes-memory

绑定操作会将你当前的记忆发布到该处。随后 funes 会持续保持其更新,在本地为每一轮交互建立索引,并在会话边界处进行发布。智能体在整个过程中都从该记忆中进行回忆。在另一台机器上运行同样的命令,记忆便会跟随你到那里。

在底层,本地记忆是一个 Lance 数据集,而共享记忆则是一个归你所有的 Hugging Face 数据集(默认设为私有)。

在内容到达 Hub 之前,凭据已在索引过程中被移除。发布时则会再次扫描每一个分块,并扣留任何看起来仍像机密的内容。这背后的扫描机制已在 SECURITY.md 中说明,包括其覆盖范围与不覆盖的内容。

当智能体读取远程记忆时,funes 会在本地缓存数据集文件,因此热查询可恢复到本地速度。Hub 提供它已为其他数据集提供的所有权、访问控制、版本管理和分发能力。你的记忆不会成为某个独立记忆服务中的账户,也不需要通过 API 付费租回自己的记忆。

先提问,后接线

recall 是为智能体而设计的。当你想亲自向记忆提问时,请使用 ask。它默认读取你的本地记忆:

funes ask claude "what did we decide about the streaming parser"

也可以指向共享记忆。我们发布了一份 funes 开发过程的记忆,因此你可以询问 funes 为何如此运作,而无需自行创建记忆:

funes ask claude "why is funes append-only" --memory huggingface/funes-memory

funes ask 是 funes add 的只读、单次提问的姊妹功能。它会检索相关段落,将其交给编码智能体,并返回一个注明来源的有据可依的答案。它不会安装集成,也不会改变智能体的持久化配置。

检索未命中不会被掩盖。如果段落不足以支撑答案,智能体会如实说明。你可以重新表述问题,或将 funes 添加到智能体中,以便它在正常工作期间迭代式地搜索记忆。

切换智能体而不丢失上下文线索

共享记忆不绑定于创建它的智能体或模型。在 Claude Code 中开始一项任务,下周在 Codex 中继续,第二个智能体可以回忆起第一个智能体的推理过程。使用 pi 搭配本地模型或通过 Hugging Face 路由器提供的模型,然后再回到 Claude。

Claude 做出决定;一个 hook 将其索引;Codex 在另一个会话中回忆起它。演示中较早的命中记录是同一实验的早期录音:一个仅追加的记忆也记住了排练过程。

这在几个不同的层面都很重要:

跨你的机器:将每个智能体绑定到一个记忆,无论你使用哪台主机,都能回忆起历史记录。

跨团队:新队友的智能体可以在第一天就检索到数月的决策记录,包括从未进入 pull request 的死胡同和决策理由。

伴随开源项目:维护者可以发布某个版本背后的会话,并在推送时为其命名。可以把它看作一个可搜索的 CLAUDE.md,保存着项目为何成为如今这般模样的历史,而不是一个需要有人不断重写的页面。任何人都可以通过 --memory 读取公共记忆。

已发布的记忆带有数据集卡片和 funes 标签,使其在 Hub 上易于识别和发现。Hub 已经托管开放权重和数据集。funes 增加了开放的工作记忆。它保存着项目背后的决策、失败的方法和理由,可被其他智能体查询,并可追溯到产生它们的会话。

长会话最省钱的出路

长时间的调查会让会话不断膨胀,直到每一轮携带上下文的成本超过实际完成工作的成本。通常的解决办法是让智能体压缩上下文后继续,或者写一份交接文档然后重新开始。Recall 是第三种方案,因此我们在“交接 vs. Recall”基准上对它们进行了对比测试:两个任务,其答案在缺少会话先前知识的情况下无法重建。

压缩(Compaction)是大多数智能体默认采用的方式,也是三种方案中唯一一个结果出现分歧的:它在一个任务上成功到达,在另一个任务上却始终未能到达。在失败的地方,它的摘要把关键发现给抹平了。Recall 返回的是原文段落本身,因此发现不必经受摘要这一关的考验。

Recall 在两个任务上都是三者中最便宜的方案,在一个任务上比书面交接便宜 8 倍,在另一个任务上便宜 4 倍。

每个条形图中较浅的部分是准备通道、交接或压缩的一次性开销,在提出第一个问题之前就已支付,且只计一次。叉号标记表示该通道始终未能到达,因此没有每次成功的成本。

别再从头开始

“思考就是遗忘差异、进行概括、做出抽象。” —— 豪尔赫·路易斯·博尔赫斯,《博闻强记的富内斯》

你的智能体已经写下了记录。funes 托管在 github.com/huggingface/funes,只需一条命令,就能把那条记录变成下一个智能体可以读取的记忆——无论你此刻在哪台机器上。

基于开源构建

funes 几乎没有自创什么。它依托于足以在本地运行的开源嵌入模型、Lance 支持低成本增量写入的追加式数据集,以及 Hub 针对数据集提供的缓存与内容去重能力。真正的工作在于把这些能力整合成智能体真正可用的记忆。

funes 同样是开源的。无论是安装问题、记忆召回遗漏,还是你希望支持的智能体,都可以提交 issue。

原文

Original Title

Give Your Coding Agents a Memory You Own

Source

Hugging Face:Blog(RSS)

Site

huggingface.co

Published

2026-09-03 08:00

阅读原文· huggingface.co

继续阅读