前言¶
在 DeepSeek Harness(DSH)裏,dsh plugin add 負責把插件登記進 profile,但裝完並不會自動驗證插件能否正常加載。常見問題要等到下次後端重啓才暴露:缺構建產物導致 loader fibers failed、依賴聲明不當引發 ERR_MODULE_NOT_FOUND、核心包被裝成副本造成模塊雙實例,乃至供應鏈投毒。下面介紹社區插件 dsh-plugin-healthcheck,它把靜態檢查、配置組合校驗、隔離試跑和木馬掃描串成一條鏈路,讓你在重啓後端之前就能發現問題,並提供一鍵修復、自動回滾或預製提示詞等處置手段。
這是什麼¶
dsh-plugin-healthcheck 是 DSH 的插件健康檢查工具,維護者爲 chenw2759-wq,在 SkillHub 社區目錄中歸類爲 admin-security,當前 GitHub 星標 14、fork 1,許可證爲 MIT(版本 0.1.0)。
它在 Web GUI 設置面板中提供「插件檢測」入口,核心思路是:純靜態檢查 + 配置組合 + 隔離試跑 + 木馬掃描,發現異常後可自動修復、自動回滾,或把複雜問題打包成預製提示詞交給 agent 處理。
它解決什麼問題¶
DSH 的插件安裝流程只完成登記,不做啓動驗證。README 中列舉了若干真實事故類型及對應攔截方式:
| 事故 | 根因 | 攔截方式 |
|---|---|---|
啓動報 ERR_MODULE_NOT_FOUND |
files 白名單漏掉代碼分割產物 |
C1 files 完整性 |
後端啓動報缺 zod / schemastery |
插件登記成 link: 依賴,繞過 profile 的 node_modules |
C2 依賴聲明審計 |
agent 報 Cannot read properties of undefined (reading 'prepare') |
file: 依賴裝出 harness 核心包副本,模塊雙實例 |
C3 高危副本檢測 |
dsh-skin CLI not found(Windows) |
命令不在註冊表 PATH | C5 Windows 命令 |
改了 link:→file: 不生效 |
pnpm 不重解析 lockfile | C6 lockfile 一致性 |
| 被禁用的插件長期殘留在依賴裏 | 禁用只壓制症狀 | C7 禁用插件識別 |
| 供應鏈投毒 / 惡意代碼 | 發佈包內注入惡意邏輯 | C8 木馬掃描 |
啓動報 loader fibers failed |
插件未構建或 cordis 用法錯誤 | C9 cordis 用法檢測 + L2 隔離試跑 |
README 還以 dsh-ssh-workspace 爲例說明:插件 lib/ 未構建、異步 ctx.plugin() 後同步取服務,會在重啓時觸發 cannot get property "fs" without inject。L2 隔離試跑能在子進程完整 boot 中提前復現同類錯誤,而不必等用戶重啓後端。
核心功能¶
L0 靜態檢查(不加載、不啓動)¶
在完全不加載插件代碼的前提下,逐項審計:
- C1 files 完整性:
files白名單與實際 lib 產物對比,缺 chunk 即報錯。 - C2 依賴聲明:檢查
link:是否帶運行時依賴、file:是否帶 harness peer。 - C3 高危副本:檢測 cordis、cosmokit、dsh-tools、schemastery、dsh-credentials、dsh-home-paths 六個核心包是否被裝成真實目錄副本。
- C4 依賴可解析:從插件錨點逐個試解析依賴。
- C5 Windows 命令:
execFile/spawn引用的命令在註冊表 PATH 中是否有對應.exe。 - C6 lockfile 一致性:specifier 與 lockfile
version:前綴是否一致。 - C7 禁用插件:識別被 disabled 但仍登記的插件。
- C9 cordis 用法:靜態檢測三類錯誤——
ctx.plugin()後同步取服務、直接new需 config 的 Service 卻缺 config、訪問的服務不在inject聲明裏。
L1 配置組合¶
複用基座 composeEntries 組合 bundle、profile 與 home 補丁層,與真實啓動使用同一算法,檢測補丁語法錯誤、行 id 衝突、補丁跳失。
L2 隔離試跑¶
這是「不重啓試跑」的核心能力。插件在子進程中完整執行 boot() 加載全樹,webserver 端口偏置爲 0,與運行中後端零衝突;基座 assertEntriesActivated 斷言每個啓用插件都已激活,超時 90 秒捕獲 hang。失敗後可自動回滾——寫 home patch 禁用行,HMR 熱生效,無需重啓。
C8 木馬掃描(純靜態、隔離)¶
木馬掃描遵守隔離鐵律:只 readFile,絕不 import、require 或執行插件代碼。覆蓋 7 類惡意模式(下載執行、憑據竊取、外聯回傳、混淆後門、持久化、破壞性、環境劫持)。強組合命中(如下載執行、破壞性、憑據+外聯)報 error,單一命中報 warn 提示人工複覈。密鑰、令牌、私鑰在證據中一律脫敏爲 [REDACTED]。掃描跳過 tests、node_modules 和構建產物,對 schemastery 慣用法、數據解碼、迴環 IP 等場景做了誤報控制。
修復與鐵律¶
修復執行器有一條硬性約束:嚴禁修改 harness 源碼或安裝本體,只允許修改:
- 插件代碼(
~/.dsh/plugins/**) - 配置層(
~/.dsh/profiles/**、~/.dsh/cordis.patch.yml)
所有寫路徑經 assertSafeTarget 門禁校驗,界面彈確認後路由仍要求 confirmed: true。需要判斷力的修復打包成預製提示詞交給 agent,修復執行器自身不跑 LLM。
安裝與啓用¶
下面三步來自插件 README 的官方安裝說明:
# 1. 克隆到插件目錄
mkdir -p ~/.dsh/plugins
cd ~/.dsh/plugins
git clone https://github.com/chenw2759-wq/dsh-plugin-healthcheck.git
# 2. 裝進 web profile
npx @deepseek-ai/dsh plugin --profile web add "file:$HOME/.dsh/plugins/dsh-plugin-healthcheck"
# 3. 重啓後端,打開左下角設置 → 「插件檢測」
Windows 下 file: 路徑需使用正斜槓絕對路徑,例如 file:C:/Users/<你>/.dsh/plugins/dsh-plugin-healthcheck。
典型用法¶
圖形界面¶
- 打開 Web GUI 左下角設置,在導航中點「插件檢測」;
- 選擇作用域(全部插件或指定插件)與檢測層級(L0 / L1 / L2 / 木馬掃描);
- 點「開始檢測」;
- 結果按 severity 徽標列出,每條含證據與修復動作:一鍵修復(確定性,彈確認)、自動回滾(L2 失敗寫 disabled 行,HMR 熱生效)、複製提示詞(複雜問題交給 agent)。
HTTP 路由¶
也可直接調用後端路由:
/healthcheck/inventory— 插件清單/healthcheck/run— 執行檢測/healthcheck/status— 查詢狀態/healthcheck/repair— 執行修復/healthcheck/rollback— 自動回滾/healthcheck/history— 歷史記錄
適用場景與注意¶
適合誰: 經常通過 dsh plugin add 安裝社區插件的 DSH 用戶;需要在 CI 化安裝流程中做裝後驗證的團隊;關注 admin-security 類供應鏈風險的維護者。
使用前注意:
- 插件以當前 dsh 進程權限運行,L2 隔離試跑會在子進程中完整 boot 全樹,安裝前應自行檢查源碼與 MIT 許可證。
- 木馬掃描爲純靜態模式,單一命中僅 warn,需人工複覈;不能替代專業安全審計。
- 自動修復和回滾均會修改
~/.dsh/plugins/**或配置層,操作前界面會彈確認,但仍建議先備份 profile 與 patch 文件。 - SkillHub(https://www.skillhub.cn)是獨立的 DSH 插件社區目錄,與 DeepSeek / 幻方無官方從屬關係。
結語¶
dsh-plugin-healthcheck 把「裝完即驗」補進了 DSH 插件生命週期:L0 看文件與依賴是否合規,L1 看配置組合是否正確,L2 在隔離子進程裏試跑全樹,C8 做靜態木馬掃描。發現異常後可直接修復、回滾或交給 agent,且修復範圍被鐵律限制在插件與配置層,不會動 harness 本體。
- 社區目錄頁:https://www.skillhub.cn/plugins/chenw2759-wq/dsh-plugin-healthcheck
- GitHub 倉庫:https://github.com/chenw2759-wq/dsh-plugin-healthcheck