前言¶
在 DeepSeek Harness(DSH)里管理多个工作区时,侧栏里工作区文件夹的先后顺序往往决定你切换项目的成本。DSH 自带的 Order by → Last updated 只作用于每个工作区内部的会话排序,并不会按「最近使用」重排工作区本身。若你手动拖过工作区顺序,又希望偶尔按最近活跃的工作区排在前面,原生选项之间缺少一条不覆盖手动顺序的独立路径。
下面介绍的 dsh-workspace-sorter(维护者 mrbeandev)是社区目录中的客户端类插件,在现有侧栏 View options 菜单里增加 Workspace order 区块,用浏览器本地偏好保存排序方式,不改动宿主保存的手动工作区顺序。插件标注为 experimental;README 写明针对 DSH 0.2.0-rc.2 使用固定的内部适配方式,并非稳定的公开菜单扩展 API。
这是什么¶
dsh-workspace-sorter 在 DSH Web 侧栏的 Workspaces → View options 中增加 Workspace order,与原有的会话排序选项并列、互不覆盖。源码与 npm 包见 GitHub 与 npmjs.com/package/dsh-workspace-sorter。许可证为 MIT。
实现上通过 Cordis patch 注入 @deepseek-ai/dsh-client-ui-workspace,包装已注册的 WorkspaceBrowser,变换返回的 ViewOptionsMenu 并投影排序后的工作区快照;不编辑 DSH 安装包、不直接操作 DOM。偏好键名为 dsh-workspace-sorter.order.v1,仅存于浏览器、同源多标签同步,无网络请求、不读写凭证或会话内容,也不持久修改宿主工作区数据。
核心功能¶
Workspace order 菜单¶
在 View options 中可选择:
| 选项 | 效果 |
|---|---|
| Manual workspace order(默认) | 显示宿主保存的手动工作区顺序。 |
| Last used workspace | 按各工作区内成员会话的最新 updatedAt 将工作区从新到旧排列;空工作区排在最后;相同活跃度时保留手动顺序。 |
会话的排序、分组、归档过滤、固定、搜索、重命名与删除仍由 DSH 原生处理;两种 Workspace order 与原生会话排序独立。
「最近使用」指成员会话的最新活动,不限于点击文件夹;归档会话的活动也计入。在 workspace-tree 模式下保留原生层级,仅在层级内应用排序;flat 模式下没有可重排的工作区列表。启用 Last used workspace 时,工作区拖拽提交会被抑制(原生拖拽 affordance 仍可见);需要拖动手动顺序时请先切回 Manual。会话拖拽行为保持原生。
折叠工作区名称快速打开¶
工作区处于折叠状态时,点击其名称会展开该工作区,并按会话更新时间打开最新一条未归档会话;会跳过临时的空白会话,若工作区为空则仅展开。点击箭头、文件夹图标或空白行区域仍为原生展开/折叠;工作区操作按钮不变。已展开时点击名称仍为原生折叠行为;修饰键点击不会触发自动导航。不改变已保存的会话排序。
运行中工作区指示¶
当工作区内任意成员会话处于运行状态时,工作区文件夹图标会呈绿色发光(steady,无闪烁),即使工作区折叠也可见。仅选中但未运行的会话不会触发;成员会话子代理目录中列出的运行中子代理也计入。指示跟随 DSH 实时会话状态存储,工作停止后清除;与 Workspace order 两种模式均兼容。仅文件夹 glyph 着色与阴影,不改变行选中、标签与会话指示器含义。
README 注明:实现与状态聚合有单元测试;完整 running → idle 过渡仍建议在真实 Agent 浏览器环境验证。UI 新增文案目前为英文。
安装与启用¶
通过 npm 包安装(Web profile):
dsh plugin --profile web add dsh-workspace-sorter
若已安装旧插件 dsh-workspace-sort,请先禁用并完成手头任务;该旧插件会独立覆盖宿主手动顺序,与本文 Manual 语义冲突。本包不会静默禁用其他插件。按提示在需要时重启 DSH,并刷新实际使用的 DSH Web 页面,再打开 Workspaces → View options → Workspace order。
卸载:
dsh plugin --profile web remove dsh-workspace-sorter
需要时重启并刷新;无需恢复宿主顺序,仅浏览器侧偏好残留。
版本说明(以 README 为准): 仓库当前准备 0.1.3(含运行中发光与折叠名称快速打开等);README 写明该候选尚未随此次变更发布。已发布的 0.1.0 在干净 DSH profile 下未能通过隔离 GUI 启动测试,安装时应避免启用 0.1.0。修正后的候选在 DSH 0.2.0-rc.2 上通过 README 所述的实浏览器冒烟与卸载后检查;更广泛共存与交互测试仍待完成。启用或禁用插件后建议完整刷新页面,因适配器会改变 live 组件入口,README 不声称自动 HMR。
本地试用打包产物(勿未经授权发布)示例:
dsh plugin --profile web add /absolute/path/to/dsh-workspace-sorter-0.1.0.tgz
典型用法¶
- 安装并刷新 Web GUI 后,打开 Workspaces → View options。
- 在 Workspace order 下选择 Last used workspace,观察侧栏工作区是否按各工作区最近会话活动从新到旧排列。
- 需要恢复拖拽定义的手动顺序时,切回 Manual workspace order,再进行工作区拖拽。
- 折叠某工作区后点击其名称,验证是否展开并打开最新非归档会话(箭头/图标点击仍只做展开折叠)。
- 在有会话运行的工作区上查看文件夹绿色发光是否在 idle 后消失。
验证清单可参考 README:手动/最近切换、新会话活动、重载后偏好持久化、窄栏/折叠侧栏、workspace-tree/flat、归档过滤、搜索、会话拖拽、Manual 下工作区拖拽,以及卸载后刷新。
适用场景与注意¶
适合在 DSH Web 侧栏同时维护多个工作区、希望临时按最近活跃排列、又不想丢失宿主手动顺序的开发者。偏好仅本浏览器有效,换设备或清站点数据需重新选择。
插件以当前 DSH 进程与 Web 客户端权限运行;安装前请阅读 源码 与 MIT 许可证,自行评估与当前 DSH 版本的兼容性。README 将集成方式标为内部适配,未匹配到的侧栏组件会保持原样而非导致应用无法启动。
与 dsh-workspace-sort 不要同时依赖其「每日覆盖手动顺序」的行为;启用本插件前应禁用旧插件。社区目录页 skillhub.cn/plugins/mrbeandev/dsh-workspace-sorter 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」,本包是其中一例客户端扩展。
结尾¶
dsh-workspace-sorter 在不动宿主手动工作区顺序的前提下,为侧栏增加 Manual 与 Last used workspace 两种工作区排序,并附带折叠名称快速打开与运行中工作区发光提示。详情与 issue 见 GitHub 仓库,目录介绍见 SkillHub 插件页。