dsh-tiered-plugin-menu:按工作区与会话分级管理 DSH 插件

前言

在 DeepSeek Harness(DSH)里,插件默认往往按客户端或全局 profile 统一下发:同一个包在所有工作区、所有会话里共用一套开关和配置。实际开发时,常见需求是「只在写代码的工作区启用某工具插件」「同一会话族里 A 会话用一套记忆策略,B 会话用另一套」,而全局开关很难精细到目录树和单次会话。

社区插件 dsh-tiered-plugin-menu(维护者 kazari-qwp,分类 admin-security)在侧栏增加分级入口,让配置按 客户端 → 父工作区 → 子工作区 → 会话 继承,并可在任意层覆盖;同时支持为下级实例准备默认插件策略。下文介绍其定位、能力与安装用法,事实均来自项目 README 与 package 元数据。

这是什么

dsh-tiered-plugin-menu 是 DSH 的管理类插件:为每个工作区和每个会话提供独立的插件开关与配置,支持逐级继承与(可选的)实例隔离。它不替代 DSH 自带的「插件」总页,而是在工作区树旁提供与目录结构一致的配置入口。

维护仓库:GitHub - kazari-qwp/dsh-tiered-plugin-menu。社区目录页:skillhub.cn 插件页。许可证为 MIT。package.json 中当前版本为 0.6.4,engines 声明依赖 DSH 0.2.2-rc.1 与 Node.js ^22.19.0 || >=24.0.0。

入口与操作层级

侧栏有三个层级的「插头」图标(工作区标题右侧为客户端级;工作区行、会话行在鼠标悬停时出现图标):

  1. 客户端插件:「工作区」总标题右侧,设置整个客户端的默认插件与配置。
  2. 工作区插件:悬停在工作区名称行上点击插头图标。
  3. 会话插件:悬停在该会话名称行上点击插头图标。

菜单内,外层按 npm 包 聚合显示一项,继承|启用|关闭 同时作用于包内全部组件;进入包后可逐组件控制,不一致时外层显示「部分启用」。「设置」展开各插件原有的配置卡;若无可复用配置卡则提供 JSON 编辑器。

核心功能

逐级继承

没有在本层单独设置时,沿上级继承;需要时在工作区或单个会话覆盖。README 举例:客户端配置 A、某工作区 B、其中一个会话 C——该会话用 C,同工作区其他仍继承的会话用 B,其他工作区继承 A。

菜单自有设置页中 按工作区树继承 默认开启,修改后立即保存。父级取最近的已注册上级目录,与 DSH「工作区树」分组一致;未注册的中间目录会跳过。目录层级与 Agent 父子关系分别处理(例如 Superagent Worker 目录在 Router 目录下时,可继承 Router 所在工作区的配置)。

下级默认设置

每个菜单有 本级|下级 选项卡。下级总开关默认为 继承;切到 独立 后可预设新建实例的插件开关,并复用原插件配置卡:

设置位置 作用于哪些新实例
客户端 新顶层工作区(关闭树继承时为所有新工作区),以及没有归属工作区的新会话
工作区 新普通会话;开启树继承时也用于新子工作区
会话 新子 agent,含后续各级子 agent

编辑默认值不会改写已有工作区、会话或子 agent。分层配置默认保存在 $DSH_HOME/plugins/tiered-plugin-menu.json,可通过菜单插件的 dataFile 更改。

依赖与开关确认

改开关前会计算影响范围:启用组件时若依赖未启用,可自动启用依赖或取消;关闭被依赖组件时,列出仍依赖它的组件(含继承该依赖的下级会话),可自动关闭或取消。依赖未安装或不可用则报错,开关不变,不会自动安装。DSH 自带插件页仍按原生逻辑运行。

自动目录隔离

下级实例通过 Node 文件接口创建目录时,菜单可分配私有目录;继承上级实例时共用上级目录,独立启用时使用自己的目录。数据在配置文件旁的 <配置文件名>.data/ 中按作用域区分。README 明确:这与配置、生命周期相关,不是安全沙箱;全局文件、固定端口、外部进程等不在此层隔离范围内。

插件隔离(实验性)

菜单设置页第二项 插件隔离(实验性) 默认关闭,升级后也不会自动开启;修改后需 重启 DSH 生效。开启后从客户端级开始隔离,工具、技能等同名项可在同一会话用带插件标识的稳定名称共存。作者说明可能改善部分兼容问题,也可能引入新问题;详细范围见仓库内 docs/PLUGIN_ISOLATION.md。

自兼容性声明

插件作者可在 package.json 声明多实例自兼容:

{
  "dsh": {
    "tieredPluginMenu": {
      "selfCompatible": true
    }
  }
}

true 表示作者声明自兼容;false 或未填视为未验证,启用前菜单会要求确认。自 0.5.4 起使用 selfCompatible,不再读取旧字段 supportsChildInstances。

安装与启用

在 DSH 插件 → 添加插件 中输入 npm 包名:

dsh-tiered-plugin-menu

若镜像源返回首次发布的占位包,可切换到 npm 官方源后重试。命令行示例(桌面 profile):

dsh plugin --profile desktop add dsh-tiered-plugin-menu

Web 版将 desktop 换成自己的 profile 名称(通常为 web)。也可从 Releases 下载构建好的 .tgz 安装。未开启热重载时安装或升级后需重启 DSH;不需要预先安装临时消息等其他插件。发行包已包含构建产物,无需在安装时本地构建。

典型用法

  1. 安装并重启 DSH 后,从侧栏「工作区」标题旁的插头图标打开 客户端 默认策略。
  2. 在目标工作区行悬停,用插头图标为该工作区覆盖开关或配置(例如仅在该工作区启用上下文/记忆类插件)。
  3. 在某个会话行悬停,为单次任务单独启用或关闭插件;在「设置」中使用与原插件相同的配置界面。
  4. 若需要新建会话/子 agent 即带上固定组合,切换到对应层的 下级 页,将总开关设为 独立 后预设插件状态。
  5. 遇到同名工具或技能冲突、或洞察/统计读不到投影数据等情况,查阅 README 中的隔离说明与版本升级注记(如 0.6.3 对隔离插件投影读取的修复);按需开启实验性隔离并重启验证。

关闭分级菜单本身会释放其加载的下级实例与界面入口,但保留持久化配置;再次开启时恢复。选中另一会话时会切换前端绑定;进入洞察、设置等页面保留当前绑定。

适用场景与注意

适合:在同一 DSH 客户端下管理多工作区、多会话,且希望插件开关和配置与目录树一致;需要为新建会话或子 agent 设默认插件组合;在同一客户端内试用不同插件配置而不改全局 profile。

注意:

  • 插件在 当前 DSH 进程权限 下运行,安装前建议阅读源码与 MIT 许可,并自行评估 admin-security 类能力对本地环境的影响。
  • 兼容说明以 README 实测为准(例如 README 正文一处写明当前版本 0.6.1 的修复项,package 为 0.6.4;测试环境 DSH 0.2.2-rc.1、Node 24)。未声明自兼容的第三方插件启用前需确认。
  • 社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身仍是「一切皆插件」的 harness,本插件是对插件生命周期与配置作用域的扩展,而非官方应用商店内置能力。

结尾

dsh-tiered-plugin-menu 把 DSH 插件开关和配置落到客户端、工作区、会话(及子 agent)各层,用继承减少重复设置,用覆盖满足单次任务差异,并用依赖确认与可选隔离降低多实例混用时的摩擦。若你已经在用工作区树区分项目,可先在一个非关键工作区试分级菜单与下级默认,再逐步推广到日常会话。

  • 目录页:https://www.skillhub.cn/plugins/kazari-qwp/dsh-tiered-plugin-menu
  • 源码与文档:https://github.com/kazari-qwp/dsh-tiered-plugin-menu
羽毛球分组比赛记分
小程序二维码

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

小夜