dsh-workspace-organize:侧栏工作区分组与三级浏览

前言

在 DSH 里做智能体或多项目开发时,侧栏往往按工作区平铺列出,项目一多就不容易按业务线或客户归类。官方工作区注册表负责登记与打开工作区,本身不提供「文件夹式」分组。若你希望在侧栏里按「分组 → 工作区 → 会话」逐级展开,又不改动官方对工作区、会话、归档与置顶集合的存储方式,可以借助社区客户端插件 dsh-workspace-organize(维护者 GT-610,SkillHub 目录页,GitHub)。

这是什么

dsh-workspace-organize 把 DSH 侧栏的工作区归入自定义命名分组,浏览路径为分组 → 工作区 → 会话。分组是插件维护的虚拟层:工作区登记、会话、归档与置顶集合仍由官方逻辑负责,除非你通过插件菜单执行重命名、归档或删除等操作,插件不会改写那些官方状态。

插件分类为客户端,仅作用于 web 侧栏(desktop 外壳同样用 web 渲染,安装行为与浏览器一致)。当前 npm 包版本为 0.1.0,许可证 MIT,需要 DSH >= 0.2.1-rc.2(package.json 的 engines.dsh,安装时会被检查)。

核心功能

三级浏览与官方 UI 一致

侧栏按分组 → 工作区 → 会话展示。行高、字号、图标与折叠行为沿用官方侧栏,使用同一套 --dsw-* 设计令牌和官方组件(Menu、Modal、Tooltip、Icon*、StateDot),主题切换与右键菜单的模糊、透明会跟随外壳,无需插件单独维护一套皮肤。

分组数据独立存放

分组文档由插件 Host 路由读写,落在 $DSH_HOME/storages/workspace-organize-groups.json,与官方工作区注册表互不干涉。浏览器 localStorage 里有一份镜像,断网时可先写镜像,恢复后以 Host 为准。

空白会话与归档行为对齐官方

每次「新建会话」会留下占位会话(blank);插件遵循官方规则,不把历史草稿堆成多行与工作区同名的会话。归档会话从列表移走;视图菜单提供「隐藏已归档 / 全部会话(含已归档) / 只看已归档会话」三档,选中项会记住。查看归档行时,行尾为「从归档恢复」,行本身不可点击(归档会话无法打开)。

组级批量操作与右键仲裁

分组菜单可一次归档组内全部会话,或删除组内全部工作区,均有确认弹窗并显示影响数量;已归档会话与占位会话不计入数量。右键菜单在 contextmenu 阶段声明:若其他右键菜单插件已接管该行,本插件不会弹出第二个菜单。

折叠状态持久化

显式展开/折叠的选择写入 localStorage,刷新后树结构保持。

在槽位上替换官方浏览器渲染

插件注册在 sidebar.workspaces 槽位,GroupedBrowser 的 priority 为 -100,低于官方 WorkspaceBrowser(0),从而赢得该单元格渲染;官方条目仍注册,子槽位继续存在。业务读写通过 useWorkspaces / useSessions 等官方钩子,以及 ctx.get('uiWorkspace' | 'workspaces' | 'sessions') 调用官方操作;分组数据经 GET/POST /api/workspace-organize 与 Host 同步。

安装与启用

安装前请自行查看仓库源码与 MIT 许可证。插件在当前 DSH 进程的权限下运行,Host 路由监听回环地址,写接口仅接受同源浏览器请求。

从 npm 或 GitHub 安装(将 <profile> 换成你的 profile 名):

dsh plugin --profile <profile> add dsh-workspace-organize

或直接从仓库安装:

dsh plugin --profile <profile> add github:GT-610/dsh-workspace-organize

装好后重启 DSH,让 Host 重新扫描插件表。仓库已提交构建产物 dist/,从 git 安装时不需要为构建脚本开白名单(DSH 默认会阻止带 prepare 的包执行构建脚本)。

典型用法

下面操作均来自插件 README 中的说明表,在侧栏标题栏或各行菜单中完成。

想要的效果 操作
新建分组 标题栏的滑杆按钮 → 新建分组
重命名 / 解散分组 分组行右键或 ⋯
归档组内全部会话 分组行 ⋯ → 归档组内全部会话…
删除组内全部工作区 分组行 ⋯ → 删除组内全部工作区…
把工作区移入分组 工作区行 ⋯ → 移入分组 → 选分组
移出分组 工作区行 ⋯ → 移出分组
在此工作区新建会话 工作区行 ⋯ 或行尾的 +
归档 / 恢复单个会话 会话行尾的归档按钮,或右键菜单
查看已归档会话 标题栏滑杆按钮 → 全部会话(含已归档) / 只看已归档会话
展开 / 折叠全部 标题栏滑杆按钮 → 展开全部 / 折叠全部
按标题搜索会话 标题栏放大镜

数据边界与限制

写入采用临时文件加 rename 的原子落盘,并经串行写链避免并发覆盖。文档结构由共用校验器限制:最多 200 个分组、每组最多 500 个工作区、全文档最多 2000 条成员;非法文档整份拒绝。请求体超过 2 MiB 时 Host 在解析前直接拒绝。

归档与置顶集合不归插件所有,插件只调用官方的归档与恢复 API。

适用场景与注意

适合在单一 DSH profile 里同时维护多个工作区、又希望按项目线或客户名在侧栏分组浏览的开发者。若你已安装其他侧栏或右键菜单类插件,本插件设计上会与已接管的行共存。

SkillHub 等社区目录由社区维护,与 DeepSeek / 幻方无官方从属关系;安装第三方插件前建议阅读 GT-610/dsh-workspace-organize 源码与 issue 列表。

结尾

dsh-workspace-organize 在不改动官方工作区与会话模型的前提下,为侧栏增加一层可命名的分组,并把浏览路径收成「分组 → 工作区 → 会话」。需要安装说明与开发约定时,以仓库 README 为准。

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

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

Xiaoye