前言¶
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 | 文件全放行;操作按風險分級裁決 |
風險分級策略¶
插件定義了四檔風險策略:低、中、高、極高。判定順序爲:
- 硬拒絕:默認直接拒絕(人工不能批准),極高風險檔配
ask或password時改爲密碼批准通道。 - 高風險:非盤根遞歸/批量刪除、普通
git push走此檔,工作區內路徑豁免。 - 工作區內結構放行:寫操作且目標在會話工作區內,受保護目標除外(如
~/.dsh、憑據)。 - 允許規則:常規 git、包管理器查詢、語言運行時等。
- LLM 裁判:可開關的語義裁決。
- 四檔策略:根據風險級別應用對應的低/中/高/極高策略(值可選
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 提供了精細化的權限控制能力,適合需要嚴格審計和風險分級的生產環境。通過拆分沙箱與審批維度,提供了比單一預設更靈活的配置方式。