前言¶
在 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-only、workspace-write、auto、danger-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 后,插件按以下顺序处理:
- 从会话日志找回对应
tool/call的原始参数,并读取最新一条真人用户消息(source.kind === "user"的文本,忽略插件消息)。消息不超过 2000 字符时完整加入证据;超过上限直接转人工,不做截断猜测。 - 用确定性危险清单检查 justification 和工具参数。混淆熔断会把带命令替换或进程替换的破坏性命令直接交给人工。
- 把命令、justification、目标沙箱模式、工作区路径和
latestUserMessage交给配置的分类模型。真人消息里的明确授权可帮助判定具体操作,但命令示例和引用本身不算执行授权。 - 只有模型严格返回
{"verdict":"approve"}时才返回allowed-once;其他情况全部交给下一位应答者。
内置危险清单覆盖破坏性 rm -rf、设备写入与格式化、强制推送、下载后直接送入 shell、破坏性 SQL、主机关机、对根路径递归 chmod 777、shell fork 炸弹、Terraform/Pulumi 销毁,以及把 rm、dd、mkfs、chmod 或 chown 与 $()、反引号或 <() 组合的混淆写法。LLM 无法推翻已命中的危险规则。
普通 git push 到用户自己的 fork 或工作分支属于例行候选;推送到 main、master、release、production、prod 等共享/生产类分支应转人工。--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-only 或 workspace-write。
社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-auto-approve 在 DSH 权限体系里补上了 workspace-write 与 danger-full-access 之间的中间档:沙箱不变,例行升级自动批,危险与不确定操作仍有人工兜底。若你正被频繁的沙箱升级弹窗打断,可以按上述步骤安装并在 Permissions 中切换到 Auto。
- 目录页:https://www.skillhub.cn/plugins/Jiao-XXX/dsh-auto-approve
- GitHub:https://github.com/Jiao-XXX/dsh-auto-approve