dsh-plugin-layout:管理 DSH 侧栏、标题栏与设置里的插件入口

前言

DeepSeek Harness(DSH)把侧栏面板、会话标题栏按钮和设置页行项都交给插槽注册表:每个插件往对应插槽注册一条入口,界面就按注册结果渲染。装了很多插件之后,常见情况是某个按钮或设置行并不常用,却占着固定位置;以前若只想去掉这一条,往往只能卸载整个插件。下面介绍社区插件 dsh-plugin-layout,它不改其他插件的源码,而是在客户端读取注册表,对已有入口做隐藏、显示和排序。

这是什么

dsh-plugin-layout(GitHub:yukingm/dsh-plugin-layout)由维护者 yukingm 发布,分类为客户端插件。README 明确说明:它管理其他插件注册到 DeepSeek Harness 界面里的条目,本身不是再注册一套 UI 的「功能插件」。作用对象是插槽注册表里的 sidebar panels、session header buttons 和 settings rows。

核心功能

插件在运行时读取插槽注册表,把找到的入口逐条列出,并提供以下能力(均来自官方 README):

隐藏与显示

对每一行可单独隐藏或显示。隐藏时整行不再注册,不是只藏图标;在隐藏期间,该入口不会继续出现在对应插槽的列表里。

排序

通过上下按钮调整顺序。顺序以数字形式写回入口的 order 选项,重新渲染或插件重载后仍有效。

恢复

可恢复单个插槽或全部策略。隐藏与排序保存在浏览器 localStorage,键名为 dsh-plugin-layout:v1,可在同一管理页清空。

未接管条目

由不受本插件管理、或在本插件激活之后才出现的插件注册的条目,会以只读方式标为「未接管 / unmanaged」,页面反映的是当前真正挂载的内容。

管理的插槽

README 列出的插槽包括:

  • sidebar.panellist
  • sidebar.footer.action
  • conversation.session.header.actions
  • conversation.session.header.utilities
  • settings.general.item
  • settings.section
  • conversation.composer.dock

实现要点(便于理解边界)

插件在注册表的读路径上 patch entriesOfSlot、entries、getVersion、subscribe(公开服务与 host 两侧),对读出的条目过滤并重排;不重建组件,也不对非自有条目调用 unregister。策略变更后,通过在同一 tick 内注册并 dispose 一条临时条目触发真实注册表变更,让既有订阅方(例如侧栏面板列表)重新读取过滤后的列表;该临时条目不会出现在 UI 中。对 single 与 keyed 插槽会跳过这类通知,避免临时条目在一帧内遮住真实占用者。

安装与启用

包尚未发布到 npm,需从 GitHub 安装到 desktop profile。package.json 要求 DSH 引擎 >=0.2.0-rc.1。

安装最新默认分支:

dsh plugin --profile desktop add github:yukingm/dsh-plugin-layout

锁定标签 release(README 示例为 v0.1.0,与 package.json 中 0.1.0 一致):

dsh plugin --profile desktop add github:yukingm/dsh-plugin-layout#v0.1.0

dsh plugin 会把参数转给 profile 目录内的 pnpm,依赖写入 profile 的 package.json,并把包加入 dsh.profile.bundles。

安装完成后需要重启一次桌面应用:Client 半部(client.js)是启动时加载的浏览器 bundle。之后打开 设置 → 插件布局(Settings → Plugin layout)即可使用。

卸载:

dsh plugin --profile desktop remove dsh-plugin-layout

本地开发时可将工作目录作为 pnpm 链接安装;README 说明首次安装仍需重启,之后改 client.js 可由客户端 HMR 拾取(示例路径为 Windows 风格,请换成本机绝对路径):

dsh plugin --profile desktop add E:\my\code\dsh_plugin\dsh-plugin-layout

典型用法

  1. 按上文命令安装并重启 DSH 桌面端。
  2. 打开 设置 → 插件布局。
  3. 在列表中找到目标插槽下的入口:不需要的条目选隐藏;需要调整展示顺序的使用上下箭头。
  4. 若误操作,使用页面上的恢复功能,或清空 localStorage 键 dsh-plugin-layout:v1 对应的策略(README 说明可在同一页面完成)。

无需额外配置文件;策略持久化在浏览器本地存储。

适用场景与注意

适合谁

同时启用多个 DSH 插件、希望精简侧栏面板、会话标题栏操作或设置页条目顺序的桌面端用户;需要在不卸载插件的前提下临时隐藏某个注册入口的场景。

有意设计的限制(README「Limits, on purpose」)

  • 不支持把入口从一个插槽搬到另一个插槽:条目归属注册它的插件,且不同插槽传入的 props 不同(例如侧栏行与标题栏 dense 布局)。
  • 只处理列表类插槽相关的读侧过滤;single、keyed 插槽不触发临时条目通知。
  • 只能管注册表里的条目,插件在自己容器内绘制的内容不在注册表内,无法从这里隐藏。

安全与许可

插件以当前 DSH 进程权限在客户端运行;安装前建议浏览仓库源码并确认许可证。本仓库为 MIT(README License 节)。

社区目录页(skillhub.cn)与 GitHub 由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件是其中的界面布局管理工具。

结尾

dsh-plugin-layout 解决的是「多插件共存时界面入口太挤、又不好单独卸插件」的问题:在插槽注册表读侧统一做隐藏、排序与恢复。更多信息见目录页 yukingm/dsh-plugin-layout 与源码仓库 github.com/yukingm/dsh-plugin-layout。

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

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

Xiaoye