影子模式 - 安全沙箱 (Shadow Mode)
簡單說:這是 AI 的「兒童安全鎖」。防止 AI 意外刪除你的檔案或把你的電腦搞壞。
🙋 這是做什麼的?
想像你僱用了一個瘋狂且速度很快的實習生 (AI)。
* 沒有影子模式:他可能會說「我覺得這個資料夾沒用」,然後直接把你的 src/ 刪掉。
* 有影子模式:當他想刪除時,系統會暫停並問你:「老闆,他想刪除 src/,是否批准?」
Boring 預設開啟此功能 (ENABLED),所以你很安全。
🛡️ 它如何工作?
影子模式就像一個守門員,站在 AI 和你的檔案系統中間:
- AI 說:「寫入
main.py!」 - 影子模式檢查:
- 如果是小改動 → 放行 (自動批准)。
- 如果是刪除檔案 / 大改動 → 攔截 (並再終端機問你)。
- 你決定:輸入
y或n。
graph LR
AI[AI 代理] -->|寫入請求| Shadow[🛡️ 影子模式]
Shadow -->|小風險| Disk[檔案系統]
Shadow -->|高風險| Human[👤 你 (人工審核)]
Human -->|Yes| Disk
Human -->|No| Reject[❌ 拒絕執行]
📊 三種保護級別
| 級別 | 符號 | 行為 | 最適合 |
|---|---|---|---|
DISABLED |
⚠️ | 無攔截 | 僅限隔離容器 |
ENABLED |
🛡️ | 自動批准低風險,阻擋高風險 | 預設 - 平衡 |
STRICT |
🔒 | 攔截所有寫入操作 | 生產環境 |
級別詳情
DISABLED(⚠️ 謹慎使用)
- 不攔截任何操作 - 所有寫入立即執行 - 僅在隔離容器或沙箱中使用ENABLED(🛡️ 建議預設值)
- 自動批准:讀取操作、小型檔案編輯 - 記錄:中風險變更(新檔案 < 1KB) - 阻擋:刪除、系統檔案、大型重寫STRICT(🔒 最高安全性)
- 所有寫入操作都需要批准 - 適合生產代碼審查 - 無法透過代理補丁繞過🔧 配置與持久化
跨會話持久化
影子模式設定持久保存在 ~/.boring/brain/shadow_config.json:
{
"level": "STRICT",
"auto_approve_patterns": ["*.md", "docs/*"],
"always_block_patterns": ["*.env", "secrets/*"],
"last_updated": "2024-01-01T12:00:00Z"
}
MCP 配置
在 smithery.yaml 或 MCP 配置中:
💻 工具參考
檢查狀態
設定級別
查看待處理操作
批准/拒絕
boring_shadow_mode(action="approve", operation_id="op_123")
boring_shadow_mode(action="reject", operation_id="op_123")
🎯 風險分類
低風險(ENABLED 模式自動批准)
- 讀取檔案
- 列出目錄
- 查看 git 狀態
- 執行唯讀命令
中風險(記錄並執行)
- 建立小型檔案(< 1KB)
- 附加到現有檔案
- 執行測試
高風險(需要批准)
- ❌ 刪除檔案
- ❌ 修改系統檔案(
.env、config/*) - ❌ 大型檔案重寫(> 50% 內容變更)
- ❌ 執行有副作用的 shell 命令
- ❌ Git 操作(push、強制操作)
🔐 受保護的檔案工具(V10.17.5+)
為確保影子模式保護,請使用 Boring 的檔案工具:
# 這些工具總是遵守影子模式
boring_write_file(path="config.py", content="...")
boring_read_file(path="src/main.py")
⚠️ 警告:原生 MCP 工具如
write_file(部分客戶端提供)可能不會被影子模式攔截。請始終使用boring_write_file進行安全操作。
🛡️ 安全網 (Git Checkpoints) (V10.31)
雖然影子模式可以攔截個別操作,但 安全網 能在進行複雜重構時保護您的整個代碼庫。
運作原理
它會在您開始之前建立一個輕量級的 Git 標籤 (Checkpoint)。如果 AI 搞砸了,您可以瞬間還原到該檢查點。
用法
# 1. 建立檢查點
boring_checkpoint(action="save", message="重構 auth 前")
# 回傳: "Checkpoint 'checkpoint_20240101_120000' created"
# 2. 執行危險操作...
# ...
# 3. 如果失敗,還原!
boring_checkpoint(action="restore", checkpoint_id="checkpoint_20240101_120000")
注意: 此功能需要乾淨的工作目錄(所有變更已提交)。
🏢 企業使用案例
代碼審查工作流程
# 審查者設定 STRICT 模式
boring_shadow_mode(action="set_level", level="STRICT")
# AI 提出變更,全部排隊等待審查
# 審查者檢查每個待處理操作
# 僅批准已驗證的變更