前言¶
在 DSH Auto 会话里,工具调用往往需要审批。已有做法通常会依赖 workspace-write 沙箱和提权审批来保持执行边界;dsh-autogate 在这之上增加 auto-ask 半自动与 auto 全自动两档权限,目标是减少人工审批,而不是放宽沙箱。
下面介绍这个插件的定位、决策机制、安装方式、配置项和需要注意的安全边界。
这是什么¶
wangxing-git/dsh-autogate 是 wangxing-git 维护的 DeepSeek Harness 自动审批插件。
它的一句话定位是:在 workspace-write 沙箱之上增加「半自动(auto-ask)+ 全自动(auto)」两档权限,采用「确定性规则 + LLM 安全审批 +(半自动下)被拒绝方主动人工审批」分层决策。保留工作区沙箱边界,不放宽为 full-access。
核心机制¶
L0 确定性规则¶
L0 层做零成本 allow/deny 判断,不依赖 LLM。
已核实的能力覆盖以下场景:
- 只读操作
- 会话状态
- 工作区内编辑与删除
build/testrun_code容器
这一层的作用是:能由规则直接判断的调用,先由规则判断,避免每次都进入 LLM 审批。
L1 LLM 安全审批¶
L1 层面向「沙箱不拦截但语义危险」的操作,由 LLM 做 allow/deny 裁决。
这一层不改变普通调用的沙箱边界:普通调用保持 workspace-write,L0/L1 决策不放宽沙箱。
L2 人工审批或最终裁决¶
L2 层对应人工兜底。
两种模式的差异主要在 L2:
auto-ask:半自动模式,保留人工弹窗。auto:全自动模式,LLM 裁决为最终决定。
安全策略¶
fail-closed¶
插件采用 fail-closed 策略:分类器异常、超时、无路由或格式错误一律拒绝。
这意味着 LLM 分类器不可用时,不会默认放行,而是倾向拒绝,以减少误放行。
输入脱敏与标签隔离¶
分类器输入会经过脱敏,并使用 <untrusted> / <user-authority> 标签隔离,同时内置注入防御。
这属于提示词注入层面的软防御,可以抬高注入门槛,但不能彻底消除注入风险。
非 Auto 会话行为¶
非 Auto 会话原样放行,不改变官方行为。
审批轨迹¶
审批轨迹 UI 会注入 shell.overlay 槽位。
已核实的轨迹能力包括:
- 显示最近 50 条记录
- 按会话隔离
- 每 2 秒轮询
trailRPC
showTrail: false 可以隐藏右下角审批轨迹浮窗,并停止轮询 trail RPC;服务端轨迹仍会记录。
轨迹为进程级、仅内存保存,dsh 重启即清空,从不持久化。
安装¶
安装前请先确认:插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。资料未明确许可证字段,需要在仓库中自行确认。
1、从 GitHub 安装:
dsh plugin --profile web add github:wangxing-git/dsh-autogate
2、如果 dsh 不在 PATH 中,可以使用:
npx @deepseek-ai/dsh plugin --profile web add github:wangxing-git/dsh-autogate
3、重启 dsh。
配置¶
配置经 DSH settings 服务写入 $DSH_HOME/settings.yaml 的 autogate 段,并支持热重载。未挂载 settings 服务时,会回退 cordis.patch.yml 的 entry config。
基础示例:
autogate:
preflight: false
presetName: auto-ask
fullAutoPresetName: auto
各配置项说明如下:
preflight:默认false。设为false时,跳过沙盒前普通确定性规则 + LLM 分类;硬 deny 与审批请求预审仍生效。设为true时,恢复完整沙盒前拦截。presetName:半自动模式预设键,默认auto-ask。fullAutoPresetName:全自动模式预设键,默认auto。showTrail:设为false时,隐藏右下角审批轨迹浮窗并停止轮询trailRPC;服务端轨迹仍记录。
也可以通过 DSH 设置卡读写官方 settings API(ctx.connection.api.settings 的 describe / mutate);审批轨迹面板经 /autogate RPC 端点 trail 拉取。
适用场景与注意¶
适合在 DSH Auto 会话中减少人工审批,并且希望保留 workspace-write 沙箱边界的场景。
需要注意以下限制:
- 这个插件是「减少人工审批的决策层」,不是安全边界。真正执行边界仍是 DSH
workspace-write沙箱及其提权审批。 - L1 LLM 分类器是启发式,可能误判。fail-closed 可以减少误放行,但无法消除误判。
- 提示词注入防御是软防御,可抬高注入门槛,但无法彻底消除。
- 静态路径检查存在 TOCTOU 窗口:符号链接可能在检查通过后、写入前被重新指向。
- 全自动
auto模式下,LLM 裁决为最终决定、不再人工弹窗,仅建议在可信环境使用。 - L2 escalation 路径是一次性放宽:LLM 批准提权后,该次调用以请求的更宽沙箱(通常
full-access)运行。 - 审批轨迹仅保存在当前进程内存中,
dsh重启即清空,从不持久化。 package.json显示 version0.2.0,enginesnode >=22.19.0,platformweb。
链接¶
- GitHub:https://github.com/wangxing-git/dsh-autogate
- 社区目录页:https://www.skillhub.cn/plugins/wangxing-git/dsh-autogate