AI编辑器pi默认grep浪费Token 优化插件实测可用
用户实测发现,AI代码编辑器pi默认的内置grep本质是对rg --json的封装,默认设置为结果限制100条、单条截断50KB且默认开启搜索隐藏文件。
在搜索TODO这类高频关键词时,会一次性把30多条结果平铺塞进上下文,既浪费了大语言模型的Token,还会把关键文件结果埋在大量无效内容之后。
这个问题Codex早已经用优化后的rg方案解决,用户实测后找到针对pi的最优解法——@ff-labs/pi-fff插件。
这个插件没有继续封装rg,而是直接将Rust原生库FFF接入pi,不需要启动子进程,还会在后台对文件进行预索引。
插件核心改进有三点:按frecency排序将常用文件自动置顶、对git记录中改动过的文件增加权重、对grep结果分组并支持光标分页。
用户做了测试,在一个小型本地项目中加入30行带TODO的内容后,总共得到33个命中结果。
pi默认grep会将33个结果平铺一次性返回,换成ffgrep后,第一页只返回20条结果,所有命中都按文件分组存放,剩余13条会放在第二页,需要调用指令才会返回,关键内容不会被无效结果淹没。
同类搜索工具fffind也支持模糊匹配,会按最近修改记录排序文件,不需要手动编写匹配规则。
安装仅需一行命令,不需要额外安装rg或fd二进制文件,执行pi install npm:@ff-labs/pi-fff后重载配置即可使用ffgrep、fffind和fff-multi-grep三个工具。
默认是额外新增工具,想要直接替换内置grep可以切换到override模式,设置环境变量PI_FFF_MODE=override或启动时添加参数--fff-mode override即可。
这款插件是pi插件库中搜索类最成熟的项目,当前版本为0.10.5,已经经过80余次夜间迭代,周下载量6830次,月下载量33928次。
同期同类插件pi-lean-grep周下载量仅为4次,另一款工具pi-hypa主打压缩功能,定位和搜索优化不同。
默认ffgrep单页限制20条结果,对比pi内置的100条,首屏无效内容直接减少80%。
配合分页机制,可以先精准定位再读取内容,不需要一次性把50KB内容全塞进上下文让模型自己筛选,还可以用/fff-health命令查看索引和排序状态。
原本pi中grep和find默认就是需要手动启用的工具,既然要开启,不如直接换用这个优化版本。
已经在使用pi写代码,被grep大量结果撑满上下文的用户可以尝试,在大项目、TODO和FIXME较多的仓库中使用,体验提升最明显。