dsh-auto-approve:在 Workspace Write 與 Full access 之間增加 Auto 權限檔

前言

在 DeepSeek Harness(DSH)裏做長任務時,權限預設往往要在兩個極端之間取捨:workspace-write 每次沙箱升級都要人工點確認,打斷頻繁;danger-full-access 則完全放開,適合隔離環境,日常開發又不敢常開。

下面介紹社區插件 dsh-auto-approve。它在 DSH 原生三檔權限中間插入 auto 檔,沙箱邊界與 workspace-write 相同,把例行升級交給分類模型一次性批准;命中確定性危險規則、分類器拿不準或失敗時,仍走正常人工審批彈窗。

這是什麼

dsh-auto-approve 由維護者 Jiao-XXX 發佈,分類爲 admin-security,當前版本 0.5.1,MIT 許可證,GitHub 約 9 stars。

插件通過 Cordis bundle 把權限預設表重述爲四個檔位,順序爲 read-onlyworkspace-writeautodanger-full-access——即在原有檔位之間插入 auto,其餘檔位全部保留。不在 auto 檔時,插件原樣放行所有審批請求給後續應答者(Web UI、TUI 或 Desktop)。

定位上,auto 類似 Claude Code 的 auto mode 與 Codex 的 Auto-review mode:例行審批交給安全評審,危險或不確定時再交還人工。

權限檔 沙箱範圍 什麼時候彈窗 適合場景
read-only 只讀工作區 需要寫入、聯網或越界操作時 代碼審閱、探索
workspace-write 可讀寫工作區;工作區外仍被隔離 每次升級都由人確認 常規開發
auto workspace-write 相同 例行升級自動批;危險/拿不準/失敗時才問人 長任務、依賴安裝
danger-full-access 不受工作區沙箱限制 不彈窗 隔離、可丟棄環境

核心功能

審批瀑布流

收到 auto 檔的 approval/request 後,插件按以下順序處理:

  1. 從會話日誌找回對應 tool/call 的原始參數,並讀取最新一條真人用戶消息(source.kind === "user" 的文本,忽略插件消息)。消息不超過 2000 字符時完整加入證據;超過上限直接轉人工,不做截斷猜測。
  2. 用確定性危險清單檢查 justification 和工具參數。混淆熔斷會把帶命令替換或進程替換的破壞性命令直接交給人工。
  3. 把命令、justification、目標沙箱模式、工作區路徑和 latestUserMessage 交給配置的分類模型。真人消息裏的明確授權可幫助判定具體操作,但命令示例和引用本身不算執行授權。
  4. 只有模型嚴格返回 {"verdict":"approve"} 時才返回 allowed-once;其他情況全部交給下一位應答者。

內置危險清單覆蓋破壞性 rm -rf、設備寫入與格式化、強制推送、下載後直接送入 shell、破壞性 SQL、主機關機、對根路徑遞歸 chmod 777、shell fork 炸彈、Terraform/Pulumi 銷燬,以及把 rmddmkfschmodchown$()、反引號或 <() 組合的混淆寫法。LLM 無法推翻已命中的危險規則。

普通 git push 到用戶自己的 fork 或工作分支屬於例行候選;推送到 mainmasterreleaseproductionprod 等共享/生產類分支應轉人工。--force / -f / --mirror、前導 +refspec 以及 git -C ... push --force 等 force-push 寫法,無論目標分支爲何都會在分類前命中危險清單。

前端適用性

插件宿主側只依賴 dsh 的 approval/request 瀑布流與 permissionPresets 服務,與前端形態無關。

前端 支持 說明
Web(dsh web 完整支持 審批對話框、Auto 圖標、/permission 切換均可用
TUI 支持 需在 profile settings 中設 permission.defaultPreset: auto;TUI 未接入 /permission 預設切換
Desktop 支持 與 Web 體驗一致

可配置項

字段 默認值 含義
presetName auto 插件應答者生效的權限檔名
provider null null 表示使用 Settings → Models 中的默認 provider
model null null 表示使用默認模型 id
classifierPrompt 內置默認提示 分類調用的完整 system prompt;配置值整體替換默認
timeoutMs 15000 分類調用超時(毫秒),超時安全回退到人工
extraDangerPatterns [] 追加到內置清單的大小寫不敏感正則
dangerPatterns null null 保留內置清單;數組會整體替換

0.5.0 起默認提示採用「默認放行、命中列舉顧慮才詢問」姿態。若需舊版嚴格姿態,可將 README 中的嚴格檔提示詞填入 classifierPrompt

分類模型只需做 approve / ask 二元判斷。若默認模型是大型推理模型,延遲與成本偏高,容易撞上 timeoutMs——可在會話裏運行 /auto-report 查看 verdict=timeout 佔比,並考慮指定更快模型或調高超時:

- id: auto-approve
  config:
    model: <你 API 中的快速模型 id>
    timeoutMs: 20000

安裝與啓用

DSH 需運行在受支持的 Node.js 版本上(>=22.19.0)。本包無運行時依賴,從 Git 安裝時不需要授權 pnpm 執行構建。

從 GitHub 安裝:

dsh plugin --profile web add github:Jiao-XXX/dsh-auto-approve

從本地 checkout 安裝:

dsh plugin --profile web add ./dsh-auto-approve

重啓 dsh web,在 Permissions 下拉框中選擇 Auto

卸載:

dsh plugin --profile web remove dsh-auto-approve

典型用法

日常開發中,把權限檔切到 Auto 後,安裝依賴、下載只讀資源、運行構建測試等例行沙箱升級會由分類器自動批准,無需每次點確認。涉及刪庫級操作、推送到生產分支、force-push 等場景仍會彈出人工審批。

排查分類器表現時,可在會話中運行 /auto-report,查看自動批准與轉人工的分組統計。

適用場景與注意

適合需要長時間讓智能體自主執行、又不想完全放開沙箱的 DSH 用戶:依賴安裝、多步重構、批量文件操作等長任務,在保留 workspace-write 沙箱邊界的前提下減少審批打斷。

安裝前建議自行檢查 GitHub 倉庫 源碼與 MIT 許可證。插件以當前 dsh 進程權限運行;auto 檔雖比 danger-full-access 保守,但仍會把部分審批決策交給分類模型,敏感倉庫或不可丟棄環境應優先使用 read-onlyworkspace-write

社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-auto-approve 在 DSH 權限體系裏補上了 workspace-writedanger-full-access 之間的中間檔:沙箱不變,例行升級自動批,危險與不確定操作仍有人工兜底。若你正被頻繁的沙箱升級彈窗打斷,可以按上述步驟安裝並在 Permissions 中切換到 Auto

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

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

小夜