DeepSeek Harness Hub
← 返回列表

lifeopsgo/dsh-capability-toggle-plugin

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
需源码安装

在 DSH WebUI 中控制 agent 能力,并在运行时真正强制执行。

暂不能直接安装(需源码编译或环境不满足):仓库 package.json 标记 private,未发布到 npm,需从源码安装。 · 最近上游提交 2026/9/12 · 已提供中文文档

灵活控制 mcp/skill/tool 等启用/禁用,支持会话、项目、全局级别控制。Toggle individual agent capabilities (skills, MCP, tools, prompt, approval, guards) from the DSH WebUI composer — session / project / global.

综合分
35.8
GitHub 分
35.8
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add lifeopsgo/dsh-capability-toggle-plugin
仓库 package.json 标记 private,未发布到 npm,需从源码安装,改用 GitHub 源安装
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-capability-toggle-plugin(未发布到 npm,仅可源码安装)
Node 引擎要求 >=22.6 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

仓库 package.json 标记 private,未发布到 npm,需从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 07:35:57

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-input-trigger@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-scope@deepseek-ai/dsh-settings@deepseek-ai/dsh-skill@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-approval
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-capability-toggle-plugin

在 DSH WebUI 中控制 agent 能力,并在运行时真正强制执行。

platform
tests
release
license

English · 简体中文

会话 · 项目 · 全局 —— 蓝色对勾 = 开,红色叉 = 关,虚线横杠 = 未设。

这是什么

一个 DeepSeek Harness(DSH)WebUI 插件,在输入栏旁增加能力开关。它可以在会话、项目或全局层级控制技能、MCP 服务器、工具、提示词注入、审批升权和安全守卫。

停用不是界面上的假过滤:能力会在模型下一步从可见能力面中消失,强行调用也会在执行时被拦截。

兼容的 DSH 版本

一份构建同时服务整个 0.1.x 系列。DSH 0.1.2 改动了输入栏插槽的 owner 参数——不再传
session 快照对象,改为框架标准的 sessionId 属性与 useSession hook——本插件两种
形态都能读取。

| DSH 版本 | 状态 | 验证方式 |
| --- | --- | --- |
| 0.1.1-rc.2 | 支持 | 单元测试、类型检查、构建,以及真实浏览器会话(面板渲染、开关写入) |
| 0.1.2-rc.1 | 支持 | 单元测试、类型检查(Host 与 Client 两个编译面)、对已安装 0.1.2 宿主的加载检查;上述浏览器验证仅在 0.1.1 上做过 |
| 0.1.3-alpha.1 / -alpha.2 | 支持 | 本插件消费的每个 DSH 符号都已从 0.1.2-rc.1 逐一对比到当前 HEAD,均未变化;未在已安装的 0.1.3 宿主上构建或运行 |
| 0.1.5-alpha.x / -rc.x | 支持 | Host 与 Client 类型检查、构建,以及对真实的 0.1.5-rc.2 包逐一对比本插件消费的每个 DSH 符号:createScope/scopeOf、tools/pre-execute、tools/result、PreToolDecision、ApprovalOutcome、session.header.cwd 与 0.1.1 逐字节相同;approval/request 的接收者(Scoped → Scoped)与载荷名(ApprovalRequest → ApprovalRequestEvent)有变化,但本插件的监听器两者都不读取,故不受影响。未在已安装的 0.1.5 宿主上运行 |

声明的 peerDependencies 接纳以上全部版本,包括 npm 以 next(0.1.5-rc.2)和
alpha(0.1.5-alpha.2)发布的预发布版,并拒绝 0.2.0 及以后。

快速开始

dsh plugin --profile web add github:lifeopsgo/dsh-capability-toggle-plugin#v1.3.2
dsh --profile web web

刷新页面,在 agent 空闲时点击输入栏 ➕ 旁边的开关按钮。若使用其他 profile,请替换 web。

升级或卸载

升级或降级:tag 换成 releases 页面上的任意版本
dsh plugin --profile web add github:lifeopsgo/dsh-capability-toggle-plugin#v1.3.2

卸载
dsh plugin --profile web remove dsh-capability-toggle-plugin

功能说明

三级生效模型

每项能力都有三个独立层级:

会话  ›  项目  ›  全局  ›  默认(启用)

最近的明确设置优先。未设会向下一层跟随;三层都未设时保持启用。行尾徽标始终显示三级综合后的真实结果。

按钮只显示当前状态:点击在开 ↔ 关之间切换,点击右上角清除角标可回到未设。

能力分类

| Tab | 控制内容 |
| :-- | :-- |
| 技能 | 单个模型可调用技能,包含从会话工作区发现的项目级技能(.dsh/skills、.agents/skills) |
| MCP | MCP 服务器;展开行可查看成员工具 |
| 工具 | 单个模型可见工具及其指导段 |
| 提示词 | 经过安全筛选并探测实际存在性的提示词注入项 |
| 安全 | 审批升权和 5 个可选安全守卫 |

强制机制

所有机制只作用于当前 agent,不修改全局注册。

| 能力族 | 强制方式 |
| :-- | :-- |
| tool / mcp | 通过 ctx.tools.restrict({ deny }) 移除;强行调用被拒绝 |
| skill | 用同名 modelInvocable:false 运行时技能覆盖 |
| prompt | 用空文本覆盖,或通过 suppressRuntimeContext() 抑制 |
| approval | scoped 审批请求直接返回 rejected |
| guard | tools/pre-execute 对命中调用执行拦截或确认 |

安全控制

关闭审批升权后,该 agent 的所有审批请求都会被拒绝,但不会修改系统 /permission 设置。

安全守卫默认关闭,按需启用:

| 守卫 | 动作 |
| :-- | :-- |
| 只读模式 | 拦截文件写入、新建和编辑 |
| 保护密钥 | 拦截常见密钥文件与凭据访问 |
| 危险 shell | 高风险 shell 命令需确认 |
| 破坏性 git | 可能丢失历史或工作区内容的 git 命令需确认 |
| 外网出站 | 网络工具与外连 shell 操作需确认 |

用量统计

技能、MCP 服务与工具行会显示一个小徽章,标明本会话模型调用了多少次(「调用 7 次」)。计数在面板打开时于每轮结束后刷新,只存活于单个 agent 生命周期且不持久化——与安全守卫的「命中 N 次」徽章采用同一保留策略。

统计的是请求次数而非成功执行次数:被守卫拦截或转确认的调用同样计入,因为「模型想要用这个能力」本身就是值得看见的信号。守卫是被调用匹配而非被调用,因此沿用自己的徽章、不显示用量;提示词与审批行同样不显示。

面板偏好

面板标题旁的折叠箭头展开三个显示偏好,存入 localStorage,因此刷新页面与重启浏览器后仍然保留:

| 偏好 | 作用 |
| :-- | :-- |
| 标签页显示「启用数 / 总数」 | tab 徽章由纯总数改为分数形式(67/106),一眼看出每族能力的启用比例;无论开关与否,悬停提示都以文字给出两个数字。 |
| 显示调用统计 | 控制上文的每行用量徽章是否显示。 |
| 显示的层级列 | 将网格收窄为仅会话级、会话级 + 项目级,或三级全显。 |

分数只把已生效的守卫计入启用数。guard 行复用同一个 disabled 字段表示「已激活」,与其他默认启用族的方向相反——所以审批开关打开、五个守卫都未激活时,安全 tab 显示 1/6 而不是 6/6。

收窄层级列只影响显示:三级优先级解析照常运行,被隐藏的项目级或全局级设定仍然生效。每行的徽章与层级开关始终反映综合解析后的状态——默认启用族显示「生效中/已停用」,守卫显示「守护中/未启用」——因此隐藏一列不会隐藏任何生效影响。名称列会吸收释放出来的宽度;布局由 CSS 变量驱动,因此与窄屏适配保持对齐。

其他行为:agent 运行时,会写入设定的控件锁定——每行的层级开关、其清除徽章、以及批量菜单——但浏览保持可用,因此搜索框、层级列下拉、tab 切换、行展开照常工作;关闭弹窗或跨轮次后状态仍保留;界面语言跟随 WebUI。

规划

以下为规划中、尚未实现:

- 跨项目同步配置 — 从其他项目复制或引用项目级配置,无需逐个项目重新配置。
- 能力调用统计 — 已于 v1.2.0 实现:技能、MCP 服务与工具行会以徽章显示本会话被模型调用的次数。
- 分数格式的 tab 计数 — 已于 v1.3.0 实现:tab 徽章改为「已启用 / 总数」,面板标题旁的折叠箭头提供三个显示偏好。安全 tab 的 guard 只有已生效才计入分子,其反转的 disabled 字段不会虚增启用数。
- 可自定义默认项的设置菜单 — 在设置菜单中暴露插件自身的配置项,例如新发现能力的默认状态(当前三层都未设的能力解析为启用,但可选的安全守卫默认不启用)。
- 只显示已启用 / 只显示已禁用 — 在搜索框旁增加状态过滤(搜索当前只匹配名称与描述)。安全守卫需要与分数计数同样的处理:guard 复用 disabled 表示「已激活」,因此「只显示已禁用」不能把实际生效中的守卫列进去。该过滤还会缩小批量操作的作用范围,因为批量作用于当前可见的所有行。
- 筛选与全选 — 已于 v1.1.0 实现:工具栏搜索框可筛选行,各层级的批量菜单可对当前可见的所有行执行启用/停用/清除。
- 筛选全选后批量操作 — 已于 v1.1.0 与筛选功能一同交付(搜索缩小范围,批量作用于当前可见行)。

MIT,见 LICENSE

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群