DSH 插件 dsh-auto-approval-plugin:在 Workspace Write 与 Full access 之间加入自动审批档

前言

在 DeepSeek Harness(DSH)里,Workspace WriteFull accessdanger-full-access)之间常常缺一档:前者对可信区外的操作仍会不断询问,后者则把批准策略交给 never。如果你希望把“明确无害”的调用和“已配置可信区”内的目标自动通过,同时其他请求继续交给人工确认,可以用 StyxNether 维护的 DSH 插件 dsh-auto-approval-plugin

这是什么

dsh-auto-approval-plugin 是一个 DSH 权限审批插件。它给 DSH 增加一个 auto-approval 预设档位,位置在 Workspace WriteFull access 之间。

已核实的插件信息如下:

  • 名称:StyxNether/dsh-auto-approval-plugin
  • 许可证:MIT
  • package.json 版本:2.1.0
  • 核心能力:自动批准无害命令和操作,尤其是目标位于已配置可信区内的请求;可信区可以不在当前 workspace 中
  • 对不满足自动批准条件的请求,不拒绝,继续交给部署中的人工确认方

它不是把 DSH 直接切换到全权限,而是在 approval/request 路径上加入一层自动判定。

核心能力

这个插件围绕 DSH 的审批路径工作,主要能力包括:

  1. 在 DSH 的 approval/request 路径上注册 prepend listener,使其先于 Web 审批提示运行。
  2. 根据 session log 中记录的 tool/call 事件读取真实工具参数,例如命令文本、file_pathworkdir,不读取模型自己写的 justification 字符串。
  3. 对可信区路径包含关系使用 realpath 解析最深一级已存在祖先路径,避免 symlink 或 junction 把目标绕过可信区。
  4. 对自动批准的请求返回 allowed-once,并在 session log 中写入 approval/askedapproval/decided: allowed-once
  5. 对未自动批准的请求调用 next(),交回人工确认方。插件本身不会拒绝任何请求。
  6. 提供 General settings → Permission 默认档位,以及当前会话立即切换命令 /permission auto-approval
  7. 提供 Settings → Auto Approval 页面,包含总开关、作用范围、可信区编辑、harmless/dangerous pattern 表、决策长度限制、日志开关和最近决策记录。
  8. 支持 mode: gatedmode: globalmode: off
  9. 支持配置项:trustedAreasharmlessPatternsdangerousPatternsmaxCommandCharslogDecisionstrustedHosts
  10. 读取旧配置时,会把 legacy 的 enabledrequireTrustedPreset 迁移为 mode

安装

下面两条命令都可以安装插件。第一条从 npm registry 安装,第二条从 GitHub 安装并建议用 <commit> 固定版本。

dsh plugin --profile <profile> add dsh-auto-approval-plugin
dsh plugin --profile <profile> add github:StyxNether/dsh-auto-approval-plugin#<commit>

其中 <profile><commit> 都是占位符,安装时需要替换为你自己的实际值。

安装后,插件的 bundle patch 会重写完整的 permission preset 表。升级 DSH 时,需要保持它与 @deepseek-ai/dsh-base 的表同步;如果目标行缺失,patch 会警告并跳过。

启用

启用方式有两种:

  1. 当前会话立即切换:
/permission auto-approval
  1. 设置未来会话默认值:进入 General settings → Permission,把默认档位设为 auto-approval

也可以进入 Settings → Auto Approval 页面配置。这个页面包含:

  • master switch:总开关
  • scope:作用范围,可选 Only when the session tier is Auto ApprovalGlobally, regardless of the session tier
  • trusted areas:可信区
  • harmless/dangerous pattern tables:无害/危险模式表
  • decision length limit:决策长度限制
  • log switch:日志开关
  • recent decisions:最近决策

Web settings 的修改会写入 settings.yamlauto-approval 分区,并立即生效。

如果 modeoffAuto Approval 档位会表现得和 Workspace Write 一样:档位仍然可见,但不会自动批准任何请求。

典型配置

mode 安装后默认为 gated,含义如下:

  • off:关闭自动审批
  • global:任意 session tier 下都自动审批符合条件的请求
  • gated:仅当前 session tier 为 auto-approval 时自动审批符合条件的请求

trustedAreas 默认为空。也就是说,可信区自动审批在添加路径之前不会生效。

基础组合配置可以写在 profile 的 composition 文件中:

~/.dsh/profiles/<profile>/cordis.patch.yml

示例结构如下:

- id: auto-approval
  config:
    # 安装后默认为 gated
    mode: gated

    # 可信区绝对路径列表;默认空表示可信区自动审批未启用
    trustedAreas: []

其他已核实的配置项包括:

harmlessPatterns
dangerousPatterns
maxCommandChars
logDecisions
trustedHosts

其中:

  • harmlessPatterns:用于匹配无害命令或操作
  • dangerousPatterns:匹配后交由人工确认,插件不会拒绝
  • maxCommandChars:决策长度限制
  • logDecisions:决策日志开关
  • trustedHosts:控制允许访问 configuration HTTP API 的非 loopback 主机;loopback 始终允许,cross-site 请求会被拒绝

自动批准如何工作

下面的流程对应插件在 approval/request 路径上的处理顺序:

  1. DSH 发起需要审批的请求。
  2. 插件的 prepend listener 先于 Web approval prompt 运行。
  3. 插件通过 callId 查找 session log 中记录的 tool/call 事件。
  4. 插件读取真实工具参数,而不是模型写的 justification。
  5. 纯决策模块判断请求是 allow 还是 defer
  6. 如果是 allow,返回 allowed-once,请求不会进入人工确认 UI。
  7. 如果是 defer,调用 next(),继续由部署中的人工确认方决定。

需要注意,自动批准不是永久授权。DSH sandbox 仍然约束所有非提权调用;一次自动批准的调用,只是让那一次调用以请求所需的更宽模式运行,session 的 standing tier 不变。

适用场景与注意

这个插件适合已经接受 DSH 人工审批成本、但希望对少数可验证请求减少重复确认的场景。它不是安全边界,只是范围控制:它只自动批准一个较窄、可验证的请求类别,并自动替人完成审批步骤。

使用前需要注意:

  1. 不要在那些你不愿意信任人工操作者执行命令的机器或 session 上使用。
  2. 插件不会拒绝请求;未自动批准的请求会继续走人工确认。
  3. trustedAreas 默认空,未添加可信区前,可信区自动审批不会生效。
  4. trustedHosts 会影响 configuration HTTP API 的非 loopback 访问,修改前应先确认来源主机。
  5. 作为 DSH 插件,它随 DSH 运行并可能让某一次调用以更宽模式执行;安装前建议先检查源码和 MIT 许可证。
  6. 升级 DSH 时,需要检查 bundle patch 是否与 @deepseek-ai/dsh-base 的 permission preset 表同步。

链接

  • 目录页:https://www.skillhub.cn/plugins/StyxNether/dsh-auto-approval-plugin
  • GitHub:https://github.com/StyxNether/dsh-auto-approval-plugin
羽毛球分组比赛记分
小程序二维码

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

小夜