前言¶
在 DeepSeek Harness(DSH)里用 dsh-workspace-changes 做「本轮改了哪些文件」对比时,每个会话会在系统临时目录下创建一个 dsh-workspace-changes-XXXXXX 目录,把未跟踪且未被忽略的文件压进对象库。会话正常结束时 DSH 会删掉它;若进程被强杀、异常退出或机器直接关机,目录会留在原地成为孤儿。工作区里若有数百 MB 以上的大文件,单个孤儿目录就可能占去数十 GB 磁盘。手动在临时目录里逐个辨认并删除既费事又容易误删。下面介绍社区插件 dsh-temp-snapshot-cleaner:在 DSH 界面里扫描符合条件的孤儿快照,经试运行与二次确认后再删除。
这是什么¶
dsh-temp-snapshot-cleaner 是 DSH 桌面版与网页版可用的界面插件,维护者为 b9p79rgh6f-sudo,在插件目录中归类为 admin-security。它只做一件事:从系统临时目录中清理已漏出的 dsh-workspace-changes-* 孤儿目录;不替代 dsh-workspace-changes 的正常生命周期,也不修改工作区本身。当前 package 版本为 0.1.0,许可证为 MIT。
快照从哪里来¶
DSH 的 dsh-workspace-changes 为对比本轮变更,会在系统临时目录下建立命名形如 dsh-workspace-changes-[六位字母数字] 的目录。这与插件 README 中描述的机制一致:源头仍是工作区里大文件被反复整体快照;若希望新产生的快照体积下降,需要在仓库里用 .gitignore 忽略数据库、计算临时文件等,清理插件与 ignore 策略配合使用才完整。
核心功能¶
界面入口¶
侧边栏底部、余额挂件下方有一行「缓存」,展示当前占用与进度条;点开进入清理面板。
五条安全判定¶
只有同时满足以下五条,目录才会进入待删候选(README 原文):
- 解析为绝对路径后,必须是系统临时目录的直接子目录(临时目录通过系统接口获取,不写死路径)。
- 目录名完整匹配
^dsh-workspace-changes-[A-Za-z0-9]{6}$。 - 不是重解析点;符号链接与目录联接一律跳过。
- 最后写入时间超过保留时长,默认 72 小时,可在界面上修改。
- 目录内每个文件都能以独占方式打开一次;有一个打不开则整个目录跳过,不做部分删除。
此外:目录内部若含符号链接则跳过;代码中硬编码禁止删除清单(含 .pg0、.dsh、.hindsight、模型缓存、WSL、OneDrive、Documents、Desktop 等),任何情况下都不会对这些路径动手。
删除流程¶
删除分两步,避免误操作:
- 点击「试运行删除」:只生成待删清单,不删除任何文件;面板会显示将删除几个目录、共约多少 GB。
- 确认无误后,再点「确认正式删除」执行删除。
安装与启用¶
可从 DSH 插件市场安装,或使用命令行(将 <profile> 换成你的 profile 名):
dsh plugin --profile <profile> add dsh-temp-snapshot-cleaner
也可从 GitHub 安装:
dsh plugin --profile <profile> add github:b9p79rgh6f-sudo/dsh-temp-snapshot-cleaner
安装完成后刷新页面;若宿主页有改动,按 README 说明重启 DSH。插件面向 web 客户端(package.json 中 dsh.client.platform 为 web),运行环境要求 Node.js >= 20(用于开发与测试脚本,安装由 DSH 托管)。
典型用法¶
- 安装并启用插件后,打开 DSH 侧边栏,滚到底部查看「缓存」行上的占用与进度条。
- 进入清理面板,按需调整保留时长(默认 72 小时)。
- 先执行「试运行删除」,到本机查看清单目录(见下节)或面板汇总,核对条目与体积。
- 确认无误后再「确认正式删除」。
运行后留下的路径(README 原文):
- 待删清单与结果清单:
~/.dsh/plugin-data/temp-snapshot-cleaner/manifests/ - 运行日志:
~/.dsh/logs/temp-snapshot-cleaner.log - 设置:
~/.dsh/plugin-data/temp-snapshot-cleaner/settings.json
适用场景与注意¶
适合谁: 长期使用 DSH 且启用 dsh-workspace-changes、曾在异常退出后怀疑临时目录堆积的开发者;需要 admin-security 类磁盘与权限相关运维能力时,可在社区目录中按分类查找此类插件。
权限与安全: 插件以当前 DSH 进程权限运行,删除操作仅针对通过五条判定的临时目录子项。安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,确认行为符合本机策略。社区插件目录 skillhub.cn 为独立站点,与 DeepSeek、幻方无官方从属关系;DSH 生态遵循「一切皆插件」,本插件是其中一项可选能力,并非官方内置工具。
局限: 本插件清理的是已经漏出的孤儿目录;若不从 .gitignore 等处控制大文件进入快照,新问题仍会出现。
开发与验证¶
维护者在仓库中提供本地测试命令(不涉及 end 用户日常操作):
node tools/test-core.mjs # 五条判定、试运行、正式删除、清单落地
node tools/test-client-render.mjs # 侧边栏入口与面板渲染
test-core.mjs 会在系统临时目录构造多种假目录(如超保留期、名字不合法、文件被独占、指向用户文档的目录联接等),跑完后自行清理。
结尾¶
dsh-temp-snapshot-cleaner 把临时目录里符合条件的 dsh-workspace-changes-* 孤儿快照,用五条硬条件约束在系统 temp 下的合法命名目录,并以试运行清单加二次确认的方式删除,适合与 .gitignore 策略一起控制 DSH 会话快照带来的磁盘占用。
- 插件目录页:https://www.skillhub.cn/plugins/b9p79rgh6f-sudo/dsh-temp-snapshot-cleaner
- 源码与 README:https://github.com/b9p79rgh6f-sudo/dsh-temp-snapshot-cleaner