dsh-agent-permission-audit:把插件「聲明的能力」和「實際用的調用」擺在一起做差集

前言

DSH(DeepSeek Harness)的理念是「一切皆插件」,插件可以掛載工具、子代理、網絡模塊。問題隨之而來:一個插件在 package.json 裏說自己只讀文件,但它的預設順手掛了 bash、web 和子代理;沙箱策略又是在會話裏逐層組合出來的。等到出事再去翻幾十個壓縮會話日誌,已經晚了。

feely0208/dsh-agent-permission-audit(npm 名 @deepwhale-cn/dsh-agent-permission-audit,版本 0.1.0,MIT)就是做這件事的:讀本機已裝插件和預設的聲明,讀本機會話日誌裏的真實調用,然後列出差集——哪些調用超出了聲明(紅),哪些聲明瞭卻一直沒用(黃,可以收窄)。它只讀本機、不聯網,也可以不裝插件直接用 CLI 跑。

誰維護、解決什麼問題

倉庫由 feely0208 維護,作者行是溫州深鯨智能科技有限公司,許可證 MIT。它解決的問題很具體:權限是組合出來的,聲明和實際之間沒人說得清。已有做法是出事之後人工翻日誌;這個插件把它變成一次靜態讀取加一次文本報告。

核心功能

聲明側。讀取本機已裝插件的 package.json(dsh 字段、peerDependencies、dependencies)、cordis.patch.yml 掛載的模塊,以及 .agent-presets/* 裏的 agent preset 和隨包 insert 行,提取每套聲明的工具白名單和文件範圍。

實際側。讀取本機會話日誌 session.v4.jsonl.zstd(用系統 zstd 解壓),提取真實發生的工具調用、命令、讀寫路徑和訪問域名。

差集。按預設或插件給出「聲明項 → 實際命中 → 聲明外調用 → 聲明瞭但未使用」,並彙總聲明外總數和最高風險類別。

風險計數。單獨統計執行命令、寫系統路徑、訪問外部網絡、讀憑據四類;對 workspace-write、read-only 沙箱還會列出會話策略違規。

輸出。文本和 --json 兩種;退出碼 0 表示沒有聲明外調用,1 表示有,可以掛在腳本或檢查流程裏。

能力口徑

插件把它們折算成八類概念,夠用即可:exec 執行命令、fs.read 讀文件、fs.write 寫文件、net 訪問網絡、skill 加載技能、agent 子代理/團隊、memory 記憶讀寫、plan 計劃/待辦。

插件作者可以在 package.json 裏顯式聲明能力白名單,這是可選字段,本插件會識別;宿主會忽略它不認識的字段。帶 : 的部分是範圍,支持前綴和 * / ** 通配:

沒寫顯式聲明時,插件從依賴和 patch 掛載的官方模塊推斷能力。推斷結果不是白名單,所以不會把別人掛載的調用算成這個插件的「聲明外」。實際調用按會話的 agentPreset 精確歸屬到預設;找不到預設聲明時(例如內置預設),只做會話策略審計並明確標註,不僞造差集。

安裝與啓用

用官方目錄裏的安裝命令:

dsh plugin --profile web add @deepwhale-cn/dsh-agent-permission-audit

裝好後側欄多一個「深鯨權限審計」圖標。要求 dsh >=0.1.0-rc.6 <0.3.0、Node.js >=18。

同一倉庫還提供 CLI,不裝插件也能跑:

node bin/cli.mjs --days 7            # 文本報告
node bin/cli.mjs --days 30 --json    # 機器可讀

CLI 另有 --home <目錄>、--sessions <目錄>、--no-color 等參數。

常見配置

默認讀取 ~/Library/Application Support/DeepWhale Desktop/dsh-home,其中包含 profiles/、plugins/、.agent-presets/、sessions/。三個環境變量可覆蓋:

變量 作用
DSH_AUDIT_HOME DSH_HOME(含 profiles/、plugins/、.agent-presets/、sessions/)
DSH_SESSIONS_DIR 會話日誌根目錄
DSH_ZSTD_BIN zstd 可執行文件路徑

插件全程只讀:不寫文件、不修改日誌、不聯網、不調第三方接口。報告對 sk-*、Bearer/Authorization、token/secret 賦值、郵箱、用戶名路徑打碼。

適用場景與注意

適合裝了多個插件和預設、需要定期覈對實際權限的使用者,也適合插件作者在發佈前自查未使用的能力。審計本身只覆蓋工具體調用層;插件在宿主進程內直接讀寫文件的行爲不會出現在日誌裏,審不到。

幾處需要留意的邊界:

  • 「寫系統路徑」「讀憑據」是啓發式識別(看命令與路徑),可能誤報,報告給了樣例,按樣例覈對後再改。
  • 沒有會話日誌時只做聲明側統計,報告明確顯示「無實際數據」,不會把「沒數據」說成「沒風險」。
  • 內置預設在本機沒有聲明文件,無法做預設級差集,只做會話策略審計。
  • 「聲明外」按預設組成和插件顯式白名單判定;宿主全局提供的工具可能不在預設聲明裏,報告附帶樣例,先覈對再改。

安裝前應檢查源碼與許可證,確認它對你的會話日誌存放位置和 zstd 可執行文件路徑適用。它以當前 dsh 進程的權限運行,只是讀本機文件,不修改任何內容。

結尾

這個插件的價值不在於替你收緊權限,而是把「聲明瞭什麼」和「實際用了什麼」擺在同一張報告裏,讓收窄有依據、誤配能被發現。它只讀本機、不聯網、不改日誌,可以反覆跑。

目錄頁:https://www.skillhub.cn/plugins/feely0208/dsh-agent-permission-audit
倉庫:https://github.com/feely0208/dsh-agent-permission-audit

注:社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,不是官方應用商店。

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

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

小夜