先看整體:兩道閘
組件 02 說模型只會寫「請求單」,做事的是 Harness。這一頁看 Harness 收到請求單之後,誰決定做不做。
Harness 收到一張請求單(讀檔、改檔、上網……),會經過兩道閘。審批(approval)是「問人」:彈一個對話框,等你按允許或拒絕。沙箱(sandbox)是「程式攔」:作業系統層面規定這個正在執行的程式(process)只能碰哪些檔案,超出範圍的動作直接失敗,不問也不商量。權限模式(permission mode)就是這兩道閘的組合預設——你切換一個模式,其實是在決定每一種行動由誰檢查。
- 提示與指令檔(建議)「請不要刪檔案」——模型可以照做,也可以不照做。組件 04、09 的主線。
- 審批:問你(人在迴路)Harness 停下來等你按鈕。安全檢查是你——前提是你有在看。
- 沙箱、拒絕清單與工具開關:程式攔(強制)作業系統不讓這個正在執行的程式(process)碰工作區以外的檔案;拒絕清單(deny rules)裡的動作一律不跑;乾脆不給的工具,模型連請求單都寫不出。安全檢查是程式,不靠任何人的注意力。
切換模式,看六種行動的命運
左邊選工作台與模式,右邊六行即時更新。三個工作台的按鈕名字不同,底下是同一套概念(見頁末「同一概念、不同名字」對照表)。
工作台(殼,shell)
六種行動(同一個 Agent、同一個任務:「整理我的第 3 講筆記並寄給導師」)
| 行動 | 結果 | 誰在檢查 | 為甚麼 | 本次運行 |
|---|
結果為教學簡化:Claude Code/Cline 依 2026-09 文檔,dsh 依 2026-09-05 雲機 PoC 實錄(見頁尾);真實觸發條件還會受拒絕清單、允許規則、hooks 與受保護路徑影響。
Harness 停下來問你
「允許一次」只放行這一張請求單;下一張同類請求仍會再問。
你程式(沙箱/清單)分類器(classifier,第二個模型)無人
模式決定誰是安全檢查
問你=你在檢查;沙箱=程式在檢查;auto 模式=第二個模型(分類器)在檢查;全開=無人檢查。切換模式不是「快一點或慢一點」,是把檢查員換掉。
沙箱管檔案,不管網絡
dsh 的沙箱文檔明言「網絡與程式(process)可見性不在這套詞彙之內」:沙箱只圈住檔案能寫到哪裡。而審批只在模型申請提權時才出現——所以上網、寄郵件這類對外通道,兩道閘都碰不到,靠的是工具開關與白名單。這正是組件 09 的第三盞燈。
問你,前提是你有在看
「問你」只在你真的讀了對話框才是檢查;連按二十次允許,等於沒有檢查。這就是 Claude Code 為甚麼加了「auto」模式:用第二個模型代替疲勞的你——但按 2026-09 文檔,它只看模型想做的動作,不看網頁回傳的內容——被下毒的網頁仍要靠組件 09 的防線。
想一想
- 把 dsh 設成
read-only+ask,六張請求單有幾張會問你?哪幾張不問也不攔?如果你正在開會沒空看,Agent 會怎樣?(提示:fail-closed——拿不到批准就當拒絕,不會偷偷放行。) - Claude Code 的
acceptEdits為甚麼放行「改檔」卻不放行「刪工作區外的資料夾」?兩者差在哪裡:可逆性、還是位置? - Cline 只開「Use MCP servers」一格,其他全關。「寄郵件」會直接跑——這算是你批准了嗎?誰在檢查?
- 有沒有一種行動,任何模式都不應該自動放行?你會把它放在執行梯度的哪一級?
教師提示(討論後展開)
第 1 題:read-only 下改檔、刪檔、安裝都先被沙箱攔下,模型再申請提權才彈審批卡,三張會問(示意:假設模型每次都申請提權;它也可能放棄);上網與寄郵件不經沙箱、也不觸發審批(見頁尾 PoC 實錄),直接跑——這才是要警惕的一點。沒有可用的審批通道時,dsh 的審批鏈 fail-closed:當作拒絕而非放行(本頁簡化為「沒人回應=拒絕」),Agent 會收到失敗再想別的辦法。第 2 題:答案是位置與命令類型,不是可逆性——acceptEdits 不會判斷一個動作可不可逆,它只看:是不是工作目錄內的檔案編輯、命令是不是在「常見檔案命令」(mkdir/touch/mv/cp)名單上。rm -rf 一個工作區外的路徑兩項都不符,所以要問你。第 3 題:是你「事先」批准了一整類動作,檢查發生在開關那一刻,之後每一次都是無人檢查;這正是 Cline 文檔把 YOLO 模式標成危險的原因。第 4 題:寄出、付款、刪除不可逆資料、動用憑證(密碼、金鑰)——這些應放在拒絕清單或必問規則(Claude Code 靠 deny/ask 規則;dsh 的審批政策管不到 MCP 與 web 工具,只能關掉工具或只給白名單),不靠模式。
問你的 Agent(動手時間開頭 10 分鐘):問它「你現在的權限模式是甚麼?哪些動作會先問我、哪些直接做、哪些做不到?」再叫它讀一個工作區外的檔案,看它是問你、被攔、還是直接讀了。把答案跟本頁的表對一對。
同一概念、不同名字
三個工作台的按鈕怎樣對應本頁的兩道閘。名字會變,概念不變——這是「殼是透明的」。
| 概念 | dsh(DeepSeek Harness) | Claude Code | Cline |
|---|---|---|---|
| 審批(問人) | approval/policy:ask/never;結果 allowed-once/rejected | 權限對話框;ask/allow/deny 規則 | Auto Approve 每格關掉=問你 |
| 沙箱(程式攔) | sandbox/mode:read-only/workspace-write/danger-full-access(Linux bwrap/Landlock、macOS Seatbelt) | Bash 沙箱(/sandbox;macOS/Linux/WSL2) | 無 OS 沙箱;靠「project files」與「all files」的範圍 |
| 模式(兩閘的預設組合) | 權限預設(permission preset):read-only(=read-only + ask)、workspace-write(=workspace-write + ask,預設)、danger-full-access(=full + never) | default/acceptEdits/plan/auto/dontAsk/bypassPermissions | Auto Approve 九格開關;YOLO=全開 |
| 第二個模型當檢查員 | — | auto 模式的分類器(classifier) | — |
| 先計劃後執行 | /plan | plan 模式 | Plan/Act 切換 |
| 全開、無人檢查 | danger-full-access preset | bypassPermissions(文檔:只限隔離容器與虛擬機) | YOLO Mode |