在 DSH 的開發場景中,使用 danger-full-access 權限雖然能最大化交互能力,但直接使用存在誤操作風險。現有的基於 LLM 的自動審批機制(如 Claude Code 的 Auto Mode)雖然能緩解風險,但審查成本較高。dsh-auto-guard 插件旨在給全權限模式加一層 LLM 安全網,通過分層裁決和緩存機制,在降低審批成本的同時控制風險。
核心定位¶
該插件基於 danger-full-access 兜底,不限制文件系統能力,而是通過規則和 LLM 審查進行安全裁決。它將審批流程分爲多個層級,優先使用規則和緩存,僅在必要時調用 LLM,從而減少 token 消耗。
安裝與啓用¶
安裝插件後,cordis.patch.yml 會註冊 auto-guard 預設,覆蓋原有的 danger-full-access。
- 執行安裝命令:
dsh plugin --profile web add github:Ayle5678/dsh-auto-guard
- 在對話框的權限選擇器中選擇
Auto Guard預設,即可啓用。
功能特性¶
分層裁決機制¶
插件採用多層過濾策略,從簡單規則到 LLM 兜底:
* File Tracker:寫後執行檢測。
* 絕對黑名單:危險命令直接拒絕。
* 目錄刪除複覈:要求 agent 提供理由並經 LLM 複覈。
* 複合命令處理:智能拆分 ;、&&、||,檢測 export、cd 等環境改變命令,對管道進行確定性判斷。
* 白名單與緩存:結合靜態白名單(含白名單守衛)與動態白名單,支持模板緩存。
* 歷史/學習層:利用歷史記錄和自動生成的學習規則進行低風險放行。
* LLM 兜底:上述規則均無法匹配時,由 LLM 進行裁決。
Guard Memory¶
具備會話級裁決記憶。首次 deny 後,同命令再次出現會轉爲 ask 請求人工確認。
審計與安全¶
- 敏感路徑門禁:對
.env、.ssh等路徑自動降級 LLM 審查。 - 審查日誌與審計加密:支持 SQLite 審計日誌(默認關閉),敏感字段使用 AES-GCM 加密存儲,開啓前需設置審計密碼。
配置與使用¶
啓用與配置¶
插件的所有配置通過 DSH 設置體系管理,主要配置項位於 ~/.dsh/settings.yaml 的 auto-guard: 命名空間下。
auto-guard:
apiBase: '' # 直連 OpenAI 兼容端點
apiKeyEnv: DEEPSEEK_API_KEY
model: deepseek-v4-flash # 審查使用的模型
examineEnabled: false # 審查日誌開關
auditPassword: '' # 審計密碼
# ... 其他配置項
自定義規則¶
用戶可編輯 ~/.dsh/auto-guard/rules.json 添加靜態放行規則(如 git log)。
例如:
{
"version": 1,
"staticAllow": [
{ "pattern": "git log", "reason": "Read-only git log" }
]
}
使用示例¶
- 在對話框權限選擇器中選擇
Auto Guard預設啓用。 - 使用複合命令,如
git status; git branch --show-current,插件會智能拆分並處理。 - 嘗試刪除目錄時,插件會要求提供理由並經 LLM 複覈。
注意事項¶
- 安全邊界:插件不是沙箱,不承諾絕對安全,不排除極少數隱祕危險命令可能通過審查。請將其視爲“安全網”而非“安全邊界”。
- 密鑰管理:密鑰不落倉庫,支持環境變量或 DSH settings 的 secret 字段本地存儲。
- 日誌默認關閉:審查日誌默認關閉,開啓前需設置審計密碼。
- Fail-Closed 機制:無 UI 兜底時,DSH 本身會把
ask退化爲deny(拒絕執行)。 - 文件系統能力:插件不限制文件系統能力,儘量不打斷正常開發。
總結¶
dsh-auto-guard 適合需要在 DSH 中使用全權限,但又希望對命令執行進行安全審計和自動化的用戶。通過分層規則和緩存機制,它能在保障安全的同時控制審批成本。