dsh-skills-panel-toggle:在 Harness Web UI 中查看并开关技能

前言

在 DSH 里开发或调试智能体时,技能往往来自多处:项目内的 .dsh、用户侧的 .agents、bundle 内置条目,还有运行时产生的虚拟项。目录一长,很难一眼分清某条技能从哪来、当前是否会对模型或 / 菜单生效。若要在不删文件的前提下临时关掉某个技能,通常只能改配置或挪文件,操作成本高,也不便于对比前后行为。

下面介绍维护者 GnepNus 发布的 dsh-skills-panel-toggle(社区目录分类为 admin-security)。它在 Harness Web UI 左侧提供技能面板,列出当前会话可见的技能,并支持逐个禁用或启用;状态写在 profile 目录内,不改动磁盘上的技能描述文件。

这是什么

dsh-skills-panel-toggle 是一个面向 Web profile 的 DSH 插件(npm 包名 dsh-skills-panel-toggle,当前版本 1.0.0,许可证 MIT)。一句话定位:侧边栏面板,浏览当前 scope 下的全部技能,并用开关控制是否在模型技能目录与用户 / 调用路径中可见。

插件以 bundle 形式分发,依赖 DSH >= 0.2.2-rc.1,并假定 profile 已挂载技能注册表(ctx.skills,来自 @deepseek-ai/dsh-skill)与 Web 服务器。DeepSeek Harness 生态以「一切皆插件」为思路;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

列表与过滤

从 Web UI 左侧边栏的技能图标打开面板。每一行展示:

  • 技能名称;
  • 发现来源(如 project · .dsh、user · .agents、bundled 等);
  • 路由描述、说明文案;
  • 技能说明文件的绝对路径(描述下方等宽小字,悬停标题可看完整路径;无对应文件的虚拟或运行时条目不显示路径);
  • 仅限单一界面时的 用户/模型 标记;
  • 启用 / 禁用开关。

面板顶部搜索框可按名称和描述过滤。

禁用与启用的效果

禁用某个技能会从两处消费注册表的视图中移除:

  1. @deepseek-ai/dsh-tool-skill 面向模型的技能目录——agent 看不到也无法通过 skill 工具加载;
  2. / 菜单与字面量 /name 调用——用户也无法直接调用。

重新启用后,在下一次目录刷新时恢复。磁盘上的技能文件不会被修改;被禁用的名称记录在插件自己的状态文件中。

实现要点(便于排障)

  • main 槽位键 skills-panel 负责页面;匹配的 sidebar.panellist 提供侧边栏图标。
  • Host 提供同源 API:GET /skills-panel/api/state、POST /skills-panel/api/toggle,并拒绝服务不认可的对端请求。
  • 列表读取活跃会话所见 scope:优先活跃根 agent 的 scope,否则默认预设的常驻 scope。技能 provider 挂在 agent 预设 scope 内部,因此仅靠 Host 全局 provider 读不到目录,也无法单独遮蔽某个名称。
  • 禁用名单持久化为 profile 目录下的 skills-panel/state.json,并保存渲染隐藏条目所需的描述与调用标志。
  • 对每个活跃 agent(含激活后新建的),插件在该 agent 的 context 注册技能提供者(候选排序 0,两种调用策略均关闭),遮蔽层优先于 agent 预设 provider;agent 或插件卸载时释放注册。

安装与启用

需要已安装 dsh >= 0.2.2-rc.1。在 Web 场景下,对 web profile 执行官方安装命令:

dsh plugin --profile web add git+https://github.com/GnepNus/dsh-skills-panel-toggle.git

也可在 Web UI 打开 Plugins → Add plugin,填入同一 Git 地址(同样支持 tarball 和本地路径),安装完成后点击 Enable now。插件管理器会把 dsh-skills-panel-toggle 加入该 profile 的 bundle 列表并实时生效。

安装成功后,左侧边栏会出现技能图标;点击即可打开面板。

典型用法

  1. 确认当前 profile 已启用本插件,且挂载了 ctx.skills 与 Web 服务。
  2. 打开 Harness Web UI,点击左侧技能图标进入面板。
  3. 用搜索框定位目标技能,核对来源与说明文件路径(如有)。
  4. 关闭开关以禁用;观察下一次目录刷新后,模型侧与用户侧是否均无法使用该技能。
  5. 需要恢复时重新打开开关;通过面板 API 路径切换会立即生效。

若没有 profile 目录,面板仍可列出技能,但无法持久化开关状态。

适用场景与注意

适合谁: 需要在本地或团队 Web Harness 中清点技能来源、对比 bundle 与项目技能,或在不改仓库文件的前提下临时屏蔽某技能(例如验证「去掉某 skill 后 agent 行为」)的开发者与管理员。

运行与信任边界: 插件以当前 DSH 进程权限运行,并读写 profile 目录下的状态文件。安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,确认与自身安全策略一致。

已知限制(摘自 README):

  • 面板反映的是某一种会话组合的目录(活跃根 agent,或无活跃会话时的默认预设);仅由其他预设挂载的技能,需在该预设成为活动会话预设后才会出现。
  • 开关作用于运行中会话的下一次目录刷新,不会改变当前步已组好的目录。
  • 若直接改 skills-panel/state.json 或手工重新启用,需插件重新加载后 provider 才能感知;通过 API 则立即生效。

上游在 node test/host.test.mjs 与 node test/client.test.mjs 中覆盖目录列举、遮蔽优先级、持久化与鉴权等路径;完整行为以仓库 README 与测试为准。

结尾

dsh-skills-panel-toggle 把「当前能看见哪些技能、从哪里来的、是否对模型和用户可调」集中到一个 Web 侧边栏,用开关完成软禁用,适合调试与治理并重的 Harness 使用方式。

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

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

小夜