snapgrep:面向 DSH 的进程内代码搜索插件

前言

智能体在大型仓库中会反复执行代码搜索。如果每次 grep 都重新读取磁盘文件,频繁调用时延迟会持续累积。已有不少方案通过独立索引进程解决检索速度问题,但会引入 sidecar 进程或 daemon,增加启动、同步和调试成本。

snapgrep 的做法是把 trigram 索引放在进程内,用于 Pi 与 DeepSeek Harness(下称 DSH)的代码搜索。它在 DSH 中提供 grepglob 两个工具,并且强调搜索结果与 ripgrep 逐字节一致。

这是什么

snapgrep 由 Owen718 维护,许可证为 MIT。

它的核心定位是:

  • 进程内 trigram 索引,用于 Pi 与 DeepSeek Harness 代码搜索。
  • 无 sidecar 进程、无 daemon。
  • 搜索结果与 ripgrep 逐字节校验,结果一致。
  • 在 DSH 中同时替换 grepglob
  • glob 使用与内置相同的 ripgrep 调用。
  • 不支持的查询可 fail closed,而不是近似。
  • 已核实资料给出的 Node 引擎要求为 >=22.19.0

核心功能

在 DSH 中替换 grep 和 glob

在 DSH 中,snapgrep 提供 grepglob 两个工具。

资料说明,DSH 中会替换 grepglob;注册表拒绝重复工具名,因此内置搜索行被禁用,由该插件同时提供这两个工具。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 中启用后,智能体可以使用插件提供的 grepglob 两个工具。

在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜