1405 字
7 分鐘
AI coding agent 一直原地打轉?把「完成」改寫成可驗證的狀態

我最不想看到的 agent 回覆是「已完成」,接著打開 diff 卻發現沒有任何有效變更。這不一定代表模型沒有做事;更常見的是任務只寫了「修好它」或「確認一下」,卻沒有告訴它什麼結果才算真的完成。

這篇整理一個能同時用在 Codex、Claude Code 與其他 coding agent 的任務寫法:把工作要求拆成可觀察、可執行、可停止的完成條件。

先把動詞換成可觀察的結果#

「修正登入錯誤」是工作方向,不是完成條件。它沒有指出要改哪個行為,也沒有指出誰來判定結果。

改寫時,讓每一項都能由指令、測試或檔案差異回答「是/否」。

模糊指令可驗證完成條件
修正登入錯誤新增或調整測試,讓無效 token 回傳 401;pnpm test 通過
更新依賴僅更新指定套件;lockfile 有變更;建置與型別檢查通過
整理元件不改公開 props;移除重複邏輯;相關測試通過
檢查設定列出實際讀取的設定檔與有效值;不寫入任何檔案

Codex 的官方案例把困難問題描述為可評分的改進迴圈,也把「驗證結果」放進重複操作的工作流程。這是一個好提醒:agent 的產出不該只是一段敘述,而要留下一個可重新檢查的證據。

一份可直接貼上的任務契約#

我會把任務寫成四個區塊。它不需要很長,但每個區塊都要能限制 agent 的解讀空間。

目標:修正 /api/session 在過期 token 時回傳 500 的問題。
範圍:只可修改 src/auth/ 與對應測試;不要更新依賴或改 API 路徑。
完成條件:
1. 過期 token 的請求回傳 401,回應格式維持既有 schema。
2. 新增一個覆蓋此情境的測試。
3. 在專案根目錄執行 pnpm test 與 pnpm check,兩者皆成功。
停止條件:
- 若需要變更公開 API 或資料庫 migration,停止並說明原因。
- 若測試失敗,列出失敗指令、第一個錯誤與已嘗試的修正;不要宣稱完成。

其中最有價值的是「停止條件」。它把需要人決定的分岔明講出來,避免 agent 為了追求完成而擴大修改範圍。

把驗證指令寫成任務的一部分#

不要只說「記得測試」。請指定工作目錄、指令與成功標準;否則 agent 可能只讀程式碼、只跑了不相關的檢查,或把失敗當成環境雜訊略過。

Terminal window
# 在 repository root 執行
pnpm test -- --runInBand
pnpm check
pnpm build

若專案沒有完整測試,仍可要求較小的證據,例如 git diff --check、一個 API 呼叫、或針對問題函式的最小重現腳本。關鍵不是湊出很多指令,而是讓每個指令能驗證一項完成條件。

不要把「已執行」當成「已通過」

回報必須包含指令的結果。若因缺少環境變數、服務未啟動或測試本身壞掉而無法驗證,應標成未驗證,而不是寫成完成。

對多步任務,先要求一份變更地圖#

涉及多個資料夾時,先讓 agent 交出它預計讀取、修改與驗證的位置,再開始寫入。這一步特別適合陌生 codebase:你可以先發現它是否把問題定位到錯誤模組。

先不要修改檔案。請列出:
1. 你認為的根因與證據。
2. 預計修改的檔案。
3. 每個檔案對應的驗證方式。
4. 哪些資訊不足以安全開始。

確認後再給執行權限。這比要求 agent 一次做完所有事慢一個回合,卻能把「看似合理但改錯地方」的成本壓低很多。

回報格式也要能被檢查#

最後一段回覆建議固定成三件事:變更、證據、未解決項目。不要讓「完成」成為一個沒有內容的標籤。

變更:src/auth/validate.ts、src/auth/validate.test.ts
證據:pnpm test(通過);pnpm check(通過)
未解決項目:無

如果任務需要人工驗收,請讓它提出具體操作,例如「用已過期的 token 呼叫此 endpoint,預期收到 401」。人類接手時不必重新猜一次要看什麼。

這次要記住的事#

AI coding agent 不是因為多寫幾句「請仔細」就更可靠;可靠性來自能被重跑的完成條件。把目標、範圍、驗證與停止條件寫清楚,agent 即使卡住,也會留下足以讓你判斷下一步的訊息。

常見問題#

Q: 沒有自動化測試,也能寫可驗證完成條件嗎?#

A: 可以。改用可重現的 API 請求、型別檢查、建置、靜態檢查或最小重現腳本,並在任務中明示預期輸出。不要把人工目視檢查寫成已自動驗證。

Q: 為什麼要另外寫停止條件?#

A: 它會把需要產品、架構或安全決策的情況排除在 agent 的自動處理之外。例如要改資料庫 schema、刪除資料或變更公開 API 時,agent 應停下來交由人決定。

Q: 這套寫法只適合 Codex 嗎?#

A: 不限工具。只要 agent 能讀取程式碼、修改檔案或執行指令,就應以可觀察結果取代模糊動詞;差別只在各工具可用的權限與驗證環境。

參考資料:

ChatGPT / Codex use cases:Iterate on difficult problems

Claude Code CLI reference

AI coding agent 一直原地打轉?把「完成」改寫成可驗證的狀態
https://laplusda.com/posts/ai-coding-agent-verifiable-done/
作者
Zero
發佈於
2026-07-11
許可協議
CC BY-NC-SA 4.0
這篇文章有幫助嗎?

回報錯字、失效連結,或告訴我你想看的延伸主題。