前言¶
在 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](只删链接,不动源码)。
典型用法¶
- 执行上述安装命令之一,重启 DSH。
- 打开 设置 → 工作区清理。
- 核对顶部统计与树形列表,勾选要删的工作区或对话。
- 点击 删除所选,在对话框中核对数量与字节数后确认。
- 查看结果面板;若有运行中或默认工作区,按提示二次确认。
资料中的界面示意(字段含义以实际 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