VM / 容器隔離執行環境
⚠️ 上游強烈建議:CatDesk 功能強大,可能把整顆磁碟清掉或產生非預期結果。請在 VM 或容器內執行(DevContainer 是好選擇)。把它當成 OpenClaw 對待——容器化、隔離化。
為何必須隔離
理由很直接:透過 run_command,ChatGPT Web 可以在你的電腦上執行任意指令。模型的工具呼叫偶爾會出錯(上游自己也聲明部分功能仍有 bug)。一旦指令落在錯誤的環境,代價就是你的整台機器。
隔離執行環境讓最壞情況的爆炸半徑 (blast radius) 只限於容器或 VM 內部:
- 主機磁碟安全,容器刪光了就重建
- 依賴版本、環境變數與主機隔離
- ngrok 隧道只暴露容器內的 CatDesk,不暴露主機
📦 DevContainer 設定草圖
用 VS Code 的 DevContainer 最省事。重點三件事:轉發 port 3200、容器內裝 catdesk、容器內跑 ngrok。
工作目錄
├── .devcontainer/
│ └── devcontainer.json # 轉發 port 3200
└── (專案原始碼)
devcontainer.json 需包含 port 3200 轉發(CatDesk 預設監聽 port):
{
"name": "catdesk",
"image": "mcr.microsoft.com/devcontainers/typescript-node:latest",
"forwardPorts": [3200],
"postCreateCommand": "npm install -g catdesk"
}
啟動流程:
# 1. 在 VS Code 中 Reopen in Container(port 3200 已轉發)
# 2. 容器內安裝 catdesk(若未用 postCreateCommand)
npm install -g catdesk
# 3. 容器內啟動(ngrok 從容器內部建立隧道)
catdesk
ngrok authtoken 與靜態網域在容器首次啟動時輸入,存進容器內的 ~/.catdesk/config.toml。若想讓設定跨容器重建保留,把該路徑掛載為 volume。
✅ 防禦縱深檢查清單
隔離環境是主防線,以下習慣是加強層:
1. Session 前先 git commit
每次開新 ChatGPT Session 前先 commit:
git add -A && git commit -m "checkpoint before catdesk session"
Agent 改壞了隨時 git checkout 回來,這是最便宜的安全網。
2. 唯讀工具模式 (read-only mode) 作為額外防護
CatDesk 有兩種本地工具模式:multi-tools(暴露 10 個工具,含 write、edit、delete、run_command)與 read-only(只暴露 3 個工具)。純程式碼審查 (code-review-only) 的 Session 切到 read-only 模式,Agent 根本沒有寫入與執行的能力。切換工具模式後記得開新對話並重裝連接器。
3. Linux Landlock 沙盒作為防禦縱深
在 Linux 上,CatDesk 支援 Landlock 沙盒 (Landlock sandbox):寫入範圍限制在 workspace 與 scratch 目錄內。就算模型想寫到別處,核心層會擋下。
但注意定位:Landlock 不是完整隔離的替代品。它限制的是檔案寫入範圍,不取代 VM/容器提供的整體隔離。正確的階層是:
VM / 容器(主防線,完整隔離)
└─ git commit 習慣(可復原)
└─ read-only 模式(純審查 Session)
└─ Landlock 沙盒(縱深防禦,限制寫入範圍)
四層都做,才算是把「可以 wipe 磁碟的工具」認真對待。