DeepSeek Harness 插件介紹:dsh-perm-gate

前言

在 DeepSeek Harness(DSH)的安全生態中,權限控制、自動審批和語義分類通常分散在不同的插件中(如 dsh-permission-rules、dsh-auto-mode 等)。這種拆分導致跨插件版本耦合,且審計鏈路不統一。

dsh-perm-gate 是一個將“門禁 + 審批 + 分類器”合併爲單一包的插件。它通過統一的審計軌跡和確定性的決策優先級,解決了上述問題。

是什麼

這是一個爲 DeepSeek Harness 設計的、獨立的、確定性優先且“失敗即關閉”的權限門禁。

插件由 drscrewdriver 維護。它通過固定的優先級鏈決定每一個工具調用,確保高危操作無法被繞過。

核心功能

  • 命令白名單 / 黑名單:基於 argv 分解進行匹配,支持遞歸解析 sh -c/bash -c、檢測管道、重定向目標以及遞歸/強制刪除指令。
  • 拒絕優先:一旦匹配拒絕規則,其優先級高於任何允許規則。
  • 會話授權:提供精確的 (工具, 規範指紋) 授權,支持 TTL 和 maxUses。不同的目標無法複用授權。子代理可以繼承授權,但無法自行簽發。
  • 純函數規則引擎:支持 glob/regex 編譯,帶有 ReDoS 邊界,規則格式錯誤時 loud fail,並利用源碼哈希進行編譯緩存。
  • 審計:每個決策都記錄爲 {ignorable:true} 事件及其 callId,模型可見的原因與記錄結果一致。
  • 自動審查 tier:包含 permissive 和 permissive-full 兩種模式。這是一種獨立的審批模式(介於只讀和完全訪問之間),前端僅顯示一個開關,後端策略可組合配置。permissive-full 變體會移除內置的文件沙箱。
  • 沙箱升級自動回答:當沙箱升級請求從 shell 內部發出時,插件會自動回答,此時門禁插件本身不會看到該調用,但會記錄關聯的 callId。
  • 分級風險 llmAssist:使用兼容 OpenAI 格式的 LLM 對 ask 進行評級。高危類別(刪除、憑證、遠程、系統、批量)始終詢問,中性類別進入裁決學習。
  • 裁決學習:經過人工批准並實際執行的中性風險操作,在達到閾值後,完全相同的操作(指紋匹配)將被自動允許。
  • 決策事件流:每個決策追加到 JSONL 流中,瀏覽器端以通知條形式展示,並在對話視圖的“審批記錄”標籤頁中按時間倒序顯示。

決策流程

插件按優先級順序對工具調用進行裁決:

階段 決策 說明
P0 deny 確定性硬拒絕:憑證材料、受保護路徑變更、危險 Shell
P1 allow 精確的、有界的 會話授權
P2 deny/allow/ask 靜態規則鏈:先黑名單,再白名單,最後詢問
P3 allow/deny/ask 可選的 LLM 語義分類器(默認關閉)
P4 ask 官方審批接口

關鍵點:嚴格“失敗即關閉”。P0 的決策不會被任何後續步驟(授權、規則、分類器或人工)覆蓋。

安裝與啓用

首先確保你的環境中已安裝 DeepSeek Harness。

dsh plugin --profile web add dsh-perm-gate

安裝完成後,在 cordis.yml 中添加插件配置:

- id: dsh-perm-gate
  name: dsh-perm-gate
  config:
    rulesFile: ./permissions.yaml   # 可選,默認爲 $DSH_HOME/perm-gate/rules.yml
    dshHome: $DSH_HOME              # 受保護目標檢查的根目錄
    defaultAction: ask              # allow | ask | deny
    gatePresets: [permissive, permissive-full]   # 啓用自動審查的層級
    sessionSweep: true              # 每小時清理歸檔/失效會話的授權數據

典型用法

插件內置了一個預設的拒絕關鍵詞黑名單(繼承自 dsh-approval-gate),包含 rm -rf、push --force、drop table、mkfs、git reset --hard、docker system prune 等。

這些關鍵詞會不區分大小寫地匹配調用文本,且在白名單、授權和 LLM 判定之前生效。你可以直接在設置卡片中編輯此列表,預設條目會被標記,點擊“恢復預設”即可一鍵還原。

兼容性與注意

  • DSH 版本兼容性:支持 DSH 1.x(遺留分支)、2.x(主分支)和 5.x(0.2.0 線)。
  • 語言包限制:v2.0.0 版本包含 ja/ko 字典,但官方 DSH 的 LocaleRuntime 僅暴露 zh / en(LOCALE_IDS = ["zh", "en"])。在官方 DSH 上直接選擇 ja/ko 會報錯 locale "<id>" is not registered。如需使用日語或韓語,需要 fork DSH 更新 locale-settings.ts 和 client/index.ts 中的 LOCALES 標籤,然後重新構建。
  • 沙箱升級:沙箱升級自動回答在 shell 內部運行,門禁插件本身無法直接感知該操作,但會記錄 callId 以供追溯。
  • 文件沙箱移除:permissive-full 變體會移除內置的文件沙箱,這允許 git clone、Cygwin 或 ConPTY 等需要命名管道的操作通過。

結尾

dsh-perm-gate 提供了一套統一的權限門禁機制,從硬性拒絕到語義分析,再到學習型自動批准,覆蓋了從安全到效率的完整需求。它不依賴複雜的跨插件版本管理,適合需要細粒度控制和可追溯審計的開發場景。

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

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

小夜