dsh-panel-tidy:侧栏面板长按拖动与「更多」收纳

前言

DeepSeek Harness(DSH)左侧的全局面板区由 sidebar.panellist 槽承载。每安装一个带侧栏入口的插件,主列表就多一行,顺序通常按注册先后固定。面板一多,留给会话列表的纵向空间会先被挤掉。官方「更多」菜单可以收纳部分入口,但默认顺序仍难按个人习惯调整。

下面介绍社区客户端插件 dsh-panel-tidy(维护者 SternChiri):在主列表对任意面板行长按拖动排序,把不常用的拖进「更多」收起,需要时再拖回主列表,并把布局写到本地状态,重启后仍可恢复。

这是什么

dsh-panel-tidy 是 DSH 的 客户端(Web)插件,当前 npm 包版本为 0.1.7,许可证 MIT。它只作用于左侧栏面板区,不读写会话数据,不碰沙箱与终端。

开箱默认:除 plugins(插件)、schedules(自动化任务)外,其余侧栏面板落在「更多」里,排在「浏览更多插件」上方;主列表通常是 插件、自动化任务、更多。之后新装的带侧栏插件也会按同样规则默认收纳。

社区目录页:sternchiri/dsh-panel-tidy(SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系)。源码与说明:GitHub — SternChiri/dsh-panel-tidy。

核心功能

资料与 README 中可核对的三类行为如下。

1、拖动与排序

  • 长按才进入拖动:鼠标左键按住约 500ms,行显示按下态并略染品牌色;按住期间移动超过 8px 会放弃拖动,普通点击不受影响。悬停时不出现抓手光标,进入拖动后光标为 grabbing,被拖行半透明跟手。
  • 松手落点:
  • 落在另一行上/下:插入到该行前或后。
  • 落在「更多」上:收纳进二级菜单,并自动展开菜单。
  • 落在左侧栏空白:排到队尾。
  • 从「更多」菜单里把条目拖回左侧栏:放回主列表。
  • 菜单内条目也可排序;菜单行样式贴近官方项(复用面板图标,无分隔线、无拖动手柄)。

2、收纳

除 plugins、schedules 以外的侧栏面板默认收在「更多」里。实现上在主列表用 CSS display:none 隐藏行,并在 sidebar.panellist.actions 注册菜单入口(order: -1,排在「浏览更多插件」之前),不接管官方 pin 与官方「更多」里的两条固定项。

3、记住布局

顺序与收纳状态同时写入三处,取时间戳最新的一份:

位置 典型能扛住的情况
$DSH_HOME/panel-tidy/state.json(默认 ~/.dsh,可由环境变量覆盖) 清浏览器数据、换端口、换域名
cookie dsh.panel-tidy(一年) 换端口、重启、换标签
localStorage dsh.panel-tidy.v1 同端口刷新

宿主半边通过 /dsh-panel-tidy/state 读写;三处皆无时回默认布局。系统开启「减少动态效果」时,插件相关动效会关闭。

视觉层沿用官方面板行高与悬停底色,状态色与圆角走运行时主题 token(如 --dsw-alias-brand-primary),带兜底值以适配深浅色主题。

安装与启用

环境要求(来自 package.json / README):

  • DSH:>=0.2.0 <0.3.0
  • Node:^22.19 || >=24

方式一:DSH 界面

在左侧栏打开 插件 页,安装并启用 dsh-panel-tidy,然后重启 DSH。

方式二:命令行(先装依赖,再到插件页启用)

# 从 npm
dsh plugin --profile desktop add dsh-panel-tidy

# 从 GitHub
dsh plugin --profile desktop add "github:SternChiri/dsh-panel-tidy"

启用后,package.json 声明的 dsh.bundle.patch 会在 desktop profile 的 patch 层插入 panel-tidy(dsh-panel-tidy)。

卸载:在插件页关闭,或执行:

dsh plugin --profile desktop remove dsh-panel-tidy

安装前建议浏览仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行,状态路由在 loopback 上本机进程可改写布局文件,属 README 已列边界。

典型用法

  1. 装好并重启后,看主列表是否只剩 插件、自动化任务、更多,其余面板是否在「更多」里。
  2. 在常用面板上长按约半秒再拖动,把高频入口排在上方。
  3. 把少用面板拖到 更多 上松手,确认菜单展开且条目出现在「浏览更多插件」之上。
  4. 需要从「更多」恢复时,展开菜单,把该行拖回左侧栏空白或某一行附近。

README 还提供一段可交给 Agent 的装验证提示(含用 plugin_manager 安装、重启后检查拖动与「更多」、说明关闭方式),可按你的环境改写使用。

实现要点(便于排障)

  • 面板身份来自 ctx.slots.entriesOfSlot('sidebar.panellist') 的 options.id,与主列表 button[aria-label] 对齐。
  • 拖动用指针事件,不用 HTML5 原生拖放,避免浏览器强制抓手光标。
  • 依赖官方侧栏 DOM(nav 下 button[aria-label]、带 aria-haspopup="menu" 的「更多」按钮)及槽名 sidebar.panellist / sidebar.panellist.actions;DSH 大改侧栏时插件需跟进。

仓库自带离线测试:node test.mjs(README 称 137 项),覆盖拖动判定、收纳、状态落盘与宿主路由等。

适用场景与注意

适合:日常在 desktop profile 使用 DSH、侧栏插件较多、希望固定「插件 / 自动化任务」在主列表、其余按习惯排序或收进「更多」的开发者。

注意:

  • 分类为客户端,只处理左侧栏面板区;会话列表、页头、右侧栏不在范围内。
  • 与官方 pin 机制并行但不改写官方 pin 状态;README「已知边界」一节应一并阅读。
  • 社区目录星标等信息以站点为准(当前线索为 0 star);版本以 npm / package.json 为准。

结尾

dsh-panel-tidy 用长按拖动和「更多」二级菜单,把侧栏面板顺序和收纳做成可持久化的个人布局,缓解「装多了插件后主列表挤占会话区」的问题。若你需要在 DSH 0.2.x 桌面上整理侧栏,可按上文命令安装,重启后从长按一行开始试。

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

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

Xiaoye