前言¶
在使用 DeepSeek Harness(DSH)时,如果侧边栏积累了大量 Workspace,逐个删除会消耗不少时间。DSH 本身提供了删除单个 Workspace 的入口,但缺少批量操作能力。dsh-workspace-batch 插件通过在工作区标题行添加入口,支持一次性勾选并移除多个 Workspace。
这是什么¶
这是一个 DSH Web 插件,由 theTd 维护。它解决的是「侧边栏 Workspace 数量过多时的批量删除」问题。与侧边栏行尾的 ... → Delete 等价,但支持多选。
核心功能¶
插件入口位于工作区标题行最左侧,也就是「搜索 / 视图选项 / 添加工作区」这一排的第一个图标。点击后进入批量移除对话框。
使用流程是:勾选需要移除的行 → 点击 移除所选 → 确认移除。
对话框包含以下控件:
- 筛选框:按标题或路径过滤,下方两个按钮只作用于当前筛选结果
- 全选可见 / 清空:全选或取消当前筛选结果
- 选零会话 / 取消零会话:选中未归档会话数为 0 的 Workspace
行上的 N 个会话 显示的是未归档会话数量。归档操作保留 Workspace 的会话槽位,直接显示 sessionIds.length 会在侧边栏里把「46 个会话」挂在空无一物的 Workspace 上。悬停徽标可查看 N 可见 / M 归档。
安装¶
先进入 DSH Web profile 目录:
cd $HOME\.dsh\profiles\web
从本地链接安装:
pnpm add -w "link:$HOME/.dsh/plugins/dsh-workspace-batch"
或者从仓库安装(公开仓可直接用;私有仓需要 git 凭据助手,例如 gh auth setup-git):
pnpm add -w "github:theTd/dsh-workspace-batch"
安装后,把 "dsh-workspace-batch" 加到 package.json 的 dsh.profile.bundles 末尾。如果 profile 配置了 patchReload: live 和 dsh-client-hmr,插件会立即注入到已打开的页面,无需重启 dsh web。
卸载¶
cd $HOME\.dsh\profiles\web
pnpm remove dsh-workspace-batch
再从 dsh.profile.bundles 里删除 "dsh-workspace-batch" 这一项。
适用场景¶
适合需要频繁清理侧边栏 Workspace 的场景,例如在测试、实验或长期使用过程中积累了大量不再需要的 Workspace。
注意:插件以当前 DSH 进程的权限运行。安装前应检查源码与许可证(MIT)。
技术细节¶
- 无构建步骤:
lib/client.js是浏览器直接接收的产物 - 开发时保存文件后,
dsh-client-hmr每 500ms 轮询lib/client.js的 mtime/size,约 1 秒内热替换,页面无需刷新 - 入口通过 Portal 注入到标题行,不是槽位。工作区标题行没有行内动作槽位,所以走 Portal 方式,锚点是
[data-slot="sidebar.workspaces.directoryFlow"] - 插件不检测「路径是否还存在」,因为浏览器没有
stat,需宿主提供只读 HTTP 路由才能实现 - 样式使用
--dsw-alias-*变量(带字面量兜底),类名前缀dswsb- - 支持语言:仅
en/zh,其他语言回退到en
依赖的契约¶
插件不依赖任何内置 Client 包,只使用三个公开面:
ctx.slots.inject/ctx.slots.register({ name, id, order, locale })ctx.workspaces.list.getSnapshot()/.subscribe(fn)/ctx.workspaces.delete(id)ctx.locale.register(ns, locale, dict)/ctx.locale.bind(ns)
总结¶
dsh-workspace-batch 用一次操作清理多个 Workspace,减少重复点击。如果你经常需要整理侧边栏,这个插件可以节省时间。
- 目录页:https://www.skillhub.cn/plugins/theTd/dsh-workspace-batch
- GitHub:https://github.com/theTd/dsh-workspace-batch