dsh-cache-cleaner:把 DSH 臨時緩存遷出系統盤並按白名單清理

前言

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>,無該標誌則拒絕。

日常維護路徑

  1. 在設置面板查看緩存與工作區概覽,按需調整 mode 或 cacheRoot。
  2. 用 cache_status 或 --status --json 看重定向狀態、體積與定時器。
  3. 清理前先用默認 dry-run 或 cache_clean 無 apply,再帶 confirm 執行。
  4. 刪歸檔會話前用 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 插件頁。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜