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 工具。
工作原理
- 首次使用时,后台进程会扫描配置的根目录,建立 Rust 索引,并存储可选的 SQLite 风格数据库以记录 frecency 和查询历史。
- 后续搜索直接查询内存中的索引,避免传统 CLI grep 的磁盘密集往返。
- 索引由文件系统监视器保持最新;Git 状态通过读取仓库的
git元数据添加。 - 库暴露两个核心 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。
相关
- 项目
- 项目
- 项目
- 项目
- 项目