全盘文件搜索(pts)
pts.exe —— Rust 写的 Everything 平替:无管理员权限要求、无安装、无运行时依赖,索引持久化并实时监听文件增删改名。
安装(新机器首次)
在 PowerShell 中执行(AI 可代跑):
# 1. 下载 pts.exe(GitHub 直连失败自动换国内镜像)
$dest = Join-Path $env:USERPROFILE '.workbuddy\bin\pts'; $exe = Join-Path $dest 'pts.exe'
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
if (-not (Test-Path $exe)) {
New-Item -ItemType Directory -Force -Path $dest | Out-Null
foreach ($u in @(
'https://github.com/GG-hmg/search-everything/releases/latest/download/pts.exe',
'https://gh-proxy.com/https://github.com/GG-hmg/search-everything/releases/latest/download/pts.exe',
'https://ghfast.top/https://github.com/GG-hmg/search-everything/releases/latest/download/pts.exe')) {
try { Invoke-WebRequest -Uri $u -OutFile $exe -UseBasicParsing -TimeoutSec 180
if ((Get-Item $exe).Length -gt 1MB) { break } } catch { }
}
}
# 2. 全盘扫描建索引(C:\ + D:\,约 1 分钟)
& $exe index rebuild; & $exe index status
- exe 位置:
%USERPROFILE%\.workbuddy\bin\pts\pts.exe(约 2 MB) - 索引规模参考:53.5 万文件约 40 秒建完,内存索引约 64 MB
- 查询延迟:< 20ms(进程启动开销另计约 1-2s)
- 来源:https://github.com/GG-hmg/search-everything (MIT)
触发条件
用户要找文件、问文件在哪、要按类型/日期/大小筛文件、想列出某目录下所有某类文件时使用。不要用 dir /s、Get-ChildItem -Recurse 或递归 ls 烧时间——一律走本 skill。
用法
Git Bash 直接执行(路径含中文用户名,Git Bash 处理无碍):
cd "C:/Users/我/.workbuddy/bin/pts" && ./pts.exe "关键词" --limit 20 --paths
输出模式:给 AI 自己看用 --json(含路径/大小/时间/类型);只取路径列表用 --paths;默认人类可读表格。
查询语言(空格分隔 = AND)
| 语法 | 含义 |
|---|---|
report |
文件名包含 report(不分大小写) |
*.pdf / foo?.txt |
通配符 |
re:^log\d+ |
正则 |
-draft |
排除含 draft 的 |
ext:pdf,docx |
扩展名过滤 |
size:>10mb / size:1mb..100mb |
大小 |
modified:today / modified:>2024-01-01 |
修改时间(支持 today/week/month/year/) |
kind:file / kind:folder |
只要文件 / 只要文件夹 |
path:src / -path:node_modules |
路径包含 / 排除 |
content:TODO |
搜文件内容(自动跳过二进制;pts grep "fn main" ext:rs 带行号) |
"two words" |
引号保留空格 |
组合示例:发票 ext:pdf modified:month size:>100kb
其他子命令:index status(统计)、index rebuild(全量重建,约 40 秒)、index add/remove <path>(改索引根)、mcp(MCP stdio 服务器模式)。
注意事项
- 找不到刚创建的文件:索引靠文件系统监听增量更新,一般实时。若确实搜不到(如监听中断),跑
./pts.exe index rebuild。 - rebuild 时 stderr 出现沙箱拒绝(如 CodeBuddyExtension\Data\Public\auth 读取被拒)属预期——受保护目录本就不该扫,索引主体不受影响,退出码可能非 0,不要当失败重试。
- stdout 输出是 UTF-8,Git Bash 直接可读;若在 PowerShell 工具里跑,输出写文件再读(本机老坑)。
- exe 从 GitHub releases 下载,国内直连约 18 秒(2 MB);更新版本换 release URL 即可。