iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
ChatGPT & Codex

Codex 實戰 30 講:從個人開發到團隊導入系列 第 2

Day 2. Codex 適合做什麼,不適合做什麼

  • 分享至 

  • xImage
  •  

從任務範圍判斷是否適合交給 Codex

前面已經讓 Codex 閱讀 GitHub 上的儲存庫,並整理專案用途、主要模組、測試位置與可執行命令。這份「專案理解摘要」可以幫助開發者認識程式碼,也能作為判斷任務範圍的起點。

同一個專案裡,有些工作可以直接交給 Codex,有些需要先取得人工批准,另一些則應由具備相應責任與權限的人員處理。

適合交給 Codex 的任務,通常具有清楚的修改範圍、可檢查的產出與可重複的驗證方式。

解釋一段程式、修正說明文件、補上既有函式的單元測試、處理格式問題,以及調整局部命名,都可以透過檔案差異或測試結果確認成果。結果不符合預期時,開發者也能捨棄變更,回到任務開始前的狀態。

判斷時可以先檢查四項條件:Codex 會接觸哪些檔案與系統、成果要如何驗證、失敗後能否安全回復,以及工作是否會影響正式環境。

修改範圍、驗證方式與回復方法越明確,任務就越容易控制。權限、沙盒(Sandbox)與網路存取則構成不同的安全邊界,用來限制代理人可以接觸的檔案、命令與外部資源。

就算任務名稱看起來很小,仍要確認實際影響範圍。「修改一行設定」可能改變正式環境的付款流程,風險會高於新增一個隔離的測試檔案。「更新相依套件」也可能連帶改變大量間接套件與執行行為。任務分類應依照實際影響、驗證方式與回復條件判斷,不能只看修改行數。

適合交給 Codex 的日常開發工作

程式理解很適合作為 Codex 的起點。它可以沿著函式呼叫、模組引用與測試檔案整理功能路徑,協助開發者縮小閱讀範圍。

文件更新、局部程式修正、測試草稿與小範圍重構也有明確產出,開發者可以直接查看檔案差異,再透過既有工具確認格式、型別與測試結果。

適合的任務仍需要寫清楚完成條件。「幫忙改善這個專案」沒有指定工作範圍,Codex 就必須自行判斷改善方向。「修正 README.md 中已失效的啟動命令,依照 package.json 核對內容,不修改其他檔案」則提供了目標、依據與限制。這樣的描述能讓 Codex 知道需要查看哪些資料,也方便開發者快速核對結果。

Codex Cloud 會在隔離環境中取出指定的儲存庫與分支,任務完成後提供工作摘要與檔案差異。開發者可以檢查結果、要求後續調整,再決定是否建立拉取請求(Pull Request)。這類流程適合能在分支中完成、可透過差異審查,且不需要存取正式資料的工作。

測試通過只能證明已執行的已知案例得到預期結果,未寫入測試的業務規則仍需要另外確認。Codex 產生的文件、程式與測試都屬於候選成果。開發者需要確認需求是否被正確理解、測試是否涵蓋重要情境,以及修改內容是否符合專案規則。

需要人工批准或不應交給 Codex 的工作

任務一旦涉及正式資料、帳號權限、外部服務費用、部署流程或敏感憑證,代理人的一次操作就可能產生難以回復的結果。

這類工作可以先請 Codex 分析影響、整理執行計畫或產生草稿。實際執行前,需要由負責人核對目標、範圍與回復方式。每次批准都應對應明確動作,避免一次開放過大的權限。

資料庫結構變更、相依套件升級與登入權限調整,常屬於「需人工批准」的任務。Codex 可以先在隔離環境中準備修改與測試,合併或套用前再檢查資料相容性、安全影響與部署順序。

沙盒(Sandbox)用來限制 Codex 能接觸的資源,批准機制則控制哪些動作必須先停下來等待人員同意。批准範圍應限制在完成當前任務所需的最小權限,避免直接使用 Bypass 模式開放所有指令。

刪除正式客戶資料、直接發布到正式環境、變更付款帳戶,以及建立或擴大管理員權限,應由具備正式職責的人員執行。這些操作涉及組織授權、法規要求與責任歸屬,判斷依據也超出程式碼差異與測試結果。

Codex 可以協助整理檢查清單、模擬操作步驟與產生操作草稿,正式執行仍應納入既有的審批與稽核流程。

網路存取也要納入任務分類。Codex Cloud 的代理人工作階段預設是封鎖網路存取。在開放網路後,提示注入、程式碼或祕密外洩,以及下載惡意套件等風險都需要納入評估。需要查詢外部網站或下載相依套件時,應限制可連線的網域與存取方式,並且在完成後檢查相關的工作紀錄。

建立 Codex 任務分類表

本篇沿用前面的 Codex Cloud 任務與儲存庫內容。這次仍維持唯讀,不可修改檔案、安裝套件或執行專案指令。讓 Codex 根據先前已查看的文件、設定與程式碼,提出 10 個與專案相關的候選開發任務。

請在原有任務對話中輸入以下提示詞:

請根據儲存庫現有內容,列出 10 個具體的候選開發任務,並整理成「Codex 任務分類表」。分類只能使用「可交給 Codex」、「需人工批准」與「不可交給 Codex」。每個任務都要說明修改範圍、驗證方式、失敗後的回復方法、是否接觸正式環境或高權限操作,以及最後的分類理由。請勿修改檔案、安裝套件或執行專案指令。每項判斷須附上相關檔案路徑;儲存庫沒有提供的資訊請標示為「待確認」,不要自行補充。

完成後,表格應包含任務、依據檔案、修改範圍、驗證方式、回復方法、環境與權限風險、分類及理由。10 個任務需要涵蓋程式理解、文件更新、局部修正、補測試、重構、相依套件、資料庫、權限、正式資料與部署等情境。若專案缺少其中一類內容,Codex 應標示「待確認」,不需要自行虛構檔案、服務或操作流程。

分類完成後,開發者需要逐項核對 Codex 提供的檔案依據。「可交給 Codex」的任務應有明確邊界、驗證方式與回復方法;「需人工批准」的任務還要指出批准發生的時間點,以及由哪個角色負責確認;「不可交給 Codex」的任務則要說明涉及哪些正式責任、權限或難以回復的影響。若分類理由只寫成「風險很高」這類概括描述,仍不足以支援後續判斷。

Codex 能否執行某個動作,只能說明工具具備相應能力。任務是否適合交付,仍要根據修改範圍、驗證證據、回復成本、正式環境影響與權限責任判斷。

實作 - Codex 任務分類表

實作步驟

  1. 開啟先前對話
  2. 輸入提示詞
  3. 檢視結果

結果範例

分類原則

以下分類是依照目前儲存庫中可觀察到的程式碼、測試與設定所做的候選任務風險分類

  • 可交給 Codex:修改範圍明確、能以現有測試或可新增的本機測試驗證,失敗時可直接回復 Git 變更,且不需要正式環境或高權限。
  • 需人工批准:涉及產品規則、相依套件、建置產物、CI 平台或其他需要人類決策的事項;Codex 可在批准後實作。
  • 不可交給 Codex:需要直接操作正式環境、正式資料、憑證或外部高權限系統,而儲存庫沒有提供足夠的授權及回復資訊。

儲存庫沒有提供組織層級的 Codex 使用政策、正式環境定義、部署權限模型或資料敏感度規範。因此,下表中相關資訊均明確標為「待確認」,而不是假設既有環境或權限。

任務一覽

# 候選開發任務 修改範圍 驗證方式 失敗後的回復方法 正式環境/高權限 分類 分類理由
1 補齊所有輸入欄位的驗證測試 tests/triage.test.ts 增加空白 title、不支援的 severity、負數或非有限數值,以及非布林 hasWorkaround 的案例;原則上不必修改正式程式碼。現有驗證分支位於 src/domain/issue.ts 執行 npm test,確認新增案例通過且既有 5 個測試不回歸。測試 script 已設定為 vitest run 放棄或還原新增的測試提交;此任務沒有資料遷移或外部狀態。 否;只修改本機測試。 可交給 Codex 驗證規則已由程式碼明確定義,但目前測試只覆蓋非陣列及空 ID,缺少其他既有分支的測試。
2 補齊優先標籤邊界值測試 tests/triage.test.ts 增加分數位於 35、65、90 邊界及其相鄰值的測試;如需直接測試標籤函式,可改以能產生相應分數的 issue 測試公開的 rankIssues。標籤門檻位於 triage service。 執行 npm test,確認 monitorscheduleexpediteinterrupt 四種結果及邊界行為。 還原新增測試;若測試揭露現有行為與期望不一致,先停止,不自行改變門檻。 否。 可交給 Codex 任務只把現有明確門檻固化成回歸測試,不改變產品規則;現有測試只個別檢查了部分標籤。
3 補齊分數公式上限及 workaround 扣分測試 tests/triage.test.ts 新增受影響人數分數最高 30、等待天數分數最高 20、workaround 扣 15 分及四捨五入行為的案例。 執行 npm test;用公開的 rankIssues 檢查輸出的 priorityScore,並執行 npm run check 驗證型別。 還原測試提交;若測試與現有公式不符,先將結果交由人工判斷,不逕自修改公式。 否。 可交給 Codex 評分公式已完整存在於程式碼中,任務可在不重新定義需求的前提下增加測試保護。
4 消除同一 issue 重複計算優先分數 修改 src/services/triage.tsrankIssues,讓每個 issue 只呼叫一次 calculatePriorityScore,再將同一結果用於 priorityScorepriorityLabel。目前每筆 issue 會呼叫兩次。 執行 npm testnpm run check,並以現有範例執行 npm run dev -- ./examples/issues.json,確認排序、標籤和輸出不變。這些命令皆有既有設定或文件依據。 還原該重構提交;沒有資料格式變更或���久化狀態需要回復。 否。 可交給 Codex 這是範圍小且預期保持行為不變的內部重構,現有排序、摘要與格式化測試可提供基本回歸保護。
5 新增 CLI 層的自動化測試 新增 CLI 測試檔,例如 tests/cli.test.ts,涵蓋有效 JSON、未提供路徑、無效 JSON、無效 issue 及空陣列;必要時小幅重構 src/cli.ts,把主流程抽成可測試函式,同時保留命令列進入點。 執行 npm testnpm run check;測試應確認標準輸出、標準錯誤及非零結束碼。現有 CLI 已明確定義缺少參數及錯誤處理行為。 還原新測試及 CLI 重構;保留原本 main().catch(...) 流程。 否;測試使用本機暫存檔即可。是否允許衍生程序則屬執行環境細節,待確認 可交給 Codex CLI 行為和輸入格式已由程式碼與 README 定義,且任務可使用隔離的本機測試資料,不需要外部服務。
6 將測試編譯產物與應用程式建置產物分離 調整 tsconfig.json,或新增專用的 build tsconfig,使正式建置只輸出 src,測試仍由型別檢查涵蓋。目前 rootDir 是專案根目錄,且 include 同時包含 srctests 執行 npm run buildnpm run checknpm test;檢查 dist 的實際檔案清單是否符合人工批准的預期。dist/ 已被 Git 忽略。 還原 tsconfig 與 script 變更,刪除本機 dist/ 後重新執行原建置。是否有已發布產物需要回復為待確認 本機建置不需高權限;是否會影響正式發布流程為待確認,因儲存庫沒有部署設定。 需人工批准 這會改變建置產物布局;儲存庫沒有說明 dist 的消費者、發布方式或正式環境啟動方式,因此應先由人工確認期望產物。
7 調整嚴重程度權重或優先標籤門檻 修改 severityWeights、分數公式或 labelPriority 門檻,並同步更新測試和文件。 先由人工提供具體的新規則及代表性案例,再執行 npm testnpm run check,並用 examples/issues.json 比較調整前後排序。 還原公式、門檻、測試和文件提交;若新排序已被外部流程採用,外部回復方式為待確認 原始碼修改本身不需高權限;是否影響正式 triage 決策或正式環境為待確認 需人工批准 權重和門檻會直接改變「應該先處理哪些 issue」的產品/營運決策,不能只由 Codex 根據技術判斷重新定義。專案用途明確依賴這些排序結果。
8 升級 TypeScript、Vitest、tsx 或 Node.js 型別套件 修改 package.json 中的 devDependencies 及 package-lock.json;可能也需調整 TypeScript 或測試設定。現有版本範圍列於 package.json 在人工允許使用套件 registry 後執行乾淨安裝,再執行 npm testnpm run checknpm run build 和範例 CLI。Node.js 最低版本目前是 20。 還原 package.jsonpackage-lock.json,刪除本機 node_modules/,按舊 lockfile 重建;外部套件快取的處理方式為待確認 需存取外部套件來源;是否使用公司 registry、憑證或受控網路為待確認 需人工批准 相依升級涉及供應鏈、相容性及 lockfile 大量變更;儲存庫沒有依賴更新政策或核准流程,應由人工先決定版本與來源。
9 新增持續整合工作流程 新增 CI 設定,使提交或 PR 自動執行安裝、npm run checknpm test,並可選擇執行 npm run build。現有 npm scripts 足以構成基本檢查步驟。 在 CI 平台上建立測試 PR,確認 Node.js 20 以上的 runner 能完成所有工作;分支保護及必要檢查名稱需由人工確認。 還原或停用新增的 CI workflow;若已設成必要檢查,需由具有儲存庫管理權限的人員移除對應分支規則。 會接觸外部 CI 平台及可能的儲存庫設定權限;平台、權限、secrets 和分支保護規則均為待確認 需人工批准 Codex 可以撰寫 workflow,但儲存庫目前沒有可確認的 CI 設定,且啟用外部自動化及修改分支保護可能需要管理權限。
10 將 CLI 接到正式 issue 系統並直接執行正式 triage 可能需要修改 src/cli.ts 以呼叫外部 API、加入認證與分頁處理,並對正式 issue 資料執行排序;但目前程式只讀取本機 JSON 檔案。 API sandbox、契約測試、正式資料驗證、稽核紀錄及成功判準全部為待確認;儲存庫目前僅提供本機 JSON 範例。 API 寫入是否可逆、正式執行紀錄、先前狀態備份與回復程序全部為待確認。在這些資訊完成前不可執行。 會涉及正式系統、正式資料及認證憑證;系統位置、資料敏感度和授權方式均為待確認 不可交給 Codex 儲存庫沒有外部 issue 系統介面、憑證管理、sandbox、部署或回復文件。不能讓 Codex 自主取得正式存取權或直接對未知的正式資料執行操作。README 只承諾讀取 JSON 陣列。

依分類彙整

可交給 Codex
  1. 補齊所有輸入欄位的驗證測試。
  2. 補齊優先標籤邊界值測試。
  3. 補齊分數公式上限及 workaround 扣分測試。
  4. 消除同一 issue 重複計算優先分數。
  5. 新增 CLI 層的自動化測試。

這些任務都能限制在 srctests 與本機測試資料內;現有 scripts 提供測試與型別檢查入口。

需人工批准
  1. 將測試編譯產物與應用程式建置產物分離。
  2. 調整嚴重程度權重或優先標籤門檻。
  3. 升級開發相依套件。
  4. 新增持續整合工作流程。

這些任務分別涉及建置契約、產品排序政策、軟體供應鏈或外部平台權限;相關治理規則在儲存庫中均沒有完整說明,因此必須先取得人工決策。

不可交給 Codex
  1. 將 CLI 接到正式 issue 系統並直接執行正式 triage。

可以另行把「撰寫不含憑證、只針對 mock server 的整合程式」拆成待批准的開發任務,但取得正式憑證、直接連線正式系統及操作正式資料不應交由 Codex 自主完成。現有程式沒有任何外部 API 或正式環境設定,只有本機檔案讀取流程。

本次限制與確認事項

  • 未修改任何檔案。
  • 未安裝任何套件。
  • 未執行 npm installnpm cinpm run devnpm run buildnpm testnpm run check
  • 未建立提交或 Pull Request,因為工作樹沒有新增變更。

儲存庫檢閱命令

以下只讀命令用於確認檔案清單、工作樹狀態及相關檔案內容;它們不是專案建置、啟動或測試指令。

  • find . -maxdepth 4 -type f -not -path './.git/*' -not -path './node_modules/*' | sort
  • git status --short --branch
  • nl -ba README.md
  • nl -ba package.json
  • nl -ba tsconfig.json
  • nl -ba .gitignore
  • nl -ba src/cli.ts
  • nl -ba src/domain/issue.ts
  • nl -ba src/services/triage.ts
  • nl -ba tests/triage.test.ts
  • nl -ba examples/issues.json

上一篇
Day 1. Codex 是什麼:從 AI 對話到 AI 開發代理人
下一篇
Codex 的使用入口:CLI、IDE、Cloud、Desktop 與 Remote
系列文
Codex 實戰 30 講:從個人開發到團隊導入9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言