/goal 命令設定完成條件,Claude 會朝著該目標持續工作,無需你在每一步進行提示。在每個回合後,一個小型快速模型會檢查條件是否滿足。如果模型判斷條件尚未滿足,Claude 會開始另一個回合,而不是將控制權返回給你。一旦條件滿足、模型判斷條件不可能滿足,或回合因需要修復的錯誤而失敗時,目標會自動清除。
在具有可驗證終止狀態的實質性工作中使用目標:
- 將模組遷移到新 API,直到每個呼叫位置都編譯並通過測試
- 實現設計文件,直到所有驗收標準都滿足
- 將大型檔案分割成專注的模組,直到每個模組都在大小預算內
- 處理標記的問題待辦清單,直到佇列為空
比較保持工作階段執行的方式
三種方法在提示之間保持目前工作階段執行。根據應該開始下一個回合的內容進行選擇:/goal 和 Stop hook 都在每個回合後觸發。/goal 是一個工作階段範圍的快捷方式:你輸入條件,它僅在目前工作階段中有效。Stop hook 存在於你的設定檔案中,適用於其範圍內的每個工作階段,可以執行指令碼進行確定性檢查或執行提示進行模型評估的檢查。
自動模式本身在單個回合內批准工具呼叫,但不會開始新的回合。Claude 在判斷工作完成時停止。/goal 添加了一個單獨的評估器,在每個回合後檢查你的條件,因此完成由新鮮模型而不是執行工作的模型決定。這兩者是互補的:自動模式移除每個工具的提示,/goal 移除每個回合的提示。
使用 /goal
每個工作階段可以有一個活躍的目標。相同的命令根據引數設定、檢查和清除它。
設定目標
執行/goal 後跟你想要滿足的條件。如果已有活躍的目標,新目標會替換它。
◎ /goal active 指示器顯示目標已執行多長時間。
目標不會改變你的權限模式。要讓目標回合無人值守地執行,請在 auto mode 中執行 /goal。在 Manual mode 中,Claude 仍會在工具呼叫前詢問,這些工具呼叫是你的設定尚未允許的,例如上面的測試命令。
當目標活躍時,文字記錄會顯示評估器返回的每個判決,你可以按 Ctrl+O 查看其背後的原因。狀態檢視也會顯示最新的原因,因此你可以看到 Claude 接下來要朝著什麼工作。
編寫有效條件
評估器根據 Claude 在對話中呈現的內容判斷你的條件。它不會獨立執行命令或讀取檔案,因此將條件編寫為 Claude 自己的輸出可以演示的內容。「test/auth 中的所有測試都通過」有效,因為 Claude 執行測試,結果出現在文字記錄中供評估器讀取。
在許多回合中保持的條件通常具有:
- 一個可測量的終止狀態:測試結果、建置退出代碼、檔案計數、空佇列
- 一個陳述的檢查:Claude 應該如何證明它,例如「
npm test退出 0」或「git status是乾淨的」 - 重要的約束:在此過程中必須不改變的任何內容,例如「沒有其他測試檔案被修改」
or stop after 20 turns。Claude 每個回合都報告針對該子句的進度,評估器從對話中判斷它。
檢查狀態
執行不帶引數的/goal 以查看目前狀態。
- 條件
- 它已執行多長時間
- 已評估多少個回合
- 目前令牌支出
- 評估器最新的原因
清除目標
執行/goal clear 以在條件滿足前移除活躍的目標。
Goal cleared: 後跟條件以確認,或如果沒有活躍的目標則列印 No goal set。
stop、off、reset、none 和 cancel 被接受為 clear 的別名。執行 /clear 以開始新對話也會移除任何活躍的目標。
使用活躍目標繼續
當你繼續一個工作階段時,Claude Code 會復原一個在工作階段結束時仍然活躍的目標。Claude Code 在每個繼續路由上復原它:--continue、--resume 搭配工作階段 ID、名稱或 文字記錄檔案路徑,以及 工作階段選擇器。在 v2.1.239 之前,Claude Code 在除了 claude --resume 選擇器之外的每個路由上復原目標。
Claude Code 帶著條件,但重置回合計數、計時器和令牌支出基線。它不會復原已達成或已清除的目標。
非互動式執行
/goal 在非互動式模式、桌面應用程式中工作,並透過遠端控制工作。使用 -p 設定目標會在單個呼叫中執行迴圈至完成:
--output-format stream-json --verbose 以在迴圈執行時發出每個訊息。
使用 Ctrl+C 中斷程序以在目標解決前停止非互動式目標。
評估如何運作
/goal 是工作階段範圍基於提示的 Stop hook的包裝器。每次 Claude 完成回合時,Claude Code 會將條件和迄今為止的對話發送到你配置的小型快速模型,預設為 Claude API 上的 Haiku;在第三方提供者上,請查看你的提供者頁面以了解該平台的預設值。模型返回三個判決之一,各附帶簡短原因:
- 尚未達成:Claude 繼續工作,並將原因作為下一個回合的指導。
- 已達成:Claude Code 清除目標並在文字記錄中記錄已達成的項目。
- 不可能:評估器判斷該條件永遠無法滿足。Claude Code 清除目標並在文字記錄中記錄失敗項目以及原因。你不需要自己清除它。
當回合失敗時
當回合失敗時,如果錯誤是你必須修復的錯誤,Claude Code 會清除目標。在任何其他錯誤之後,目標保持設定。你必須修復的錯誤會清除目標
如果回合因無法清除的錯誤而失敗,Claude Code 會清除目標並列印警告,說明原因。警告以Goal cleared after an unrecoverable error 開始,以 Run /goal again to continue 結束。修復原因,然後使用 /goal <condition> 再次設定目標。四種失敗會清除目標:
- 驗證失敗,當 Claude Code 管理自己的認證時。當主機為你管理認證時,例如桌面應用程式、VS Code 擴充功能或雲端工作階段,Claude Code 會保持目標活躍,因為主機會自動恢復存取權。
- 信用額度已耗盡
- 自動壓縮無法清除的內容溢位
- 不可用的模型
其他錯誤重試或暫停目標
在任何其他失敗之後,目標保持設定。在 Claude Code v2.1.269 或更新版本的互動式工作階段中,Claude Code 也會列印一行命名原因,並自動重試或等待你:- 重試:在傾向於自行清除的失敗之後,例如伺服器過載或連線中斷,以
Goal still active開始的通知會顯示下一次嘗試前的等待時間。在三次自動重試後,目標會改為暫停。 - 暫停:在重試只會重複的失敗之後,例如 API 速率限制、claude.ai 使用限制或結束回合的 hook,以
Goal paused開始的通知會命名原因。如果工作階段等待在使用限制重設時自動繼續,Claude 會在那時繼續朝著目標努力。
CLAUDE_CODE_GOAL_CHECKIN_MINUTES 設定為 0,這也會關閉簽到。
背景工作延遲評估
如果子代理或背景 shell 命令在回合結束時仍在執行,Claude Code 會跳過該回合的評估。它在下一個沒有背景工作執行的回合結束時進行評估。當背景工作完成時,Claude Code 會將結果作為新回合傳遞給 Claude,因此你不需要提示。 一旦背景工作讓目標等待 30 分鐘,就應該進行簽到。在簽到中,Claude Code 列出執行中的任務,並要求 Claude 讀取其輸出、如果任務正在進行則繼續等待,並修復或停止任何卡住的任務。在第一次簽到後,Claude Code 在每次後續簽到前等待時間加倍,最多為第一個間隔的四倍:使用預設值,第一次簽到後 1 小時,然後每 2 小時。Claude Code 以以下兩種方式之一傳遞應到期的簽到(包括第一次):- 當回合結束時:Claude Code 在下一個工作仍在執行的回合結束時傳遞簽到。在非互動式工作階段(例如使用
-p啟動的工作階段)中,這是 Claude Code 傳遞簽到的唯一方式。 - 當工作階段閒置時:在互動式工作階段中,Claude Code 也會自動啟動回合以傳遞簽到,而不是等待你的下一個提示。如果背景工作已停止而未報告結果,Claude Code 會要求 Claude 繼續朝著目標努力。Claude Code 在你的提示之間每個目標最多啟動三次閒置簽到。在第三次閒置簽到中,Claude Code 會說閒置簽到已暫停,直到你發送另一個提示。在 v2.1.246 之前,閒置簽到是無上限的。閒置簽到需要 Claude Code v2.1.236 或更新版本。
CLAUDE_CODE_GOAL_CHECKIN_MINUTES。Claude Code 使用你的值代替 30 分鐘間隔,並相應地縮放後續間隔。將其設定為 0 以關閉簽到和自動重試。
簽到需要 Claude Code v2.1.234 或更新版本。
評估模型和成本
要在不同的模型上進行評估,請設定ANTHROPIC_DEFAULT_HAIKU_MODEL。
評估器在你的工作階段配置的任何提供者上執行。它不呼叫工具,因此只能判斷 Claude 已在對話中呈現的內容。
評估令牌在為你的提供者配置的小型快速模型上計費,與主要回合支出相比通常可以忽略不計。
要求
Claude Code 在與 工作區信任規則相同的 hooks 設定檔 下提供/goal,因為評估器是 hooks 系統的一部分。當 disableAllHooks 在設定優先順序套用後為 true 時,或當在受管設定中設定了 allowManagedHooksOnly 時,/goal 也不可用。在每種情況下,命令會告訴你原因,而不是默默地什麼都不做。
另請參閱
- 使用
/loop重複執行提示:按時間間隔重新執行,而不是直到條件滿足 - 基於提示的 hooks:當你需要自訂評估邏輯時編寫你自己的 Stop hook
- 自動模式:自動批准工具呼叫,以便每個目標回合無人值守執行
- 排程比較:獨立於任何開啟工作階段在排程上執行工作