dsh-frecency
v0.1.3
Published
Resident-index + frecency file search for DeepSeek Harness — shadows the built-in grep/glob tools. · DSH 常驻索引 + frecency 文件搜索,同名覆盖内置 grep/glob。
Maintainers
Readme
dsh-frecency
English | 中文
一个 DeepSeek Harness 插件:接管内置 grep / glob 文件搜索——grep 跑在常驻索引 + frecency 排序上,glob 在 ripgrep 可用时与内置发现语义完全对齐(不可用时降级到常驻索引)。
内置工具每次调用都 spawn 一个全新的 ripgrep 进程、从零扫描;长会话与多子代理场景下同样的搜索会重复执行数十次。dsh-frecency 为每个工作目录保留一份常驻索引(Rust fff 引擎,经 @ff-labs/fff-node),复用热内存索引、省去每次 spawn,结果按访问/修改 frecency 排序。
安装
dsh plugin --profile <profile> add dsh-frecency重启 dsh 并开一个会话即可——grep / glob 工具名与参数不变,grep 命中常驻索引、glob 与内置工具同结果,且无论你用哪个 agent 预设都生效。内置搜索工具由 agent 预设挂载在会话近端(agent 平面),host 平面注册赢不了它,所以插件在每个 agent 创建时把工具注册进 agent 自己的层(第一方先例:dsh-tool-subagent)。配置 enabled: false 或卸载插件即回退内置 ripgrep 工具。
运行期宿主包由 dsh 安装供给:@deepseek-ai/dsh-tools、@deepseek-ai/dsh-tool-fs-search、@deepseek-ai/dsh-output-retention、@deepseek-ai/schemastery 经 profile 模块解析从运行中的 dsh 安装取得,不会随插件再装一份。构建与实测覆盖 DSH 0.1.2-alpha.3 至 0.1.7-alpha.1。
你得到什么
- 同名工具——
grep/glob工具名与参数不变,模型零提示词改动即切换。 - 常驻索引(grep)——重复内容检索复用同一份内存索引,省去每次 spawn ripgrep;14k 文件实测 2.5–2.7×(基线)。
- frecency 排序(grep)——常打开、最近改的文件优先呈现。
- 内置平价 glob——glob 跑与内置工具同一条固定
rg --files命令:含 hidden 与 ignored 文件、排除 VCS 元数据、按修改时间排序。ripgrep 不可用时降级到常驻索引。 - 标注的 grep 输出——引擎分类的
isDefinition与逐文件gitStatus随 grep 结果一起返回,模型无需重读即可识别定义行与已改文件。 - git 感知索引——引擎按文件跟踪工作区状态,并以
gitStatus暴露在结果中。 - 优雅降级——native 引擎加载失败时插件自动让位,内置 ripgrep 工具照常工作。
设计动机与取舍详见 docs/design.md。
开发
pnpm install
pnpm check # typecheck + build + test
scripts/setup-hooks.sh # git hooks 指向 .githooks/(pre-commit / pre-push)真实 harness 的本地 e2e:构建后用默认 headless profile 加 --patch 覆盖层(指向 ./dist/index.js)启动。
质量门禁:python3 scripts/verify-adr-format.py && python3 scripts/verify-handoff-structure.py && python3 scripts/verify-doc-budgets.py --manifest scripts/doc-budgets.manifest.json && python3 scripts/verify-md-links.py。
