前言¶
DeepSeek Harness (DSH) 提供了 Read-only / Workspace / Write / Full Access 四种权限模式,但「是否弹窗询问用户」的逻辑仅支持 ask / never 两档。这在处理细粒度风险时往往过于粗糙,导致开发者需要在高频低危操作中频繁点击确认。
dsh-auto-approval 插件为 DSH 增加了第五种姿态:Guardian 模式。它引入了一个 LLM 子代理,在触发弹窗前先评估风险并验证本地状态。低风险操作将直接放行,不确定的操作则照常询问。
核心功能¶
LLM 风险评估与会话分析¶
插件模仿 Codex 的 “Approve for me” 机制。裁判会读取会话记录,将其作为「不可信证据」进行注入,判断用户是否真正授权了当前操作。
本地状态验证¶
裁判在判断前可调用三个只读工具验证本地文件系统:
* read_file:读取文件内容
* list_dir:列出目录项
* stat_path:查看路径状态
这解决了「用户是否真的授权删除一个不存在的文件」等逻辑判断问题。
四字段裁决机制¶
裁判输出包含四个维度的结论:
* risk_level:风险等级
* user_authorization:用户授权度
* outcome:放行或拦下
* rationale:判定理由
只有明确判定为安全的操作才会静默执行。
安装与启用¶
安装¶
下载对应的 .tgz 文件后执行:
dsh plugin --profile web add dsh-auto-approval-<version>.tgz
启用与配置¶
安装后需要重启 DSH。启用方式有两种:
1. 界面操作:在输入框工具列表中,找到权限模式开关旁的 Auto 药丸,点击开启。
2. 配置文件:在 settings.yaml 中配置 auto-approval 命名空间,或通过「设置 -> Auto 审批」面板进行配置。若要默认关闭,可在配置中设置 enabled: false。
技术细节与注意事项¶
Fail-closed 设计¶
这是插件的安全基石。如果裁判出现错误、超时(默认 90 秒)、返回无法解析的内容或步数耗尽,系统会自动降级为人工弹窗。
模型要求¶
用于裁判的模型必须支持 Function Calling。如果模型不支持工具调用,插件将退化为简单的文本判断。
UI 体验¶
判定期间界面无反馈,最坏情况会出现 90 秒的超时延迟。这是设计取舍,并非卡死。
适用范围¶
插件作用于整个进程,对所有会话(包括子 Agent)生效。
安全边界¶
由于裁判工具支持读取绝对路径,请勿在共享机器上开启此功能,除非你完全信任本地文件系统的安全策略。