前言¶
DeepSeek Harness (DSH) 採用插件化架構,但有時需要在宿主平面層面統一控制工具的可見性與調用權限,而無需依賴特定預設。dsh-tool-guard 正是爲此設計的全局工具屏蔽插件。它通過三層機制(呈現層過濾、執行層硬性否決、自我保護閘)實現這一目標,並提供 WebUI 編輯器以支持熱重載配置。
插件介紹¶
名稱:dsh-tool-guard
維護者:Tisitan
許可證:MIT
這是一個預設無關的全局工具屏蔽插件。它不綁定任何 preset,在統一的插件層按規則攔下不該被模型看見或調用的工具。插件包含呈示層過濾、執行層硬性否決、自我保護閘以及 WebUI 編輯器。
核心功能¶
- 預設無關的全局工具屏蔽:不依賴特定預設,在宿主平面進行統一攔截。
- 呈現層過濾:通過
system-prompt/assemble機制,讓模型“看不見”被屏蔽的工具。 - 執行層硬性否決:通過
tools.guard在調用真正到達時兜底拒絕。 - 自我保護閘:對
read/write/edit/bash等核心工具提供保護,防止被屏蔽。 - WebUI 編輯器:提供
/dsh-tool-guardRPC 通道,支持通過圖形界面即時熱更配置。
安裝與啓用¶
- 克隆倉庫並安裝依賴:
git clone https://github.com/Tisitan/dsh-tool-guard.git
cd dsh-tool-guard
npm install
npm test
- 將倉庫路徑鏈接到 DSH 的 web profile:
在~/.dsh/profiles/web/package.json的dependencies中添加:
"dsh-tool-guard": "link:<絕對路徑>"
在同一文件的 dsh.profile.bundles 數組中追加:
"dsh-tool-guard"
- 安裝依賴並重啓 DSH:
在~/.dsh/profiles/web目錄下運行:
pnpm install
重啓 DeepSeek Harness。
配置方式¶
插件提供兩種配置路徑,語義完全一致,均支持熱重載。
1. WebUI 配置¶
啓動後,在 DSH Web 設置頁 →「工具屏蔽」卡片中操作。通過 /dsh-tool-guard RPC 通道進行讀寫,保存後即時生效。
2. 手動編輯 YAML¶
編輯 ~/.dsh/settings.yaml 中的 dsh-tool-guard.denyTools 數組。
注意:配置平面永不鎖死,修改保存後即會觸發熱重載更新。
注意事項¶
- Loader 來源限制:帶有
dsh.client的插件在全局只允許一個 loader 來源。如果在 home 層掛載,必須移除dsh.client以避免雙 loader 來源導致啓動失敗。 - 保護閘不可屏蔽:
read/write/edit/bash由自我保護閘兜住,不可屏蔽也攔不掉。 - 日誌位置:日誌文件位於
$DSH_HOME/dsh-tool-guard.log或~/.dsh/dsh-tool-guard.log(環境變量DSH_TOOL_GUARD_LOG可覆蓋)。 - 掛載方式:支持全局掛載(web profile bundle 單點掛載)和局部掛載(寫入特定 preset 的
agent.cordis.yml)。