前言¶
DeepSeek Harness(DSH)採用「一切皆插件」的擴展方式:新能力往往來自社區 bundle,安裝路徑會拉取 npm 包或 GitHub 源並執行依賴解析。宿主本身不會替你逐項審 package 元數據、倉庫活躍度或 install 腳本風險。若你在團隊或生產 profile 裏裝第三方插件,缺少一道「按下安裝到 pnpm 真正執行之間」的檢查,供應鏈問題更容易在裝完才暴露。
下面介紹維護者 NingZhenPeng 發佈的 dsh-plugin-preflight(社區分類 admin-security)。它本身也是 DSH 插件,通過 cordis.patch.yml 掛到加載鏈,在 pluginManager.installBundle 之前插入預檢:判定爲拒絕則中止安裝,並把每次嘗試寫入審計日誌。它不是市場,也不替你決定裝什麼——只在安裝流程里加一道閘門。
這是什麼¶
dsh-plugin-preflight 是 DeepSeek Harness 的插件安裝預檢閘門。九項規則的閾值全部在倉庫內的 policy.json,判斷邏輯與標準分離;預檢腳本爲 scripts/preflight.mjs。
- 維護者:NingZhenPeng
- 社區目錄:SkillHub 插件頁
- 源碼與文檔:GitHub — NingZhenPeng/dsh-plugin-preflight
- npm 包名:
dsh-plugin-preflight(package.json版本 0.15.4,MIT,engines.dsh爲>=0.2.0)
核心功能¶
九項內置檢查¶
預檢只攔「明確拒絕」;警告與需人工項一律放行,由人判斷。
| # | 檢查 | 阻斷級 |
|---|---|---|
| 1 | GitHub 倉庫存在、未歸檔、90 天內有推送 | 拒絕 |
| 2 | 無 preinstall / install / postinstall |
拒絕 |
| 3 | 未被 deprecated |
拒絕 |
| 4 | 直接依賴數 > 8 拒絕、> 1 警告 | 拒絕 / 警告 |
| 5 | 兼容宿主版本(dsh.compatibility / engines.dsh / peer 範圍) |
拒絕 / 警告 |
| 6 | 自更新、熱重載痕跡(腳本 / 依賴 / README) | 警告 |
| 7 | 是否要求第三方賬號 | 需人工 |
| 8 | npm provenance 簽名 | 警告 |
| 9 | 裝後釘精確版本 | 提醒 |
安裝流程中的位置¶
安裝請求進入被包裝後的 pluginManager.installBundle 後,會先執行:
node scripts/preflight.mjs <包名> --json
- 拒絕:拋錯中止,寫審計,並在「安裝詳情」裏附帶結構化報告。
- 通過:調用原來的安裝方法。
- 預檢跑不成(斷網、限流、超時):默認按策略處置,見下一節。
預檢跑不完時的策略¶
默認 攔截,避免「故意卡住網絡」繞過檢查。處置順序:
- 30 分鐘內驗過同一包 → 沿用
verdict-cache.json,不重複聯網。 - 無緩存且
onUnverified爲block(默認)→ 中止安裝,報告說明原因與可選處置。 onUnverified爲allow→ 放行,審計記unverified。
面板「高級設置 → 預檢跑不完時」可切換;離線環境建議選放行,否則可能無法安裝任何插件。README 明確這是安全與可用之間的取捨。
運行模式與審計¶
側欄「插件預檢」面板可熱切換,無需重啓:
enforce:預檢拒絕時中止安裝。warn:照常安裝,只寫審計。
默認數據目錄爲 ~/.dsh/plugin-guard/(可通過 dataDir 等配置覆蓋)。典型文件包括:
runtime.json:運行期配置audit/plugin-guard.jsonl:每次安裝嘗試一行audit/last-block.md/last-block.json:最近一次攔截說明
自定義規則¶
可在 runtime.json 的 customRules 或面板「高級設置 → 自定義規則」中追加檢查。每條規則含 title、when(條件表達式)、status(warn / reject / manual)、detail。條件可使用 repo.stars、depsCount、deprecated、deps contains "axios" 等字段;與內置規則疊加,內置拒絕不會被自定義「通過」覆蓋。
安裝與啓用¶
本插件面向 DSH 桌面端與 Web 端。插件以當前 DSH 進程權限運行;安裝前應自行覈對源碼與許可證。
桌面端:DeepSeek Harness 插件頁 →「添加插件」→ 填寫 dsh-plugin-preflight(已發佈 npm 時)或本目錄絕對路徑 → 重啓。
未發佈 npm 時,從 GitHub 安裝(資料原文命令):
dsh plugin --profile desktop add github:NingZhenPeng/dsh-plugin-preflight
純 web profile 命令行:
dsh plugin --profile web add dsh-plugin-preflight
典型用法¶
運行期只記錄、不攔截¶
適合先觀察一段時間再收緊。改 runtime.json 或面板切換:
{ "mode": "warn" }
離線或不穩定網絡¶
將「預檢跑不完時」設爲放行(onUnverified: allow),避免默認 block 導致無法裝包;審計仍會記 unverified。
自定義冷門倉庫警告¶
{
"id": "custom-abc123",
"title": "冷門倉庫",
"when": "repo.stars < 50 && repo.idleDays > 90",
"status": "warn",
"detail": "{repo.slug} 只有 {repo.stars} star,且已 {repo.idleDays} 天沒更新"
}
命中後報告會追加警告行,但不阻斷安裝(除非你將 status 設爲 reject)。
本地自測(開發者)¶
倉庫提供不聯網自測(不進 npm 包):
node scripts/selftest.mjs
適用場景與注意¶
適合:需要在 DSH 裏統一約束「插件頁 / 市場走 installBundle 的安裝路徑」、希望有審計與結構化攔截報告的團隊或個人。
務必知曉的限制(來自 README「已知限制」):
- 依賴宿主內部 API(如
pluginManager.installBundle、側欄槽位);宿主大版本升級後可能界面降級,閘門仍可能攔截但提示不全。 - 只覆蓋
pluginManager.installBundle;CLIdsh plugin add、手改package.json後pnpm install可繞過。 - 第 6、7 條爲啓發式,有誤報與漏報。
- HTTP 層准入防遠程濫用;本機進程可直接改
runtime.json。 - Windows 爲 README 記載的實測平臺;macOS / Linux 未實測但已避免寫死平臺假設。
社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-plugin-preflight 在 DSH 安裝插件與 pnpm 執行之間插入九項可配置預檢,拒絕即攔截並留審計,警告與人工項交給人判斷。若你主要走圖形化插件安裝且希望供應鏈上有默認閘門,可先裝此插件,再按網絡環境調整 onUnverified 與 mode。
- 目錄頁:https://www.skillhub.cn/plugins/NingZhenPeng/dsh-plugin-preflight
- GitHub:https://github.com/NingZhenPeng/dsh-plugin-preflight