dsh-preflight:DSH 插件裝前體檢、裝後盤點與更新前預判

前言

DeepSeek Harness(DSH)採用「一切皆插件」的擴展方式:工具、界面、記憶、計費能力往往來自多個社區插件。裝得多了,問題常集中在三個時間點——裝之前不清楚能不能裝、會不會和已有插件撞 loader;裝之後說不清環境裏到底有哪些插件、各自帶什麼能力;點更新之前不知道新版本會不會引入 engine 不匹配、native 編譯或 peer 衝突。

dsh-preflight(維護者 mouyu6508-hue)把這三個時刻串成一條檢查鏈:裝前用 preflight_check、裝後用 preflight_inventory、更新前用 preflight_updates。它與出事後再做衝突修復的 dsh-fusion 互補,兩者可以同時安裝。插件在 SkillHub 目錄中歸類爲 admin-security。

這是什麼

一句話:dsh-preflight 是 DSH 插件的「裝前體檢 / 裝後盤點 / 更新前預判」三合一工具。

  • 倉庫:mouyu6508-hue/dsh-preflight
  • 目錄頁:SkillHub 插件頁(社區獨立目錄,與 DeepSeek / 幻方無官方從屬關係)
  • 許可證:MIT(見倉庫 package.json)
  • 運行環境:Node.js 18+;需要能加載 bundle 插件的 DSH

插件向 DSH 註冊三個工具,並提供獨立 CLI;面板通過 host 註冊的三條只讀 API 拉數據,不直接讀本地文件。

核心功能

裝之前:preflight_check(spec)

在真正安裝前,對指定來源(如 github:owner/repo)拉 manifest 並做與「更新前」同一套檢查,提前發現常見拒裝與衝突原因。

檢查項 說明
no-bundle 缺少 dsh.bundle,市場側常見拒裝原因
engine-mismatch engines.dsh 與當前 DSH 版本不匹配
peer-mismatch peer 依賴與已裝版本衝突(含 semver 判斷)
native-build 需要 node-gyp / 本地編譯工具鏈
install-script postinstall 會執行腳本
platform-mismatch manifest 聲明的平臺與當前系統不符
loader-collision patch 中的 loader 名與已裝插件衝突,可預判 install-shadow
prerelease / heavy-deps 預發佈版、依賴過多等

裝之後:preflight_inventory()

按能力分組列出當前 profile 下已裝插件,例如界面、工具、記憶、語音、計費、會話、市場、通知等。每行包含版本、是否有 bundle、是否帶前端、peer 依賴數量、patch 行數、是否被停用。

更新前:preflight_updates()

對每個已裝插件查詢 npm 最新版,取新版本 manifest 再跑一遍裝前檢查,並與當前版本對比,只報告新引入的問題,便於在點擊更新前評估風險。

會話內面板

安裝並啓用 bundle 後,會話標題欄右側會出現「體檢」入口,打開後爲裝機面板:

  • 裝機清單:按能力分組的卡片列表,帶搜索;展示版本、是否帶 UI、是否停用
  • 更新風險:現查各插件更新,按風險色標排序(紅=高風險 / 黃=需注意 / 綠=低風險)

數據路由(只讀):

  • /api/dsh-preflight/inventory
  • /api/dsh-preflight/updates
  • /api/dsh-preflight/check

安裝與啓用

已抓取資料中的 README 與 package.json 未給出統一的 dsh plugin add … 安裝命令行文案。建議從 SkillHub 目錄頁 或 GitHub 倉庫說明按當前 DSH 版本的插件安裝方式操作;安裝前請自行閱讀源碼與 MIT 許可證,並確認插件將以當前 DSH 進程權限運行。

peer 依賴(package.json):@deepseek-ai/cordis(>=4.0.0)、@deepseek-ai/dsh-tools(>=0.1.0),均爲 optional meta;bundle 通過 cordis.patch.yml 注入客戶端與 API。

典型用法

DSH 內工具調用

README 中的對應關係如下:

裝之前   preflight_check      能不能裝?會和誰撞?
裝之後   preflight_inventory  按能力分類的裝機清單
更新前   preflight_updates    這次更新會引入什麼問題?

裝前檢查示例(與 README 一致):

dsh-preflight check github:mouyu6508-hue/dsh-fusion

獨立 CLI(不啓動 DSH 也可跑)

DSH 起不來時,可直接用 CLI 做盤點與檢查;加 --json 便於腳本消費。

dsh-preflight inventory --profile desktop
dsh-preflight check github:owner/repo
dsh-preflight updates --profile desktop
dsh-preflight profiles

開發自測(倉庫 README):

node --test
node bin/preflight.js inventory --profile desktop

核心實現分佈在 lib/core.js(semver、分類、manifest 與 loader 撞名、風險定級)、lib/profile.js(只讀 profile 插件清單與 loader 行)、lib/sources.js(npm / GitHub / 本地目錄 → manifest)、lib/report.js(三份報告拼裝),入口爲 lib/index.js,CLI 爲 bin/preflight.js。

適用場景與注意

適合誰

  • 經常從 GitHub / npm 試裝社區插件、需要裝前看清 bundle / engine / peer / loader 衝突的 DSH 用戶
  • 插件較多、需要按能力瀏覽裝機清單、或在批量更新前做風險分級的維護者
  • 希望 DSH 未啓動時仍能用 CLI 做 inventory / check / updates 的運維或腳本場景

注意

  • 檢查結果依賴 manifest、npm 與本地 profile 只讀信息;網絡或 registry 異常時,更新預判可能不完整
  • dsh-preflight 做的是事前評估,不能替代已發生衝突後的修復流程;可與 dsh-fusion 搭配使用
  • 安裝任意 DSH 插件前,應審查源碼與許可證;插件能力在 DSH 進程內執行,權限與宿主一致

結尾

dsh-preflight 把「能不能裝、裝了什麼、更新會不會多出問題」收成三個可重複調用的步驟,並輔以會話內體檢面板與獨立 CLI。若你在 DSH 上持續疊加社區插件,在裝與更新前先跑一遍檢查鏈會更穩妥。

  • 目錄頁:https://www.skillhub.cn/plugins/mouyu6508-hue/dsh-preflight
  • GitHub:https://github.com/mouyu6508-hue/dsh-preflight
羽毛球分组比赛记分
小程序二维码

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

小夜