前言¶
在 DSH 里运行智能体时,工具调用的审批很容易陷入两个极端:每次调用都人工确认,或者放开权限减少打扰。前者影响效率,后者会放大误操作风险。
下面介绍 dsh-tiered-approval。它是为 DeepSeek Harness(DSH)写的分级自动审查插件,用静态规则、LLM 审查和人工确认三层裁决,替代“全确认”或“全放权”的简单做法。
这是什么¶
dsh-tiered-approval 是 Elaina-real 为 DSH 写的插件,采用 MIT 许可。它解决的是 DSH 工具调用审批问题:让安全且可恢复的调用减少弹窗,让不可逆操作被直接拦下,让拿不准的调用交给人工确认。
它不是一个独立的安全系统,而是 DSH 审批流程里的一个安全决策起点。使用它时,仍需要结合自己的威胁模型调整规则。
核心机制¶
静态规则安全网¶
静态规则是第一层,特点是确定性强、不调用模型。插件内置危险命令安全网,也允许追加 deny / allow 正则规则。
对于递归删除、格式化、强推 git、写系统目录、杀进程等不可逆操作,静态规则命中后会直接拒绝,不弹窗,也不调模型。
这一层的目标是先把高风险动作拦下来,避免把明显危险的调用交给后续审查。
LLM 审查员¶
静态规则没有裁决的调用会进入第二层:LLM 审查员。
审查员会对工具调用做判断,结果是 allow、deny 或 ask。审查帧会包含最近一条用户消息,用来辅助判断调用是否与用户意图一致。
如果审查不可用,或审查员给出 ask,流程会进入人工兜底。
人工兜底与省事档¶
人工兜底负责处理拿不准的调用,弹原生确认框让用户决定。
插件还提供两个可配置项:
autoApproveAligned:审查结果为allow,且用户指令与该调用高度对齐时,免弹窗放行。alignDeny:静态deny命中的不可逆操作,如果用户明确点名要做,可降级为人工确认,而不是直接硬拒。
审查强度会自动跟随 Access 选择器,包括 read-only、workspace-write、danger-full-access。
安装与启用¶
安装命令如下:
dsh plugin --profile web add dsh-tiered-approval
装完后需要在 cordis.patch.yml 中挂载插件,然后重启 DSH。最小配置如下:
# ~/.dsh/profiles/<profile>/cordis.patch.yml
- insert:
- id: tiered-approval
name: 'dsh-tiered-approval'
验证安装时,运行:
dsh --profile web --dump-config
确认输出中出现 dsh-tiered-approval 层。
典型用法¶
测试静态安全网时,可以执行一次包含危险递归删除的命令。示例命令如下:
Remove-Item ... -Recurse -Force
预期结果是:该调用被直接拒绝,且不弹人工确认框。
运行期间查看审查状态,使用:
/auto-review status
可以看到决策计数和最近决策。
升级和移除命令如下:
dsh plugin --profile web add dsh-tiered-approval@latest
dsh plugin --profile web remove dsh-tiered-approval
配置要点¶
常用配置项包括:
deny:追加硬拒绝规则。allow:追加自动放行规则。answerer.allowModes:审批应答者允许自动批准的升权模式。answerer.allowJustifications:升权理由命中时允许自动批准的正则。answerer.denyJustifications:升权理由命中时自动拒绝的正则。autoApproveAligned:省事档开关,审查allow且用户指令高度对齐时免弹窗放行。alignDeny:静态deny命中的不可逆操作在用户明确点名时降级为人工确认。
审查强度会跟随 Access 选择器变化。如果切到 Full access,预设会把审批策略设为 never,此时审查员给出 ask 会变成确定性拒绝。若需要保留人工兜底,就不要切 Full access。
适用场景与注意¶
适合:希望减少逐次确认、但不想直接放开全部权限的 DSH 使用场景。尤其适合在 read-only、workspace-write、danger-full-access 之间需要更细粒度审批判断的场景。
使用前注意:
- 这是纯 vibe coding 产物,未经安全审计、与 DeepSeek 官方无关、不提供担保。
- 插件代码在
node_modules,HMR 不追踪;修改代码后必须重启。 - 开启审查时,工具完整参数和最近一条用户消息会发给审查模型;审查帧可能包含敏感文本。
- 插件是安全决策起点,不是信任边界。安装前应阅读
lib/index.js,按自己的威胁模型调整规则,并在真正在意的事情上保留人工兜底。 - Windows 的 pwsh 规则集已实测;POSIX 的 bash 规则集为理论兼容,未实测。
链接¶
- 项目目录页:https://www.skillhub.cn/plugins/Elaina-real/dsh-tiered-approval
- GitHub:https://github.com/Elaina-real/dsh-tiered-approval
以上链接为项目发布地址和代码仓库地址,不代表 DeepSeek 官方推荐或官方应用商店。