dsh-permission-matrix:DeepSeek Harness 權限矩陣插件

前言

DeepSeek Harness (DSH) 的權限控制通常集中在幾個固定檔位。dsh-permission-matrix 插件將權限拆分爲“沙箱(讀寫邊界)”和“審批(操作批准方式)”兩個獨立維度,並重新組合爲 9 種可切換的預設。它保留了核心思路(規則 + LLM 裁判 + 硬拒絕),但把預設表拆成了完整的組合矩陣,支持風險分級與審計。

核心功能

插件將 3 種沙箱模式與 4 種審批策略組合,生成 9 種執行類型。

9 種預設

ID 顯示名 沙箱 審批 行爲
ro-human 工作區只讀權限 + 人工審批 read-only ask 寫入被沙箱拒絕,越權操作彈人工確認
ro-deny 工作區只讀權限 + 自動拒絕 read-only never 寫入一律拒絕,無人審批環節
ww-human 工作區讀寫權限 + 人工審批 workspace-write ask 工作區內可寫;越界操作彈人工確認(默認)
ww-classify 工作區讀寫權限 + 自動風險審批 workspace-write ask 工作區內可寫;越界與高風險操作按風險分級裁決
ww-deny 工作區讀寫權限 + 自動拒絕 workspace-write never 工作區內可寫;越界操作一律拒絕
fa-human 全電腦讀寫權限 + 人工審批 danger-full-access ask 文件全放行;需批准的操作交給人工
fa-deny 全電腦讀寫權限 + 自動拒絕 danger-full-access never 文件全放行;需批准的操作一律拒絕
fa-auto 全電腦讀寫權限 + 自動同意 danger-full-access ask 文件全放行;需批准的操作自動放行(硬拒絕保護)
fa-classify 全電腦讀寫權限 + 自動風險審批 danger-full-access ask 文件全放行;操作按風險分級裁決

風險分級策略

插件定義了四檔風險策略:低、中、高、極高。判定順序爲:

  1. 硬拒絕:默認直接拒絕(人工不能批准),極高風險檔配 ask 或 password 時改爲密碼批准通道。
  2. 高風險:非盤根遞歸/批量刪除、普通 git push 走此檔,工作區內路徑豁免。
  3. 工作區內結構放行:寫操作且目標在會話工作區內,受保護目標除外(如 ~/.dsh、憑據)。
  4. 允許規則:常規 git、包管理器查詢、語言運行時等。
  5. LLM 裁判:可開關的語義裁決。
  6. 四檔策略:根據風險級別應用對應的低/中/高/極高策略(值可選 allow/deny/ask/password)。

極高風險策略不支持 allow。低檔策略可設爲 password。

密碼批准

“密碼批准”是第四種批准方式,與放行/拒絕/轉人工並列。當策略設爲 password 時,操作會被掛起,由本插件要求輸入批准密碼。輸入正確當場執行,輸入錯誤或超時按拒絕處理。

密碼以 scrypt 哈希存儲(N=16384, r=8, p=1),明文不落盤。未設置密碼時,所有 password 策略均拒絕。批准後會簽發一個綁定指紋的一次性令牌。

其他功能

  • 審計日誌:JSONL 格式,記錄每次裁決的 outcome。
  • Git 快照:放行前自動創建 git 快照,支持節流。
  • 機器人支持:社交渠道會話可用獨立默認預設(robotDefaultPreset),按工作區匹配。

安裝與啓用

確保環境滿足 Node >= 20。安裝命令如下:

dsh plugin --profile <profile> add dsh-permission-matrix

注意:若同時裝有 dsh-auto-classifier,請將其停用,兩者會爭搶同一個 permission 行。

# <profile>/cordis.patch.yml
- id: auto-classifier
  name: dsh-auto-classifier
  disabled: true
  config: { enabled: false, presetName: auto }

配置

在設置頁或 cordis.patch.yml 的 permission-matrix 行中配置:

  • enabled:總開關,默認 true。
  • takeover:預設映射,如 { "default": "ww-human" }。
  • riskPolicies:四檔策略,如 {low: "allow", medium: "deny", high: "deny", hard: "deny"}。
  • approvalPasswordHash:設置批准密碼的 scrypt 哈希(設置頁寫入,不在可寫白名單)。
  • approvalPasswordTtlMs:密碼批准窗口,默認 300000ms。
  • llmJudge:LLM 裁判開關,默認 true。
  • robotDefaultPreset:機器人會話默認預設,默認 fa-auto。
  • robotWorkspaces:機器人會話工作區列表,默認空。
  • auditLog:審計開關,默認 true。
  • auditFile:審計文件路徑,默認 ~/.dsh/permission-matrix/audit.jsonl。

配置非法(如極高風險檔配 allow)會在加載期響亮失敗。

審計

插件記錄每次決策的 JSONL 行,包含時間、會話 ID、預設、工具、目標、風險、規則、來源、決策、結果等字段。

架構與測試

插件通過三個鉤子實現功能:tools/pre-execute、approval/request、session/created。核心邏輯包括決策、規則匹配、密碼批准、LLM 裁判、Git 快照與審計。

測試覆蓋 69 條用例,包括硬拒絕、高風險分派、工作區內豁免、拼接執行繞過、誤攔迴歸、四檔策略、密碼批准端到端等場景。

總結

該插件爲 DSH 提供了精細化的權限控制能力,適合需要嚴格審計和風險分級的生產環境。通過拆分沙箱與審批維度,提供了比單一預設更靈活的配置方式。

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

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

小夜