前言¶
DeepSeek Harness(DSH)插件化架構允許開發者通過插件擴展 Agent 的能力。在構建需要自主操作的工具鏈時,手動編寫細粒度的權限規則往往既繁瑣又難以維護。dsh-risk-gate 插件通過分析操作語義,在本地實現自動分級與漸進授權,解決了這一問題。
插件簡介¶
該插件由 leetom314 維護,採用 MIT 協議開源。它不依賴外部 LLM 調用,而是通過本地確定性分類算法,根據工具調用的語義將其劃分爲安全、風險或紅線三個等級,並據此執行通過、詢問或拒絕操作。
核心功能¶
1. 語義分級與本地分類
插件會攔截 tools/pre-execute 鉤子,根據操作語義對工具調用進行分類。分類是本地完成的,不涉及網絡請求。默認情況下,未知工具會被標記爲風險操作(拒絕)。
* Safe(安全): 可逆或只讀操作,如讀取、搜索、網頁瀏覽、良性 Bash 命令。
* Risky(風險): 不可逆但風險較低的操作,如寫入、編輯、安裝、Git 提交。
* Redline(紅線): 高風險操作,包括遠程狀態變更、發送消息、刪除文件、支付類操作。
2. 漸進授權機制
爲了減少對人工確認的打擾,插件實現了基於簽名(工具名 + 歸一化參數)的漸進授權。同一操作簽名連續成功 N 次後,後續調用將自動放行;一旦發生拒絕或失敗,該簽名的授權狀態會回滾。
3. Shell 命令檢查
插件支持對 Bash 和 PowerShell 命令進行正則檢查,識別危險指令。常見的紅線命令包括 rm -rf、shred、ssh user@host、git push、curl/wget -X DELETE 等。
安裝與啓用¶
確保環境已安裝 DSH CLI,然後執行以下命令安裝插件。
dsh plugin --profile web add "github:leetom314/dsh-risk-gate#main"
配置方法¶
在 DSH 的 YAML 配置文件中添加插件節點。主要配置項如下:
autoAllowThreshold: 自動允許閾值,設置爲 0 表示禁用漸進授權,始終詢問。默認值爲 3。alwaysAskRedline: 紅線操作是否強制詢問,默認爲true。overrides: 可針對特定工具進行覆蓋,設置爲deny可直接攔截。
- id: dsh-risk-gate
name: dsh-risk-gate
config:
autoAllowThreshold: 3
alwaysAskRedline: true
verbose: false
overrides:
some_tool: deny
測試與驗證¶
安裝完成後,可以通過運行測試腳本驗證插件行爲。
npm test
要進行端到端驗證(使用真實模型和無頭模式),可以運行:
./verify.sh
驗證腳本會檢查只讀操作是否放行、單文件刪除是否被攔截、遞歸刪除(rm -rf)是否被紅線阻斷,以及 Git 推送和 SSH 遠程操作是否被攔截。
侷限性與注意事項¶
- 非沙箱環境: Shell 檢查基於正則,並非完全的沙箱執行環境。它主要作爲安全門,建議配合
dsh-permission-rules或其他沙箱執行器進行防禦深度加固。 - 內存狀態: 插件的學習狀態僅保存在內存中,進程重啓或 HMR(熱模塊替換)會導致狀態丟失。
- 無頭模式: 在沒有回答器(Answerer)的情況下,插件默認拒絕操作。
- 依賴項: 插件依賴
@deepseek-ai/dsh-tools。
總結¶
dsh-risk-gate 提供了一種基於語義的輕量級安全控制方案,適合需要在 DSH 插件生態中快速引入操作分級與授權控制的場景。更多細節可查閱插件目錄或源碼倉庫。