dsh-plugin-check:DSH 插件倉庫只讀健康檢查

前言

DSH 生態裏插件倉庫越來越多,清單協議、patch 格式、TypeScript 構建配置、hub 收錄狀態各自有一套約定。人工逐條對照容易漏項,CI 或模型側也缺少統一門禁。下面介紹 omdsh-dev/dsh-plugin-check:對插件目錄做靜態掃描,輸出合規報告與修復建議,不修改、不構建被檢查倉庫。

這是什麼

dsh-plugin-checkomdsh-dev 維護,在 SkillHub 分類爲聯網工具目錄頁)。它在 DSH 中註冊 plugin_check 工具(row id:tool-plugin-check),掃描單個或批量插件倉庫,診斷清單協議、patch 格式、構建陷阱與 hub 收錄狀態,統一輸出 JSON 文本報告。

設計要點:

  • 只讀:僅使用 readdir / stat / readFile,不改動被檢倉庫
  • 零業務依賴:運行時只用 Node 內置模塊(fs / path / child_process
  • 不執行 tsc:構建相關檢查全部靠靜態文本掃描

許可爲 MIT;npm 包名 @omdsh-dev/dsh-plugin-check,當前版本 0.1.0,要求 Node ^22.19.0 || >=24.0.0

核心功能

三種 action

action 作用
check 檢查單個插件倉庫目錄,返回 verdict / errors / warnings / suggestions
scan 掃描父目錄下所有帶 package.jsondsh-* 插件倉庫,彙總報告
schema 輸出全部檢測項清單與判定標準,供模型或人工覈對

工具參數:

參數 類型 必填 說明
action string check / scan / schema
path string 插件目錄(check)或父目錄(scan);默認當前工作目錄
strict boolean 爲 true 時 warning 升級爲 error 並影響 verdict;默認 false

形態識別與 33 項檢測

工具按倉庫形態(registry / skill / collection / tool-bundle / bundle / infra / unknown)套用不同檢查集,共 33 項,覆蓋四類問題:

類別 典型 error 典型 warning
清單協議 no-manifest、invalid-name-format、missing-main-or-types、no-patch incomplete-files、missing-peer、no-bundle-decl
patch 格式 malformed-patch、patch-name-mismatch、duplicate-row-id unexpected-fields
構建陷阱 no-source-entry、no-tsconfig、missing-ts-ext-imports、lib-layout-mismatch、stale-ts-imports missing-rewrite-imports、types-path-mismatch、implicit-node-types、no-build-script
生態合規(Profile Bundle) core-row-id、missing-profile-install-example、manual-install-only、core-modification-required
hub 收錄 not-in-hub(hub 檢查被跳過時標註爲 info,不算 warning)

判定規則:

  • verdict:0 個 error → pass;有 error → fail;僅 warning → warn
  • checks 字段記錄固定檢查項的執行結果(total / passed / failed / warned / skipped),而非 issue 條數

命名策略上,invalid-name-format 僅表示 npm 格式錯誤;合法的個人 scoped / unscoped 名稱只會產生 non-org-recommended-name(warning)。推薦範圍爲 @deepseek-ai/*@dsh-external/*@omdsh/*dsh-*

hub 檢查與安全模型

hub 收錄檢查離線優先:先讀本地 hub catalog(DSH_HUB_SOURCEcwd/hub/),再通過 gh 讀取公開 omdsh-dev/dsh-hub-workshop/catalog.json;兼容 dsh-hub-index/v0.4 與舊 repos[].name 格式。全部失敗時靜默降級爲 skipped,報告如實標註,不記爲 warning。

安裝與啓用

推薦通過 Profile Bundle 安裝到 DSH 0.1.1-rc.1(npm)profile。web 與 headless 是不同 profile:dsh run 默認使用 headless,在 web 安裝不會自動覆蓋 headless。

交互式(web)profile:

dsh plugin --profile web add github:omdsh-dev/dsh-plugin-check

一次性任務(headless)profile:

dsh plugin --profile headless add github:omdsh-dev/dsh-plugin-check

包內 dsh.bundle.patch 會在安裝後把插件加入 profile 的 layer stack。缺失的 peer 依賴(cordis@deepseek-ai/dsh-tools)由 profile 的 healed profiles/node_modules 回退安裝提供。

本地構建後用 tarball 安裝(不依賴 GitHub):

npm pack
dsh plugin --profile web add <npm pack 產物 tarball 路徑>

驗證是否加載成功:

dsh --profile web --dump-config | grep tool-plugin-check

啓動 DSH(npm 0.1.1-rc.1 線,lib 生產模式):

npx -p @deepseek-ai/dsh@0.1.1-rc.1 dsh web

典型用法

檢查單個插件倉庫:

plugin_check { action: "check", path: "C:/Users/admin/Desktop/dshext/dsh-tool-csv" }
   {"repo":"dsh-tool-csv","kind":"tool-bundle","verdict":"pass","checks":{"total":24,"passed":24,...}}

掃描父目錄下全部 dsh-* 插件:

plugin_check { action: "scan", path: "C:/Users/admin/Desktop/dshext" }
  → {"root":"...","scanned":11,"reports":[...]}

通過 DSH 會話調用:

dsh run "使用 plugin_check 工具檢查一個插件倉庫"

查看全部檢測項定義:

plugin_check { action: "schema" }

適用場景與注意

適合誰

  • 插件作者在提交前自檢清單、patch、構建配置與 Profile Bundle 合規性
  • CI 或模型工作流中對 dsh-* 倉庫目錄跑門禁,拿結構化 JSON 報告
  • 維護 hub catalog 前批量 scan 父目錄,定位不合規倉庫

使用前注意

  • 插件以當前 DSH 進程的權限運行;安裝前應閱讀 GitHub 源碼 與 MIT 許可證
  • hub 檢查依賴本地 catalog 或 gh 訪問公開倉庫;環境不滿足時 hub 項會 skipped,不影響其他檢查
  • 舊版 monorepo 集成、不支持 Profile Bundle 的快照,需參考 README「手動安裝與舊版本兼容」段落
  • SkillHub 爲獨立社區目錄,與 DeepSeek / 幻方無官方從屬關係

結尾

dsh-plugin-check 把組織內實測踩過的清單、patch、構建與 hub 合規問題收斂成可自動執行的只讀門禁。裝好 profile 後,對目標目錄調用 plugin_check 即可拿到 verdict 與修復建議。

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

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

小夜