dsh-tool-guard:DeepSeek Harness 全局工具屏蔽与防护插件

前言

DeepSeek Harness (DSH) 采用插件化架构,但有时需要在宿主平面层面统一控制工具的可见性与调用权限,而无需依赖特定预设。dsh-tool-guard 正是为此设计的全局工具屏蔽插件。它通过三层机制(呈现层过滤、执行层硬性否决、自我保护闸)实现这一目标,并提供 WebUI 编辑器以支持热重载配置。

插件介绍

名称:dsh-tool-guard
维护者:Tisitan
许可证:MIT

这是一个预设无关的全局工具屏蔽插件。它不绑定任何 preset,在统一的插件层按规则拦下不该被模型看见或调用的工具。插件包含呈示层过滤、执行层硬性否决、自我保护闸以及 WebUI 编辑器。

核心功能

  1. 预设无关的全局工具屏蔽:不依赖特定预设,在宿主平面进行统一拦截。
  2. 呈现层过滤:通过 system-prompt / assemble 机制,让模型“看不见”被屏蔽的工具。
  3. 执行层硬性否决:通过 tools.guard 在调用真正到达时兜底拒绝。
  4. 自我保护闸:对 read / write / edit / bash 等核心工具提供保护,防止被屏蔽。
  5. WebUI 编辑器:提供 /dsh-tool-guard RPC 通道,支持通过图形界面即时热更配置。

安装与启用

  1. 克隆仓库并安装依赖:
git clone https://github.com/Tisitan/dsh-tool-guard.git
cd dsh-tool-guard
npm install
npm test
  1. 将仓库路径链接到 DSH 的 web profile:
    在 ~/.dsh/profiles/web/package.json 的 dependencies 中添加:
"dsh-tool-guard": "link:<绝对路径>"

在同一文件的 dsh.profile.bundles 数组中追加:

"dsh-tool-guard"
  1. 安装依赖并重启 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 数组。

注意:配置平面永不锁死,修改保存后即会触发热重载更新。

注意事项

  1. Loader 来源限制:带有 dsh.client 的插件在全局只允许一个 loader 来源。如果在 home 层挂载,必须移除 dsh.client 以避免双 loader 来源导致启动失败。
  2. 保护闸不可屏蔽:read / write / edit / bash 由自我保护闸兜住,不可屏蔽也拦不掉。
  3. 日志位置:日志文件位于 $DSH_HOME/dsh-tool-guard.log 或 ~/.dsh/dsh-tool-guard.log(环境变量 DSH_TOOL_GUARD_LOG 可覆盖)。
  4. 挂载方式:支持全局挂载(web profile bundle 单点挂载)和局部挂载(写入特定 preset 的 agent.cordis.yml)。

参考资源

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜