AI 程式開發與代理

[Claude Code #6] /goal:為 AI 設定達成條件的方法

Claude Code /goal 設定達成條件後,會由獨立的判定模型在每一回合進行判定,直到條件符合才繼續工作。本文整理條件撰寫方式、與 auto mode 的組合,以及以無頭模式完成工作。

閱讀 4 分鐘
[Claude Code #6] /goal:為 AI 設定達成條件的方法 封面圖

把大型工作交給 AI 時,常常會在中途停下來,問:「還有 3 個測試失敗,要繼續嗎?」

每次輸入「好,繼續」本身就成了工作。只要暫時離開座位,工作就會停在原地。

Claude Code 的 /goal 透過宣告條件解決這個問題。設定達成條件後,Claude 會持續跨回合工作,直到條件符合。

如果 Claude Code 第 5 篇/rewind 是安全網,/goal 就是完成工作的機制。

運作原理:另有判定者

官方 /goal 文件 的說明點出了核心。每回合結束時,一個小而快速的獨立模型會檢查條件是否符合。若尚未符合,Claude 不會回到使用者,而是開始下一回合。

這不是由執行工作的模型自行宣告「完成了」的架構。第三方判定模型(以 Claude API 為準是 Haiku)會在每回合判定,並留下簡短理由。相較於主要工作,判定所用的 token 少到可以忽略。

條件符合後,目標會自動解除。

Claude Code /goal 回合重複與判定模型判定迴圈圖
持續回合直到條件符合的架構

基本用法

/goal 後方輸入條件,回合就會立即開始。不需要額外的提示詞。

/goal test/auth所有測試通過且 lint 結果乾淨

啟用期間會以 ◎ /goal active 顯示經過時間。

  • /goal(不帶參數):查看條件、經過時間、回合數、token 用量與最近的判定理由
  • /goal clear:在條件符合前解除目標(stopcancel 等也可使用)

每個工作階段只能有一個目標。設定新目標會取代現有目標。

寫好條件就完成了一半

判定模型不會直接執行命令或讀取檔案,只會根據 Claude 留在對話中的輸出進行判定。

因此,條件必須能由 Claude 的輸出證明。官方文件建議包含三個要素。

  • 一個可測量的結束狀態:測試結果、建置結束代碼、空佇列
  • 明確指定驗證方式:例如「npm test 以 0 結束」這類確認手段
  • 必須遵守的限制:例如「不要修改其他測試檔案」

如果擔心無限執行,可以在條件中加入「或在 20 回合後停止」之類的條款。但這不是系統強制的上限,而是判定模型根據對話中的進度報告判定的條件之一。

權限是另一回事

/goal不會連同權限一起開放。在預設權限模式下,每次未獲允許的工具呼叫仍會要求確認。

若要無人值守地完成工作,標準做法是搭配 auto mode。auto mode 負責移除工具核准提示,/goal則負責移除回合之間的提示。

也整理一下它與類似機制的差異。/loop是按照時間間隔重新執行,/goal則是持續到條件符合為止。

工作階段中斷後,目標仍會保留

如果工作階段結束時目標仍啟用,使用 --resume--continue 重新開始時,條件會完整還原。只有回合數、計時器與 token 基準會重新開始。

想在沒有終端機的情況下執行,也可以使用無頭模式。

claude -p "/goal 本週合併的所有項目 PR都會反映到 CHANGELOG.md"

只要呼叫一次,迴圈就會執行到條件符合為止。預設輸出在完成前不會顯示任何內容,看起來可能像是卡住了。若要查看進度,請加上 --output-format stream-json --verbose

書寫「WRITE THE CONDITION」文字與目標條件檢查清單的手繪插圖
結束狀態、驗證方式、限制。條件應包含這三項

總結

/goal 是代替你按下「繼續」的命令。宣告條件後,獨立判定模型會在每回合進行判定,工作會持續到完成。

關鍵在於條件設計。明確指定可測量的結束狀態與驗證方式,也要把回合限制條款寫進條件中。

下一篇將介紹把整個工作階段送到背景執行的 /background/tasks。接續完成工作的機制,這次要談的是分工機制。

來源與確認標準

延伸閱讀

Claude Code 系列

相關主題