dsh-audit:DeepSeek Harness 插件安裝前審計與運行期監控

前言

DeepSeek Harness(DSH)採用「一切皆插件」的擴展方式:第三方插件可以註冊工具、改配置、在 Agent 會話裏被調用。習慣做法是安裝後再觀察行爲,或人工翻源碼;插件一多,很難在裝之前系統性地看「會寫哪些路徑、會不會起子進程、會不會往外 POST」。dsh-audit(Audit Console)面向同一類問題:在本地對目錄、壓縮包或 npm 規格做純文本靜態檢查並給出 S–D 等級,安裝後繼續記錄啓停、敏感工具調用和 token 估算,數據落在本機 $DSH_HOME/dsh-audit/,不上傳遙測。

維護者爲 Shark00I,源碼與說明見 GitHub:Shark00I/dsh-audit;社區目錄頁:skillhub.cn/plugins/Shark00I/dsh-audit(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。當前版本 1.0.0(README 標註 2026-10-28 首發),許可證 MIT。

這是什麼

dsh-audit 是 DSH 上的審計控制台:裝插件前先審目標包,裝完後看插件實際觸發了哪些敏感操作。審計過程對受檢對象只讀文本,不 import、不執行、不解包到磁盤;對已安裝插件的掃描不髮網絡請求;運行期監控不外發數據。dsh-audit 不會審計自身(掃描與監控均跳過本插件)。

環境要求(來自 README):

項 要求
DSH >= 0.2.1-rc.0(Desktop 與 dsh web)
Node >= 20(可用 DSH 自帶 Node)
OS Windows 10+ / macOS 12+ / Linux,純 ESM,無原生代碼
運行時依賴 無;@deepseek-ai/* 由宿主提供

核心功能

安裝前審計(Pre-install audit)

支持本地目錄、.tgz / .tar.gz、npm spec,或 https tarball。全程文本分析,不導入、不執行、不解包到磁盤。

S–D 分級與 0–100 分

每個第三方插件根據證據扣分後映射等級,分數只表示相對風險,不是安全證明。等級含義如下:

等級 分數 含義 建議
S 90–100 低風險 可安裝
A 75–89 可接受 可安裝,按建議收緊
B 60–74 需留意 先看證據
C 40–59 謹慎 重點看命令執行與外連主機
D 0–39 高風險 除非信任來源,否則勿裝

扣分項包括(節選):動態執行 −25、系統自啓動 −12、混淆 −12、child_process −10、安裝腳本 −10(若下載/執行再 −10)、對外 POST −10 等。README 與 locale 註釋、壓縮單行包等會跳過部分詞法規則(URL 仍會收集)。

運行期監控(Runtime monitor)

只記錄三類事實:

  1. 啓停:插件經 internal/status 進入/離開 ACTIVE 及持續時間。
  2. 敏感調用:在 tools/pre-execute 與 tools/result 上匹配刪除/寫入/運行/網絡/憑證等規則,以及 plugin_manager、web_fetch / web_search 目標等。
  3. Token 估算:按「四字符 ≈ 一 token」估算工具調用的參數與結果文本,歸屬到註冊該工具的插件。

事件環形緩衝約 600 條,約每 3 秒或每 80 條刷入 $DSH_HOME/dsh-audit/events.jsonl,5 MB 輪轉;空閒成本接近零。不輪詢、不盯文件。

設置面板

路徑:Settings → Audit。無需重啓;若入口未出現,dsh web 下可刷新頁面一次。各 Tab 職責:

Tab 內容
Grades 等級徽章、分數與證據芯片;可展開看數據去向、安裝腳本、自啓動、外發等
Runtime 運行中插件、各插件工具 token 估算、啓停/敏感調用/管理變更時間線
Errors 插件加載失敗、工具錯誤、會話錯誤
Pre-install 輸入目錄/壓縮包/npm spec,給出是否建議安裝及可關閉項
Settings 監控開關、敏感調用記錄、啓動掃描、排除列表、npm registry、清空

新裝插件約 2 秒後觸發重掃,面板約 6 秒輪詢;也可點 Rescan 立即刷新。不列入掃描/監控的包括:@deepseek-ai/* 官方包、僅通過臨時 --patch 加載且不在 profile package.json 中的項,以及設置中的排除列表。

Agent 工具與 HTTP API

Agent 側工具:

plugin_audit                audit installed plugins (profile?, plugin?, detail?)
plugin_audit_preinstall     audit a not-yet-installed target (target: dir/archive/npm spec/https tarball)

plugin_audit 返回 Markdown 報告(概覽 → 各插件等級/分數/證據 → 結論);detail: false 可省略 URL 列表。

同域 HTTP 接口(節選):

方法 路徑 用途
GET /dsh-audit/api/state 版本、設置、最近掃描、事件、錯誤、運行中插件
GET /dsh-audit/api/events?limit=&type=&plugin= 事件與錯誤
POST /dsh-audit/api/scan 觸發掃描
POST /dsh-audit/api/preinstall { target } 安裝前審計
POST /dsh-audit/api/settings { patch } 更新設置
POST /dsh-audit/api/clear 清空事件與錯誤

其他插件可通過 ctx.audit 註冊靜態規則、訂閱運行期事件、觸發 scan() / preinstall() 等(卸載插件時該 Cordis 服務一併移除)。

安裝與啓用

Desktop

在 Plugins → Add plugin 中選擇 dsh-audit 目錄或壓縮包,或執行:

dsh plugin --profile desktop add link:<absolute path to dsh-audit>

將 <absolute path to dsh-audit> 換成本機上的絕對路徑。

dsh web

dsh plugin --profile web add dsh-audit         # 發佈到 npm 後可用
dsh plugin --profile web add link:<absolute path>

安裝後打開 Settings → Audit 即可使用。

典型用法

安裝前先審一個 npm 包或本地目錄:在 Settings → Audit 的 Pre-install Tab 輸入目標,或在 Agent 中調用 plugin_audit_preinstall,根據等級與證據決定是否安裝、安裝後應關閉哪些監控項。

已安裝插件定期看等級與時間線:Grades Tab 看各插件分數與證據;Runtime Tab 看敏感調用與 token 估算。需要報告時可讓 Agent 執行 plugin_audit,必要時設 detail: false 縮短輸出。

自定義規則或聯動(需改插件源碼並重啓 DSH):靜態規則在 lib/rules.js,打分在 lib/scan.js 的 scoreOf(),運行期分類在 lib/runtime.js 的 classifyCall();HMR 不監視 profile 外目錄。

適用場景與注意

適合:經常從社區或 npm 拉第三方 DSH 插件、希望在同一界面做「裝前靜態結論 + 裝後行爲時間線」的開發者。

務必知曉的邊界(README 原文要點):

  • 安裝前審計看不到:嚴重混淆/壓縮代碼、運行時拼出的 URL、動態 import()、原生 .node 行爲、node_modules 內依賴(不展開)。
  • 低分不等於惡意,高分不等於安全;審計只讀文本,不替代人工讀源碼與許可證審查。
  • 第三方插件與 dsh-audit 一樣,在當前 DSH 進程權限下運行;安裝任何插件前仍應檢查來源、LICENSE 與自身威脅模型。
  • 數據僅存 $DSH_HOME/dsh-audit/(如 settings.json、scan.json、events.jsonl、errors.jsonl),無遙測;唯一可能出網的是你在 Pre-install 裏顯式指定的 npm spec 或 https URL(默認走 registry.npmjs.org 或你在設置裏配置的 registry)。

結尾

dsh-audit 把「裝前純文本審計 + S–D 證據打分」和「裝後啓停/敏感調用/token 估算」收進 Settings → Audit 與 Agent/HTTP 接口,數據留在本機。若你要在 DSH 生態裏系統化管理第三方插件風險,可從目錄頁或 GitHub README 對照安裝命令與評分表使用。

  • 目錄頁:https://www.skillhub.cn/plugins/Shark00I/dsh-audit
  • GitHub:https://github.com/Shark00I/dsh-audit
羽毛球分组比赛记分
小程序二维码

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

小夜