把 Agent 關在開發容器,放心開完整權限也不會搞爛電腦

更新

摘要

開發容器就是把開發環境放在 Docker 容器中執行,可隔離本機電腦環境。平常給 Agent 完整權限有污染本機環境的疑慮,那只要把他關在容器中就不用擔心這檔事。

文章目錄

AI Agent 很好用,但如果權限沒有控制好,很容易發生資訊安全、資料污染或遺失的問題。雖然目前大環境仍是在做技術探索,但再過好一陣子、技術要納入生產線時,資訊安全將會被重視,尤其是公司更要注意。

開發容器可以透過 VS Code 的 Dev Containers 延伸模組來實現,IntelliJ 也有類似的功能,有需求的可以都可以嘗試建建看。

安裝容器功能

我們會以 VS Code 來說明,請先安裝 Dev ContainersRemote Explorer 到 VS Code 中,再從左側遠端總管的開發容器中,點擊安裝 Docker,會開始自動下載 Docker Desktop 並安裝。

VS Code 遠端總管的開發容器面板,提示可從安裝 Docker 開始使用容器

Docker Desktop 於 macOS 可以直接安裝使用,Windows 則要先啟用 WSL。完成安裝後,請啟動 Docker Desktop 與重啟 VS Code。

macOS Docker 安裝視窗,將 Docker.app 拖曳到 Applications 資料夾

建立開發容器

接下來,我們可以拿現有的專案或新建一個專案來用於實驗這個開發容器,請從遠端總管的開發容器中,點擊開啟容器中的資料夾,選擇你的專案資料夾。

VS Code 遠端總管的開發容器面板,顯示開啟容器中的資料夾按鈕

當我們選的專案沒有建立過開發容器,會跳出下圖的新增開發容器設定檔,請選擇將設定新增至工作區。

VS Code 新增開發容器設定檔選單,選擇將設定新增至工作區

先選擇基底 Image,我習慣用 Ubuntu,該有的都有,很適合開發用。

VS Code 新增開發容器設定檔清單,選擇 Ubuntu devcontainers 範本

版本使用預設值 resolute (Ubuntu 26.04)。

VS Code Ubuntu 版本選單,使用預設的 resolute 版本

接著可以於容器中預先安裝好開發工具,省去自己操作的時間,未來也好遷移。我的專案是一個 Android APP,需要安裝 Android SDK。

VS Code Dev Containers 選取功能畫面,勾選 Android SDK Feature

我使用 Codex CLI 來開發,也能預先安裝好它。選擇好後再點擊確定,VS Code 將會開始下載與建置開發容器,會需要一段時間。

VS Code Dev Containers 選取功能畫面,同時勾選 Codex CLI Feature

設定容器工具版本

容器建置好後 VS Code 會自動啟動與連線到開發容器中,由於 Android 專案對於各種元件的版本號碼很敏感,需要特別設定。

我可以瀏覽剛才選用 Android SDK 的 GitHub,能發現他有提供 platform、build_tools 的版本號碼欄位,因此可以編輯 .devcontainer/devcontainer.json,於 android-sdk 下加入版本設定。

VS Code 開發容器內的 devcontainer.json,設定 Android SDK platform 與 build_tools 版本

設定完成後,再點擊左下角的開發容器: Ubuntu @ XXXX 按鈕,選擇重建容器,等待一段時間後 Android SDK 的版本就能與專案設定相同。

VS Code 開發容器命令選單,選擇重建容器

登入 Codex CLI

我們用開發容器的主要理由是要做好 Agent 的環境隔離,現在進入最後一哩路,請透過終端機輸入 codex 來啟動 Agent。

Codex CLI 登入畫面,提供 ChatGPT、Device Code 與 API key 登入選項

登入後,就可以放心的輸入 /permissions 來將權限改成 Full Access 而不會影響本機環境。

Codex CLI 權限設定畫面,選擇 Full Access 讓 Agent 在容器內完整存取

結論

我的工作主力是 Codex,現在他的權限管理機制仍在快速迭代中,老實說現在的版本不怎麼好用,但給予完整權限又不安全。如果我現在把開發環境放在容器時,就算 Agent 失控亂刪除東西,影響的範圍也只有掛載進去的專案,頂多 git revert 一下、容器重建就能恢復,不會搞爛電腦。

下一篇 Pi Coding Agent 安裝、配置與使用 Codex 訂閱 AI
Ted Liou

Ted Liou

Unity 現役工程師,Unity、AI 技術開發經驗分享與諮詢。