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 倉庫。

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

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

小夜