DSH(DeepSeek Harness)通過沙箱機制限制 Agent 的執行權限。當沙箱攔截某條命令並請求提升權限(如提升至 danger-full-access 檔位)時,通常需要人工審批。手動審批效率低,且無法實現基於命令特徵的自動化放行。
dsh-approve-prefix 插件通過分析命令行的前綴,在滿足特定條件時自動放行提權請求,同時引入會話級“夜間模式”管理審批流。
插件簡介¶
- 名稱:
dsh-approve-prefix - 作者:
azazo1 - 分類:
admin-security - 定位:通過前綴匹配實現 DSH 沙箱提權請求的自動化放行。
該插件解決了 DSH 提權審批請求通常只包含 toolName 和 reason 而不包含命令原文的問題。它將命令記錄插入到審批瀑布流的最前面,通過確定性規則(前綴匹配)替代模型的不確定性判斷。
核心功能¶
- 前綴自動放行:僅當提權請求來自
bash或pwsh等工具,且命令爲“恰好一條簡單命令”(無管道、重定向、鏈式操作符)且 argv 命中放行前綴時,自動放行。 - 夜間模式:提供會話級開關。開啓後,非放行前綴的提權請求、其它插件的審批詢問(如 Chrome 插件的首次彈窗)將直接拒絕,不再彈出卡片。
- 命令過濾:管道(
|)、鏈式(;,&&)、重定向(>,<)或命令替換($(...))的命令一律轉人工審批。 - 管理能力:支持靜態前綴、持久前綴與會話級臨時前綴配置,支持通過會話視圖 Tab 管理當前會話的臨時前綴。
安裝與啓用¶
安裝插件後必須重啓宿主進程(Host 與 Client 半邊)才能生效。
Web 端安裝¶
裝進 web profile:
dsh plugin --profile web add azazo1/dsh-approve-prefix
安裝完成後重啓 dsh web,刷新瀏覽器頁面即可。
依賴要求¶
插件依賴 DeepSeek Harness 引擎版本不低於 0.2.0-rc.1。
配置¶
配置位於 profile 的 cordis.patch.yml 中,字段均有默認值:
- insert:
- id: dsh-approve-prefix
name: dsh-approve-prefix
config:
prefixes: []
tools:
- bash
- pwsh
allowedEscalationModes:
- danger-full-access
| 字段 | 默認值 | 說明 |
|---|---|---|
prefixes |
[] |
靜態放行前綴表,默認爲空。 |
tools |
['bash', 'pwsh'] |
參與記錄與判定的工具名。 |
allowedEscalationModes |
['danger-full-access'] |
允許自動放行的提權檔位,默認僅 danger-full-access。 |
nightBlockedTools |
['ask_user_question'] |
夜間模式下直接拒絕的工具名列表。 |
nightExemptTools |
['exit_plan_mode'] |
即使在 nightBlockedTools 中也放行的例外。 |
nightCommand |
true |
是否註冊 /night 命令切換夜間模式。 |
典型用法¶
插件按“單條簡單命令”判定。以下示例中假設已配置前綴 gh api:
- 自動放行:
gh api user --jq .login
- 人工審批(包含管道):
gh api user | jq .login
- 人工審批(包含鏈式操作符):
gh api user; rm -rf /tmp/x
- 人工審批(包含重定向):
gh api user > /tmp/out.json
注意事項¶
- 重啓生效:修改配置或安裝插件後,必須重啓宿主進程才能使配置生效。
- Night 模式邏輯:開啓 Night 模式後,如果工具參數中寫了
approved: true但命令不符合放行前綴,請求會被拒絕,不會轉人工。 - Approved 字段含義:模型在 schema 中填寫的
approved: true是自檢聲明,用於完成條件覈對,不是批准請求,也不會改變 Night 狀態。 - 會話視圖管理:臨時前綴與會話視圖中的 Night 開關修改後需點“應用”纔會寫入 Host 內存。