前言¶
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 / 幻方無官方從屬關係,不是官方應用商店。