前言¶
在 DeepSeek Harness(DSH)里,Workspace Write 和 Full access(danger-full-access)之间常常缺一档:前者对可信区外的操作仍会不断询问,后者则把批准策略交给 never。如果你希望把“明确无害”的调用和“已配置可信区”内的目标自动通过,同时其他请求继续交给人工确认,可以用 StyxNether 维护的 DSH 插件 dsh-auto-approval-plugin。
这是什么¶
dsh-auto-approval-plugin 是一个 DSH 权限审批插件。它给 DSH 增加一个 auto-approval 预设档位,位置在 Workspace Write 与 Full access 之间。
已核实的插件信息如下:
- 名称:
StyxNether/dsh-auto-approval-plugin - 许可证:MIT
package.json版本:2.1.0- 核心能力:自动批准无害命令和操作,尤其是目标位于已配置可信区内的请求;可信区可以不在当前 workspace 中
- 对不满足自动批准条件的请求,不拒绝,继续交给部署中的人工确认方
它不是把 DSH 直接切换到全权限,而是在 approval/request 路径上加入一层自动判定。
核心能力¶
这个插件围绕 DSH 的审批路径工作,主要能力包括:
- 在 DSH 的
approval/request路径上注册prependlistener,使其先于 Web 审批提示运行。 - 根据 session log 中记录的
tool/call事件读取真实工具参数,例如命令文本、file_path、workdir,不读取模型自己写的 justification 字符串。 - 对可信区路径包含关系使用
realpath解析最深一级已存在祖先路径,避免 symlink 或 junction 把目标绕过可信区。 - 对自动批准的请求返回
allowed-once,并在 session log 中写入approval/asked与approval/decided: allowed-once。 - 对未自动批准的请求调用
next(),交回人工确认方。插件本身不会拒绝任何请求。 - 提供
General settings → Permission默认档位,以及当前会话立即切换命令/permission auto-approval。 - 提供
Settings → Auto Approval页面,包含总开关、作用范围、可信区编辑、harmless/dangerous pattern 表、决策长度限制、日志开关和最近决策记录。 - 支持
mode: gated、mode: global、mode: off。 - 支持配置项:
trustedAreas、harmlessPatterns、dangerousPatterns、maxCommandChars、logDecisions、trustedHosts。 - 读取旧配置时,会把 legacy 的
enabled或requireTrustedPreset迁移为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 会警告并跳过。
启用¶
启用方式有两种:
- 当前会话立即切换:
/permission auto-approval
- 设置未来会话默认值:进入
General settings → Permission,把默认档位设为auto-approval。
也可以进入 Settings → Auto Approval 页面配置。这个页面包含:
- master switch:总开关
- scope:作用范围,可选
Only when the session tier is Auto Approval或Globally, regardless of the session tier - trusted areas:可信区
- harmless/dangerous pattern tables:无害/危险模式表
- decision length limit:决策长度限制
- log switch:日志开关
- recent decisions:最近决策
Web settings 的修改会写入 settings.yaml 的 auto-approval 分区,并立即生效。
如果 mode 为 off,Auto 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 路径上的处理顺序:
- DSH 发起需要审批的请求。
- 插件的
prependlistener 先于 Web approval prompt 运行。 - 插件通过
callId查找 session log 中记录的tool/call事件。 - 插件读取真实工具参数,而不是模型写的 justification。
- 纯决策模块判断请求是
allow还是defer。 - 如果是
allow,返回allowed-once,请求不会进入人工确认 UI。 - 如果是
defer,调用next(),继续由部署中的人工确认方决定。
需要注意,自动批准不是永久授权。DSH sandbox 仍然约束所有非提权调用;一次自动批准的调用,只是让那一次调用以请求所需的更宽模式运行,session 的 standing tier 不变。
适用场景与注意¶
这个插件适合已经接受 DSH 人工审批成本、但希望对少数可验证请求减少重复确认的场景。它不是安全边界,只是范围控制:它只自动批准一个较窄、可验证的请求类别,并自动替人完成审批步骤。
使用前需要注意:
- 不要在那些你不愿意信任人工操作者执行命令的机器或 session 上使用。
- 插件不会拒绝请求;未自动批准的请求会继续走人工确认。
trustedAreas默认空,未添加可信区前,可信区自动审批不会生效。trustedHosts会影响 configuration HTTP API 的非 loopback 访问,修改前应先确认来源主机。- 作为 DSH 插件,它随 DSH 运行并可能让某一次调用以更宽模式执行;安装前建议先检查源码和 MIT 许可证。
- 升级 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