前言¶
在 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