前言¶
在 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-only、workspace-write、auto、danger-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 後,插件按以下順序處理:
- 從會話日誌找回對應
tool/call的原始參數,並讀取最新一條真人用戶消息(source.kind === "user"的文本,忽略插件消息)。消息不超過 2000 字符時完整加入證據;超過上限直接轉人工,不做截斷猜測。 - 用確定性危險清單檢查 justification 和工具參數。混淆熔斷會把帶命令替換或進程替換的破壞性命令直接交給人工。
- 把命令、justification、目標沙箱模式、工作區路徑和
latestUserMessage交給配置的分類模型。真人消息裏的明確授權可幫助判定具體操作,但命令示例和引用本身不算執行授權。 - 只有模型嚴格返回
{"verdict":"approve"}時才返回allowed-once;其他情況全部交給下一位應答者。
內置危險清單覆蓋破壞性 rm -rf、設備寫入與格式化、強制推送、下載後直接送入 shell、破壞性 SQL、主機關機、對根路徑遞歸 chmod 777、shell fork 炸彈、Terraform/Pulumi 銷燬,以及把 rm、dd、mkfs、chmod 或 chown 與 $()、反引號或 <() 組合的混淆寫法。LLM 無法推翻已命中的危險規則。
普通 git push 到用戶自己的 fork 或工作分支屬於例行候選;推送到 main、master、release、production、prod 等共享/生產類分支應轉人工。--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-only 或 workspace-write。
社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-auto-approve 在 DSH 權限體系裏補上了 workspace-write 與 danger-full-access 之間的中間檔:沙箱不變,例行升級自動批,危險與不確定操作仍有人工兜底。若你正被頻繁的沙箱升級彈窗打斷,可以按上述步驟安裝並在 Permissions 中切換到 Auto。
- 目錄頁:https://www.skillhub.cn/plugins/Jiao-XXX/dsh-auto-approve
- GitHub:https://github.com/Jiao-XXX/dsh-auto-approve