Theme / v0.5.0

CatDesk

把 ChatGPT Web 變成本地 Coding Agent

平台安裝

VM / 容器隔離執行環境

上游強烈建議在 VM 或容器內執行 CatDesk。本篇提供 DevContainer 設定草圖,解釋為何必須隔離,以及 git commit 習慣、唯讀模式與 Landlock 沙盒等防禦縱深。

VM / 容器隔離執行環境

⚠️ 上游強烈建議:CatDesk 功能強大,可能把整顆磁碟清掉或產生非預期結果。請在 VM 或容器內執行(DevContainer 是好選擇)。把它當成 OpenClaw 對待——容器化、隔離化。

為何必須隔離

理由很直接:透過 run_commandChatGPT 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 個工具,含 writeeditdeleterun_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 磁碟的工具」認真對待。