dsh-plugin-trust-broker:DSH 第三方插件的安裝前信任代理與運行時審計

前言

DeepSeek Harness(DSH)的插件以 Host 代碼在宿主進程內運行。dsh plugin add 負責包管理,但不展示權限清單、不校驗來源、不綁定內容哈希。社區裏已有靜態掃描器(例如 npm 上的 dsh-trust-check)能列出能力事實,卻通常不直接回答:聲明與檢出差在哪、升級新增了哪些高權限能力、用戶確認過的代碼能否用哈希對上、沙箱外的網絡與子進程意圖能否事後追溯。

dsh-plugin-trust-broker(維護者 lightporta,分類 admin-security)面向上述缺口:在第三方插件被加載進 DSH Host 進程之前產出可複覈的信任決策,並在加載後對工具調用與上下文寫入做只追加審計。它只產出事實、差異、new_capability 標註和建議動作,不做「安全 / 惡意」裁決,不執行插件代碼,也不替代沙箱。

這是什麼

一句話:dsh-plugin-trust-broker 是 DSH Host 側的信任代理 bundle,版本 0.2.0(MIT),當前 GitHub 星標爲 0。

它用兩種形態共用同一套核心庫:

形態 入口 用途
CLI bin/trust-broker.mjs / npm run cli 安裝前審查、確認、寫錨點、查審計;退出碼可做 CI 閘門
DSH Host bundle src/plugin/index.ts(apply) 註冊運行時審計;通過 ctx.provide('trustBroker', …) 暴露 evaluate()

目錄頁:SkillHub 插件頁。源碼:GitHub · lightporta/dsh-plugin-trust-broker。

核心功能

安裝前:聲明、事實與差異

插件解析 package.json#dsh.capabilities 等聲明,並結合內置啓發式檢出(標爲 heuristic: true)或與操作者信任的 dsh-trust-check 報告對齊。差異分爲三類:A 聲明不足、B 聲明漂移、C 來源-內容不一致;每條可帶 file:line 或元數據指針。只有 new_capability: true 會觸發強制確認。

終端會給出來源可信度、聲明狀態、檢出能力面、安裝腳本、內容哈希與建議動作(proceed / confirm / block_for_review)。

供應鏈:內容哈希與信任錨點

對候選插件樹計算規範化 content_hash(例如 sha256:…)。用戶確認後可持久化 TrustAnchor;同哈希可跳過重複確認。--accept-hash 與當前哈希不一致,或審查後目錄發生 TOCTOU 變化,會拒絕錨定並以退出碼 2 結束。

加載後:只追加運行時審計

Host bundle 註冊 tools/pre-execute、tools/post-execute 等鉤子,記錄工具名與參數摘要、是否超出聲明面(scope_exceeded)、輸出改寫前後摘要,以及上下文注入/壓縮與文件寫入事件,以 JSONL 只追加方式落盤。

Web「安全審查」標籤頁(v0.2.0)

DSH 內置「添加插件」彈窗爲固定組件、無可注入 slot。本插件在 Plugins → 安全審查 標籤頁實現等價流程:支持 npm 包名、GitHub/git 地址或本地目錄;展示披露信息、能力面、哈希、差異與逐項強制確認;勾選後寫錨點再交給原生 install(target)。

說明:內置「安裝第三方插件」彈窗仍可繞過該審查;完全強制需 DSH 上游爲該彈窗提供 slot。模型通過 plugin_manager 的 install_bundle 安裝時,會在原生審批彈窗中展示同一份審查摘要。

明確不做的事

  • 不做插件市場、評分、黑白名單或人工背書。
  • 不替代 dsh-trust-check 或沙箱;無聲明插件走 unstated 降級(一次顯式確認),而非一律拒絕。
  • v1 不含 Web GUI 管理面板;--json 輸出即自動化契約。

運行環境要求(摘自 package.json):Node ^22.19.0 || >=24.0.0;DSH >=0.2.0-rc.2 || >=0.2.1-rc.2 || >=0.2.2-rc.1。

安裝與啓用

本倉庫是可安裝的 bundle:package.json 聲明 dsh.bundle.patch,cordis.patch.yml 插入 Host 行。安裝前必須先構建,因爲 main 指向 dist/plugin/index.js。

cd dsh-plugin-trust-broker
npm ci --ignore-scripts
npm run build

將下面 <本項目的絕對路徑> 換成你機器上克隆或解壓後的倉庫根目錄:

# 方式一:DSH Plugin Manager
plugin_manager(install_bundle, target: "<本項目的絕對路徑>")

# 方式二:CLI
dsh plugin --profile <profile> add <本項目的絕對路徑>

安裝本 bundle 後,會註冊運行時審計、trustBroker 服務、Web「安全審查」標籤頁與模型安裝審批門禁。本插件自身聲明 network.fetch: true(用於 registry/tarball 獲取),並暴露同源接口 api/trust-broker/review|confirm|health。

典型用法

開發與自檢

npm run check            # typecheck + tests + build

終端審查單個插件目錄

npm run build
node bin/trust-broker.mjs review ./some-plugin --no-external-scanner

結合 dsh-trust-check 報告

先在可信環境生成報告,再傳入候選樹:

npx dsh-trust-check@0.2.5 --dir ./some-plugin --spec npm:some-plugin@1.2.3 --json > /tmp/report.json
node bin/trust-broker.mjs review ./some-plugin --trust-check-report /tmp/report.json

CI / 非交互 JSON 決策

node bin/trust-broker.mjs review ./some-plugin --json --non-interactive

退出碼約定:0 = proceed,2 = 需要顯式確認,3 = block/unscannable,1 = 用法錯誤或日誌損壞。

確認並寫入信任錨點

node bin/trust-broker.mjs review ./examples/demo-plugin --store-dir /tmp/tb-demo \
  --no-external-scanner --non-interactive \
  --acknowledge-new-capability --accept-hash 'sha256:…'

交互場景下,對 new_capability 需按終端提示輸入確認口令(例如「確認新增能力」)。

適用場景與注意

適合誰

  • 在 DSH 上頻繁安裝第三方 Host bundle、需要在加載前對齊聲明與檢出的團隊或個人。
  • 希望在 CI 中用退出碼 Gate 安裝產物,或需要哈希錨定與升級差異(B 類漂移)可追溯的 Supply-chain 流程。
  • 需要在運行後審計工具調用與上下文寫入、便於事後複覈的場景。

務必注意

  • 插件與所有 DSH Host 插件一樣,以當前 DSH 進程的權限讀寫指定目錄與日誌;安裝前請自行閱讀源碼與 MIT 許可證,並理解信任邊界由「調用者選定的來源 + 用戶審批」構成。
  • Broker 不做惡意判定;最終是否加載仍由用戶或上層策略決定。
  • SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;本文安裝命令來自項目 README,請勿僅憑倉庫名拼接未文檔化的 CLI 形式。

結尾

dsh-plugin-trust-broker 補全了 DSH 生態裏「安裝前 permission diff + 哈希錨點 + 加載後審計」四層能力,並把 CLI 與 Host Web 審查接到同一決策模型上。若要試用,可從 SkillHub 目錄頁 跳轉倉庫,按上文構建後以絕對路徑安裝 bundle,或在加載前單獨運行 dsh-trust-broker CLI。

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

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

小夜