前言¶
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 提供了精细化的权限控制能力,适合需要严格审计和风险分级的生产环境。通过拆分沙箱与审批维度,提供了比单一预设更灵活的配置方式。