dsh-plugin-storage-inspector:DSH 本地存儲分析與跨項目依賴治理

前言

在 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:工作區、會話與文件分類

  1. 工作區與對話統計:按工作區彙總項目磁盤體積與會話記錄體積;列出該工作區下每條 Session(活躍/已歸檔),分別統計記錄文件(*.jsonl.zstd)與投影緩存 session_projcache 的體積及時間。
  2. 物理文件分類:將文件歸入 Code、Dependencies、Build、VCS & Metadata、Docs & Configs、Media & Assets 等類別,以色條展示佔比,並列出大目錄與大文件。
  3. 全局概覽:本地總空間、工作區文件總計、會話記錄總計、~/.dsh/attachments 全局附件庫,以及各類別分佈。
  4. 可選清理:通過 API 先拉取分組目標,用戶顯式勾選後提交刪除;僅針對構建目錄、依賴目錄、歸檔會話與已知緩存等,且受路徑白名單約束(見下文「安全邊界」)。

依賴治理 Tab:四層只讀事實鏈

該 Tab 不修改任何項目文件,不寫入私有 CAS,不創建符號鏈接。

  1. Layer 1 項目發現:在受管目錄內遍歷,深度 ≤ 4,黑名單跳過,並用 realpath 去重。
  2. Layer 2 環境指紋:對每個含 package.json 的項目,按優先級讀取 Node 主版本:.nvmrc > .node-version > engines.node,置信度爲 exact / multi / missing。
  3. Layer 3 依賴事實:解析 npm 的 package-lock.json(v2/v3)精確版本;pnpm/yarn 等未受管鎖文件保守跳過,不臆測版本。
  4. 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:刷新治理緩存。

顯式清理(會寫磁盤)

  1. GET /api/storage-inspector/cleanup/targets:獲取可分組的清理目標。
  2. 在 UI 中勾選目標。
  3. 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 鎖版本漂移,再人工決定是否統一版本或升級策略。

使用注意

  1. 插件以當前 DSH 進程的用戶權限運行,能遍歷與 stat 其可訪問的主目錄下項目;安裝前宜閱讀源碼與 MIT 許可證,確認清理白名單邏輯符合你的目錄佈局。
  2. 無出站網絡、無模型工具:適合對「管理類插件」有邊界要求的場景;依賴治理目前以 npm lockfile v2/v3 爲主,非 npm 生態需接受「保守跳過」。
  3. 倉庫測試:npm test(node --test tests/**/*.test.mjs),README 記載 28 passing;可自行在插件目錄驗證後再用於生產 profile。

結尾

dsh-plugin-storage-inspector 把 DSH 本地的「盤從哪來」和「多項目依賴是否一致」收到同一設置分區:前者支持可選的白名單清理,後者全程只讀。社區目錄頁:skillhub.cn 插件條目;源碼與文檔:GitHub 倉庫。

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

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

小夜