在 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 環境下文件搜索範圍失控的問題,使智能體的操作更精準、高效。