前言¶
DeepSeek Harness(DSH)在 Windows 上會把 pwsh、bash 等 shell 工具放在沙箱裏跑。沙箱裏啓動子進程會失敗(常見爲 0xC0000142,即 STATUS_DLL_INIT_FAILED),因此模型無法直接調用 WizTree.exe、robocopy、mklink 或系統卸載器。C 盤爆滿時,若只靠對話裏「建議你手動清緩存」,智能體既掃不準體積,也執行不了搬遷。
下面介紹社區插件 dsh-disk-cleaner(維護者 lvyue1314)。插件代碼運行在 DSH 宿主進程內、沙箱之外,把「定位 → 判斷 → 清理 → 搬遷」拆成六個可調用的工具;破壞性操作默認 dry-run,需顯式確認才執行。插件歸類爲 admin-security,當前版本 0.2.1,許可證 MIT,要求 Windows、Node >= 22、DSH >= 0.2.1-rc.5。
它解決什麼問題¶
系統盤滿時,佔用往往來自可再生緩存(Windows 更新下載、臨時文件、IDE 索引、瀏覽器緩存、會話快照等),以及裝錯盤的大目錄(Maven .m2、Gradle、Docker 數據等)。個人文檔通常不是主因。
插件按步驟對應工具:
1. 定位 wiztree_scan / disk_free 誰在佔空間
2. 判斷 local_apps_list 已裝軟件、路徑與體積
3. 清理 system_cleanup 白名單可再生垃圾,默認只統計
4. 搬遷 disk_migrate 目錄遷到其他卷,原地留目錄聯接(junction)
5. 兜底 local_apps_run 啓動本地程序(如卸載器),回收退出碼與輸出
全程設計爲不碰個人文檔;system_cleanup 只處理固定白名單路徑。
六個工具¶
| 工具 | 作用 |
|---|---|
wiztree_scan |
調用 WizTree 無界面導出 CSV 並解析,返回最大目錄、最大文件和常見緩存體積;依賴本機 WizTree |
disk_free |
各卷總容量與可用空間 |
system_cleanup |
白名單清理:更新緩存、WER、CBS 日誌、臨時文件、瀏覽器緩存、回收站、WinSxS 等;默認 dry-run,執行需 confirm: true |
disk_migrate |
將目錄複製到另一卷並在原路徑留 junction;默認 dry-run;校驗體積達標後才刪源 |
local_apps_list |
讀註冊表 Uninstall 項,列出軟件、版本、發佈者、安裝路徑與佔用 |
local_apps_run |
用絕對路徑啓動本地可執行文件,返回退出碼、stdout、stderr 與耗時;拒絕相對路徑 |
wiztree_scan 以外五個工具不依賴 WizTree。
前置:安裝 WizTree¶
wiztree_scan 需要本機 WizTree(免費,MFT 直讀)。安裝方式任選:
| 方式 | 命令 / 地址 |
|---|---|
| 官網下載(推薦) | https://www.diskanalyzer.com/download |
| winget | winget install AntibodySoftware.WizTree |
| 便攜版 | 官網下載頁 portable 壓縮包,解壓即用 |
默認安裝路徑爲 C:\Program Files\WizTree\WizTree64.exe。插件按順序查找:DSH_WIZTREE 環境變量 → PATH 中的 WizTree64.exe / WizTree.exe → 註冊表 InstallLocation → 各盤 Program Files\WizTree 等。找不到時 wiztree_scan 會報錯並提示設置 DSH_WIZTREE。
WizTree 以管理員權限運行時可走 MFT 快通道;插件以 DSH 進程權限調用——DSH 以管理員運行則掃描更快,否則退化爲普通遍歷。
安裝與啓用¶
插件是 Cordis bundle,包內 cordis.patch.yml 負責插入插件配置。在 DSH profile 目錄 執行:
cd <你的 DSH profile 目錄>
pnpm add link:/path/to/dsh-disk-cleaner
掛載方式二選一。
A. 寫入 profile 的 package.json
{
"dependencies": { "dsh-disk-cleaner": "link:/path/to/dsh-disk-cleaner" },
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-disk-cleaner"]
}
}
}
B. 寫入 profile 的 cordis.patch.yml
- insert:
- id: dsh-disk-cleaner
name: dsh-disk-cleaner
若 profile 配置了 patchReload: live,下一次模型調用即可看到工具;否則需重啓 DSH。
安裝前建議自行查看 GitHub 倉庫 源碼與 MIT 許可證。插件以當前 DSH 進程權限運行,清理與遷移會真實改動磁盤,admin-security 類能力應僅在可信環境啓用。
配置¶
| 環境變量 | 說明 |
|---|---|
DSH_WIZTREE |
WizTree64.exe 絕對路徑;可選 |
DSH_DISK_CLEANER_TMP |
掃描導出 CSV 的臨時目錄;默認 %TEMP%;系統盤快滿時自動改用空閒最大的卷;含非 ASCII 的路徑會被跳過 |
典型用法¶
在對話中由模型調用工具,參數形態如下(摘自 README):
# 1. 看看誰在佔空間
wiztree_scan({ target: "C:\\", depth: 2, top: 30 })
# 2. 先量一下能清多少(不會刪任何東西)
system_cleanup({ dryRun: true })
# 3. 確認清單後執行
system_cleanup({ dryRun: false, confirm: true, items: ["user-temp", "update-cache"] })
# 4. 大目錄搬到別的盤,原地留聯接
disk_migrate({ source: "C:\\Users\\me\\.m2", target: "D:\\moved\\m2", dryRun: true })
常見可搬遷目標包括 .m2、.gradle、.nuget、擴展目錄、JetBrains / VS Code 緩存、pnpm / npm-cache、Docker 數據等可重建目錄。不建議直接搬遷已安裝程序本體(會破壞卸載與註冊表),應卸載後重裝到目標盤。
若把系統 TEMP 遷到其他盤,目標路徑應使用純英文(例如 E:\Temp),避免 conda 等批處理腳本在含中文 TEMP 下報錯。disk_migrate 對含非 ASCII 的源/目標會在 warnings 中提示:遷移本身可用,但不要把這類路徑寫進 TEMP / PATH。
安全設計¶
- 破壞性工具默認 dry-run,須
confirm: true才執行刪除或刪源。 disk_migrate在校驗複製體積前不刪源;複製失敗保留源並報告原因。system_cleanup不遍歷個人文檔、聊天記錄或已安裝程序目錄。local_apps_run要求絕對路徑且文件存在。
倉庫 examples/ 提供 migrate-to-e.ps1(批量遷移與聯接)和 monthly-cleanup.ps1(計劃任務無人值守清理),可按需參考。
結尾¶
dsh-disk-cleaner 把 Windows 系統盤騰空間收成 DSH 可調用的六步工具鏈:WizTree 定位、註冊表看安裝、白名單清緩存、junction 搬遷,並默認 dry-run。適合在 DSH 裏做磁盤運維對話、又需要真實調用本機工具的場景。
- 社區目錄頁:https://www.skillhub.cn/plugins/lvyue1314/dsh-disk-cleaner
- 源碼與文檔:https://github.com/lvyue1314/dsh-disk-cleaner
DSH 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,安裝與權限請自行評估。