前言¶
DeepSeek Harness(DSH)在會話與工作區變更過程中會在系統臨時目錄下產生 dsh-workspace-changes-* 一類緩存。默認落在 %TEMP% 或系統盤上時,長時間使用容易擠佔系統盤空間;手動刪臨時文件又容易誤傷 captures、會話日誌或憑據。社區插件 dsh-cache-cleaner(維護者 strikesuitzero,分類 admin-security)把宿主進程的 TEMP/TMP 重定向到可配置根目錄,僅按嚴格白名單清理臨時對象,並支持歸檔會話與工作區 temp/archive 子目錄的管理。插件雙語(中/英),MIT 許可。
下面介紹它的定位、能力與安裝配置方式。事實以 GitHub 倉庫 README 爲準;生態目錄見 SkillHub 插件頁。DSH 社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
這是什麼¶
dsh-cache-cleaner 是 DSH 的緩存與磁盤管理插件:將 DeepSeek Harness 臨時緩存遷到可配置目錄,用 allowlist 做清理,並管理歸檔會話以及工作區臨時/歸檔文件夾。可通過設置面板、CLI 或 7 個 agent 工具操作。當前 package 版本爲 0.5.0(以倉庫 package.json 爲準)。
核心功能¶
緩存重定向¶
插件將宿主進程的 TEMP/TMP(因而 os.tmpdir() 及子進程)指向 <cacheRoot>/temp,新會話快照不再默認落在系統盤。
默認 cacheRoot:Windows 爲 %LOCALAPPDATA%\dsh-cache-cleaner;其他系統爲 $XDG_CACHE_HOME/dsh-cache-cleaner 或 ~/.cache/dsh-cache-cleaner。可通過配置改到有剩餘空間的盤符。
白名單清理與雙門檻¶
僅刪除匹配 dsh-workspace-changes-*/objects/<2 hex>/tmp_obj_<6 chars> 的文件。captures/、sha1 對象、鎖文件、會話、配置與憑據不會被觸碰。
清理有兩道門:按 mode 預設的天數(默認 normal 爲 14 天)與配額(超 50 GiB 時按最舊優先刪至約 80%)。遺留的 %TEMP%/dsh-workspace-changes-* 目錄可單獨處理,自動清理時最短保留 24 小時(autoCleanLegacy 默認關閉)。
歸檔會話與工作區根¶
可列出歸檔會話、預覽刪除計劃,再刪除會話及(可選)附件與會話投影緩存;刪除走宿主註冊表 API,進行中的會話會被拒絕。
可彙報並在顯式啓用後清理所配置的 workspace temp/archive 根目錄下的直接子項;kind: archive 的刪除需打開 manageArchives。
設置面板與 Agent 工具¶
設置裏增加 緩存清理 / Cache cleaner 區塊(概覽、緩存、工作區、歸檔會話、清理選項);面板先渲染,後臺掃描完成後填充數據。界面語言隨 DSH UI;各 agent 工具描述含中英文。
7 個工具:cache_status、cache_clean、cache_ownership、conversation_list、conversation_delete、workspace_status、workspace_clean。
安全模型(使用前宜知曉)¶
- 僅白名單匹配項可刪;不跟隨或刪除符號鏈接與 junction。
- CLI 與工具默認 dry-run;真正執行需
--apply/apply:true,且通常需confirm:true。歸檔根另需manageArchives:true與includeArchives:true。 cacheRoot須有插件寫入的.dsh-cache-cleaner.json標記(--init或插件初始化),誤配根目錄不會被掃。- 工作區根必須嚴格落在
workspaceBases內;卷根、用戶主目錄、DSH_HOME與緩存根會被拒絕。 - 單次刪除失敗記爲
skipped並繼續其餘批次。
臨時目錄與會話的歸屬在部分場景下按創建時間窗口 推斷(confidence: "time-window"),並非宿主持久化存儲的所有權。
安裝與啓用¶
倉庫發佈後,可從 GitHub 安裝;bundle patch 聲明插件行,宿主在下次重啓或插件禁用/啓用重載後加載。
# from GitHub (once the repository is published)
dsh plugin add github:strikesuitzero/dsh-cache-cleaner
# or from a local checkout
dsh plugin add file:D:/path/to/dsh-cache-cleaner
本地路徑示例以 README 爲準,按實際 checkout 位置替換 file: 路徑。
配置¶
鍵均可選。可在 profile 的 cordis.patch.yml 裏編輯插件條目的 config;設置 → Plugins → cache cleaner 也會持久化部分清理選項。
| Key | 默認 | 含義 |
|---|---|---|
cacheRoot |
見上文 | 重定向臨時目錄與報告的根路徑 |
redirectTemp |
true |
是否重定向宿主 TEMP/TMP |
autoClean |
true |
是否定時清理(啓動延遲 + 間隔 + 空閒 debounce) |
autoCleanLegacy |
false |
自動清理是否包含遺留 %TEMP%/dsh-workspace-changes-* |
startupDelaySeconds |
60 |
首次自動清理前延遲(秒) |
intervalHours |
6 |
計劃掃描間隔(UI 有 1/3/7/15/30 天等預設) |
idleQuietMinutes |
10 |
Agent 空閒這麼久後額外跑一次 |
mode |
normal |
safe(30 天 / 50 GiB)、normal(14 天 / 50 GiB)、aggressive(1 天 / 30 GiB) |
retainDays |
null |
覆蓋 mode 的年齡門檻 |
quotaBytes |
null |
覆蓋 mode 的配額門檻 |
workspaceBases |
[] |
工作區根必須嚴格位於其內的目錄列表 |
workspaceRoots |
[] |
[{path, kind: temp\|archive, retainDays, auto}],只看直接子項 |
manageArchives |
false |
是否允許刪除 kind: archive 根下的內容 |
profile 覆蓋示例:
- id: dsh-cache-cleaner
config:
cacheRoot: 'D:\\Cache\\dsh-cache-cleaner'
workspaceBases: ['D:/work/project']
workspaceRoots:
- { path: 'D:/work/project/_tmp', kind: temp, retainDays: 7, auto: true }
- { path: 'D:/work/project/_archive', kind: archive, retainDays: 30, auto: false }
典型用法¶
CLI¶
先初始化根標記,再 dry-run,確認後 --apply:
node bin/dsh-cache-clean.mjs --init # write the root marker
node bin/dsh-cache-clean.mjs # dry-run
node bin/dsh-cache-clean.mjs --apply # clean
node bin/dsh-cache-clean.mjs --status --json
node bin/dsh-cache-clean.mjs --ownership
node bin/dsh-cache-clean.mjs --conversations
node bin/dsh-cache-clean.mjs --delete-archived all --apply --confirm
node bin/dsh-cache-clean.mjs --workspace-status
node bin/dsh-cache-clean.mjs --workspace-clean --apply --confirm
宿主未運行時若需改離線註冊表,須加 --offline-registry;CLI 會在改動 workspace.json 前寫入帶時間戳的 .bak-<ms>,無該標誌則拒絕。
日常維護路徑¶
- 在設置面板查看緩存與工作區概覽,按需調整
mode或cacheRoot。 - 用
cache_status或--status --json看重定向狀態、體積與定時器。 - 清理前先用默認 dry-run 或
cache_clean無apply,再帶confirm執行。 - 刪歸檔會話前用
conversation_list/--conversations覈對,再--delete-archived。
倉庫提供 smoke 測試(如 node test/smoke-v4.mjs,116 assertions),使用假宿主服務與 fixture,不觸碰真實會話與緩存。
適用場景與注意¶
適合需要把 DSH 臨時緩存遷到大容量盤、又想用白名單與 dry-run 控制清理風險的開發者或運維向用戶。歸檔與會話清理適合定期整理歷史會話、釋放附件與投影緩存佔用的場景。
插件以當前 DSH 宿主進程權限運行,安裝前應自行審閱 源碼與 LICENSE。設置面板經 /api/cache-cleaner.api 與宿主通信,未授權 HTTP 探測會得到 401;應在已登錄瀏覽器的 DSH 設置中驗證。若系統“刪除”實際移入回收站,報告可能提示未觀察到預期釋放在用空間。
結尾¶
dsh-cache-cleaner 把臨時緩存遷出系統盤、用 allowlist 與雙門檻做可控清理,並補齊歸檔會話與工作區 temp/archive 的管理入口。需要詳情與 issue 時打開 GitHub;在生態目錄檢索可用 SkillHub 插件頁。