dsh-sidebar-fold-zxp:把 DSH 侧栏插件入口折成可分组列表

前言

DeepSeek Harness(DSH)把能力拆成插件后,带侧栏入口的插件会在左侧 sidebar.panellist 里各占一行,每行大约 46px。装到七八个以后,入口区 alone 就可能占掉左栏三分之一高度,下面的工作区、会话列表被挤得很紧。

外壳对这批入口没有折叠或溢出处理:有几个 panel 就排几行,也没有「隐藏其他插件入口」的接口。要在不改动每个插件的前提下收回纵向空间,只能由客户端插件在现有 DOM 上动手。下面介绍社区插件 dsh-sidebar-fold-zxp(维护者 zengxiangpeng123,分类:客户端)的做法。

这是什么

dsh-sidebar-fold-zxp 把 DSH 左侧那一排插件入口收成一行「插件列表」,支持按组归类、自定义顺序,并在折叠时把高度还给工作区与会话列表。插件当前版本为 v0.9.1,许可证 MIT,要求 DSH ≥ 0.2.1-rc.1。

社区目录 SkillHub 与 GitHub 仓库由作者维护;目录站点独立于 DeepSeek / 幻方,并非官方应用商店。

装完以后侧栏长什么样

侧栏大致结构如下(README 示意):

▾ 插件列表                 ← 点一下,下面全部收起

▾ 日常  2
│   打开工作台(任务 / 日历 / 知识库 / 点子)
│   插件市场
▾ 开发  2
│   任务看板
│   自动化任务
▸ 统计与记忆  2            ← 收起状态,箭头朝右

(「更多」这类外壳自己的入口会被隐藏)

核心功能

折叠与分组

  • 点击「插件列表」可收起整块插件入口区域。
  • 点击某个组标题可单独收起或展开该组。
  • 在 设置 → 插件列表 中可新建分组、改名、删除、调整组顺序;条目可拖到其他组或拖到某一行前面换位置;也可用下拉框和 ↑ ↓ 做精确调整。

每条入口的三态显示

每行有一个三态选择(README 说明):

  1. 跟随折叠(默认):折叠时与组一起收起。
  2. 折叠时仍显示:整块折叠后该条目仍可见。
  3. 始终隐藏:侧栏中一直不出现。

对外壳行为的边界

插件只改自己以外兄弟行的样式(排序、显隐),不改任何插件的注册、图标或点击行为;卸载时会还原改过的行。若 DSH 更换左栏 DOM(行不再是 nav > button),折叠会失效,失效方式是「什么都不做」,不会破坏界面。

安装与启用

SkillHub 目录页给出的安装方式为:在 DSH 中安装插件 zengxiangpeng123/dsh-sidebar-fold-zxp(页面文案为「请安装 DSH 插件 zengxiangpeng123/dsh-sidebar-fold-zxp」)。安装前建议阅读 GitHub 源码与 MIT 许可证;客户端插件在当前 DSH 进程权限下运行,与装任何 DSH 插件一样需要自行评估信任边界。

启用后需注意 README 中的缓存行为:改完插件代码要彻底退出桌面端再打开,只刷新页面不够。客户端插件按 ?rev=<文件元数据哈希> 加载,响应头为 immutable(缓存一年),桌面端可能长期沿用旧缓存。

典型用法

侧栏操作

  1. 需要专注会话列表时,点「插件列表」收起全部插件入口。
  2. 常用组保持展开,不常用的组点组标题收起。
  3. 偶尔才用的入口可在设置里设为「始终隐藏」,避免占视觉和顺序。

设置页维护分组

  1. 打开 设置 → 插件列表。
  2. 按使用习惯建组(例如「日常」「开发」),把条目拖进对应组。
  3. 用 ↑ ↓ 或拖拽微调顺序;对需要常驻侧栏的条目选「折叠时仍显示」。

分组与顺序写入本地配置文件:

~/.dsh/dsh-sidebar-fold-zxp/settings.json

折叠状态与设置页交互状态保存在当前页面会话中;写入时先落本地再同步宿主,避免保存失败时点击看起来毫无反应。

实现要点(便于排查问题)

外壳用 React 渲染侧栏行,插件据此做了几件非显而易见的事:

  • 排序用 CSS order,不移动 DOM 节点,否则下一次渲染会复原。
  • 隐藏用内联 display,不用 hidden 属性,因为行上的类设置了 display: flex,会覆盖浏览器对 [hidden] 的默认样式。
  • 组标题由本插件创建并插入外壳 nav;外壳重渲染冲掉时,由观察者补回。
  • 组标题点击在捕获阶段拦截并 stopPropagation,否则外壳会用本插件 id 去 selectPanel,而该 id 没有对应面板。

宿主侧暴露三个 HTTP 接口(README):

GET  /api/dsh-sidebar-fold-zxp/settings       读配置
PUT  /api/dsh-sidebar-fold-zxp/settings       写配置(原子写)
GET  /api/dsh-sidebar-fold-zxp/plan?entryIds= 按当前条目算布局

排序规则在 src/plan.js 与 src/edits.js 中实现为纯函数,README 注明 node --test 覆盖 40 项。

适用场景与注意

适合:侧栏已装多个带入口插件、希望按场景分组并折叠入口、把纵向空间留给会话与工作区的 DSH 用户。

注意:

  • 依赖 DSH ≥ 0.2.1-rc.1;左栏 DOM 结构变化会导致功能静默失效。
  • 改插件或升级后,桌面端需完全退出再启动,避免 immutable 缓存旧脚本。
  • 安装与配置前请核对 GitHub 仓库与 SkillHub 目录页信息;本文事实以 README v0.9.1 与目录页为准。

结尾

dsh-sidebar-fold-zxp 针对 DSH 侧栏「只增行、不折叠」的默认行为,用分组与折叠把插件入口收成可控的一列,并通过设置页维护顺序与显隐策略。需要安装或 issue 时可访问:

  • 目录页:https://www.skillhub.cn/plugins/zengxiangpeng123/dsh-sidebar-fold-zxp
  • GitHub:https://github.com/zengxiangpeng123/dsh-sidebar-fold-zxp
羽毛球分组比赛记分
小程序二维码

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

小夜