dsh-auto-approve:在 Workspace Write 与 Full access 之间增加 Auto 权限档

前言

在 DeepSeek Harness(DSH)里做长任务时,权限预设往往要在两个极端之间取舍:workspace-write 每次沙箱升级都要人工点确认,打断频繁;danger-full-access 则完全放开,适合隔离环境,日常开发又不敢常开。

下面介绍社区插件 dsh-auto-approve。它在 DSH 原生三档权限中间插入 auto 档,沙箱边界与 workspace-write 相同,把例行升级交给分类模型一次性批准;命中确定性危险规则、分类器拿不准或失败时,仍走正常人工审批弹窗。

这是什么

dsh-auto-approve 由维护者 Jiao-XXX 发布,分类为 admin-security,当前版本 0.5.1,MIT 许可证,GitHub 约 9 stars。

插件通过 Cordis bundle 把权限预设表重述为四个档位,顺序为 read-onlyworkspace-writeautodanger-full-access——即在原有档位之间插入 auto,其余档位全部保留。不在 auto 档时,插件原样放行所有审批请求给后续应答者(Web UI、TUI 或 Desktop)。

定位上,auto 类似 Claude Code 的 auto mode 与 Codex 的 Auto-review mode:例行审批交给安全评审,危险或不确定时再交还人工。

权限档 沙箱范围 什么时候弹窗 适合场景
read-only 只读工作区 需要写入、联网或越界操作时 代码审阅、探索
workspace-write 可读写工作区;工作区外仍被隔离 每次升级都由人确认 常规开发
auto workspace-write 相同 例行升级自动批;危险/拿不准/失败时才问人 长任务、依赖安装
danger-full-access 不受工作区沙箱限制 不弹窗 隔离、可丢弃环境

核心功能

审批瀑布流

收到 auto 档的 approval/request 后,插件按以下顺序处理:

  1. 从会话日志找回对应 tool/call 的原始参数,并读取最新一条真人用户消息(source.kind === "user" 的文本,忽略插件消息)。消息不超过 2000 字符时完整加入证据;超过上限直接转人工,不做截断猜测。
  2. 用确定性危险清单检查 justification 和工具参数。混淆熔断会把带命令替换或进程替换的破坏性命令直接交给人工。
  3. 把命令、justification、目标沙箱模式、工作区路径和 latestUserMessage 交给配置的分类模型。真人消息里的明确授权可帮助判定具体操作,但命令示例和引用本身不算执行授权。
  4. 只有模型严格返回 {"verdict":"approve"} 时才返回 allowed-once;其他情况全部交给下一位应答者。

内置危险清单覆盖破坏性 rm -rf、设备写入与格式化、强制推送、下载后直接送入 shell、破坏性 SQL、主机关机、对根路径递归 chmod 777、shell fork 炸弹、Terraform/Pulumi 销毁,以及把 rmddmkfschmodchown$()、反引号或 <() 组合的混淆写法。LLM 无法推翻已命中的危险规则。

普通 git push 到用户自己的 fork 或工作分支属于例行候选;推送到 mainmasterreleaseproductionprod 等共享/生产类分支应转人工。--force / -f / --mirror、前导 +refspec 以及 git -C ... push --force 等 force-push 写法,无论目标分支为何都会在分类前命中危险清单。

前端适用性

插件宿主侧只依赖 dsh 的 approval/request 瀑布流与 permissionPresets 服务,与前端形态无关。

前端 支持 说明
Web(dsh web 完整支持 审批对话框、Auto 图标、/permission 切换均可用
TUI 支持 需在 profile settings 中设 permission.defaultPreset: auto;TUI 未接入 /permission 预设切换
Desktop 支持 与 Web 体验一致

可配置项

字段 默认值 含义
presetName auto 插件应答者生效的权限档名
provider null null 表示使用 Settings → Models 中的默认 provider
model null null 表示使用默认模型 id
classifierPrompt 内置默认提示 分类调用的完整 system prompt;配置值整体替换默认
timeoutMs 15000 分类调用超时(毫秒),超时安全回退到人工
extraDangerPatterns [] 追加到内置清单的大小写不敏感正则
dangerPatterns null null 保留内置清单;数组会整体替换

0.5.0 起默认提示采用「默认放行、命中列举顾虑才询问」姿态。若需旧版严格姿态,可将 README 中的严格档提示词填入 classifierPrompt

分类模型只需做 approve / ask 二元判断。若默认模型是大型推理模型,延迟与成本偏高,容易撞上 timeoutMs——可在会话里运行 /auto-report 查看 verdict=timeout 占比,并考虑指定更快模型或调高超时:

- id: auto-approve
  config:
    model: <你 API 中的快速模型 id>
    timeoutMs: 20000

安装与启用

DSH 需运行在受支持的 Node.js 版本上(>=22.19.0)。本包无运行时依赖,从 Git 安装时不需要授权 pnpm 执行构建。

从 GitHub 安装:

dsh plugin --profile web add github:Jiao-XXX/dsh-auto-approve

从本地 checkout 安装:

dsh plugin --profile web add ./dsh-auto-approve

重启 dsh web,在 Permissions 下拉框中选择 Auto

卸载:

dsh plugin --profile web remove dsh-auto-approve

典型用法

日常开发中,把权限档切到 Auto 后,安装依赖、下载只读资源、运行构建测试等例行沙箱升级会由分类器自动批准,无需每次点确认。涉及删库级操作、推送到生产分支、force-push 等场景仍会弹出人工审批。

排查分类器表现时,可在会话中运行 /auto-report,查看自动批准与转人工的分组统计。

适用场景与注意

适合需要长时间让智能体自主执行、又不想完全放开沙箱的 DSH 用户:依赖安装、多步重构、批量文件操作等长任务,在保留 workspace-write 沙箱边界的前提下减少审批打断。

安装前建议自行检查 GitHub 仓库 源码与 MIT 许可证。插件以当前 dsh 进程权限运行;auto 档虽比 danger-full-access 保守,但仍会把部分审批决策交给分类模型,敏感仓库或不可丢弃环境应优先使用 read-onlyworkspace-write

社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-auto-approve 在 DSH 权限体系里补上了 workspace-writedanger-full-access 之间的中间档:沙箱不变,例行升级自动批,危险与不确定操作仍有人工兜底。若你正被频繁的沙箱升级弹窗打断,可以按上述步骤安装并在 Permissions 中切换到 Auto

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

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

小夜