dsh-archive-cleaner:清理 DSH 已歸檔會話並釋放磁盤空間

前言

DeepSeek Harness(DSH)把每個會話的完整日誌寫在 profile 下的 sessions 目錄裏。側欄裏的「歸檔」只是把會話 id 記進 workspace.json 的 global.archivedSessionIds,界面上不再顯示——session.v4.jsonl.zstd 等文件並不會被刪除,官方右鍵菜單也沒有刪除入口。用久了,大量不會再打開的已歸檔會話會一直佔用磁盤。社區插件 dsh-archive-cleaner(維護者 dongfangxy)在 設置 → 通用 增加清理入口,列出全部已歸檔會話,支持移入隔離區或直接刪除,並從註冊表裏剔除對應 id。

這是什麼

dsh-archive-cleaner 是 DSH 的 Cordis bundle 插件,分類爲 admin-security。它解決的是「歸檔 ≠ 刪除」:在宿主權限下讀取 profile 註冊表,只處理已出現在 archivedSessionIds 裏的會話,由服務端解析路徑並執行隔離或徹底刪除,同時備份並改寫 workspace.json 與 session_projcache.json。當前版本 0.2.1,許可證 MIT。

歸檔在磁盤上留下了什麼

DSH 會話日誌路徑形如:

$DSH_HOME/sessions/<工作區>/<session-id>/session.v4.jsonl.zstd

歸檔僅隱藏側欄條目;session_projcache.json 裏的統計緩存也仍保留。README 中舉過一個日常使用的 profile 實測:38 個已歸檔會話合計約 133.9 MB,單個會話可達 10.2 MB。這類體積不會隨「歸檔」自動收回。

核心功能

下面介紹插件在界面與後端上的行爲,均來自倉庫說明。

設置入口與列表

  1. 打開 設置 → 通用,會多出一行「清理已歸檔工作區」。
  2. 點「開始清理」,彈窗列出全部已歸檔會話:工作區路徑、創建時間、會話 id、佔用大小、勾選框。
  3. 若磁盤上已無會話目錄,會標註「磁盤上已不存在,選中只清登記」——選中後只刪註冊表項,不碰文件。

確認與兩種模式

勾選會話後點「下一步」,進入確認頁:條數、合計大小、隔離目錄,以及「直接刪除文件(不保留隔離區)」選項。

模式 行爲 可否恢復
隔離(默認) 將會話目錄 rename() 到 $DSH_HOME/.session-trash/<時間戳>/,並寫入 restore-map.json 記錄原路徑與工作區 可將目錄按 restore-map.json 搬回原路徑後重啓 DSH
直接刪除 需在確認頁顯式勾選;對目錄 rm -rf,無隔離區與 restore-map 不可恢復

兩種模式都會從 workspace.json 的三處(archivedSessionIds、pinnedSessionIds、各工作區 sessionIds)以及 session_projcache.json 中剔除 id;改寫前會生成 *.bak-<時間戳> 備份。

安全設計要點

  • 只認 profile 中標記爲已歸檔的 id,否則跳過並說明原因。
  • 前端只提交 id 與 mode(僅接受 quarantine / purge),不傳路徑;解析後的目錄必須在 $DSH_HOME/sessions/ 內,否則拒絕。
  • 未知 mode 在觸碰任何文件前返回錯誤。

安裝與啓用

最省事的方式(依賴會寫入 profile,後續 pnpm install 不會清掉插件):

dsh plugin add github:dongfangxy/dsh-archive-cleaner

應用內等價操作:設置 → 插件 → Add plugin,填寫同一串 github:dongfangxy/dsh-archive-cleaner。

不要把倉庫目錄手工拷進 node_modules,否則下次 pnpm install 可能被當作多餘包刪除。若要本地改源碼,在 <profile>/package.json 中聲明 link: 依賴後執行 pnpm install --dir <profile>,再重啓 DSH。

典型用法

  1. 安裝插件並重啓 DSH。
  2. 進入 設置 → 通用,打開「清理已歸檔工作區」。
  3. 在列表中勾選要處理的已歸檔會話,點「下一步」。
  4. 在確認頁覈對條數與合計大小;默認走隔離到 .session-trash/<時間戳>/;若確定不需要恢復,勾選「直接刪除文件」後使用「徹底刪除」。
  5. 確認後完成清理;重啓 DSH 後側欄纔會不再列出這些會話(運行中側欄狀態在宿主內存裏)。

隔離模式下恢復:根據 $DSH_HOME/.session-trash/<時間戳>/restore-map.json 將會話目錄移回原路徑,重啓 DSH。

適用場景與注意

適合誰:長期用 DSH、側欄裏堆了大量已歸檔會話、需要可控釋放磁盤或清理「只剩登記、文件已刪」的殘留 id 的用戶。

已知限制(README 原文):

  • 入口在 設置 → 通用,不在側欄賬號菜單(該菜單無第三方插槽)。
  • 插件直接讀 profile 的 workspace.json;若未來 DSH 改變該文件結構,列表可能爲空而不會瞎猜。
  • Windows / macOS / Linux 通用;單元測試不依賴平臺。

權限與信任:插件以當前 DSH 進程權限讀寫 $DSH_HOME 下的會話與註冊表;直接刪除模式不可恢復。安裝前建議在 GitHub 倉庫 查看源碼與 MIT 許可證,確認符合你的安全策略。DSH 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-archive-cleaner 把「已歸檔但仍在磁盤上的會話」變成可列舉、可隔離、可選徹底刪除的操作,並在改註冊表前備份,適合作爲 profile 磁盤與註冊表 hygiene 的補充工具。

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

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

小夜