Day 1 時,我從一句話開始:
幫我做一個 Issue Tracker。
30 天後,手上不只有一段 AI 產生的程式碼,而是一個包含需求、功能、測試、文件、CI、Code Review 與 Git 紀錄的 Issue Tracker。
昨天,我們也完成 feature/delete-issue 的最終 Review,並把 Pull Request 合併到 main。
今天不再加入新功能,而是回頭整理這 30 天真正完成了什麼,以及我從 ChatGPT 和 Codex 的協作過程學到什麼。
「幫我做一個 Issue Tracker」只有一個模糊目標,沒有說明:
AI 當然可以自己補上這些空白,但每一個自行補完的地方,都可能和我真正想做的產品不同。
經過這 30 天,交給 Codex 的 Prompt 已經會包含:
目標
-> 專案上下文
-> 明確需求
-> 不做事項
-> 修改範圍
-> 驗收條件
-> 驗證命令
-> 完成回報
這個系列最後完成的 Issue Tracker 包含:
npm run check
功能之外,也留下 GitHub Issue、branch、commit、Pull Request 與 Review 紀錄。這些紀錄讓讀者不只能看到最後結果,也能理解每個決定是怎麼形成的。
回頭看每天不同的主題,核心都是建立一條可驗證的協作流程:
模糊想法
-> 需求釐清
-> 任務拆解
-> 提供 repository 上下文
-> 先提計畫
-> 小範圍實作
-> 檢查 diff
-> 測試與除錯
-> 安全與 Code Review
-> commit、CI 與文件
-> Pull Request
-> 最終 Review 與合併
前面的步驟不是拖慢寫程式,而是讓後面的修改更容易判斷對錯。
Day 1 到 Day 7 還沒有急著寫正式功能,而是在練習:
Day 8 到 Day 14 建立 Issue Tracker 的最小環境,接著讓 Codex:
AGENTS.md 的開發規則Day 15 到 Day 21 把重點放在品質:
Day 22 到 Day 27 開始處理真正的團隊開發流程:
npm run check
最後三天,我們從最新的 main 建立:
feature/delete-issue
接著完成:
npm run check
經過 30 天,我會這樣整理三者的角色。
適合協助:
適合協助:
仍然需要負責:
如果要把這 30 天濃縮成一份可以重複使用的模板,我會留下:
目標:
這次要解決什麼問題?
上下文:
請先閱讀哪些需求、規則與程式?
範圍:
必須完成哪些行為?
限制:
哪些內容不能做?哪些操作需要先停止確認?
驗收:
什麼證據能證明任務完成?
驗證:
需要執行哪些測試、Type Check 或 build?
回報:
請列出修改檔案、測試結果、差異與未完成事項。
不是每個任務都要填滿所有欄位,但越可能影響檔案、資料或 Git 歷史,就越值得把邊界寫清楚。
挑選自己 repository 裡一張小型 Issue,試著走一次:
釐清需求
-> 建立 branch
-> 要求 Codex 先提計畫
-> 實作與補測試
-> 檢查 diff
-> 執行完整驗證
-> 建立 Pull Request
-> 換一個 Reviewer 視角檢查
第一次不需要做很大的功能。範圍越小,越容易看清楚哪些部分是 AI 幫上忙,哪些判斷仍然必須由自己完成。
回到第一天的問題:要怎麼讓 AI 產生的內容真正進入軟體開發流程?
我的答案不是找到一句完美 Prompt,而是建立一套能反覆檢查的合作方式:
Prompt 不是讓 AI 猜答案的咒語,而是一份可以討論、執行與驗證的工作契約。
Codex 也不是按下按鈕就能自動合併程式的黑盒子。當人提供清楚的目標、足夠的上下文與品質防線時,它會成為很有能力的開發協作者。
從一句 Prompt 到一個 Pull Request,真正重要的不是 AI 寫了多少程式,而是我們能不能說明每一項修改為什麼存在,以及用什麼證據相信它。
這就是我用 30 天得到的答案。