檔案搜尋這件事,做開發的基本每天都在幹。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 分鐘安裝試試。










評論
暫無評論
成為第一個評論的人