前言¶
DeepSeek Harness (DSH) 的核心能力在於允許智能體調用外部工具。在沒有防護的情況下,工具調用的誤用或惡意行爲可能直接破壞系統環境。DSH 自帶的工具審批通常只有“彈窗詢問”或“完全關閉”兩種模式,前者會打斷工作流,後者則失去了防護意義。
dsh-warden 旨在提供第三種方案:平時零打擾,只在真正危險的操作上觸發一次低成本審查。它通過掛載在 tools/pre-execute 鉤子上,在工具執行前攔截並評估風險。
它是什麼¶
dsh-warden 是 DeepSeek Harness 的一個插件,由 dingchenhui0618-arch 維護,許可證爲 MIT。
它是一個“對抗式審查門”:在工具調用執行前,由一個獨立的小模型複覈該調用是否危險,並返回放行或攔截的指令。所有的判定結果都會在 Web GUI 中實時展示,且每次判定都會記錄到審計日誌中。
核心功能¶
兩層防禦機制¶
插件採用兩層防禦策略,第二層僅在第一層未攔截時觸發,以確保日常操作無額外延遲。
-
第一層(本地正則,零延遲)
使用本地正則表達式匹配破壞性命令和敏感路徑。- 破壞性命令:包括
rm -rf(任意旗標順序)、Remove-Item -Recurse、rmdir /s、format、mkfs、DROP TABLE/DROP DATABASE、git push --force、git reset --hard等。 - 敏感路徑寫入:
.env、credential、id_rsa、.ssh、.git/、settings.*、cordis*.yml、AGENTS.md以及$DSH_HOME下的任意文件。
- 破壞性命令:包括
-
第二層(模型調用,按需觸發)
對於第一層未命中的調用,插件會將“工具名 + 風險類別 + 完整參數 + 當前會話目標”發送給審查模型,由模型判斷是否攔截。- 普通讀寫操作(
read/grep/glob)不會進入這套邏輯,不會產生額外延遲。
- 普通讀寫操作(
實時審查與審計¶
- Web GUI:在對話視圖的“審查”Tab 中,可以查看實時計數(工具調用總數、有風險類別數、送審數、放行數、攔截數、異常降級數)以及最近 60 條判定的詳情(時間、工具名、風險類別、耗時、模型、理由)。
- 審計日誌:每一次送審的調用都會追加一行 JSON 到
$DSH_HOME/warden-audit.l,包含時間、工具、類別、決定、理由、模型和耗時。未送審的普通調用僅存在於內存環形緩衝中,不落盤。
可配置規則¶
默認規則內置在插件中,採取“默認放行,只攔不可逆破壞”的策略。
* 用戶可以通過編輯 $DSH_HOME/adversary.md 文件來覆蓋默認規則。
* 該文件支持按修改時間自動重載,修改後點擊面板上的“重載規則”按鈕即可生效,無需重啓 DSH。
安裝與啓用¶
插件已發佈到 npm,支持從 npm 或 GitHub 安裝。安裝後重啓 DSH,對話視圖的“審查”Tab 即會出現。
dsh plugin --profile <你的 profile> add dsh-warden
如果需要從源碼安裝:
dsh plugin --profile <你的 profile> add github:dingchenhui0618-arch/dsh-warden
注意事項¶
- 拒絕詢問模式:插件永遠不返回
ask。如果審批 UI 不可用或關閉,它會默認拒絕操作。不要依賴它來提供“請確認”的交互彈窗。 - 異常容錯:插件不會在異常或錯誤時阻斷執行。如果模型不可用、參數無法序列化或發生任何錯誤,插件會直接放行。它的設計目標是“最壞情況下什麼都不做”,而不是“因爲插件自身崩潰而鎖死工作流”。
- 安全邊界:它不是一個硬性的安全邊界。因爲它運行在同一進程內,惡意代碼或插件本身仍有可能繞過它。它主要用於降低誤操作的概率。
- 分類依據:分類基於“工具名 + 參數模式”,而非工具自報的類型。
結語¶
dsh-warden 通過正則預檢與模型複覈的結合,爲 DSH 提供了精細化的工具調用控制。它不干擾正常的讀寫操作,只在危險邊緣提供兜底保護。對於需要在生產環境或敏感數據上運行 DSH 的用戶來說,這是一個值得嘗試的安全增強手段。