前言¶
在 DeepSeek Harness(DSH)里長時間跑多個工作區與對話後,磁盤佔用往往來自三塊:項目裏的 node_modules 與構建產物、會話記錄與投影緩存、以及全局附件庫。單靠系統自帶的「關於本機」或手動 du,很難把「哪個工作區、哪條 Session、哪類文件」拆開看;多倉庫並行時,Node 版本與 npm 鎖文件是否在項目之間漂移,也缺少一個只讀、不改項目的彙總視角。
下面介紹社區插件 dsh-plugin-storage-inspector(維護者 Siom126,分類 admin-security)。它在 DSH 設置頁提供獨立分區,側欄帶磁盤佔用徽標,把本地存儲全景與跨項目依賴治理(只讀)放在同一面板的兩 Tab 裏;不向模型暴露工具,也不發起外網請求,宿主側只註冊本地路由 /api/storage-inspector/*。
這是什麼¶
一句話定位:DeepSeek Harness 的本地存儲分析器,以及只讀的跨項目依賴治理插件。
- 倉庫:
github:Siom126/dsh-plugin-storage-inspector - 當前
package.json版本:1.1.1 - 許可證:MIT
- 運行要求:Node >= 20.0.0
與「全盤清理腳本」的區別在於:統計與依賴分析默認只讀;唯一會寫磁盤的能力是用戶勾選後的白名單內目錄清理,且每條路徑刪除前經 isPathSafeToClean() 校驗。
核心功能¶
存儲 Tab:工作區、會話與文件分類¶
- 工作區與對話統計:按工作區彙總項目磁盤體積與會話記錄體積;列出該工作區下每條 Session(活躍/已歸檔),分別統計記錄文件(
*.jsonl.zstd)與投影緩存session_projcache的體積及時間。 - 物理文件分類:將文件歸入 Code、Dependencies、Build、VCS & Metadata、Docs & Configs、Media & Assets 等類別,以色條展示佔比,並列出大目錄與大文件。
- 全局概覽:本地總空間、工作區文件總計、會話記錄總計、
~/.dsh/attachments全局附件庫,以及各類別分佈。 - 可選清理:通過 API 先拉取分組目標,用戶顯式勾選後提交刪除;僅針對構建目錄、依賴目錄、歸檔會話與已知緩存等,且受路徑白名單約束(見下文「安全邊界」)。
依賴治理 Tab:四層只讀事實鏈¶
該 Tab 不修改任何項目文件,不寫入私有 CAS,不創建符號鏈接。
- Layer 1 項目發現:在受管目錄內遍歷,深度 ≤ 4,黑名單跳過,並用
realpath去重。 - Layer 2 環境指紋:對每個含
package.json的項目,按優先級讀取 Node 主版本:.nvmrc>.node-version>engines.node,置信度爲exact/multi/missing。 - Layer 3 依賴事實:解析 npm 的
package-lock.json(v2/v3)精確版本;pnpm/yarn 等未受管鎖文件保守跳過,不臆測版本。 - Layer 4 漂移矩陣:對多項目共用的三方包輸出
identical、drift-minor、drift-major、bucket-conflict,並分級爲blocked/warn/candidate/info,附帶證據鏈與收斂建議。
後端對治理請求使用 single-flight 與 60s TTL 緩存,減輕頻繁刷新帶來的 IO 壓力。
安裝與啓用¶
官方安裝命令(來自倉庫 README):
dsh plugin add github:Siom126/dsh-plugin-storage-inspector
倉庫聲明瞭 dsh.bundle(cordis.patch.yml 掛載 storage-inspector),上述一條命令即可。安裝後重啓 DSH 或刷新頁面;面板出現在 設置 → 存儲空間分析,側欄圖標可全屏打開同一界面。
本地聯調時,可在 profile 的 package.json 中用 link: 指到工作副本,並在 dsh.profile.bundles 中註冊 bundle 名,將 node_modules/dsh-plugin-storage-inspector 鏈到同一目錄後重啓 DSH(詳見 README「本地開發」小節)。
典型用法¶
查看存儲與刷新掃描¶
GET /api/storage-inspector/data:聚合數據。GET|POST /api/storage-inspector/refresh:觸發或配合刷新。GET /api/storage-inspector/workspace、GET /api/storage-inspector/disk:工作區與磁盤相關視圖。
界面側以設置頁雙 Tab 與側欄入口爲主;具體交互隨 DSH 主題(深/淺)切換。
只讀依賴總覽¶
GET /api/storage-inspector/deps/overview:跨項目概覽。GET /api/storage-inspector/deps/project:單項目細節。POST /api/storage-inspector/deps/refresh:刷新治理緩存。
顯式清理(會寫磁盤)¶
GET /api/storage-inspector/cleanup/targets:獲取可分組的清理目標。- 在 UI 中勾選目標。
POST /api/storage-inspector/cleanup/execute:執行刪除(內部爲對白名單內路徑的fs.rm -rf)。
清理前插件會拒絕位於主目錄之外的路徑,以及 /、~、~/.dsh、~/.dsh/profiles 等關鍵路徑;未知目錄僅當葉子名爲 dist、build、node_modules、venv 等已知構建/依賴名時才允許;已歸檔 DSH 會話僅允許落在 ~/.dsh/sessions 與 ~/.dsh/storages/session_projcache/sessions 之下。
適用場景與注意¶
適合誰
- 長期在單機 DSH 上維護多個工作區,需要按 Session 與文件類別定位「誰在佔盤」。
- 本機多倉 Node 項目並存,希望用只讀方式發現跨項目的 Node 分桶衝突與 npm 鎖版本漂移,再人工決定是否統一版本或升級策略。
使用注意
- 插件以當前 DSH 進程的用戶權限運行,能遍歷與
stat其可訪問的主目錄下項目;安裝前宜閱讀源碼與 MIT 許可證,確認清理白名單邏輯符合你的目錄佈局。 - 無出站網絡、無模型工具:適合對「管理類插件」有邊界要求的場景;依賴治理目前以 npm lockfile v2/v3 爲主,非 npm 生態需接受「保守跳過」。
- 倉庫測試:
npm test(node --test tests/**/*.test.mjs),README 記載 28 passing;可自行在插件目錄驗證後再用於生產 profile。
結尾¶
dsh-plugin-storage-inspector 把 DSH 本地的「盤從哪來」和「多項目依賴是否一致」收到同一設置分區:前者支持可選的白名單清理,後者全程只讀。社區目錄頁:skillhub.cn 插件條目;源碼與文檔:GitHub 倉庫。