AI Pulse

以前每个会话从零开始,funes 让 AI 编程代理记住上次的决定

以前每个会话从零开始,funes 让 AI 编程代理记住上次的决定

funes 是一个本地记忆工具,解决的是 AI 编程代理的失忆问题。每个新会话都从零开始,上一个会话里的内容和做过的决定不会自动带过来。Claude Code、Codex、pi、Hermes 这四种代理的历史会话轨迹,会被它索引进一个 Lance 数据集。之后代理可以直接从这个数据集里取用记忆。

安装

安装走命令行。一条 curl 命令装好二进制,然后运行 funes add codex,也可以换成 claude、pi、hermes。这条命令会构建第一个索引、注册工具并安装钩子,之后新对话轮次会被自动索引。

用法

查询记忆有两个命令。funes recall "why did we switch off the streaming parser" 返回来自真实会话的排名段落,每个命中都标了出处。用 funes get <session_id> --from 40 --to 60 可以打开对应上下文。funes ask claude "what did we decide about the storage layout" 先在本地检索,再把检索段落交给选定的代理回答。

数据边界

funes 在数据安全上做了几层防护。索引流程是确定性的:解析转录、分块、本地嵌入、存成 Lance 数据集。这条路径上没有 LLM。嵌入模型固定并记录在数据集里,查询时遇到不兼容模型会直接拒绝。push 时有一个始终开启的 fail-closed 扫描,含秘密的块不会离开机器。本机装了 TruffleHog 的话,索引阶段还会先给检测到的凭据脱敏。

有一个边界需要分开说。ask 的检索在本地完成,但生成回答要调用所选代理。这个环节是否离线取决于代理本身。funes 能保证的是索引和存储路径的确定性,不是整条推理链的隔离。

存储与检索

存储用 Lance 格式。一个 Lance 数据集目录装下全部内容。chunks.lance 里是文本、出处和向量,_indices 里是 BM25 和向量索引,_versions 里是已提交版本。不需要为同一份记忆维护多套数据库。

检索是混合的。向量搜索抓语义,BM25 抓精确的名称、错误、标识符和路径。候选结果重排后再按新近度加权,较新的决定权重更高。已完成轮次会产生确定性的块 ID,重新索引时不会重复嵌入已经写过的块。记忆是一个可重建的产物,源转录才是事实来源。

定位

funes 把自己定位成本地召回层,不改写历史,只把代理做过的事变成可查询的索引。

阅读原文
📚 相关主题 开源工具

订阅 AI Pulse

每天 08:00 · 12:30 · 18:30 · 23:50 更新