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

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

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

小夜