跳到主要內容
AIupick

開發者指南 · 18 項任務

開發者用 AI:程式設計代理、費用與安全交接

如果你已經在用自動完成和聊天,下一步就是會讀取程式碼庫、執行指令並開啟 pull request 的代理。這能不能省時間,與其說取決於模型,不如說取決於設定。第一部分適用於任何程式設計代理;Claude Code 和 Codex 的部分則根據各自的官方文件,深入介紹它們的指令、檔案和設定。

  1. 任何程式設計代理

    01

    給代理一個它能證明自己完成的任務

    代理遇到「把這個改好」就會失敗,遇到以檢查收尾的任務就會成功:一個必須轉為通過的失敗測試,或一個輸出必須改變的指令。把證明寫進任務裡,代理就會一直做到真正完成,而不是看起來完成就停下來。

    範例

    「修正日期解析器對 ISO 週日期的處理。完成的標準是 npm test -- dates 通過,包括 2026-W01 的新測試。不要修改測試。」代理會反覆執行測試直到通過,並貼上輸出結果;你審查的是一份 30 行的 diff,而不是一個猜測。

    做法

    1. 1交給它之前,先寫好或指出用來檢查的依據:那個失敗的測試,或指令及其預期輸出。
    2. 2用本頁的提示詞交代任務,包括它可以修改哪些檔案、不可以修改哪些。
    3. 3讓它自己執行檢查,並貼上最終輸出。
    4. 4像審查同事的 pull request 一樣審查 diff;檢查通過是審查的開始,而不是結束。

    內建功能

    可複製的提示詞

    任務:[修改內容]。
    完成的標準:[測試或指令] 通過並輸出 [預期輸出]。結束前執行一次,並貼上結果。
    你可以修改:[路徑]。不要修改:[路徑]、相依套件或測試。
    如果你無法讓它通過,就停下來說明原因,不要繞過檢查。

    容易出錯的地方

    • 代理有時會用放寬測試的方式讓測試通過。禁止它修改測試,並在 diff 中留意這種情況。
    • 一個檢查涵蓋不了的任務,就大到不適合一次交出去。把它拆開。
  2. 02

    在你做別的事時,讓任務在雲端執行

    雲端代理在自己的環境中處理你的程式碼庫,完成後帶著待審查的修改回來,所以在你做別的事時,可以同時跑好幾項任務。這只對規格清楚的任務划算;模糊的任務回來時,會是一大份你得自己拆解的 diff。

    範例

    午餐前有三項小任務:升級一個相依套件、補上缺少的資料庫索引、修正一個時好時壞的測試。每一項都附上自己的檢查交給雲端代理,下午你審查三個 pull request,而不必切換三次工作情境。

    做法

    1. 1選一個離你的程式碼最近的:Codex Cloud、GitHub 上的 Copilot 雲端代理,或網頁版的 Claude Code。
    2. 2確認它的環境能安裝你的相依套件並執行你的測試;少了這些,代理就只是在猜。
    3. 3送出小而獨立的任務,每一項都附上自己的檢查,就像上一項任務那樣。
    4. 4先讓自動審查工具讀過每個 pull request,再自己審查。

    內建功能

    可複製的提示詞

    在這個程式碼庫中:[任務]。
    背景:[程式碼中的位置、相關 issue]。
    完成的標準:[測試或指令] 在你的環境中通過;把它的輸出放進 pull request 說明。
    pull request 的修改行數要少於 [行數] 行。如果需要更多,就停下來,提出拆分的方式。

    容易出錯的地方

    • 需要機密或服務、而你又沒有設定好的測試,會被略過或失敗。少了這些的綠燈結果,證明不了什麼。
    • 多個代理處理相關的程式碼,產出的 pull request 會互相衝突。讓平行的任務各自待在不同的範圍。
  3. 03

    讓檢查不需要你也能執行

    不要把審查時間花在機器就能檢查的事情上。hooks 會在代理每次修改後執行你的格式化工具、linter 和測試,審查機器人則會在你之前先讀過每個 pull request。這樣你的審查就能專注在設計上,而不是錯字。

    範例

    一個 hook 在每次編輯後執行格式化工具和單元測試。代理的修改弄壞了兩個測試;它在 hook 的輸出中看到失敗,並在你查看之前就修好了。接著審查機器人標出一個沒有處理的錯誤情況,這個就由你來決定。

    做法

    1. 1把你的建置、測試和 lint 指令放進代理每次工作階段開始時都會讀取的指示檔案;各代理的文件都會寫明這個檔案的名稱。
    2. 2在 Claude Code 中加入 hooks,在每次編輯後執行格式化工具和測試,讓代理看到失敗並自行修正。
    3. 3讓機器人審查每個 pull request:在 Codex 中開啟「Automatic review」,或把 Copilot 指定為審查者。
    4. 4代理同一個錯誤犯了兩次,就把它變成一個測試,或指示檔案中的一條規則。

    內建功能

    可複製的提示詞

    讀取這個程式碼庫,並為程式設計代理撰寫指示檔案:
    1. 安裝、建置、測試、lint 和格式化的確切指令。
    2. 用 10 行以內說明專案結構。
    3. 新人在這裡常弄錯的慣例,各附一個例子。
    4. 代理在這裡絕對不能做的事,例如修改 migration 或編輯自動產生的檔案。
    只列出你成功執行過的指令;其餘的標為「未驗證」。

    容易出錯的地方

    • 指示檔案裡的指令如果已經失效,等於在教代理忽略這個檔案。設定變更時,重新執行一遍這些指令。
    • 審查機器人也會自信滿滿地犯錯。把它們的留言當成建議就好。
  4. 04

    用最少的權限,把代理連接到你的工具

    代理的表現取決於它看得到什麼:issue、文件、日誌、資料庫結構描述。MCP 能把這些連接起來,但每個連接都是一種存取權限,而它從外部讀到的文字也可能夾帶指令。先從唯讀開始,只在任務需要時才擴大權限。

    範例

    代理從追蹤系統讀取 issue 482,在日誌中找到堆疊追蹤,查閱函式庫的文件,然後指出出問題的檔案,全程都透過唯讀權杖。修正則是寫在你的程式碼庫中,由你照常審查。

    做法

    1. 1列出你最常貼進對話的內容,例如 issue、錯誤日誌、文件或資料庫結構描述。先連接這些。
    2. 2為每一項加入官方的 MCP 伺服器,並使用只能讀取的權杖。在 Gemini CLI 中,一個擴充功能可以把 MCP 伺服器和它的設定打包在一起。
    3. 3給它一個需要用到這些連接的任務,並確認它呼叫的是正確的那一個。
    4. 4每隔幾週,移除你不再使用的伺服器。

    內建功能

    可複製的提示詞

    在修改任何東西之前:讀取追蹤系統中的 issue [編號],在日誌中找到錯誤,並查閱 [函式庫] 的文件。
    說明每一項告訴了你什麼,以及你認為出問題的是哪個檔案。
    不要寫入任何已連接的工具。

    容易出錯的地方

    • 網頁、issue 或文件中可能藏有專門用來操控代理的文字。不要給會讀取外部內容的工具寫入權限。
    • 寫在設定檔裡的權杖會外洩。使用用戶端的機密儲存功能或環境變數,絕對不要放進程式碼庫。
  5. 05

    在訂閱和按 token 付費之間做選擇

    代理工作階段會讀取檔案並執行許多步驟,所以用掉的 token 比聊天多得多。選擇之前,先估算你自己典型一週的用量會花多少錢:訂閱會限制你親自操作的用量,按 token 計費則讓你能為每次自動化執行設定上限。

    範例

    每天使用代理,一週下來大約是 4,000 萬個輸入 token 和 300 萬個輸出 token。用 API 價格頁面上你所用模型的價格計算後,拿來和一個月的訂閱費比較。如果訂閱比較便宜,而且它的限制符合你一週的用量,就選訂閱,另外保留一把設有上限的 API 金鑰給 CI 使用。

    做法

    1. 1先確認你已經付費的項目:ChatGPT 方案包含 Codex,Claude 的付費方案包含 Claude Code。
    2. 2在代理會顯示用量的地方,記下幾次典型工作階段的 token 用量。
    3. 3用本站的 API 價格頁面計算這些用量的費用,並和訂閱比較。
    4. 4自動化和 CI 要使用設有支出上限的 API 金鑰,以免一個失控的迴圈讓帳單暴增。

    內建功能

    可複製的提示詞

    以下是我 [次數] 次典型工作階段的用量:[輸入和輸出 token 數]。我每週大約工作 [天數] 天。
    依照這些價格估算我按 token 計費的每月費用:[從 API 價格頁面貼上]。
    把它和每月 [價格] 的訂閱比較。列出計算過程,讓我可以核對。

    容易出錯的地方

    • 訂閱也有用量限制。任務做到一半碰到上限會浪費時間;除了價格,也要確認限制。
    • 影響帳單最大的是模型。用你實際使用的模型來比較。
  6. Claude Code

    06

    用 CLAUDE.md 讓每次工作階段都有相同的起點

    如果你每次工作階段一開始都要說明建置指令和慣例,你做的正是 CLAUDE.md 該做的事。Claude 每次工作階段開始時都會讀取它;保持簡短、內容正確,同樣的錯誤就不會再出現。

    範例

    在某個程式碼庫中,Claude 一直執行 npm test,而不是專案用的 pnpm test:unit,還一直編輯自動產生的檔案。在 CLAUDE.md 中加兩行,寫上正確的指令和「絕對不要編輯 src/gen/」,兩個錯誤就都不再發生。

    做法

    1. 1在程式碼庫中執行 /init:它會分析程式碼庫,寫出一份入門用的 CLAUDE.md,或針對你現有的那份提出改進建議。
    2. 2團隊規則,例如建置和測試指令、程式碼規範,放在 ./CLAUDE.md 並提交。你個人的偏好,要套用到所有專案的放在 ~/.claude/CLAUDE.md,只用於這個專案的則放在 CLAUDE.local.md。
    3. 3較長的文件用指向的方式,不要整份貼進去:@path/to/file 會在啟動時匯入另一個檔案。
    4. 4每當 Claude 同一件事錯了兩次,就加上那一行原本能防止錯誤的說明。

    可複製的提示詞

    讀取這個程式碼庫,並改進 CLAUDE.md。控制在 60 行以內:
    1. 建置、測試和 lint 的確切指令。
    2. 用幾行說明專案結構。
    3. 新人在這裡常弄錯的慣例。
    4. 絕對不能編輯的檔案和資料夾。
    刪除任何已經不正確的內容。把你沒有執行過的指令標為「未驗證」。

    容易出錯的地方

    • CLAUDE.md 裡的所有內容每次工作階段都會載入,並占用上下文。把細節移到它匯入的檔案中。
    • 已經不正確的指示比沒有指示更糟。設定變更時,重新檢查這些指令。

    官方文件寫道: Claude Code docs: How Claude remembers your project

  7. 07

    先規劃,再讓它編輯

    對於跨越許多檔案的修改,代價高昂的錯誤是方向錯了,而不是某一行寫錯。在規劃模式下,Claude 會研究並寫出計畫,但不會編輯你的原始檔案;你修正計畫,然後核准它。

    範例

    把身分驗證從 cookie 改成 token,牽涉 14 個檔案。第一版計畫漏掉了行動用戶端;你指出來後,計畫多了一個步驟,直到這時 Claude 才開始編輯。

    做法

    1. 1按 Shift+Tab,直到狀態列顯示「plan mode on」,或在提示詞開頭加上 /plan。
    2. 2描述要做的修改,以及哪些地方不能改。Claude 仍然可能執行指令來探索,但在規劃期間不會編輯檔案。
    3. 3像讀設計說明一樣讀這份計畫:有沒有改錯檔案、漏掉情況、修改範圍太大。要求它修改,直到計畫正確為止,然後再核准。
    4. 4開始下一個不相關的任務之前,用 /clear 重新開始。

    可複製的提示詞

    /plan 修改 [對象],以達成 [目標]。限制:[不能改變的部分]。
    列出你會動到的檔案、修改的順序、證明每個步驟正確的測試,以及任何你不確定的地方。在我核准之前,不要編輯任何東西。

    容易出錯的地方

    • 計畫動到的檔案比你預期的多,就是警訊。核准之前先問原因。
    • 規劃模式仍會執行指令來探索。它並不會讓一個陌生的程式碼庫變得可以安全執行。

    官方文件寫道: Claude Code docs: Choose a permission mode · Claude Code docs: Commands · Claude Code docs: Best practices

  8. 08

    別再把同一個指令核准五十次

    每次執行測試都要手動核准,會讓你養成不看內容就點「是」的習慣。在專案設定中一次允許安全且重複的指令,拒絕危險的指令,其他一切則保留確認提示。

    範例

    一個團隊在共用的專案設定中允許測試和 lint 指令,並禁止讀取 .env 檔案。確認提示減少到只剩幾個值得細讀的指令,而且任何人的工作階段都無法開啟金鑰。

    做法

    1. 1開啟 /permissions,查看每一條規則以及它來自哪個設定檔。
    2. 2把團隊的規則放在 .claude/settings.json 並提交。個人規則放在 ~/.claude/settings.json 或 .claude/settings.local.json。
    3. 3規則的檢查順序是先 deny,再 ask,最後 allow,所以一條 deny 規則會蓋過任何 allow。
    4. 4用 Shift+Tab 切換模式:acceptEdits 會核准工作目錄中的檔案編輯。bypassPermissions 會關閉確認提示和安全檢查;官方文件說只能在沒有網路連線的隔離容器或虛擬機器中使用。

    可複製的提示詞

    看看你在這次工作階段中執行過的指令。為 .claude/settings.json 提出權限規則:允許我們每天使用的唯讀和測試指令,拒絕任何會讀取機密或刪除專案以外內容的操作,其餘一律設為詢問。每條規則用一行說明。

    容易出錯的地方

    • 一條符合任何指令的 allow 規則,等於沒有確認提示。只允許明確的指令。
    • .claude/settings.json 裡的規則一旦提交,就會套用到整個團隊。像審查程式碼一樣審查它們。

    官方文件寫道: Claude Code docs: Configure permissions · Claude Code docs: Settings files and precedence · Claude Code docs: Choose a permission mode

  9. 09

    讓每次工作階段保持專注

    一個處理過三項不相關任務的工作階段,上下文中仍然留著這三項任務,而且看得出影響。在任務之間清除上下文,長任務則指定重點來壓縮,大範圍的搜尋交給子代理在它們自己的上下文中進行。

    範例

    修好一個錯誤後,你在同一個工作階段中要求重構,它卻一直沿用那個錯誤的舊替代做法。執行 /clear,再補一句背景說明,它就不會了。

    做法

    1. 1在不相關的任務之間,/clear 會以空白的上下文開始一段新對話。
    2. 2在長任務中,指定重點的 /compact,例如「/compact 保留計畫和失敗的測試」,會摘要先前的內容。
    3. 3把大範圍的搜尋交給子代理:每個子代理都在自己的上下文視窗中執行,所以只有它的答案會回到你的工作階段。
    4. 4Claude Code 在接近上限時也會自動壓縮;在適當的時機自己壓縮,就能保留你選擇的內容。

    內建功能

    可複製的提示詞

    /compact 保留:目標、計畫、目前為止修改過的檔案,以及仍然失敗的測試。捨棄探索過程。

    容易出錯的地方

    • /clear 會忘掉整段對話。任何之後還會用到的內容,都要先寫進 CLAUDE.md。
    • 你從子代理那裡拿回來的只有它的答案。請它提供檔案路徑和行號,而不只是結論。

    官方文件寫道: Claude Code docs: Commands · Claude Code docs: Best practices · Claude Code docs: Create custom subagents

  10. 10

    同時執行兩項任務而不互相干擾

    兩個工作階段在同一份 checkout 中,會互相改到對方正在編輯的檔案。claude --worktree 讓每個工作階段在自己的分支上擁有自己的副本,所以重構和錯誤修正可以並行。

    範例

    一個 worktree 在升級相依套件,另一個在修正 UI,兩者同時執行,而你在審查第三個 pull request。兩個工作階段都看不到對方做到一半的檔案。

    做法

    1. 1用 claude --worktree <name>(或 -w)開始每個工作階段。它會在 .claude/worktrees/<name>/ 下建立一個 git worktree,使用分支 worktree-<name>。
    2. 2依照官方文件的建議,把 .claude/worktrees/ 加進 .gitignore。
    3. 3每個工作階段只給一項附有自己檢查的任務,這樣你就能一個一個審查。
    4. 4像處理其他 pull request 一樣,審查並合併每個分支。

    可複製的提示詞

    你正在分支 worktree-[名稱] 上的 worktree 中工作。任務:[一項修改]。完成的標準:[測試或指令] 通過。只在這個分支上提交;不要合併或 rebase 其他分支。

    容易出錯的地方

    • 每個 worktree 都是獨立的資料夾,所以相依套件和建置輸出不會共用。每個都要各自安裝。
    • 兩項任務如果動到相同的檔案,不管有沒有用 worktree,合併時還是會衝突。

    官方文件寫道: Claude Code docs: Run parallel sessions with worktrees

  11. 11

    用 rewind 撤銷走錯的一步

    工作階段出錯時,要 Claude 自己撤銷它的修改,往往只會再添一團亂。rewind 能把對話、程式碼或兩者還原到出錯之前的某個時間點。它無法撤銷 shell 指令做過的事,所以在有風險的步驟之前先提交。

    範例

    三個提示詞之前,一次重構走錯了方向。rewind 到那之前,檔案和對話都會還原,你換個方式重新提出要求,而不是跟它爭論、要它把程式碼改回來。

    做法

    1. 1在空白的輸入框中按兩次 Esc,或輸入 /rewind(/checkpoint 和 /undo 也可以)。
    2. 2選擇出錯之前的時間點,還原對話、程式碼,或兩者都還原。
    3. 3了解它的限制:被 rm、mv 或 cp 等 shell 指令改動的檔案不會還原,在 Claude Code 之外或其他工作階段中所做的編輯也不會。
    4. 4有風險的步驟之前先提交。檢查點是用來在工作階段內快速復原的,不能取代 git。

    可複製的提示詞

    開始之前,先提交目前的狀態,提交訊息寫「[任務] 前的檢查點」。接著執行 [任務]。執行任何會刪除或移動檔案的指令之前,先問我。

    容易出錯的地方

    • rewind 救不回被指令刪掉的檔案。只有 git 可以。
    • 你在這段期間手動做的編輯也不會被記錄。rewind 之前先把它們提交。

    官方文件寫道: Claude Code docs: Checkpointing · Claude Code docs: Commands

  12. 12

    從指令碼和 CI 執行

    同一個代理也能在沒有聊天介面的情況下執行:claude -p 接收一個提示詞,完成工作後以指令碼可以檢查的結束狀態退出。在 CI 中,--bare 會略過你本機的 hooks、技能、MCP 伺服器和 CLAUDE.md,讓每次執行在任何地方的表現都一樣。

    範例

    一個每晚執行的工作以「根據今天合併的 pull request 更新 changelog」和 --output-format json 執行 claude -p,並在結束狀態不是 0 時讓建置失敗,這樣隔天早上就會發現執行出了問題。

    做法

    1. 1claude -p "..." 以非互動模式執行。--output-format json 或 stream-json 會產生指令碼可以解析的輸出。
    2. 2成功時結束狀態為 0,失敗時為非 0,所以 CI 可以據此分支處理。
    3. 3在 CI 中加上 --bare,讓執行不依賴本機設定。
    4. 4針對 pull request,/install-github-app 會設定 Claude Code GitHub Actions(僅限 github.com 上的程式碼庫);之後在 pull request 或 issue 留言中提及 @claude 即可。

    可複製的提示詞

    claude -p "閱讀與 main 之間的 diff。列出每一個會新增相依套件、涉及身分驗證或修改資料庫 migration 的變更,以 JSON 格式輸出:{\"files\": [], \"reason\": \"\"}。如果沒有,就回傳空清單。" --output-format json

    容易出錯的地方

    • 指令碼會以你給它的權限執行。只給 CI 它最少需要的權限。
    • /install-github-app 只適用於 github.com 上的程式碼庫。

    官方文件寫道: Claude Code docs: Run Claude Code programmatically · Claude Code docs: GitHub Actions

  13. Codex

    13

    AGENTS.md:每項 Codex 任務的起點指示

    Codex 在做任何工作之前都會讀取 AGENTS.md,從你的全域檔案一路讀到它正在工作的資料夾。把指令和規則寫一次,放在它們所適用的程式碼附近,距離最近的檔案優先。

    範例

    一個包含網頁應用程式和付款服務的程式碼庫。根目錄的 AGENTS.md 放共用的指令;payments/AGENTS.md 加上「沒有測試就絕對不要更改貨幣的四捨五入規則」。在 payments/ 中的工作會同時遵守兩者,兩者不同時以較近的檔案為準。

    做法

    1. 1在 CLI 中執行 /init,在目前的資料夾寫出一份入門用的 AGENTS.md。
    2. 2個人的指引放在 ~/.codex/AGENTS.md,專案規則放在程式碼庫中。子資料夾可以有自己的檔案;離 Codex 工作位置越近的檔案越優先。
    3. 3讓這些檔案保持簡短:它們的總大小有上限,預設為 32 KiB。
    4. 4加上一個「## Code Review Rules」區段:Codex 在 GitHub 上的審查會遵循它。

    可複製的提示詞

    讀取這個程式碼庫,並撰寫 AGENTS.md:
    1. 安裝、建置、測試和 lint 的確切指令。
    2. 用幾行說明專案結構。
    3. 新人在這裡常弄錯的慣例。
    4. 一個「## Code Review Rules」區段,寫明審查者一定要標出的問題。
    只列出你成功執行過的指令;其餘的標為「未驗證」。

    容易出錯的地方

    • 檔案太長反而對你不利:總大小預設上限為 32 KiB。
    • 子資料夾的檔案如果和根目錄的檔案矛盾卻沒有說明,會讓人和 Codex 一樣困惑。寫明它覆寫了哪些內容。

    官方文件寫道: Codex docs: AGENTS.md · Codex docs: CLI commands · Codex docs: GitHub integration

  14. 14

    決定 Codex 可以自行做多少事

    權限模式決定 Codex 不經詢問就會做哪些事。「Ask for approval」在工作區內作業,要超出工作區之前會先暫停;「Full access」則移除沙箱和詢問。每項任務各自選擇,而不是設定一次就永遠不變。

    範例

    以唯讀模式閱讀一個陌生的程式碼庫,然後切換到「Ask for approval」來修正一個錯誤。Codex 會在程式碼庫內編輯,但要觸及範圍以外的地方之前,會先停下來詢問。

    做法

    1. 1在 CLI 中,/permissions 可以切換模式,/status 則會顯示目前生效的核准政策和可寫入的資料夾。
    2. 2「Ask for approval」是建議的預設模式,會在工作區內編輯和執行指令,要超出工作區之前會先暫停。
    3. 3「Approve for me」使用同樣的沙箱,但核准請求會交給自動審查,而不是交給你。
    4. 4「Full access」會移除檔案系統和網路的限制。官方文件對此附有警告;只在可以隨時丟棄的環境中使用。

    可複製的提示詞

    開始之前,先執行 /status,告訴我核准政策和可寫入的資料夾。接著執行 [任務]。任何需要網路或會寫入這個程式碼庫以外位置的指令,執行前都要先問我。

    容易出錯的地方

    • 使用「Approve for me」時,沒有人會閱讀每個請求。只在錯誤動作很容易復原的地方使用。
    • 「Full access」適用於整台機器,而不只是程式碼庫。

    官方文件寫道: Codex docs: Permission modes · Codex docs: Sandboxing · Codex docs: Approvals and security · Codex docs: CLI commands

  15. 15

    從指令碼和 CI 執行 Codex

    codex exec 會在沒有聊天介面的情況下執行任務:進度輸出到 stderr,只有最終訊息輸出到 stdout,所以指令碼可以直接使用答案。它預設為唯讀;只在工作需要時才給它寫入權限。

    範例

    一個發布指令碼以「根據上一個標籤以來的 commit 撰寫版本說明」執行 codex exec,並把 stdout 存成 RELEASE.md。唯讀就夠了,因為檔案是由指令碼自己寫入的。

    做法

    1. 1codex exec "..." 以非互動模式執行,預設使用唯讀沙箱。
    2. 2需要編輯檔案時加上 --sandbox workspace-write;--full-auto 已經棄用。
    3. 3--json 會輸出 JSON Lines 格式的事件串流,供需要掌握每個步驟的指令碼使用。
    4. 4在 GitHub Actions 中,openai/codex-action@v1 會替你執行 codex exec。

    可複製的提示詞

    codex exec "讀取自標籤 [v1.2.0] 以來的變更。撰寫版本說明,分成「新增」、「變更」和「修正」三組:每項變更一行,用使用者看得懂的話來寫,不要附 commit 雜湊值。"

    容易出錯的地方

    • 較舊的指南仍在使用 --full-auto。它已經棄用;請改用 --sandbox workspace-write。
    • 只需要讀取的工作就應該維持唯讀,在 CI 中也一樣。

    官方文件寫道: Codex docs: Non-interactive mode · Codex docs: GitHub Action

  16. 16

    push 之前先取得審查

    Codex 可以審查你的工作樹、某個分支或某個 pull request。在 GitHub 上,它只會標出最嚴重的問題,也就是 P0 和 P1,所以它的留言值得一讀。push 之前先執行審查,並讓它審查每個 pull request。

    範例

    在 push 一個 migration 之前,/review 標出新欄位沒有預設值,現有的資料列會因此失敗。push 之前花一分鐘,就不必面對一次失敗的部署。

    做法

    1. 1CLI 中的 /review 會審查你的工作樹。codex review 則在沒有聊天介面的情況下做同樣的事,比較的對象可以是基礎分支、某個 commit 或尚未提交的變更。
    2. 2在 GitHub 上,於 pull request 留言 @codex review。
    3. 3在 Codex 設定的「Personal preferences」中開啟自動審查;這樣就不需要留言了。
    4. 4把團隊的規則寫在 AGENTS.md 的「## Code Review Rules」區段中。

    內建功能

    可複製的提示詞

    ## Code Review Rules
    - 標出任何涉及身分驗證或權限的變更。
    - 標出無法回復的資料庫 migration。
    - 標出新的相依套件,並說明是否真的需要。
    - 忽略格式問題;linter 會處理。

    容易出錯的地方

    • GitHub 上的審查只會標出 P0 和 P1 問題。沒有留言不代表設計是對的。
    • 審查是第二意見,不是測試執行。測試還是要保留。

    官方文件寫道: Codex docs: CLI commands · Codex docs: GitHub integration

  17. 17

    把任務交給 Codex Cloud

    你的電腦休眠時,Codex Cloud 仍會繼續工作,每項任務都在自己的工作區中進行,而工作區是從你設定一次的環境建立的。有了合適的環境,它就能安裝、建置和測試;沒有的話就只能猜。

    範例

    開會前用 codex cloud exec 送出四項小型重構,每一項都在從同一個環境建立的工作區中進行。最棘手的那一項你要求嘗試三次並保留最好的結果;會後你審查四份 diff。

    做法

    1. 1建立一個環境,包含任務需要的程式碼庫、相依套件、工具和存取設定。新的環境會記錄一個安裝指令碼和一個啟動技能。
    2. 2為每個環境設定網際網路存取:只允許套件管理工具、只允許指定的網域,或全部開放。
    3. 3你可以從 ChatGPT 啟動任務,較長的工作可以從 IDE 擴充功能啟動,或在終端機中用 codex cloud exec 啟動;--attempts 1-4 可以要求多次嘗試以便比較。
    4. 4Code Review 以及 GitHub 和 Linear 整合仍在舊版的 Codex Cloud(Legacy)上執行,OpenAI 計劃將其停用。

    內建功能

    可複製的提示詞

    codex cloud exec --attempts 3 "任務:[修改內容]。背景:[檔案]。完成的標準:[測試] 在這個環境中通過。diff 控制在 [行數] 行以內。"

    容易出錯的地方

    • 不受限制的網路存取會讓任務能連到任何網站,包括專門寫來操控它的網頁。只允許工作需要的部分。
    • 如果缺少安裝指令碼,測試可能根本沒有執行。確認任務真的執行過測試。

    官方文件寫道: Codex docs: Cloud environments · Codex docs: CLI commands · Codex docs: IDE extension

  18. 18

    一次設定好 Codex:設定檔、profile 和 MCP

    如果你每次工作階段都要手動更改模型和設定,就把它們寫進 config.toml。Codex 每次都會讀取 ~/.codex/config.toml,在受信任的專案中也會讀取專案設定,而一個 profile 可以一次切換整組設定。

    範例

    一個用於設計問題、推理強度高的「deep」profile,快速修正則使用預設值。問架構問題前執行 codex --profile deep;其他情況直接執行 codex。

    做法

    1. 1在 ~/.codex/config.toml 中設定預設模型和推理強度(model 和 model_reasoning_effort)。CLI 和 IDE 擴充功能共用這個檔案。
    2. 2把 profile 建立成獨立的檔案 ~/.codex/<name>.config.toml,並用 --profile <name> 啟動。
    3. 3用 codex mcp add <name> -- <command> 新增 MCP 伺服器;每個伺服器都會成為一個 [mcp_servers.<name>] 表格,/mcp 則會列出目前啟用的伺服器。
    4. 4/status 會顯示目前生效的設定,codex resume --last 則會接續這個資料夾中最近的工作階段。

    可複製的提示詞

    讀取 ~/.codex/config.toml 和這個專案的 .codex/config.toml。告訴我目前生效的模型、推理強度、沙箱和 MCP 伺服器,每一項來自哪個檔案,以及任何互相衝突的地方。

    容易出錯的地方

    • 專案設定只會在受信任的專案中載入。如果某個設定似乎被忽略了,先檢查這一點。
    • profile 現在是獨立的檔案。把 [profiles.name] 寫在 config.toml 裡的指南已經過時了。

    官方文件寫道: Codex docs: MCP · Codex docs: Config basics · Codex docs: Advanced config · Codex docs: CLI commands

開發者的使用規則

  • 絕對不要把機密、金鑰或客戶資料貼進提示詞;也不要把它們放在會被建立索引的資料夾裡。
  • 在分支上執行代理,並把權限設成執行指令前先詢問;每個 diff 都要審查。
  • 合併代理寫的程式碼之前,自己先跑一遍測試。
  • 代理使用的任何 API 金鑰都要設定支出上限。

深入了解

Esc
↑ ↓ 移動Enter 開啟