dmtrKovalenko/fff

The fastest and the most accurate file search SDK for AI agents, Neovim, Rust, C, Python, Bun and NodeJS

fff – 快速文件搜索工具包

它是什么 – fff 是一个基于 Rust 的库(附带一个小型二进制文件),会建立代码库的内存索引,然后提供超快速、容错的文件名和内容搜索。它设计给人类(通过 Neovim UI)以及需要查找文件而不想将大量文本发送给模型的 AI 代理使用。

主要功能

  • 容错搜索 – 对路径和文件内容进行模糊匹配。
  • 频率排序(frecency)结果 – 你经常打开或最近修改的文件会获得更高分数。
  • 后台监视器 – 索引会随文件变更自动更新,并带有 Git 感知注释(已修改、已暂存、最近的提交)。
  • 轻量内存索引 – 当重复搜索相同仓库时,比 ripgrep/fzf 更快。
  • 多种前端:
    • fff.nvim – 一个 Neovim 插件,提供选择器 UI 和 Lua API(find_files、live_grep 等)。
    • MCP 服务器 – 一个小型二进制文件(fff-mcp),实现 Claude Code、Cursor、OpenCode 等使用的 MCP 协议,为代理提供 ffgrep 和 fffind 等工具。
    • Pi 扩展 – 一个 Pi AI 助手的插件,可替换其内置的 grep/find 工具。

工作原理

  1. 首次使用时,后台进程会扫描配置的根目录,建立 Rust 索引,并存储可选的 SQLite 风格数据库以记录 frecency 和查询历史。
  2. 后续搜索直接查询内存中的索引,避免传统 CLI grep 的磁盘密集往返。
  3. 索引由文件系统监视器保持最新;Git 状态通过读取仓库的 git 元数据添加。
  4. 库暴露两个核心 Rust 函数供前端调用:
    • file_search(query, opts) – 返回文件/目录列表,包含分数、frecency 数据和 Git 标志。
    • content_search(query, opts) – 返回行级匹配,支持可选正则表达式、模糊回退和智能大小写处理。

典型用法

  • 在 Neovim 中,按 ff 打开 FFFind 选择器,fg 进行实时 grep,或从插件调用 Lua API。
  • 对于 AI 助手,安装 MCP 服务器(brew install dmtrKovalenko/fff/fff-mcp 或运行提供的安装脚本)并将其添加到助手配置。助手即可在其工具集中调用 ffgrep/fffind。
  • 使用 Pi 时,运行 pi install npm:@ff-labs/pi-fff 并用 /fff-mode 切换模式。

为何对 AI/LLM 工作流重要 大型语言模型的上下文窗口有限。通过让模型询问一个快速、token 高效的文件搜索服务,你可以避免将整个仓库发送给模型,并保持交互流畅。frecency 和 Git 感知评分也有助于模型优先显示最相关的文件,减少幻觉。

安装要点

  • 一行脚本 用于 MCP 服务器(Linux/macOS 上 curl … | bash,Windows 上 PowerShell)。
  • Homebrew 公式(brew install dmtrKovalenko/fff/fff-mcp)。
  • Neovim – 将 dmtrKovalenko/fff 添加到你的插件管理器;插件会下载预构建二进制文件或使用 Cargo 编译。
  • Pi – pi install npm:@ff-labs/pi-fff。

许可证与赞助

  • MIT 许可证,永久开源。
  • 由 Anomaly (opencode.ai)、Mango Proxy 和 RapidProxy 赞助。

以上所有细节直接取自仓库的 README。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目