dsh-panel-control: Sorting, Hiding, and Grouping of Sidebar and Top Bar Entries

前言

DeepSeek Harness(DSH)侧栏顶部有一列全局面板导航:插件、插件市场、自动化任务、灵枢、工作区管理等。插件装得越多,这一列越长。官方布局里导航列表占满剩余高度时,下方的会话与工作区区域可能被压到无法滚动(社区讨论 #12083)。若你只想调整入口顺序、临时隐藏某几项,或按「创作 / 系统」之类分组展示,单靠默认 UI 往往不够。

下面介绍社区插件 dsh-panel-control(维护者 QIUZAIYOU,GitHub:QIUZAIYOU/dsh-panel-control)。它在不改宿主源码的前提下,管理侧栏顶栏入口的排序、可见性、分组与折叠,并把布局持久化在本机;同时给导航列表加上限高与滚动,为下方区域保留最小高度。

这是什么

dsh-panel-control 面向 DSH 桌面 profile 用户:接管侧栏顶部那一列面板入口的展示方式。排序、隐藏、分组只影响本机这份安装的导航呈现,不会卸载插件,也不会改写各插件自己的配置。配置写在 Host 侧 ~/.dsh/panel-control/prefs.json(~ 对应当前 profile 的用户目录),不跟随单个工作区。

管理界面有两处入口:侧栏导航里的「面板管理」行,以及 设置 → 面板管理(同一套界面嵌在设置页)。「面板管理」自身不可隐藏,避免把自己锁在门外;宿主未接管的节点(例如「更多」)始终排在最后。

核心功能

排序与隐藏

  1. 排序:拖动行首把手任意换位;支持一键按名称 A→Z,以及一键恢复注册时的默认顺序。
  2. 隐藏:行右侧眼睛图标切换可见性。隐藏项仍留在管理列表里,可随时放回;不影响插件是否加载。

分组与折叠

  1. 分组:新建命名分组(如「创作」「系统」),把入口分进去。侧栏在组与组之间插入带标题的分隔线;组的先后顺序由设置里分组列表的拖动决定,与插件注册顺序无关。
  2. 分组折叠:点击分组标题收起该组,只留标题与计数;Enter / 空格同样可切换,状态写入配置。侧栏收成图标条时不显示标题,也不折叠。

侧栏布局兜底

插件通过 data-dpc-list、data-dpc-unbounded、data-dpc-region 等属性注入 CSS:导航列表 overflow-y: auto 并设高度上限(默认与 45vh 等相关档位),下方会话/工作区区域保留最小高度。设置页「侧栏布局」卡片可调高度兜底开关、35 / 45 / 55 / 不限 四档上限,以及分组折叠总开关与「全部收起 / 全部展开」。

自动分类(可选)

使用当前 profile 默认模型读取入口名称,自动分成 2–4 组;只处理尚未见过的入口,不会打乱你已排好的顺序。可随时手动「重新分类」。分类会把入口名称发给模型服务商——不需要时可关掉开关,分组仍可纯手工编辑。分类结果只是建议,可整体重排或改名。

安装与启用

推荐从 npm 安装到当前使用的 profile 目录(示例路径为 Windows 桌面 profile,Linux/macOS 请将路径换成你的 ~/.dsh/profiles/<name>):

cd C:/Users/<you>/.dsh/profiles/desktop
npm install dsh-panel-control@0.7.2

在同一目录的 package.json 中,把包名加入 dsh.profile.bundles:

"dsh": { "profile": { "bundles": [ ..., "dsh-panel-control" ] } }

npm install 会把包(含 client.js 与 cordis.patch.yml)放进 profile 的 node_modules,无需再建目录链接。装好后需要一次页面重载(界面刷新或重启 DSH)才会加载新 bundle。

本地开发时,可用 link: 指向工作副本并建立目录联接(README 以 Windows mklink /J 为例;免管理员权限场景见仓库说明)。

典型用法

  1. 打开 设置 → 面板管理(或侧栏「面板管理」),在列表里拖动把手调整入口顺序;对暂时不用的入口点眼睛隐藏。
  2. 新建分组并拖入入口,回到侧栏查看带标题的分隔线;需要时可折叠某一组,只保留标题与计数。
  3. 导航项很多时,在「侧栏布局」里开启高度兜底并选择合适上限,确认下方会话/工作区列表仍可滚动。
  4. 若希望快速分桶,可开启自动分类,再按需改名、重排或「重新分类」。

存储说明:页面 origin 随 Host loopback 端口变化,localStorage 可能看起来每次清空;真实数据在 Host 侧 prefs.json,读不到 Host 时才回退到镜像。

适用场景与注意

适合谁:长期安装较多 DSH 插件、希望侧栏顶栏可读性更好,或需要分组折叠与布局兜底的智能体 / 工具开发者。

运行与信任:插件以当前 DSH 进程权限运行;自动分类会向 profile 配置的模型服务商发送入口名称。安装前请阅读 仓库源码 与 MIT 许可证,自行判断是否满足环境要求。

边界:实现依赖宿主侧栏 DOM(如 [class*="panelList"] 与面板按钮的 aria-label),官方侧栏大改版时可能需要插件跟进。插件只改 style.order、style.display 与 data-dpc-* 属性,不移动 React 节点。

排错:侧栏没有「面板管理」时先重载页面;仍无则查看 ~/.dsh/panel-control/host.log 与 client.log。插件管理显示运行但界面无变化,多半是旧 bundle revision,重载即可。

结尾

dsh-panel-control 把 DSH 侧栏顶栏的全局入口当成可编排的导航:排序、隐藏、命名分组与折叠本地持久化,并缓解导航过长时下方列表被压扁的问题。社区目录页:skillhub.cn/plugins/QIUZAIYOU/dsh-panel-control;源码与完整说明:github.com/QIUZAIYOU/dsh-panel-control。

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

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

Xiaoye