funes 智能体记忆库
把你的历史 agent 会话变成可检索、可发布的持久记忆。
- Star 数
- ★ 570
- 最近更新
- 2 天前
- License
- Apache-2.0
- 主语言
- Rust
- FA 评分
- 68/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code
- 费用
- 免费,无需付费服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 同一个开发者先用 Claude Code 起一个重构任务,一周后在 Codex 里继续,需要 recall 到当初为什么这么改。
- 不适合
- 需要完全离线、不愿访问 Hugging Face Hub 的团队
- 只想用生成式模型、不愿在本地跑嵌入与重排模型的环境
- 坚持单一 agent 且不需要跨工具共享记忆的个人
- 源码审查
- 68/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
funes 是 Hugging Face 推出的 Rust 命令行工具,用来给 AI 编码 agent 做持久记忆。它把 Claude Code、Codex、pi、Hermes 等 agent 的历史会话索引成一份统一记忆,写入本地 Lance 数据集,并用固定的本地嵌入模型生成向量。检索时融合向量搜索与 BM25,再对候选做多次重排,因此一次 recall 就能跨所有接入的 agent 找回过去的决策、理由和结论。记忆本身就是一个 Hugging Face dataset,可以 push 到 Hub 由队友或另一台机器读取,也可以直接读别人的公开记忆。接入 agent 后,它会以工具(recall、get)和每轮钩子的形式常驻,会话边界处自动发布新内容;数据集中文原文保留在每一行里,记忆是可丢弃的派生工件。
funes 的核心是一条确定性的索引与检索流水线。索引侧:各 agent 集成把会话记录(含 subagents/agent-*.jsonl 子代理记录)解析成统一的 turn/block 形式,切块后写入本地 Lance 数据集,并用固定的本地嵌入模型编码。检索侧:recall 融合向量检索与 BM25,对多倍于命中数的候选池重排;get 把被引用的 turn 完整还原,sessions、sketch、scan 用于按会话浏览、摘要和字面查找。ask 子命令借用 Claude 或 Codex 对记忆做有依据的回答,不安装任何东西。add 会把 recall 与 get 注册为 agent 工具,对 Claude、Codex、Hermes 还会建首次索引并装每轮钩子,绑定记忆后在会话边界自动 push;push 前先做凭据脱敏,并有常开的密钥闸门拒绝任何仍含机密的块。mcp 子命令则为通用 MCP 客户端提供入口。
- 同一个开发者先用 Claude Code 起一个重构任务,一周后在 Codex 里继续,需要 recall 到当初为什么这么改。
- 团队把 funes 记忆推到 Hugging Face dataset 仓库,新成员克隆后直接检索老项目的决策与踩坑记录。
- 排查线上问题时想找“某个报错以前在哪次会话里出现过”,用 funes scan 在历史会话里做字面查找。
- 不想安装任何东西,只想针对某个公开记忆问一个问题:用 funes ask claude ... --memory 借用 agent 给出有出处的回答。
- 把 funes mcp 挂到自研或第三方 MCP 客户端上,让非 Claude/Codex 的 agent 也具备跨会话记忆。
- 为自家 agent 写一个 funes 集成,把它的 transcript 转成 turns 格式,纳入同一份记忆统一检索。
如何安装或部署这个 Agent?
官方推荐的安装方式是用安装脚本,它会识别平台、下载对应预编译二进制、校验 tagged release 的 checksum 与版本,并放到 PATH(默认 ~/.local/bin):
curl -fsSL "https://huggingface.co/buckets/huggingface/funes/resolve/install.sh?src=readme" | sh也可以从 release bucket 手动下载二进制(Linux x86_64 为 funes-x86_64-linux、Linux aarch64 为 funes-aarch64-linux、macOS Apple Silicon 为 funes-arm64-apple-darwin),并对照 SHA256SUMS 校验。已安装的版本用 funes update 就地升级,--force 可重装当前版本。
从源码构建需要 Rust 工具链和 protoc(lance 的构建脚本在编译期编译 protobuf,成品二进制不需要它):
# Debian/Ubuntu
sudo apt-get install -y protobuf-compiler# macOS
brew install protobufcargo build --release # 二进制位于 target/release/funes
cargo test # 运行测试套件默认构建使用内置推理后端(macOS 为 Accelerate,Linux 为纯 Rust),无需 ML 运行时,任意 glibc ≥ 2.35(Ubuntu 22.04)即可运行;可选启用 ONNX 后端:
cargo build --release --no-default-features --features onnx如何使用这个 Agent?
安装后先把 funes 接入你的 agent,这会注册工具、建首次索引并装每轮钩子:
funes add claude # 或 codex、pi、hermes用 funes status 确认 recall 是否已经在读你自己的记忆。绑定一份记忆后,各 agent 会自动检索并保持其最新:
funes bind <user|org>/funes-memory不绑定时也可以直接操作记忆:
funes push <user|org>/funes-memory # 发布本地记忆的新分块
funes recall "..." --memory <user|org>/funes-memory # 单次读取任意远端记忆不安装任何东西就能试一把公开记忆:
funes recall "why is funes append-only" --memory huggingface/funes-memory
funes ask claude "why is funes append-only" --memory huggingface/funes-memory按需重建或精简记忆:
funes index [path]
funes compact [memory]遥测是匿名的安装 UUID(存于 ~/.funes/install-id,仅用于统计安装量,只发往 Hub);设置 DO_NOT_TRACK=1 或 FUNES_NO_TELEMETRY=1 可关闭。
这个 Agent 有哪些优点和局限?
- 一份记忆横跨 Claude Code、Codex、pi、Hermes,切换 agent 不丢历史,每个命中都标注来源 agent。
- 记忆本身就是 Hugging Face dataset,可推送到 Hub 供队友或其它机器读取,也能直接检索别人的公开记忆。
- 检索质量有保障:向量 + BM25 混合检索,并对数倍于命中数的候选池做重排;嵌入与重排模型固定本地运行。
- 发布有凭据脱敏和常开的密钥闸门,funes 创建的 dataset 默认私有。
- 确定性流水线 + 原始文本保留在每一行,换嵌入模型时可从 transcript 重建记忆。
- 默认安装路径依赖网络:安装脚本与 update 要从 Hugging Face 下载二进制和校验和,二进制与校验和同 bucket 不做 bucket 身份认证。
- 一份记忆只承载一个嵌入模型的向量,换模型必须整份重建,无法把另一模型的向量推进同一记忆。
- 从源码构建需要 Rust 工具链与 protoc,并要求 glibc ≥ 2.35,旧发行版无法直接运行预编译二进制。
- 它不自带生成式模型,funes ask 仍要借用 Claude/Codex 等外部 agent,回答质量受所借 agent 影响。
- 索引侧目前只覆盖内置集成(Claude、Codex、pi、Hermes),其它 agent 需要自己写集成或提供 funes JSONL / .parquet 导出。
这个 Agent 与同类方案有什么区别?
README 在 docs/RATIONALE.md 中对比了其它记忆工具,但本仓库未给出具体名称,因此这里不做具体对比。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| funes 智能体记忆库 当前 | 68 · 存在缺口 | 命令行工具免费 | ★ 570 | 2 天前 | Rust | Codex · Claude Code |
| myc 本地代理记忆与任务层 | 87 · 表现良好 | 命令行工具免费 | ★ 14 | 今天 | TypeScript | Codex · Claude Code |
| ECC 工程智能体工作台 | 66 · 存在缺口 | Agent 插件 / 技能免费版 + 付费版 | ★ 283k | 3 天前 | JavaScript | Codex · Claude Code |
| Caura | 70 · 存在缺口 | 自托管服务免费版 + 付费版 | ★ 502 | 今天 | Python | Codex · Claude Code · Claude.ai |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
信任维度整体偏强但仍有扣分点。least_privilege:README 与 SECURITY.md 明确默认本地运行、仅在你执行 push 或绑定共享记忆时才上传,且建议使用细粒度 token(写权限仅给推送机器、只读给其他机器),但安装脚本通过 curl | sh 执行远程脚本、更新器会就地替换二进制,权限边界并非最小化,故扣至 2。user_confirmation:push 前有始终开启的密钥闸门、发布默认私有、目录安装会询问一次信任,但绑定记忆后的钩子会在会话边界自动推送,属于持续性的隐式外发,故扣至 2。data_flow_transparency:README 明确说明 User-Agent 携带版本与匿名安装 id、id 存于 ~/.funes/install-id、可用 DO_NOT_TRACK/FUNES_NO_TELEMETRY 关闭,SECURITY.md 说明远程召回会下载到本地缓存、Hub 只做存储,透明度充分,给 3。sensitive_data_handling:索引期脱敏 + 发布期 trufflehog 失败关闭闸门 + funes scrub 三层防护,并给出密钥泄漏后的轮换与重建流程,处理到位,给 3。dependency_security:Cargo.toml 对 lance/lance-io/lance-index 使用精确版本 =11.0.0、object_store =0.13.2,并注释说明 11/12 的 IVF 临时目录泄漏问题,CI 中第三方 action 均按 commit 固定,但依赖数量庞大且未见审计或 SBOM,故扣至 2。external_effects:push 会创建/写入 Hub 数据集仓库、更新器会替换二进制并更新集成,属于有外部副作用的操作,虽有默认私有与闸门,但未见对更新/推送的显式二次确认,扣至 2。rollback:README 提到记忆是可丢弃的派生产物、可重建,update --force 可重装,但未见对已推送远程记忆的撤销、版本回退或二进制回滚机制,扣至 1。source_attribution:召回结果会标注来自哪个 agent 与哪次会话,ask 会点名来源,但发布者身份未经验证、许可证版权行为 2026 The HuggingFace Team 与仓库归属需自行核对,故扣至 2。
self_consistency:README 的命令表、docs 链接、Cargo.toml 中的示例与 CI 工作流相互一致,版本号 1.9.0+dev 与 update/status 描述吻合,但文档引用了大量未提供的 docs/*.md 与 scripts/install.sh,无法在本次静态材料内交叉验证,扣至 2。dependency_availability:Cargo.toml 明确列出依赖与可选特性,README 说明构建需要 Rust 工具链与 protoc、默认后端无 ML 运行时依赖、glibc ≥ 2.35,依赖可获得性说明清楚,但 hf-hub 使用 1.0.0-rc.1 预发布版本、模型权重需首次下载约 1.2GB,存在可用性风险,扣至 2。failure_messages:CI 与 SECURITY.md 提到闸门失败关闭、退出非零,但仓库材料中未见面向用户的错误信息设计、诊断命令输出示例或故障排查章节,扣至 1。
audience_and_scenarios:README 面向使用 Claude Code、Codex、pi、Hermes 的开发者,覆盖跨 agent 记忆、跨机器共享、团队协作、公开记忆试用等场景,场景描述充分,给 3。capability_boundaries:README 明确 funes 不包含生成模型、只做嵌入与重排、记忆绑定单一嵌入模型且拒绝推送其他模型向量、需要重建才能换模型,边界清晰,但未系统列出不支持的能力或失败模式,扣至 2。trigger_precision:文档说明 recall/get 作为工具由模型自行调用、钩子每轮索引、会话边界发布,触发条件描述较清楚,但缺少对误触发、重复触发或触发频率上限的说明,扣至 2。environment_fit:README 列出 Linux x86_64/aarch64、macOS Apple Silicon 的预编译二进制与 glibc 下限,环境适配说明具体,但未覆盖 Windows、其他架构或容器环境,扣至 2。
information_architecture:README 结构清晰,含特性概览、安装、命令表、工作原理、构建说明、注意事项与许可证,并链接到 docs 索引,信息架构良好,给 3。install_notes:README 给出 curl 安装、funes add、funes update、从源码构建(含 protoc 安装)等完整安装说明,并说明校验和验证及其局限,给 3。naming_stability:命令名(add/bind/remove/index/recall/get/push/update)与配置路径(~/.funes)在 README 与 CI 中一致,但 Cargo.toml 注释显示存在 workdir 重命名与 schema 迁移脚本,说明命名/结构曾发生变动,扣至 2。examples_and_faq:README 提供多个命令示例与 GIF 演示,但无独立 FAQ 章节,示例多为单行命令,缺少完整端到端示例与常见问题解答,扣至 2。known_limitations:README 的 Notes 说明记忆绑定单一嵌入模型、换模型需重建、子代理转录也会被索引,SECURITY.md 说明远程记忆属不可信输入与提示注入风险,但未集中列出性能、规模或平台限制,扣至 2。license:仓库含完整 Apache-2.0 LICENSE 文件,Cargo.toml 声明 license = "Apache-2.0",与元数据一致,给 3。versioning_changelog:Cargo.toml 版本为 1.9.0+dev,README 提到 funes update 与 status 检查新版本,但仓库材料中无 CHANGELOG 文件或版本历史说明,扣至 1。maintenance_responsibility:SECURITY.md 提供 [email protected] 与 Huntr 披露渠道,CI/nightly 工作流显示持续维护,但发布者身份未经验证、无明确的维护者名单或支持承诺,扣至 1。
output_usability:recall 输出排序段落、get 可还原完整轮次、ask 给出带来源的答案,输出面向 agent 消费,可用性较好,但 README 明确说明输出是为 agent 而非人设计,人工直接使用需借助 ask,扣至 2。marginal_value:跨 agent 统一记忆、可发布为 Hub 数据集、本地嵌入与重排、密钥闸门等特性相对通用记忆方案有差异化价值,但同类工具众多,且价值高度依赖用户已有大量会话历史,扣至 2。cost_benefit:需要下载约 1.2GB 模型权重、每轮索引与重排带来持续计算开销、依赖庞大的 lance/arrow 栈,收益与成本之比在轻量使用场景下并不突出,扣至 1。
claim_traceability:README 中关于脱敏、闸门、匿名安装 id、校验和验证等关键声明均指向具体文件或命令(SECURITY.md、Cargo.toml、scripts/install.sh),可追溯性较好,但部分声明(如模型自发调用 recall)仅有 GIF 演示,无法静态验证,扣至 2。cross_source_corroboration:README、SECURITY.md、Cargo.toml 与 CI 工作流在 trufflehog 版本、模型名称、平台矩阵、DO_NOT_TRACK 等细节上相互印证,但 docs/*.md 与 scripts/install.sh 未提供,无法完成全量交叉验证,扣至 2。fact_inference_separation:README 将设计意图与事实描述分开,SECURITY.md 明确区分闸门能阻止未来行但无法撤销已发布内容,事实与推断边界较清楚,但部分性能与效果表述缺少量化依据,扣至 2。
- 安装与更新通过 curl | sh 执行远程脚本并就地替换二进制,校验和与二进制来自同一 bucket,无法认证 bucket 本身;请自行核对发布来源与校验和。
- 绑定记忆后钩子会在会话边界自动推送,属于持续性的隐式外发;发布前请确认数据集仓库可见性,并优先使用细粒度 token。
- 远程记忆内容会被插入 agent 上下文,属于不可信输入,存在提示注入风险;仅绑定可信记忆,第三方记忆优先使用单次 recall --memory 形式。
- 密钥闸门只能阻止未来行,无法撤销已发布内容;一旦泄漏需立即轮换凭据并删除重建数据集仓库。
- 发布者身份未经验证,LICENSE 版权行为 2026 The HuggingFace Team,请自行核对仓库归属与维护责任。
- 首次运行需下载约 1.2GB 模型权重,且每轮索引与重排带来持续计算开销,请评估资源成本。
- 仓库材料未提供 CHANGELOG、docs/*.md 与 scripts/install.sh,部分声明无法在本次静态审查中验证。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
v1.9.0 v1.9.0: GPU indexing and host binding
发布说明摘录
What's Changed The main changes are indexing on the GPU in https://github.com/huggingface/funes/pull/225 and the host binding in https://github.com/huggingface/funes/pull/239. - On macOS 15 or later, funes index embeds on the GPU through Metal, and falls back to the CPU where no GPU starts. Recall queries stay on the CPU. - funes bind <memory> binds this host to a memory: every installed agent recalls from it and publishes to it. funes bind local unbinds. - funes add <agent> <memory> binds the host first. A bare funes add <agent> installs on the host's memory. …在 GitHub 查看 ↗ -
v1.8.0 v1.8.0: multinlingual embedder
发布说明摘录
What's Changed The main change is the addition of a multilingual embedder in https://github.com/huggingface/funes/pull/221. - The first funes add asks whether your sessions are English or multilingual. The default is multilingual when your locale (LC_ALL, LC_MESSAGES, then LANG) is in another language than English. Off a terminal, funes takes that default without asking. - funes index --multilingual creates a multilingual local memory by hand, before anything is indexed. …在 GitHub 查看 ↗ -
v1.7.0 v1.7.0: Memories compaction
发布说明摘录
Memories compact themselves Every write to a memory adds fragments, and a memory written turn by turn piles up thousands of them. Recall slows down as they accumulate, and a remote memory heads for the Hub's limit of 10k files per folder. funes now compacts a memory: it merges the small fragments, adds their rows to the search indexes, and deletes the old versions. - funes index compacts the local memory at the end of each run that writes, and deletes the versions older than ten minutes. Past 256 small indexed fragments, it rewrites them all. …在 GitHub 查看 ↗