dsh-sidebar-ingblock:DSH Web 侧栏的「进行中」分组

前言

DSH(DeepSeek Harness)在 Web 端提供了侧栏分组会话的能力,但「工作区」分组本身不支持自定义「进行中」的筛选。当需要在多个会话之间快速切换、保持当前正在处理的会话可见时,只能依赖浏览器标签页或手动滚动。dsh-sidebar-ingblock 为 DSH Web 侧栏增加了一个独立的「进行中」分组,从会话菜单加入,固定在工作区上方,支持折叠、拖拽排序,并跨重启保留状态。

插件定位

dsh-sidebar-ingblock 是一个客户端插件,由维护者 Floweroid 开发。它通过 cordis.patch 在官方侧栏结构中插入一个分组,提供「进行中」会话的短列表。列表中的会话状态(运行中、等待中、完成未读、空闲)与官方会话行一致,通过状态点显示;支持拖拽调整顺序,并利用 Host 半的文件系统持久化。

核心功能

加入与移出会话

任意会话行的 ... 菜单里会出现「加入进行中」与「移出进行中」两个选项,位置在「置顶」与「重命名」之间。此外,在任意会话里发送一条消息,该会话会自动加入「进行中」(子代理会话除外),无需手动点菜单。

独立分组与布局

「进行中」分组固定在「工作区」区头之上,滚动工作区列表时它不动;搜索或折叠工作区都不会影响它。分组支持折叠:点击「进行中」标题或右侧箭头即可收起,只剩标题行与计数;折叠状态会被持久化。

工作区折叠

「工作区」文字右侧多一个箭头,点击可收起整个工作区列表,只留区头;折叠状态下点搜索会自动展开。

拖拽换位

拖动「进行中」列表中的行到另一行的上半或下半即可插入,插入线的视觉与 DSH 官方列表一致。当前仅支持鼠标操作,没有键盘重排。

状态点与视觉反馈

列表行首是状态点:琥珀色代表等待中、蓝色呼吸代表运行中、绿色代表完成未读、灰环代表空闲。行尾显示所属工作区。鼠标移到某一行上会出现 ×,点一下即可移出(不需要打开菜单)。

归档与清理

归档的会话在列表中灰显「已归档」且不可点开。被删除的会话会自动从列表中移除。

失败可见

当读写状态失败时,插件会回滚并在分组内显示红字,同时将错误写入控制台。

安装与启用

方式一:本地目录(开发用)

dsh plugin --profile <profile> add /path/to/dsh-sidebar-ingblock

方式二:打包安装(分发用)

npm pack
dsh plugin --profile <profile> add ./dsh-sidebar-ingblock-0.1.0.tgz

方式三:Git 仓库(pnpm 支持 git 规格)

dsh plugin --profile <profile> add 'git+https://<host>/<user>/dsh-sidebar-ingblock.git'

安装后刷新页面(Ctrl/Cmd+R)。修改 Host 半代码(index.js)需要重启 DSH 或在 Plugin Manager 中禁用再启用该行。

典型用法

  1. 在任意会话里发一条消息,该会话会自动进入「进行中」。
  2. 侧栏「工作区」上方出现「进行中 N」。
  3. 点击标题折叠/展开,拖动行调整顺序,点击行尾 × 移出。
  4. 点击「工作区」文字或右侧箭头收起整个工作区列表。

未发过消息的会话也可以手动加入:任意会话行的 ... 菜单点「加入进行中」。

适用场景与注意

该插件适合需要在多个会话间切换、希望保持「当前进行中」会话可见的用户。它以 DSH 进程权限运行,安装前应检查源码与许可证(MIT)。

插件依赖官方 UI 的内部结构:[data-slot="sidebar.workspaces"]、sectionHeader、sectionLabel、listArea。失效时表现为分组不出现或折叠箭头消失,而不是崩溃;侧栏本身与其他插件不受影响。

兼容性上,插件在 DSH 0.2.1-rc.2 / Desktop profile 上实测通过(Windows),仅支持 Web 端(dsh.client.platform = web)。已知限制包括:拖拽仅支持鼠标、新加入的会话总是排在最前、单窗口内有效、不做多窗口同步或跨设备。

数据与隐私

状态存储在 $DSH_HOME/plugin-data/dsh-sidebar-ingblock/state.json(默认 ~/.dsh/...),由 Host 半读写,不经过浏览器存储。从旧包名 dsh-sidebar-inprogress 升级时,首次加载会把旧目录里的 state.json 搬到新目录,列表不会丢失。只保存 sessionId + addedAt 和两个折叠开关;标题、工作区名、运行状态都是实时从宿主读取的,不落盘。

插件不发起任何外网请求;Host 路由只接受同源、通过 connection.requestRejection 的请求。删除该文件即可清空;损坏时会被重命名为 state.json.bad-<时间戳> 并以空列表启动。

卸载

dsh plugin --profile <profile> remove dsh-sidebar-ingblock

插件卸载后菜单项与分组立即消失;状态文件保留(重装可恢复),需要彻底清理时删除 ~/.dsh/plugin-data/dsh-sidebar-ingblock/。

结尾

dsh-sidebar-ingblock 为 DSH Web 侧栏增加了一个轻量级的「进行中」分组,适合需要在多个会话间快速切换的场景。它通过拖拽排序、自动加入、状态持久化等功能,让侧栏更加贴合实际使用习惯。

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

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

小夜