dsh-workspace-cleaner:在 Web UI 里勾选并彻底删除工作区与对话

前言

在 DeepSeek Harness(DSH)里用久了,~/.dsh 会堆满各工作区的会话日志、投影缓存和工作区登记。DSH 自带的「移除工作区」只会摘掉登记,会话记录仍留在磁盘上,界面上还会变成「未分组」;若直接手删目录,又容易漏掉 session_projcache,或误删别的会话。下面介绍社区插件 dsh-workspace-cleaner(维护者 sleeepingbeee):在 DSH Web UI 的「设置」里列出所有工作区与对话、显示占用,勾选后一次删除登记、日志与缓存。插件与 DeepSeek 官方无关,属于个人开发的第三方客户端插件;在 SkillHub 目录 可查到条目,源码与说明见 GitHub 仓库。

这是什么

dsh-workspace-cleaner 是 DSH Web UI 插件:在当前 profile 下列出每个工作区及其对话,展示字节占用,勾选后连同 session 日志、投影缓存和工作区登记一并删除。npm 包名 dsh-workspace-cleaner,当前资料中的版本为 0.1.7,许可证 MIT,要求 Node.js >= 22,且 DSH 需带 Web UI(桌面版或 dsh web)。仓库无第三方依赖、无构建步骤,根目录即插件包。

与自带「移除工作区」的差异可以概括为:自带操作只删登记、会话进「未分组」;本插件先按勾选范围删磁盘产物与登记,删除成功后向界面广播会话移除事件,避免「删完仍挂在未分组直到重启」。

核心功能

清单与勾选

  • 页面顶部显示 DSH home、工作区数、对话数与总占用,「刷新」重新读盘。
  • 勾选工作区 → 删除整个工作区(含其下所有对话);勾选对话 → 只删该对话(自动带上子 agent 对话)。可混选,一次确认、一次执行,删除不可撤销。
  • 空工作区也可勾选删除(旧版曾对空 sessionIds 报错,现已支持)。
  • 子 agent 对话按会话头 parentSession 嵌在主对话下并标注「子 agent」;删主对话会连同子对话。fork 对话缩进显示并标注「分叉」,删原对话不会删 fork。
  • 对话按创建时间倒序;无消息显示「空对话」,仅有首条提问无标题时用该提问作名并标注「首条提问」。
  • 被勾选工作区覆盖的对话行会显示为已勾选且不可单独取消。

删除范围与安全

对选中对话:运行中会先归档并请求停止;再删 ~/.dsh/sessions/<projectKey>/<会话目录>/session.v4.jsonl.zstd 与 storages/session_projcache/sessions/<sessionId>.json(含 .bak.*);从工作区登记 detach;广播 api-session/removed。

对选中工作区:对上述范围内每个对话执行相同步骤,再删 storages/workspace.json 中该行与 global.workspaceIds 中的 id;若为默认工作区则清掉 defaultWorkspaceId。清空的 sessions/<projectKey>/ 目录会被移除。

不会删除:未勾选的工作区与对话;凭据、配置、profile、市场缓存等其它 ~/.dsh 文件;按内容哈希共享的 attachments/v1 与 cache/attachments(多对话可能共用)。HTTP 接口仅在 /api/workspace-cleaner 下注册,校验回环地址与同源;文件操作限制在当前 DSH home 内。插件不访问网络、不向 agent 暴露删除工具,删除只能由界面勾选与确认触发。

确认与限制

确认框会给出工作区数、对话数、总字节数,以及「运行中 / 默认工作区」等需二次确认的情况;结果面板列出失败原因。运行中或默认工作区删除可能需 force 二次确认。删除无回收站;运行中会话若仍被宿主持有,下次写入可能重建日志。Windows 11 + DSH 桌面版已验证;macOS / Linux 理论上可用但未在资料中标注实测。

安装与启用

要求 DSH Web UI、Node.js >= 22。安装后需重启一次 DSH,让 Host 半进入模块图;之后仅 Client 半改动时刷新页面即可;Host 半变更需重启或在插件管理器里「禁用 → 启用」。

方式一:npm(推荐)

plugin_manager install_bundle dsh-workspace-cleaner
# 或锁定版本:
plugin_manager install_bundle dsh-workspace-cleaner@0.1.7

方式二:从 GitHub 安装

plugin_manager install_bundle github:sleeepingbeee/dsh-workspace-cleaner
# 或锁定 tag:
plugin_manager install_bundle github:sleeepingbeee/dsh-workspace-cleaner#v0.1.7

方式三:本地目录

将仓库放到任意路径后执行(路径按本机替换):

plugin_manager install_bundle D:/path/to/dsh-workspace-cleaner

Windows 上若曾用本地目录安装建立了 junction,改从 npm / GitHub 安装前需先删除旧联接目录,否则 pnpm 可能报 [ERR_PNPM_EPERM](只删链接,不动源码)。

典型用法

  1. 执行上述安装命令之一,重启 DSH。
  2. 打开 设置 → 工作区清理。
  3. 核对顶部统计与树形列表,勾选要删的工作区或对话。
  4. 点击 删除所选,在对话框中核对数量与字节数后确认。
  5. 查看结果面板;若有运行中或默认工作区,按提示二次确认。

资料中的界面示意(字段含义以实际 DSH 为准):

┌─ 工作区清理 ────────────────────────────────────────────────┐
│ 7 个工作区 · 21 个对话 · 19.1 MB · ~/.dsh          [刷新]  │
├─────────────────────────────────────────────────────────────┤
│ ☑ dsh workspace (默认)                    20 个对话  18.2MB │
│   ☑ …                                      1.2 MB  运行中   │
│ ☑ 线性代数                                  0 个对话  0 B    │
├─────────────────────────────────────────────────────────────┤
│ 已选 2 个工作区 / 3 个对话(共 21 个对话)     [删除所选]   │
└─────────────────────────────────────────────────────────────┘

可选配置:无必填项。多 profile 或沙箱可将 Config.dshHome 指向其它 home(默认 DSH_HOME 或 ~/.dsh),示例见仓库 README 的 cordis.patch.yml 片段。自动化可调用 POST /api/workspace-cleaner/delete(同样受回环与同源限制),但插件设计上不面向 agent 一键删库。

适用场景与注意

适合需要看清磁盘占用、批量清理历史工作区或单条对话,且接受不可恢复删除的 DSH 用户。重要会话请先备份 ~/.dsh/sessions 与 ~/.dsh/storages。插件以当前 DSH 进程权限读写 home,安装前建议阅读源码与 MIT 许可证,确认删除范围符合预期;SkillHub 与 GitHub 为社区分发渠道,并非 DeepSeek 官方应用商店。

链接

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

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

Xiaoye