前言¶
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)。