---
slug: codex-cloud-agentic-delivery-loop
status: published
title: Codex Cloud 怎麼用？從 GitHub Issue 到 PR 的背景交付循環
excerpt: Codex Cloud 可以把 GitHub 專案放進可重複的雲端環境，從 Issue 派出 bounded batch，讓 Codex 背景實作，再經人工 Create PR、Codex review 與人工 merge。本文整理一套實際跑過的 Agentic Delivery Loop。
category: AI
tags: [Codex, Codex Cloud, GitHub, coding-agent, agent-workflow]
cover: "/static/codex-cloud-agentic-delivery-loop-cover.png"
author: Seer
author_role: Author
read_time: 14 min
published_at: "2026-08-10T00:00:00Z"
updated_at: "2026-08-10T00:00:00Z"
---

## Codex Cloud 的重點是：不用把電腦留著，任務也能繼續跑

[Codex Cloud](https://learn.chatgpt.com/docs/cloud) 是 Codex 的背景執行環境。它會把 GitHub repository 放進隔離的 cloud environment，依照設定安裝依賴、checkout 指定的 branch 或 commit，讓 Codex 在裡面讀程式碼、改檔案、跑檢查，完成後回傳 summary 與 diff。

這和本地開一個 Codex session 的差異，在於工作不必綁著目前這台電腦。你可以把一個較長的任務交給 Codex Cloud，關掉本地 terminal，稍後再回來看結果；也可以讓本地 Codex 與 cloud Codex 分別處理不同 Issue，平行推進。

我這次實際跑下來，最有感的不是「多一個 coding agent」，而是它把原本散落在本地 terminal、GitHub Issue、PR review 和 merge 的動作，接成一條可以重複使用的交付循環：

```mermaid
flowchart TB
  A["GitHub Issue 定義任務"] --> B["切 bounded batch + branch + 驗收條件"]
  B --> C["使用 @codex 派送"]
  C --> D["Cloud container: setup、修改、測試"]
  D --> E["回傳 summary + diff"]
  E --> F["人工 Create / Update PR + review"]
  F --> G{"人是否接受結果？"}
  G -->|需要修正| C
  G -->|接受| H["merge main + 更新 tasks.md + 下一批"]
  H --> B
```

我會把這條流程定名為：

> **Agentic Delivery Loop**
> *An issue-triggered, human-gated GitHub Flow.*

中文就是：**Agent 協作交付循環：由 Issue 觸發、經人工 PR 閘門的 GitHub Flow。**如果只取一個業界比較容易理解的短名稱，我會用 **Human-gated Agentic GitHub Flow**。

## 先看重點

- **Codex Cloud 是背景 coding environment**：任務交給雲端 container 跑，本地電腦不必一直開著。
- **GitHub 是交付中樞**：repository 授權、Issue 派工、branch、PR、review 與 merge 都在同一條鏈上。
- **Environment 先設定好**：runtime 版本、依賴、setup script、environment variables、secrets 與網路權限會直接影響任務能不能跑完。
- **Issue 要有邊界**：不要只寫「把這個功能做好」，要寫清楚範圍、不要碰的地方、驗收條件與測試命令。
- **`@codex` 是委派入口**：它啟動背景任務，但不代表會自動替你接受 diff 或合併 main。
- **PR 是人工閘門**：Create／Update PR、Codex review、人工驗收與 merge 都保留決策權。
- **本地與 Cloud 可以並行**：適合把長時間、可重現的任務交給 Cloud，本地則處理需要即時互動或未提交檔案的工作。
- **用量不要先當免費**：這次介面看起來沒有明顯扣額度，但官方 pricing 仍把 cloud chats 納入 Codex／ChatGPT Work 的 shared usage。

## 先建立 GitHub 與 Codex Cloud 的連線

### 1. 在 ChatGPT 或 Codex 開啟專案

先從網頁或 Codex 進入要處理的專案，讓 Codex 取得 GitHub 授權。這一步不是把整個 GitHub 帳號無限制交出去，而是接著選擇哪些 repository 可以讓 Codex 存取。

官方的起手流程是：登入 Codex、連接 GitHub、選擇 Codex 可以存取的 repositories，再建立 cloud environment。

### 2. 授權允許的 GitHub repository

建議不要一開始把所有 repository 都開放。先選一個測試專案，確認下面幾件事：

- Codex 能不能看到預期的 branch；
- repository 裡的 `AGENTS.md` 是否包含正確的測試與 lint 指令；
- setup script 是否會安裝齊依賴；
- environment variables 與 secrets 是否分得正確；
- task 完成後，你能不能看懂 summary、diff 與驗證結果。

Codex Cloud 的環境是針對 repository 建立的。它不是把你本地整個工作目錄直接搬上去，而是根據選定的 branch 或 commit 建立一個可執行的 cloud container。

## 建立 Codex Cloud environment

環境設定入口可以從 [Codex environment settings](https://chatgpt.com/codex/settings/environments) 進入；你實際使用的建立頁面是 [Create environment](https://chatgpt.com/codex/cloud/settings/environment/create)。

我會把設定分成五組。

| 設定 | 作用 | 實務建議 |
|---|---|---|
| Repository | 決定這個 environment 對哪個 repo 工作 | 一個環境先對應一個主要 repo，降低依賴與權限混亂 |
| Package／runtime versions | 固定 Python、Node.js 等版本 | 專案有版本要求時明確 pin，不要只依賴 universal image 的預設值 |
| Environment variables | 提供 setup 與 agent 執行期間需要的非敏感設定 | 放路徑、feature flag、測試模式等，不放 token |
| Secrets | 給 setup script 使用的敏感值 | 不要假設 agent 階段仍看得到；官方文件說 secrets 會在 agent phase 前移除 |
| Setup／maintenance script | 安裝依賴、工具與 cache 恢復後的更新工作 | 讓 script 可重跑；不要只靠本地 shell 狀態 |

官方文件描述的執行順序是：Codex 建立 container、checkout repository 的 branch 或 commit、執行 setup script，接著依照網路設定啟動 agent，讓它用 terminal loop 修改程式碼與跑檢查。常見 package manager 如 `npm`、`yarn`、`pnpm`、`pip`、`pipenv` 與 `poetry` 可以走自動安裝；複雜專案再補自訂 setup script。

### Setup script 與 maintenance script 要分清楚

setup script 是建立或重建環境時的初始化工作；maintenance script 則可以在 cached container 恢復時更新依賴或做維護。官方文件也提到 container cache 最長可維持 12 小時，改動 setup script、maintenance script、environment variables 或 secrets 時，cache 會失效。

這代表 setup script 不要寫成一次性的「只在我電腦跑過一次」腳本。它應該可以從乾淨 container 重新執行，並且在 branch 變更或 cache reset 後仍能建立出可測試的環境。

### 網路權限不要直接全開

Codex Cloud 的 setup script 本身可以使用網路安裝依賴；agent 階段則預設關閉網路。需要 agent 查文件、下載測試資料或操作外部服務時，才在 [Agent internet access](https://learn.chatgpt.com/docs/cloud/internet-access) 裡開啟，並盡量用 domain allowlist 與 HTTP method 限制。

這個限制不是多餘的。Issue、網頁、第三方 dependency README 都可能包含 prompt injection。官方文件直接用「修理 GitHub Issue」的情境提醒：如果 agent 讀到不可信內容，內容可能誘導它外傳資料或執行不該執行的動作。

實務上我會採這個順序：

1. setup script 開網路，讓依賴安裝完成；
2. agent phase 預設關網路；
3. 任務真的需要網路時，只開必要網域；
4. 不把 production token 放進 agent 可以長時間讀取的環境；
5. 對第三方 Issue、PR、README 與下載內容保持 prompt injection 警覺。

## 回到專案對話，啟動協作交付循環

環境開好以後，回到專案對話框，輸入這段 prompt：

```text
codex cloud 環境開好了，請基於 issue 、branch 啟動一個協作交付循環，將我的需求開單，並指定 @codex 進行。我會驗收以後發送 PR ，再請你驗收規劃一下個任務。
```

接著專案會跳出 repository 授權流程。完成授權後，就可以把需求落到 GitHub Issue，再交給 cloud task 背景執行。

這裡要注意「基於 issue、branch」這個前提。Issue 不只是讓 agent 看到一句自然語言，它應該包含：

- 這一批要交付的範圍；
- 不要碰哪些檔案或模組；
- 驗收條件；
- 要跑哪些測試與 lint；
- 依賴哪一個 branch 或前置 PR；
- 完成後應該回報什麼。

一張好用的 Issue，至少可以整理成下面這個格式：

```markdown
## 目標
一句話描述這一批要完成的結果。

## 範圍
- 要修改的模組或路徑
- 不處理的範圍

## 驗收條件
- 功能條件
- 錯誤處理
- 相容性或回歸條件

## 驗證命令
- lint
- unit test
- integration test 或 build

## 完成時回報
- 修改摘要
- 測試結果
- 尚未解決的問題
```

重點是不要直接把「把整個專案做好」丟給 agent，而是先在 Issue 裡寫清楚這一批的範圍、branch、驗收條件與回報格式。這樣 Codex Cloud 收到的是一個有邊界、可驗收、可回滾的工作單位。

## Issue 派任務，PR 才是人工閘門

我目前使用的循環是：

```text
GitHub Issue 定義任務
  → 切 bounded batch
  → `@codex` 派送
  → Codex Cloud 背景實作
  → 人工 Create／Update PR
  → Reviewer 驗收與追修
  → 合併 main
  → 勾選 tasks.md
  → 派下一批
```

這裡的自動化邊界要寫清楚：Issue 可以觸發 Codex 背景任務，Codex 會在 cloud environment 裡執行；但完成後是否 Create／Update PR、是否接受 diff、是否合併 main、何時派下一批，仍然由人決定。

所以 `@codex` 比較準確的定位是：**Agent 委派與執行機制**。它不是一個「Issue 送出後自動替你 merge」的機器人。

## PR 階段怎麼請 Codex 審查

PR 建立後，可以使用 [Codex GitHub code review](https://learn.chatgpt.com/docs/third-party/github)。官方文件目前明確記載的操作包括：

### 手動 review

在 PR comment 輸入：

```text
@codex review
```

也可以把審查焦點寫進去：

```text
@codex review for issues in the database migration
```

Codex 會以 PR diff 與 repository context 做 review，官方文件表示一般 Code Review 主要標出 P0 與 P1 問題，讓 review comment 聚焦高優先級風險。

### 叫 Codex 直接修正

看到問題後，可以在同一個 PR 留下：

```text
@codex fix the P1 issue
```

Codex 會以該 PR 為 context 開 cloud chat，並在有權限時把修正推回 branch。

### Automatic reviews

如果想讓每個符合條件的新 PR 自動觸發 review，可以到 [Codex code review settings](https://chatgpt.com/codex/settings/code-review) 開啟 **Automatic reviews**。這和手動留言 `@codex review` 是兩種模式：前者是 repository 設定，後者是單次請求。

無論使用哪一種，都不應該把 Codex review 當成測試、branch protection 或 required human approval 的替代品。它是多一個高訊號 review pass，不是 merge policy 本身。

## 一張表看懂每一階段的責任

| 階段 | Codex／雲端負責什麼 | 人要保留的決定 |
|---|---|---|
| Issue／bounded batch | 依 Issue 與 branch 執行一小批工作 | 決定批次邊界與檔案 ownership |
| Cloud task | 建 container、跑 setup、改程式、測試、回報 diff | 查看 log、判斷驗證是否可信 |
| Create／Update PR | 把可交付結果放到 GitHub review surface | 決定何時值得開 PR、是否補充說明 |
| Codex review | 讀 diff、檢查 repository guidance、提出 P0／P1 風險 | 判斷建議是否成立，要求追修 |
| Merge main | 沒有自動替你決定產品正確性 | 人工驗收、合併與發布 |
| 下一批 | 依 tasks.md 與現況繼續處理 | 決定是否進入下一個 bounded batch |

## 開發流程使用情境

Codex Cloud 不適合把所有工作都丟過去。比較適合的是：**任務可以用 branch 隔離、環境可以重現、驗收條件可以寫清楚，而且不需要一直看著本地畫面。**

### 情境一：CI failure 或測試回歸

這是最適合從 GitHub Issue 派給 Codex Cloud 的類型之一。

- **Issue 內容**：貼上失敗的 job、錯誤訊息、重現命令與預期結果。
- **Cloud 任務**：checkout branch、安裝依賴、重現 failure、修正程式、重新跑 CI 對應測試。
- **人要驗收**：確認修正沒有只把測試刪掉或放寬條件，並看 diff 是否碰到不相關模組。
- **PR review**：可以先用 `@codex review for issues in the failing test path`，再由人檢查根因是否真的解決。

這種任務的優點是輸入與輸出都比較清楚，Codex 不需要先理解整個產品，只要從一個可重現的錯誤開始往回追。

### 情境二：背景 feature 開發

例如要加一個 API endpoint、補一個後台頁面、替某個資料表加欄位，這類工作通常不需要本地電腦一直開著。

- **Issue 先寫清楚**：API contract、資料欄位、權限邊界、錯誤回應、測試案例。
- **指定 branch**：不要讓 Cloud task 直接和本地未提交工作共用同一個 branch。
- **設定 environment**：確保 Node／Python、資料庫 client、測試工具與 build command 都能在 cloud container 裡跑。
- **完成後看三件事**：summary 是否有說明實作方式、diff 是否符合範圍、測試是否真的執行成功。
- **PR 才交付**：未經人工確認前，不把 cloud task 的結果直接視為可以進 main 的程式碼。

### 情境三：文件、測試與機械式整理

這類工作不一定困難，但很容易佔掉本地時間，適合讓 Cloud 背景處理。

- 補 API 文件與使用範例；
- 為既有 service 補 unit tests；
- 統一錯誤訊息、命名或 import 順序；
- 依現有程式碼更新 README；
- 找出過期設定與相關測試並提出修正。

這時 Issue 要特別限制範圍，避免 agent 把「更新文件」擴張成重寫整個架構。文件任務也要跑最基本的 link check、build 或測試，不要因為沒有 production code 就跳過驗證。

### 情境四：本地 Codex 與 Cloud Codex 平行工作

這是最容易提高吞吐量、也最容易撞車的用法。

**適合的分工：**

- 本地 Codex：處理需要看未提交檔案、即時討論、桌面工具或本機服務的任務；
- Codex Cloud：處理乾淨 branch 上的背景重構、測試、CI failure 或文件工作；
- 人：維持 Issue、branch、PR 與檔案 ownership 的分配。

**避免衝突的規則：**

- 不要讓兩個 agent 同時寫同一組核心檔案；
- 每一個 Issue 指定明確 branch；
- 依賴前一批結果的任務，等前一個 PR merge 後再派；
- 如果兩個任務一定會改同一模組，改成串行，不要為了平行而平行；
- merge 前看完整 diff，不要只看 agent 的文字摘要。

## 本地 Codex 與 Codex Cloud 可以一起用嗎？

可以，但要把任務切開。

一種方式是本地處理需要即時互動、未提交檔案、桌面工具或敏感環境的任務；Codex Cloud 則跑可以用乾淨 branch 重現的背景工作，例如補測試、批量重構、文件整理、CI failure 修正或一個已經寫清楚驗收條件的 Issue。

另一種方式是同一個 repository 開不同 Issue，但每一個 Issue 都指定不同 branch 與檔案 ownership。不要讓本地 Codex 和 Cloud Codex 同時修改同一個模組，最後才期待 Git 自己解決需求衝突；Git 可以合併文字差異，不能替你判斷兩個 agent 的設計決策哪一個才是對的。

實務規則很簡單：

- 一個 Issue 對應一個 bounded batch；
- 一個 batch 指定 branch、驗收條件與測試命令；
- 同一時間不要讓兩個 agent 擁有同一組核心檔案的寫入權；
- 先 merge 前置 batch，再派依賴它的下一批；
- `tasks.md` 是進度索引，不是測試通過的替代品。

## 最後的工作定義

Codex Cloud 說明文件把它定位成可以從 web、GitHub、Linear 或 Slack 啟動的背景 coding task；GitHub 文件則把 PR review、`@codex review`、Automatic reviews 與 follow-up fix 分開描述。

放回這套實際流程，可以得到一個清楚的分工：

- **Issue／branch**：定義這一批要交付什麼，以及在哪個分支工作；
- **`@codex`**：委派與啟動 cloud agent；
- **Codex Cloud**：在隔離環境執行、測試與回報 diff；
- **PR**：讓結果進入可審查的交付面；
- **Codex review**：補一輪高訊號風險檢查；
- **人**：驗收、決定 merge，並決定下一批做什麼。

這就是我目前會採用的名稱：

> **Human-gated Agentic GitHub Flow**
> Issue 派出，Codex 背景執行，PR 由人把關，merge 之後再繼續下一批。

## 參考來源

- [Codex cloud 官方文件](https://learn.chatgpt.com/docs/cloud)
- [Cloud environments](https://learn.chatgpt.com/docs/environments/cloud-environment)
- [Agent internet access](https://learn.chatgpt.com/docs/cloud/internet-access)
- [Review GitHub pull requests with Codex](https://learn.chatgpt.com/docs/third-party/github)
- [Codex pricing、usage 與 credits](https://learn.chatgpt.com/docs/pricing)
- [Feature maturity](https://learn.chatgpt.com/docs/feature-maturity)
