前言¶
DSH 的左侧栏按 Workspace 平铺列出所有工作区:开得越多,列表越长,找起来只能往下翻。Session 也没有归类入口,归档只能靠内置的三态筛选。dsh-workspace-folders 这个插件就是在不改数据的前提下,给侧边栏加上一层文件夹组织——Workspace 可以归入用户自建的文件夹(支持嵌套),每个 Workspace 内部的 Session 也有自己的分类树,另外每行可以挂图标。目录页把它归在「趣味换装」分类下,维护者是 Larrtroffen。
它由 Larrtroffen 维护,是 dsh-session-keeper 的 fork,在其上补了仅用于展示的 Workspace 文件夹层、文件夹行、拖拽、图标选择器和 Session 行缩进。看懂它做了什么之前,先记住一个前提:文件夹层是 display-only(仅显示)的,不会重命名工作区或会话,不会把会话在工作区之间移动,也不会动磁盘目录,只重排侧边栏。
它是做什么的¶
一句话:给 DSH web 侧边栏补上折叠与归类能力,让 Workspace 和 Session 各有一层文件夹。仓库里的三块能力分别是:
- Workspace 文件夹,仅显示层,不写业务数据。
- 每个 Workspace 内独立的 Session 分类树,数据持久化到 Host 存储域。
- 行首图标,支持 40 个宿主图标集图标 + 48 个常用 emoji。
同时保留 DSH 原生侧边栏的操作:拖拽、重命名、固定、归档、搜索、视图选项。
核心功能¶
Workspace 文件夹(仅显示)¶
- 在侧边栏里创建、重命名、删除、折叠、重新排序文件夹。
- 把 Workspace 行拖到文件夹块的任意位置(标题行或展开的正文)即可归入;也可以用行内
… → Move to folder…菜单。 - 把文件夹拖到另一个文件夹的中间即嵌套;拖到目标文件夹的上/下边缘则平级重排。把 Workspace 拖到 Unfiled 上可以移出文件夹。
- 把 Workspace 拖到它已所属的文件夹里,是在该文件夹内重排;拖到其他位置则是改归属。
- 删除文件夹只删除分组:子文件夹升一级,成员 Workspace 回到 Unfiled,不删任何 Workspace、Session 或文件。
- 没有建立文件夹时,列表的渲染效果与原生浏览器完全一致。
Session 文件夹(按 Workspace 独立、持久化)¶
每个 Workspace 维护自己的嵌套分类树:把 Session 拖进分类、在分类里创建 Session、折叠/重命名分类、固定、三态归档筛选,以及可恢复的删除回收站。数据存放在 Host 存储域(session_categories,位于 <DSH_HOME>/storages/),刷新页面、清缓存、重启都不会丢。
图标¶
- 每个 Workspace 行默认显示一个安静的圆点,点开是图标选择器。
- 图标目录为 40 个宿主图标集图标 + 48 个常用 emoji,另有「Reset to default」清空图标。
- 展示用的文件夹也可以单独挂图标。
- 不引入新依赖,不发起网络请求,不做图片解码;目录只在选择器打开时渲染,静止的侧边栏每行只多一次 map 查找。
保留的原生能力¶
搜索、分组视图(Workspace / Workspace tree / flat)、手动排序与按最近使用排序、固定 Session、归档筛选、Workspace 与 Session 行菜单,均照常工作。
安装与启用¶
插件要求 DSH >= 0.2.1-rc.1 < 0.3.0(项目在 0.2.1-rc.5 上构建并测试,覆盖桌面版与 web 版)。Node.js >= 24.9 只在从源码构建时才需要,发布包里已带编译好的 lib/。
发布到 npm 之后,可以走 npm 安装:
dsh plugin --profile web add dsh-workspace-folders
也可以直接装 GitHub 仓库:
dsh plugin --profile web add github:Larrtroffen/dsh-workspace-folders
装完刷新 web UI,或重启 DSH Desktop。插件在插件管理器中显示名为 dsh-workspace-folders;在管理器里禁用或卸载即可恢复原生侧边栏。
典型用法¶
下表是 README 给出的操作路径,可以作为上手清单。
新建顶层文件夹:视图选项菜单(滑块图标)→ New folder,或点击列表末尾的 + New folder 行。
新建子文件夹:文件夹行 … → New subfolder。
重命名文件夹:双击文件夹名,或 … → Rename。
把 Workspace 归入文件夹:拖动 Workspace 行到文件夹上;或 Workspace … → Move to folder…。
移出文件夹:把 Workspace 拖到 Unfiled;或 … → Move to folder… → Unfiled。
嵌套/重排文件夹:把文件夹拖到另一个文件夹中间(嵌套),或拖到其上/下边缘(重排);也可以用 … → Move to…。
折叠/展开:点击文件夹行,折叠状态会显示其中 Workspace 的数量。
删除文件夹:文件夹 … → Delete folder,只删分组。
设置图标:点击行首的圆点/图标,或 … → Set icon…。
Session 文件夹沿用 dsh-session-keeper 的交互:把 Session 拖到分类上、… → Move to category…、在分类内创建 Session、固定/归档/删除并可撤销。
数据与隐私¶
表格里的两类数据分开放,这个设计值得先了解再装。
| 数据 | 位置 |
|---|---|
| Workspace 文件夹、归属关系、展开状态、图标(本插件的显示层) | 浏览器 localStorage,键 dsh.session-categories.view.v2 |
| Session 文件夹/归属/回收站 | DSH Host 存储域 session_categories(<DSH_HOME>/storages/) |
任何地方都不上传。显示层刻意放在浏览器本地:清掉站点存储后,Workspace 的文件夹排布会重置(Session 文件夹不受影响)。
适用场景与注意¶
适合 work 区数量多、靠平铺列表已经不好找的开发者,以及想按模块给 Session 分类的人。如果你的 Workspace 长期不超过一屏,收益不明显。
使用前有几点需要自行判断:
- 插件会替换侧边栏的
sidebar.workspaces区域,因此不能与替换同一区域的插件并存(例如dsh-better-workspace、dsh-workspace-categories),只能留一个。 - 装了
dsh-claude-style时,它的侧边栏补丁会与这个替换版浏览器冲突,需要在那个插件的配置里设置:
workspaceView: false # claude-style 的 Active/Archived 标题开关;本插件的视图菜单
# 已经提供同样的三态归档筛选
searchStyle: icon # 把搜索入口保留在侧边栏头部
- 只通过行插槽装饰的侧边栏插件、只改样式的主题可以继续用。
- 插件以当前 DSH 进程的权限运行,安装前请自行检查源码与许可证(本项目为 MIT)。它只搬动侧边栏的显示,不搬动业务数据,这是判断它能做什么的要点。
- 已知限制:Workspace 文件夹只在分组视图(By Workspace / Workspace tree)出现,flat 列表和搜索结果保持平铺;显示层文件夹与图标是浏览器本地数据,不随 Host 持久化。Preview 版 DSH 不承诺插件 API 稳定,升级时插件要与 DSH 一并升级。
结尾¶
它的价值在于把侧边栏的整理成本从「记住哪个 Workspace 在哪」降为「建个文件夹拖进去」,且不会在背后改动任何工作区或文件。目录页:https://www.skillhub.cn/plugins/Larrtroffen/dsh-workspace-folders ;GitHub:https://github.com/Larrtroffen/dsh-workspace-folders