前言¶
用 DSH 做應用或插件時,依賴往往一層套一層。發版、對外開源或接受客戶審計前,如果只憑肉眼掃 package.json,很容易漏掉 GPL/AGPL 這類強傳染許可,或項目根目錄、清單里根本沒有可識別的許可證信息。事後被追問「爲什麼用了 GPL 卻沒按義務開源」,風險從「分發」那一刻就已經存在。
下面介紹維護者 feely0208 的 DSH 插件 dsh-license-guard(npm 包名 @deepwhale-cn/dsh-license-guard,分類 admin-security)。它在當前工程目錄掃描依賴樹,並按固定規則標出許可相關風險;也可不裝 DSH,單獨用 CLI 跑一遍。檢查通常只需幾秒,退出碼可用於 CI。
這是什麼¶
dsh-license-guard 做的是開源許可與許可證合規檢查:掃描依賴樹,找出 GPL/AGPL 傳染、許可未知、缺 LICENSE 等風險,適合發佈前、開源前、被審計時跑一遍。
與「只列依賴許可證」的工具不同,README 明確說明它不只看依賴,也會看項目自身——例如倉庫缺 LICENSE、package.json 缺 license 字段,這兩類問題會讓下游無法判斷能否合法使用你的代碼。
插件歸屬 GitHub 倉庫 feely0208/dsh-license-guard,在 DSH 社區目錄(如 skillhub.cn 插件頁)可查到條目;DSH 生態理念是「一切皆插件」,社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
它查什麼¶
README 用級別表格歸納檢查重點(工具內部共 5 條規則,覆蓋依賴樹許可風險與項目基礎文件):
| 級別 | 內容 |
|---|---|
| 高 | GPL / AGPL —— 強傳染 |
| 中 | 許可未知(沒寫許可證 ≠ 隨便用)· 項目缺 LICENSE |
| 低 | LGPL / MPL / EPL · package.json 缺 license 字段 |
不覆蓋:專利條款、商標、出口管制、SSPL/BUSL 等非 SPDX 自定義協議。依賴聲明裏的許可證字段可能不準(維護者寫錯),本工具不校驗其真實性。
README 用典型場景說明「不裝它會怎樣」:產物裏混入未發現 GPL 依賴並對外分發後,GPL 義務從分發時即可能觸發;跑一次檢查成本很低,與事後審計代價形成對比。此處爲 README 中的說明性場景,非第三方實測數據。
安裝與啓用¶
在 DSH 環境中安裝(命令來自官方 README):
# DSH 插件(推薦)
dsh plugin --profile web add @deepwhale-cn/dsh-license-guard
不依賴 DSH 時,可用 npm 一次性執行(同樣來自 README):
npx @deepwhale-cn/dsh-license-guard
package.json 中要求 Node >=18,DSH 引擎 >=0.1.0-rc.6。插件以當前 dsh 進程權限 讀取目錄與依賴信息;安裝或使用前,應自行查看倉庫源碼與 MIT 許可證聲明,並對合規結論負責。README 邊界聲明:使用者須遵守所在地區法律法規,對使用本項目造成的後果自行承擔責任。
典型用法¶
在項目根目錄執行以下命令(均來自 README):
dsh-license-guard # 掃當前目錄
dsh-license-guard --demo # 用內置樣本看效果
dsh-license-guard --html r.html # 輸出 HTML 報告
無參數掃描適合日常發版前自檢;--demo 便於在未接入真實倉庫時確認輸出格式;--html 生成可歸檔或附在審計材料中的 HTML 報告。README 說明退出碼可掛 CI,具體流水線寫法需按你方 CI 對非零退出碼的策略配置。
報告示例與規則說明圖見 README 中的鏈接(deepwhale.org.cn 插件資源路徑)。
適用場景與注意¶
適合誰:維護 Node/前端或 DSH 插件倉庫、需要在發版/開源/審計前快速掃一遍許可風險的開發者;與深鯨網安守護系列裏「供應鏈與構建」方向的 依賴投毒、物料清單 等插件配套時,README 將其定位爲「一個插件做一件事」,安全問題鏈式出現時可組合使用。
務必知曉:
- 工具給出的是基於聲明與項目文件的規則化提示,不能替代法務意見。
- 不覆蓋 SSPL/BUSL 等自定義協議及專利、商標等維度。
- 依賴樹中的
license字段未被工具驗證真僞。
結尾¶
dsh-license-guard 把「依賴傳染許可」和「項目自身缺許可信息」放在同一次掃描裏,用短命令和可接 CI 的退出碼,把發版前、開源前、被審計前的許可自檢做成固定步驟。