文件搜索这件事,做开发的基本每天都在干。fff 在基准测试中比 fd 快 2-5 倍,在大型代码库(比如 Linux 内核)中表现尤为突出。
专为 AI 代理和编辑器而生
这点是 fff 最与众不同的地方。它不仅是一个命令行工具,还提供了多种语言的绑定,包括 Python、Node.js、Bun 和 C。这意味着 AI 代理可以用 fff 作为底层搜索层,快速定位训练数据或上下文文件。对于 Neovim 用户,fff 原生集成,可以用作 fuzzy finder 的替代,实现毫秒级文件跳转。比如你正在调试一个大型项目,想快速找到 src/core/network/tcp_handler.rs,输入 fff 'handler' 就能立刻列出候选。
AI 代理需要从海量文件中提取相关片段时,fff 的低延迟特性直接转化为更快的响应速度。相比用 Python 的 glob 或 os.walk,fff 的查询效率可以提高一个数量级。
使用场景:从日常开发到CI/CD
- 开发者日常:配合 Neovim 或终端,快速打开或引用文件,无需离开键盘。
- AI 代理集成:在 LangChain 或自定义 agent 中,用 fff 来检索特定的代码片段或文档文件。
- CI/CD 流水线:在构建脚本中快速定位变更的配置文件,减少构建时间。
- 跨语言项目:同时用 Rust 后端、Python 脚本和 Node.js 前端,fff 提供统一的搜索接口。
举个例子,一个使用 Python 编写的 AI agent 需要根据用户问题找到对应的知识库文档。传统做法是遍历目录然后做字符串匹配,但用 fff 的 Python 绑定,一行代码就能实现模糊搜索,返回速度从秒级降到毫秒级。对独立开发者来说,这种提升非常直观。
与同类工具相比的优势
同类工具有 fd(Rust)和 ripgrep(Rust),它们各自侧重不同。fd 主要优势是语法简洁,ripgrep 更聚焦文本内容搜索。fff 则专注于文件路径搜索,并且用上了更激进的优化策略,包括 SIMD 指令和内存映射。测试显示,在包含 10 万个文件的目录中,fff 首次搜索的耗时不到 50ms,而 fd 需要 120ms 左右。此外,fff 的模糊匹配算法对大小写和拼写错误更宽容,准确率更高。
不过需要注意的是,fff 目前不支持正则表达式(至少不是默认功能),如果你需要基于文件内容搜索,还是要用 ripgrep。fff 的定位是“快速找到文件”,而非“在文件中找内容”。
上手与安装
安装 fff 非常简单。在 macOS 上可以用 Homebrew:brew install dmtrKovalenko/fff/fff。Linux 用户可以直接下载预编译的二进制,或者通过 cargo 编译(需要 Rust 工具链)。对于 Node.js 和 Python 用户,还有对应的 npm 包和 pip 包,安装后可以直接在代码中调用。
基本用法:
- 在终端直接运行 fff '部分文件名' ,它会搜索当前目录及其子目录。
- 通过 -d 参数指定搜索深度,-t 参数指定文件类型(如 .py)。
- 在 Neovim 中,配置 vim.cmd('Fff') 即可使用。
对新手来说,基本查询不需要读文档就能上手。但对于高级用法(如自定义匹配算法),可能需要查阅 GitHub 上的说明。
优缺点与实用建议
fff 的优势很明显:速度极快、准确性高、多语言绑定方便集成。但它也有不足:文档相对简单,缺少详细的性能调优指南;另外,目前只支持文件路径搜索,内容搜索需要与其他工具配合。如果你主要目的是快速定位文件,并且希望工具能嵌入到编程语言中,fff 是绝佳选择。如果你需要正则搜索文件内容,建议同时使用 ripgrep。
一句话总结:fff 让“找到文件”这件事变得几乎没有延迟,无论是人还是 AI agent 都能受益。对于注重开发效率的工程师和构建 AI 工具的团队,值得花 5 分钟安装试试。










评论
暂无评论
成为第一个评论的人