FFF

5个月前发布 263 00

FFF 是一个文件搜索库,而不是 CLI。Ripgrep 和 fzf 是优秀的工具,但它们是命令行程序:每次调用都会派生一个新进程,重新读取 .gitignore,重新统计目录,并在能回答查询前在内存中重建所需的状态。

所在地:
美国
收录时间:
2026-06-04
其他站点:

在 AI 智能体和现代 IDE 频繁进行代码检索的今天,传统的命令行工具如 ripgrep 和 fzf 因其每次调用需重新派生进程、重建状态而显得笨重。FFF 是一个面向人类和 AI 智能体的高性能文件搜索库,它通过长期运行的后台进程、内存索引及智能排序算法,将搜索响应时间压缩至亚 10 毫秒,成为构建高效 AI 编码助手的理想基石。

FFF

核心亮点:快、准、智能

1. 极致性能:内存索引 vs 进程派生

  • 热内存命中:FFF 作为库运行,一次性加载索引后,所有后续搜索均命中热内存。在拥有 50 万文件的 Chromium 代码库中,相比 ripgrep 的 3-9 秒等待,FFF 仅需 <10ms。
  • 后台监视器:自动监听文件系统变化,实时更新索引,无需在搜索路径上重新扫描。
  • 空间换时间:虽然占用一定内存(约 360 字节/文件),但远低于多次调用 ripgrep 的累计开销,且支持内存映射文件以优化占用。

2. 智能排序与抗拼写错误

  • 频次与时效性排序:基于访问频率和修改时间动态调整搜索结果优先级,让最近、最常用的文件排在前面。
  • 抗拼写错误模糊匹配:采用比 fzf 更全面的模糊匹配算法,结合 SIMD 加速,即使输入有误也能精准定位。
  • Git 状态感知:缓存文件的修改、暂存、未跟踪及忽略状态,并在搜索结果中直接反映,辅助智能体理解代码上下文。

3. 强大的搜索能力

  • ffgrep (内容搜索):支持字面量、正则表达式及模糊匹配,自动检测模式。零匹配时自动回退到模糊搜索,支持游标分页。
  • fffind (路径搜索):匹配整个相对路径,支持多模式“或”搜索(SIMD Aho-Corasick 算法),一次性查找多个标识符。
  • 定义分类器:在 Rust 端通过字节级扫描器标记代码定义行,提升代码导航精度。

生态集成:MCP 服务器与 Pi 扩展

1. MCP 服务器 (Model Context Protocol)

无缝集成至 Claude Code, Codex, Cursor, Cline 等支持 MCP 的客户端:

  • 一键安装:
    # Linux / macOS
    curl -L https://dmtrkovalenko.dev/install-fff-mcp.sh | bash
    # Windows PowerShell
    irm https://raw.githubusercontent.com/dmtrKovalenko/fff.nvim/main/install-mcp.ps1 | iex
    
  • 智能体交互:连接后,智能体可自动调用 ffgrep, fffind 等工具,大幅减少 grep 往返次数及上下文窗口浪费。

2. Pi 智能体扩展

适用于 Pi 环境,提供三种运行模式:

  • tools-and-ui (默认):注入搜索工具并替换 @ 提及自动补全。
  • tools-only:仅注入工具,保留原生编辑器体验。
  • override:完全接管内置的 grep/find 功能。
  • 安装:pi install npm:@ff-labs/pi-fff

常用命令

  • /fff-mode [mode]:切换运行模式。
  • /fff-health:检查索引状态、排序逻辑及 Git 集成情况。
  • /fff-rescan:强制重新扫描文件系统。

为什么选择 FFF?

特性ripgrep / fzfFFF
运行模式每次调用派生新进程长期运行后台进程
索引状态每次重新读取/统计内存常驻,实时更新
响应速度秒级 (大型仓库)亚 10 毫秒
排序逻辑无/简单文件名匹配频次 + 时效性 + Git 状态
容错能力严格匹配 (rg) / 基础模糊 (fzf)高级抗拼写错误模糊匹配
适用场景单次 Shell 查询AI 智能体/IDE 高频重复搜索

对于构建 IDE 插件、AI 编码助手或任何需要在大型仓库中进行密集搜索的工具而言,FFF 是提升用户体验与系统效率的关键基础设施。

相关导航