DSH 插件 dsh-auto-approval-plugin:在 Workspace Write 與 Full access 之間加入自動審批檔

前言

在 DeepSeek Harness(DSH)裏,Workspace Write 和 Full access(danger-full-access)之間常常缺一檔:前者對可信區外的操作仍會不斷詢問,後者則把批准策略交給 never。如果你希望把“明確無害”的調用和“已配置可信區”內的目標自動通過,同時其他請求繼續交給人工確認,可以用 StyxNether 維護的 DSH 插件 dsh-auto-approval-plugin。

這是什麼

dsh-auto-approval-plugin 是一個 DSH 權限審批插件。它給 DSH 增加一個 auto-approval 預設檔位,位置在 Workspace Write 與 Full access 之間。

已覈實的插件信息如下:

  • 名稱:StyxNether/dsh-auto-approval-plugin
  • 許可證:MIT
  • package.json 版本:2.1.0
  • 核心能力:自動批准無害命令和操作,尤其是目標位於已配置可信區內的請求;可信區可以不在當前 workspace 中
  • 對不滿足自動批准條件的請求,不拒絕,繼續交給部署中的人工確認方

它不是把 DSH 直接切換到全權限,而是在 approval/request 路徑上加入一層自動判定。

核心能力

這個插件圍繞 DSH 的審批路徑工作,主要能力包括:

  1. 在 DSH 的 approval/request 路徑上註冊 prepend listener,使其先於 Web 審批提示運行。
  2. 根據 session log 中記錄的 tool/call 事件讀取真實工具參數,例如命令文本、file_path、workdir,不讀取模型自己寫的 justification 字符串。
  3. 對可信區路徑包含關係使用 realpath 解析最深一級已存在祖先路徑,避免 symlink 或 junction 把目標繞過可信區。
  4. 對自動批准的請求返回 allowed-once,並在 session log 中寫入 approval/asked 與 approval/decided: allowed-once。
  5. 對未自動批准的請求調用 next(),交回人工確認方。插件本身不會拒絕任何請求。
  6. 提供 General settings → Permission 默認檔位,以及當前會話立即切換命令 /permission auto-approval。
  7. 提供 Settings → Auto Approval 頁面,包含總開關、作用範圍、可信區編輯、harmless/dangerous pattern 表、決策長度限制、日誌開關和最近決策記錄。
  8. 支持 mode: gated、mode: global、mode: off。
  9. 支持配置項:trustedAreas、harmlessPatterns、dangerousPatterns、maxCommandChars、logDecisions、trustedHosts。
  10. 讀取舊配置時,會把 legacy 的 enabled 或 requireTrustedPreset 遷移爲 mode。

安裝

下面兩條命令都可以安裝插件。第一條從 npm registry 安裝,第二條從 GitHub 安裝並建議用 <commit> 固定版本。

dsh plugin --profile <profile> add dsh-auto-approval-plugin
dsh plugin --profile <profile> add github:StyxNether/dsh-auto-approval-plugin#<commit>

其中 <profile> 和 <commit> 都是佔位符,安裝時需要替換爲你自己的實際值。

安裝後,插件的 bundle patch 會重寫完整的 permission preset 表。升級 DSH 時,需要保持它與 @deepseek-ai/dsh-base 的表同步;如果目標行缺失,patch 會警告並跳過。

啓用

啓用方式有兩種:

  1. 當前會話立即切換:
/permission auto-approval
  1. 設置未來會話默認值:進入 General settings → Permission,把默認檔位設爲 auto-approval。

也可以進入 Settings → Auto Approval 頁面配置。這個頁面包含:

  • master switch:總開關
  • scope:作用範圍,可選 Only when the session tier is Auto Approval 或 Globally, regardless of the session tier
  • trusted areas:可信區
  • harmless/dangerous pattern tables:無害/危險模式表
  • decision length limit:決策長度限制
  • log switch:日誌開關
  • recent decisions:最近決策

Web settings 的修改會寫入 settings.yaml 的 auto-approval 分區,並立即生效。

如果 mode 爲 off,Auto Approval 檔位會表現得和 Workspace Write 一樣:檔位仍然可見,但不會自動批准任何請求。

典型配置

mode 安裝後默認爲 gated,含義如下:

  • off:關閉自動審批
  • global:任意 session tier 下都自動審批符合條件的請求
  • gated:僅當前 session tier 爲 auto-approval 時自動審批符合條件的請求

trustedAreas 默認爲空。也就是說,可信區自動審批在添加路徑之前不會生效。

基礎組合配置可以寫在 profile 的 composition 文件中:

~/.dsh/profiles/<profile>/cordis.patch.yml

示例結構如下:

- id: auto-approval
  config:
    # 安裝後默認爲 gated
    mode: gated

    # 可信區絕對路徑列表;默認空表示可信區自動審批未啓用
    trustedAreas: []

其他已覈實的配置項包括:

harmlessPatterns
dangerousPatterns
maxCommandChars
logDecisions
trustedHosts

其中:

  • harmlessPatterns:用於匹配無害命令或操作
  • dangerousPatterns:匹配後交由人工確認,插件不會拒絕
  • maxCommandChars:決策長度限制
  • logDecisions:決策日誌開關
  • trustedHosts:控制允許訪問 configuration HTTP API 的非 loopback 主機;loopback 始終允許,cross-site 請求會被拒絕

自動批准如何工作

下面的流程對應插件在 approval/request 路徑上的處理順序:

  1. DSH 發起需要審批的請求。
  2. 插件的 prepend listener 先於 Web approval prompt 運行。
  3. 插件通過 callId 查找 session log 中記錄的 tool/call 事件。
  4. 插件讀取真實工具參數,而不是模型寫的 justification。
  5. 純決策模塊判斷請求是 allow 還是 defer。
  6. 如果是 allow,返回 allowed-once,請求不會進入人工確認 UI。
  7. 如果是 defer,調用 next(),繼續由部署中的人工確認方決定。

需要注意,自動批准不是永久授權。DSH sandbox 仍然約束所有非提權調用;一次自動批准的調用,只是讓那一次調用以請求所需的更寬模式運行,session 的 standing tier 不變。

適用場景與注意

這個插件適合已經接受 DSH 人工審批成本、但希望對少數可驗證請求減少重複確認的場景。它不是安全邊界,只是範圍控制:它只自動批准一個較窄、可驗證的請求類別,並自動替人完成審批步驟。

使用前需要注意:

  1. 不要在那些你不願意信任人工操作者執行命令的機器或 session 上使用。
  2. 插件不會拒絕請求;未自動批准的請求會繼續走人工確認。
  3. trustedAreas 默認空,未添加可信區前,可信區自動審批不會生效。
  4. trustedHosts 會影響 configuration HTTP API 的非 loopback 訪問,修改前應先確認來源主機。
  5. 作爲 DSH 插件,它隨 DSH 運行並可能讓某一次調用以更寬模式執行;安裝前建議先檢查源碼和 MIT 許可證。
  6. 升級 DSH 時,需要檢查 bundle patch 是否與 @deepseek-ai/dsh-base 的 permission preset 表同步。

鏈接

  • 目錄頁:https://www.skillhub.cn/plugins/StyxNether/dsh-auto-approval-plugin
  • GitHub:https://github.com/StyxNether/dsh-auto-approval-plugin
羽毛球分组比赛记分
小程序二维码

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

小夜