前言¶
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.panellistsidebar.footer.actionconversation.session.header.actionsconversation.session.header.utilitiessettings.general.itemsettings.sectionconversation.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
典型用法¶
- 按上文命令安装并重启 DSH 桌面端。
- 打开 设置 → 插件布局。
- 在列表中找到目标插槽下的入口:不需要的条目选隐藏;需要调整展示顺序的使用上下箭头。
- 若误操作,使用页面上的恢复功能,或清空
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。