Andy8647/dsh-auto-approval--packages-dsh-auto-approval ↗★ 2
dsh-auto-approval
Automated tool-call approval for DeepSeek Harness: an `auto` tier for approval policy that classifies each tool call as allow / deny before dispatch
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Andy8647/dsh-auto-approval#484ad86be5c2585610a828bc42aa8a52df016e09&path:packages/dsh-auto-approval说明文档
阅读完整 README ↗dsh-auto-approval
DSH 权限自动审批插件:给 approval policy 加第三档 auto,classifier 对每个 tool call 做 allow / deny 两态决策(全托管,不转人工),再派发执行。对标 Claude Code automode / Codex "approve for me"。
这是 host 半。想在聊天输入栏看到实时状态 chip("AA on" / deny 计数),装 dsh-client-ui-auto-approval(client 半)。
工作原理
挂在 tools/pre-execute 瀑布最前(prepend: true),决策优先级 L0 deny > L1 判定(两态 allow/deny):
| 层 | 职责 | 默认 |
|---|---|---|
| L0 规则引擎 | deny 黑名单(含 legacy askPatterns,命中即 deny)+ 只读工具白名单,确定性、零成本 | ✅ 开 |
| L1 LLM classifier | 模糊地带:用户消息 + 当前 tool call 喂模型判意图(两阶段 fast→deep) | ⚪ 关 |
全托管两态决策:决策收敛为 allow/deny,不转人工。不确定的调用(原 askPatterns 命中、L1 判定 ASK、fail-closed)一律 deny——askPatterns 字段保留以兼容旧配置,语义已并入 deny。
硬保证:L0 deny 双保险(瀑布 listener + ctx.tools.guard() 单调 guard)、自毁护栏(killall/pkill/taskkill/Stop-Process 整类 deny,逃生通道 kill )、reason 不泄露规则、配置 fail-loud。
与沙箱 escalation 的关系:两层审批并存——沙箱管文件效应越界,本插件管调用本身危险性;带 escalation 参数的调用跳过 L1(L0 deny 不豁免),避免双重审批。
安装
插件已发布 npm(dsh-auto-approval),装的是构建产物,直接可用:
# 装到已有可用的 profile(⚠️ 别新建 profile:默认只有 base 层、无 UI,会静默挂起)
dsh plugin --profile web add dsh-auto-approval
# 重启 dsh
源码方式(开发/自建):clone 仓库后 dsh plugin --profile web add link://packages/dsh-auto-approval(依赖从 npm 安装,@deepseek-ai/* 运行时依赖由 dsh 本体提供)。