前言¶
在 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 的審批路徑工作,主要能力包括:
- 在 DSH 的
approval/request路徑上註冊prependlistener,使其先於 Web 審批提示運行。 - 根據 session log 中記錄的
tool/call事件讀取真實工具參數,例如命令文本、file_path、workdir,不讀取模型自己寫的 justification 字符串。 - 對可信區路徑包含關係使用
realpath解析最深一級已存在祖先路徑,避免 symlink 或 junction 把目標繞過可信區。 - 對自動批准的請求返回
allowed-once,並在 session log 中寫入approval/asked與approval/decided: allowed-once。 - 對未自動批准的請求調用
next(),交回人工確認方。插件本身不會拒絕任何請求。 - 提供
General settings → Permission默認檔位,以及當前會話立即切換命令/permission auto-approval。 - 提供
Settings → Auto Approval頁面,包含總開關、作用範圍、可信區編輯、harmless/dangerous pattern 表、決策長度限制、日誌開關和最近決策記錄。 - 支持
mode: gated、mode: global、mode: off。 - 支持配置項:
trustedAreas、harmlessPatterns、dangerousPatterns、maxCommandChars、logDecisions、trustedHosts。 - 讀取舊配置時,會把 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 會警告並跳過。
啓用¶
啓用方式有兩種:
- 當前會話立即切換:
/permission auto-approval
- 設置未來會話默認值:進入
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 路徑上的處理順序:
- DSH 發起需要審批的請求。
- 插件的
prependlistener 先於 Web approval prompt 運行。 - 插件通過
callId查找 session log 中記錄的tool/call事件。 - 插件讀取真實工具參數,而不是模型寫的 justification。
- 純決策模塊判斷請求是
allow還是defer。 - 如果是
allow,返回allowed-once,請求不會進入人工確認 UI。 - 如果是
defer,調用next(),繼續由部署中的人工確認方決定。
需要注意,自動批准不是永久授權。DSH sandbox 仍然約束所有非提權調用;一次自動批准的調用,只是讓那一次調用以請求所需的更寬模式運行,session 的 standing tier 不變。
適用場景與注意¶
這個插件適合已經接受 DSH 人工審批成本、但希望對少數可驗證請求減少重複確認的場景。它不是安全邊界,只是範圍控制:它只自動批准一個較窄、可驗證的請求類別,並自動替人完成審批步驟。
使用前需要注意:
- 不要在那些你不願意信任人工操作者執行命令的機器或 session 上使用。
- 插件不會拒絕請求;未自動批准的請求會繼續走人工確認。
trustedAreas默認空,未添加可信區前,可信區自動審批不會生效。trustedHosts會影響 configuration HTTP API 的非 loopback 訪問,修改前應先確認來源主機。- 作爲 DSH 插件,它隨 DSH 運行並可能讓某一次調用以更寬模式執行;安裝前建議先檢查源碼和 MIT 許可證。
- 升級 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