dsh-panel-compact:侧栏插件面板压缩与排序

前言

DeepSeek Harness(DSH)把每个插件的面板入口都挂在左侧栏顶部。装上几款插件之后,这一列会占掉侧栏上方大量空间,下面的工作区被挤窄。外壳按注册时的 order 排面板行,没有对外暴露重排 API,单靠核心改排序也不现实。下面介绍社区插件 dsh-panel-compact(维护者 yingqi-studio,分类:客户端):在浏览器侧把可见入口收成三个,其余进「更多」,并支持拖动与持久化,不卸载任何插件、也不改面板内部逻辑。

这是什么

dsh-panel-compact 是 DSH 的 web 客户端插件(dsh.web 侧栏面板槽位)。它解决的是「侧栏面板入口过多、布局拥挤」的问题:默认只保留三个行级入口(其中一行是始终存在的「插件 / Plugins」),其余通过 display: none 隐藏但仍挂载;完整列表在 shell 的 More 菜单里操作。顺序与「钉在侧栏还是收进更多」写在浏览器 localStorage,下次打开保持一致。

核心功能

侧栏只留三个入口

折叠的是列表展示,不是插件本身:隐藏行只是视觉上不可见,面板内容不受影响。若找不到 shell 的「More」入口,插件不会隐藏任何行,避免面板被藏掉却无路可回。

拖动排序

侧栏上可见的行可以用鼠标按住上下拖动;约 6 px 的阈值区分「打开面板」与「开始拖拽」。松手后顺序写入本地状态。More 菜单里的行同样可拖。

More 菜单

插件占用 shell 的 sidebar.panellist.actions 槽位,从而出现 More 行。菜单里列出全部面板(按你的顺序):点名称打开对应面板并关闭菜单;每行右侧 ✓(已在侧栏)或 +(在 More 里)切换是否钉在侧栏。菜单里也会隐藏 shell 自带的「Browse other plugins」行(完整列表已在 More 中,插件浏览器仍可从侧栏进入)。

恢复默认

More 菜单底部 「Reset to the default three」(中文环境为「恢复默认(只留三个)」)按注册顺序恢复,并仍只留前三个在侧栏。

新装插件

之后新安装的插件,其入口默认进「更多」,不会打乱你已选好的三个与顺序。

安装与启用

官方 README 给出的 GitHub 安装方式如下(将 <your-profile> 换成你的 profile 名):

dsh plugin --profile <your-profile> add github:yingqi-studio/dsh-panel-compact

包名 dsh-panel-compact 也已提交 npm;首版若仍在 staged 审核,npm 上可能只有 0.0.0-stage 占位,审核通过后可改用:

dsh plugin --profile <your-profile> add dsh-panel-compact

在 DSH Desktop 中,也可打开 Plugins,搜索插件名安装。

无论哪种方式,都需要 重启应用:新 bundle 在启动时才会合成进 profile 树,侧栏压缩才会生效。

环境要求:engines.dsh 为 >=0.2.0;需侧栏面板槽位(README 写明在 dsh.web 0.2.x 下验证,对照 @deepseek-ai/dsh-client-ui-sidebar 0.2.1-rc.5)。

典型用法

  1. 安装并重启 DSH 后,侧栏顶部应只剩三个面板入口,以及 More。
  2. 按住某个可见入口拖动,调整侧栏顺序。
  3. 打开 More:点击某面板名称直接打开;用 ✓/+ 决定它留在侧栏还是收进更多;需要时在菜单内拖动排序。
  4. 想回到首次逻辑:在 More 里点「恢复默认(只留三个)」,或清除浏览器中的状态键(见下节)。

状态保存在:

localStorage['dsh-panel-compact.v1']

示例结构(字段以 README 为准):

{
  "initialized": true,
  "order": ["plugins", "guizang-design", "schedules", "dsh-context", "materials", "dsh-ppt.workbench"],
  "pinned": ["guizang-design", "schedules"]
}

删除该键即恢复首次运行行为。注意:这是按浏览器 profile 存的,不是按 DSH profile;不同浏览器各有一份布局。

实现要点(只读了解)

插件在页面里对面板行 DOM 操作:style.display 隐藏、style.order 在 flex 列上排序、每行打 data-dshsc-id 映射 panel id;行数与注册面板数不一致时会回退到标签匹配,无法解析 id 的行保持可见。整段激活包在 try/catch 里,外壳变更时最多退化为「不压缩」,而不是侧栏报错。顺序是 CSS order,其他插件仍看到注册顺序——没有改写全局注册表。

适用场景与注意

适合:经常同时启用多款 DSH 插件、希望侧栏固定少数常用面板、其余从 More 进出的开发者。

已知限制(来自 README):

  • 可见的「三个」里包含固定的 Plugins 行,实际可自定义的侧栏插件入口是另外两个槽位加上 Plugins 共三行。
  • 依赖当前 shell DOM 形状(如 nav 带 _panelList 后缀、面板行为 button[aria-label]、More 为 button[aria-haspopup="menu"])。DSH 改 shell 后插件可能需要跟进。
  • 隐藏仅视觉层面:隐藏行仍挂载,键盘焦点理论上仍可能移到 More 下方的隐藏行。

DSH 社区插件目录在 SkillHub 等平台展示,与 DeepSeek / 幻方无官方从属关系。插件随 DSH 客户端在本地运行,安装前建议查看 GitHub 源码 与 MIT 许可证(package.json 版本 0.1.0)。

结尾

dsh-panel-compact 用客户端侧折叠与 More 菜单,在不动核心排序 API 的前提下收束侧栏面板入口,并记住你的顺序与钉选。需要时可从目录页或仓库安装、重启后即用。

  • 目录页:https://www.skillhub.cn/plugins/yingqi-studio/dsh-panel-compact
  • GitHub:https://github.com/yingqi-studio/dsh-panel-compact
羽毛球分组比赛记分
小程序二维码

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

Xiaoye