前言¶
智能体在大型仓库中会反复执行代码搜索。如果每次 grep 都重新读取磁盘文件,频繁调用时延迟会持续累积。已有不少方案通过独立索引进程解决检索速度问题,但会引入 sidecar 进程或 daemon,增加启动、同步和调试成本。
snapgrep 的做法是把 trigram 索引放在进程内,用于 Pi 与 DeepSeek Harness(下称 DSH)的代码搜索。它在 DSH 中提供 grep 和 glob 两个工具,并且强调搜索结果与 ripgrep 逐字节一致。
这是什么¶
snapgrep 由 Owen718 维护,许可证为 MIT。
它的核心定位是:
- 进程内 trigram 索引,用于 Pi 与 DeepSeek Harness 代码搜索。
- 无 sidecar 进程、无 daemon。
- 搜索结果与 ripgrep 逐字节校验,结果一致。
- 在 DSH 中同时替换
grep与glob。 glob使用与内置相同的 ripgrep 调用。- 不支持的查询可 fail closed,而不是近似。
- 已核实资料给出的 Node 引擎要求为
>=22.19.0。
核心功能¶
在 DSH 中替换 grep 和 glob¶
在 DSH 中,snapgrep 提供 grep 和 glob 两个工具。
资料说明,DSH 中会替换 grep 和 glob;注册表拒绝重复工具名,因此内置搜索行被禁用,由该插件同时提供这两个工具。glob 使用与内置相同的 ripgrep 调用。
结果一致性¶
已核实事实中说明,搜索结果与 ripgrep 逐字节校验,结果一致。对于不支持的查询,snapgrep 可以 fail closed,而不是返回近似结果。
部署形态¶
snapgrep 不引入 sidecar 进程,也不启动 daemon。资料中还说明它不编译,只下载当前机器可运行的 addon,约 1.2 MB,共两个包。
平台支持¶
已核实资料中列出的预构建版本包括:
- macOS:Apple Silicon、Intel
- Linux:x64、arm64,glibc
- Windows:x64
Alpine/musl 尚未构建。在不支持的平台中,插件会指出未找到的具体文件,而不是静默失败。
性能表述¶
snapgrep 的目标是提升代码搜索速度,具体倍数会随查询、仓库大小和匹配文件数变化。不同资料中的范围表述也不完全一致,使用时不宜把某个固定倍数当作承诺。
安装与启用¶
先确认运行环境满足已核实资料中的 Node 引擎要求:
>=22.19.0
已核实资料中给出的 DSH headless 安装命令为:
dsh plugin --profile headless add snapgrep
安装完成后,可以用下面这条命令检查配置中是否出现 snapgrep:
dsh --profile headless --dump-config | grep snapgrep
这条命令用于确认当前 headless profile 的 dump 配置中包含 snapgrep 相关信息。
典型用法¶
在 DSH 中启用后,智能体可以使用插件提供的 grep 和 glob 两个工具。
在 Pi 中,可以验证搜索后端:让 Pi 搜索一个已知存在的字符串,工具详情中会显示:
actualBackend: kernel
适用场景与注意¶
适合在 DSH 或 Pi 工作流中频繁执行代码搜索的场景,尤其是希望减少进程间调用、避免额外 daemon 的本地插件安装。
需要注意:
- 插件以当前 dsh 进程权限运行。
- 安装前应检查源码与许可证;已核实事实中给出的许可证为 MIT。
- 不支持的平台会明确提示缺失文件,不会静默失败。
- 已核实资料中的安装命令只覆盖 headless profile;不要据此推断其他 profile 的安装方式。
- 性能结果依赖具体查询、仓库规模和匹配文件数。
相关链接¶
- 社区目录(独立站点):https://www.skillhub.cn/plugins/Owen718/snapgrep
- GitHub:https://github.com/Owen718/snapgrep