dsh-space-optimizer:側欄空間賬本與可選回收

前言

DeepSeek Harness(DSH)用本地磁盤保存會話日誌、投影緩存、工具輸出落盤和附件。任務一多,很難回答兩個問題:每個任務各佔多少字節,以及哪些文件刪了不會打壞用量統計和上下文重算。手動翻 ~/.dsh 和系統臨時目錄既費事,也容易誤刪仍在被引用的 spill 路徑。

下面介紹的 dsh-space-optimizer(維護者 wojiao42)在 Web 側欄底部提供 「優化空間」 入口,打開後是一份只讀掃描的空間賬本;確認勾選後纔回收,且只處理無主垃圾與任務級可優化附屬產物,絕不裁剪會話日誌。

這是什麼

dsh-space-optimizer 是 DSH 組合包插件:Host 半側提供本地賬本與回收 API,客戶端注入 @deepseek-ai/dsh-client-ui-sidebar,在 sidebar.footer.action 與 token 費用徽標同一排掛載按鈕。

一句話定位:Per-task disk-space ledger for DeepSeek Harness——看清每個任務佔用的磁盤、其中多少可優化、以及不屬於任何任務的無主垃圾;覈對後再逐項勾選確認。

當前版本 1.0.5(見倉庫 package.json),許可證 MIT。社區目錄頁:skillhub.cn/plugins/wojiao42/dsh-space-optimizer;源碼:github.com/wojiao42/dsh-space-optimizer。

核心功能

空間賬本

點 「優化空間」 後,面板頂部彙總類似:

佔用 5.0 MB · 可優化 3.0 MB · 無主垃圾 8.3 MB · 已釋放 11.7 MB

任務區按會話一行列出(當前任務置頂並標註)。主要列含義如下:

列 含義
佔用 該任務在磁盤上獨佔的字節(日誌 + 投影緩存 + 可優化項)
日誌 ~/.dsh/sessions/<項目>/<會話>/session.v4.jsonl.zstd 當前 generation
臨時暫存 落盤的超大工具輸出(%TEMP%\dsh-spill-<id>\session-<hash>\)
可優化 臨時暫存 + 被取代的舊 generation
引用附件 該任務引用的附件;共享的會標出,合計裏只算一次

標籤包括 當前、運行中、子任務(origin: subagent)。運行中與當前任務不可勾選——臨時文件可能仍在被讀。

無主垃圾區列出不屬於任何任務的項,例如:插件市場目錄緩存、無主臨時文件、失效的投影緩存、無主附件對象。README 中對每類判定條件有完整說明。

能優化什麼、不能動什麼

會話日誌是規範狀態:dsh-token-meter、dsh-client-ui-chat、dsh-session-stats 等投影都依賴完整事件流;賬本只統計日誌體積,不提供任何瘦身手段。

能安全優化的只有三類附屬產物:

  1. 落盤的超大工具輸出(臨時暫存)
  2. 被取代的舊格式 / 舊 generation 日誌
  3. 無人引用的附件(在任務刪除或引用斷開後才成爲無主垃圾)

清理任務級「臨時暫存」不會毀掉對話正文,但日誌裏存的是 spill 路徑,刪除後該段超大工具輸出的全文只剩摘要——因此任務級項目默認不勾選,需自行確認。

默認勾選與安全設計

  • 掃描純只讀:不點 「確認優化」 不會改動任何字節。
  • 無主垃圾默認勾選;任務級默認可不勾。
  • 路徑不出 Host:渲染進程只回傳 targetId,回收時 Host 重新掃描,只刪仍存在的目標;不接受「清空一切」,必須顯式列出 targets。
  • 回收路由要求自定義頭 x-space-optimizer,並拒絕跨站簡單 POST,降低被網頁誤觸發的風險。
  • 讀不通的會話日誌時,附件「無主」類整體放棄回收並在界面標註原因。

插件以當前 DSH Host 進程權限訪問本地文件系統;安裝前建議閱讀源碼與 MIT 許可證,確認符合你的環境策略。

安裝與啓用

官方 README 給出的 Web profile 安裝方式如下(將 OWNER 換爲倉庫所有者 wojiao42):

dsh plugin --profile web add github:wojiao42/dsh-space-optimizer

安裝後刷新頁面,側欄底部應出現 「優化空間」。卸載:

dsh plugin --profile web remove dsh-space-optimizer

DSH 生態採用「一切皆插件」思路;skillhub.cn 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文安裝命令以 GitHub README 爲準。

典型用法

  1. 執行上述 dsh plugin --profile web add …,刷新 Web 客戶端。
  2. 點擊側欄底部 「優化空間」,等待約 1~2 秒完成掃描(README 實測 9 個任務約 170 ms)。
  3. 逐行覈對佔用與可優化項;無主垃圾通常已勾選,任務級 spill 等需自行勾選。
  4. 查看底部 「已選 N 項 · 可釋放 X」,確認無誤後點 「確認優化」;完成後顯示 「已釋放 X(N 個文件)」。

不放心時可只掃描不確認——界面不會寫入磁盤。

若需要在終端做只讀覈對(腳本 README 標明永遠不會刪文件):

node tools/space-report.mjs
# 或 JSON 輸出
node tools/space-report.mjs --json

(需在插件源碼目錄下執行;通過 dsh plugin add github:… 安裝時,路徑位於 profile 的 node_modules 內。)

Host 可調配置

Host 半側 apply(ctx, config) 支持以下字段(均來自 README):

字段 默認 說明
home $DSH_HOME Harness 家目錄
tempDir 系統臨時目錄 掃描 dsh-* 暫存的位置
minIdleHours 24 無會話歸屬的臨時文件閒置多久纔算過期
marketCacheMinAgeHours 1 市場緩存的最小年齡(緩存本身有 6 小時 TTL)

適用場景與注意

適合誰

  • 長期跑多任務、子任務,想先看清磁盤佔用再決定是否清理的用戶。
  • 需要定期回收 %TEMP% 下孤兒 spill、舊 generation、市場緩存等無主垃圾,又不願手刪 ~/.dsh 的用戶。

使用上應知曉

  • 多數任務「可優化」很小:大頭是會話日誌(README 稱約 0.8 MB/任務量級),無法安全裁剪;插件首要價值是透明賬本,其次纔是釋放空間。
  • 回收不走回收站,不可恢復;運行中/當前任務相關項被禁用勾選。
  • 附件內容尋址,多任務共享時各行會標註,總佔用不會簡單相加各任務「佔用」列。
  • 插件不發外網請求;掃描與回收均爲本地文件操作。
  • 改 Host 代碼(index.js / lib/)需重啓 Harness;客戶端 client.js 可通過側欄插件開關摘掛熱更新(見 README「改完代碼怎麼生效」)。

結尾

dsh-space-optimizer 把「每個任務佔多少、哪些是無主垃圾、哪些要你自己點頭」放進側欄一份賬本,並在設計上堅持不裁剪會話日誌、回收前二次確認、顯式 targets。若你正在 DSH Web 側長期積累會話與工具輸出,可以先裝插件只做掃描,再按需勾選回收。

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

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

小夜