dsh-auto-approver: DeepSeek Harness 可配置自动批准插件

前言

DeepSeek Harness 在执行文件写入、命令执行等特权操作前,通常会要求人工批准。在受信环境或已知安全的工具子集中,这些提示会带来干扰。该插件在 UI 或中继推送提示之前拦截 approval/request 事件,根据策略、Hermes Pro 语义裁决或人工自动回答,并记录所有决策。它与 dsh-reset-handoff 互为镜像:前者委托重启给外部运维代理,后者委托批准给本地策略和 Hermes。

核心功能

  1. 事件拦截:拦截 approval/request 事件(可选拦截 ask_user_question)。
  2. 自动裁决:通过规则层、Hermes Pro 语义裁决或人工进行自动回答。
  3. 审计日志:记录所有决策,格式为 JSON Lines。
  4. 交互式拒绝循环:当策略拒绝时,将原因反馈给请求会话,允许代理重试。

安装与启用

通过官方插件命令安装:

dsh plugin --profile <profile> add github:nicecx/dsh-auto-approver

安装后,需要在配置文件中注册并设置参数。

配置方式

在 cordis.patch.yml 中配置:

- id: dsh-auto-approver
  name: 'dsh-auto-approver'
  config:
    mode: 'hermes'           # allow-all | allowlist | hermes | off
    allowlist: []            # 白名单工具,hermes 模式下直接通过
    denyAlways: []           # 黑名单工具,最高优先级,Hermes 无法覆盖
    denyReasons: {}          # 拒绝时的原因文本
    hermesModel: 'deepseek-v4-pro'   # 判决模型
    hermesTimeoutSecs: 90    # 超时时间,超时或失败则人工批准
    feedbackOnReject: true   # 是否将拒绝原因反馈给请求会话
    qnaMode: 'off'           # 'hermes' 表示用 Hermes 回答用户提问,'off' 表示人工
    userGranted: []          # 用户授权信号(软性背书),非硬性绕过
    logPath: ''              # 审计日志路径(默认 ~/.dsh/auto-approver.log)

工作模式

插件支持四种模式:

  • allow-all:自动批准所有操作(包括 danger-full-access)。仅限完全受信环境。
  • allowlist:仅自动批准白名单中的工具,其余操作交由人工批准。
  • hermes:结合规则层(denyAlways/allowlist)与 Hermes Pro 语义裁决。若 Hermes 不可用或超时,则回退到人工批准(fail-closed)。
  • off:插件不活动,所有操作均交由人工批准。

安全注意事项

  • allow-all 会自动授予所有权限,包括危险命令,使用时需确保环境完全受信。
  • denyAlways 具有最高优先级,Hermes 无法覆盖。
  • userGranted 是软性背书信号,不是绕过卡。denyAlways 依然优先于其他规则。
  • hermes 模式为 fail-closed(失败关闭),即不可用时不会静默通过,而是转人工。
  • 手动批准(在 iMessage 或 Web UI)始终覆盖策略。

审计日志

每个决策都会追加到审计日志文件中,默认路径为 ~/.dsh/auto-approver.log,格式为 JSON Lines:

{"ts":"...","sessionId":"...","toolName":"bash","reason":"...","callId":"...","decision":"allowed-once"}

结语

该插件通过拦截和策略裁决,减少了人工批准的噪音,同时通过审计日志保证了可追溯性。适合需要减少人工交互但在受控范围内运行的自动化场景。源码与详情可参考 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

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

小夜