在 DeepSeek Harness (DSH) 的插件化生态中,内置工具的默认行为有时过于宽泛。当智能体需要搜索文件时,默认的 glob 会遍历 node_modules 等无底洞目录,不仅消耗令牌,还会拖慢执行速度。dsh-plugin-better-glob 通过 per-agent 阴影机制,替换了内置 glob,强制显式白名单策略,从而控制搜索范围。
插件概述¶
这是一个由 HuanLinOTO 维护的 DSH 工作流插件。它以 per-agent 阴影顶替 DSH 内置的 glob 工具。其核心价值在于自动排除 node_modules、dist、build 等常见的无底洞目录,并要求模型在搜索这些目录时必须显式传递 include 白名单。
行为特性¶
工具参数与内置 glob 语义一致,包含 pattern(必填)和 path(可选)。其核心差异在于排除机制:
- 自动排除:默认排除
node_modules、bower_components、vendor、Pods、.yarn、dist、build、out、target、obj、.next、.nuxt、.output、.svelte-kit、.turbo、.parcel-cache、.cache、coverage、__pycache__、.venv、venv、.tox、.mypy_cache、.pytest_cache、.ruff_cache、.gradle、.terraform、.idea。 - VCS 恒排除:
.git、.svn、.hg、.bzr、.jj、.sl等版本控制目录永远被排除,不配置化。 - 显式白名单:若需搜索被排除目录,必须在调用参数中传入
include白名单数组。例如include: ['**']可放行全部目录。 - 执行底座:底层复用内置
@deepseek-ai/dsh-tool-fs-search的打包 ripgrep 二进制。
安装与启用¶
插件支持本地开发链接与 npm 发布形态。启用插件需要重启 DSH Web 并进行浏览器硬刷新。
dsh plugin --profile web add "link:D:/Projects/deepseek-harness/dsh-plugin-better-glob"
说明:使用 link: 引用本地源码,修改源码后执行 pnpm run build 重建 lib/ 即可生效,无需重装。
配置项¶
插件提供以下配置项:
excludeDirs:整体替换默认排除清单。仅支持目录名,不允许分隔符。globMaxResults:限制单次内联保留路径数,超出部分 spill。globMetaMaxBytes:限制卡片 meta 字节预算。rawOutputMaxBytes:限制单次解析的 rg stdout 上限。sampleOverCapGlobResults:超帽页是否按顶层条目抽样(默认false)。
已知限制¶
- 阴影保留:插件停用后,已存活 agent 的阴影注册会保留到该 agent 销毁。
- 热重载生效:配置热重载对已在会话中的 agent 经
resync生效。 - Include 粒度:
include模式的提升粒度是目录名,子路径不影响遍历范围。例如node_modules/a/**仍会放行整个node_modules目录。
总结¶
该插件通过机制设计(阴影、白名单),解决了 DSH 环境下文件搜索范围失控的问题,使智能体的操作更精准、高效。