Claude Code /goal 每跑完一輪,會把完成條件和到目前為止的對話交給你設定的小型快速模型判定,預設並不是 Fable 5.1。 截至 2026 年 10 月 7 日,Anthropic 的 Claude Code 官方文件就是這樣寫的。這週流傳的一則 Claude Code 設定技巧,把 /goal 說成 Fable 5.1 的待命評審。它附的啟動指令,在 Claude Code 2.1.292 上會直接報錯。

那則技巧讓 Opus 5.5 以 high effort 跑主對話,三個 Sonnet 5.5 子代理分別負責改程式、讀程式碼與跑測試。Fable 5.1 掛在 Stop hook 上當評審。選哪個檔案、用哪個工具、要不要重試這類小分岔,則交給 TypeSafe 的 Jev 模型在 16 毫秒內處理。它還附了一段可以直接貼進 Claude Code 的重設提示。

我們逐條對照官方文件後的判斷是:/goal 的運作機制它講對了大半,評審模型、啟動旗標與 Jev 這三件事則講錯了。照貼的結果,是一個跑不起來的指令,加上一個你以為存在、其實沒接上的 Fable 評審。

/goal 怎麼運作:這一半它講對了

/goal 是 Claude Code 的指令,用來設定一個完成條件,讓 Claude 自己一輪接一輪做下去,不必你每一步都下提示。依 Claude Code 文件的 /goal 頁面,它是一個包裝在工作階段範圍內、以提示判斷的 Stop hook。每次 Claude 結束一輪,Claude Code 就把條件和目前為止的對話送給小型快速模型,模型回傳三種判定之一,並附上一句理由。

判定 文件寫的結果
Not yet met(尚未達成) Claude 繼續工作,把理由當成下一輪的指引
Met(已達成) Claude Code 清除目標,在對話記錄寫下達成紀錄
Impossible(不可能達成) 評審判定條件永遠無法滿足,Claude Code 清除目標並記下失敗與理由

評審不呼叫工具,也不會自己跑指令或讀檔,只能判斷 Claude 已經在對話裡呈現的東西。所以條件要寫成 Claude 自己的輸出能證明的形式。文件的例子是「test/auth 裡所有測試通過」,因為 Claude 跑測試時,結果會出現在對話裡給評審讀。條件最長 4,000 個字元。

背景工作這一點,那則技巧把它寫成要另外設定的步驟。其實這是預設行為:一輪結束時如果還有子代理或背景 shell 指令在跑,Claude Code 會跳過那一輪的判定,等到下一個沒有背景工作的回合才判。背景工作讓目標等滿 30 分鐘,會觸發一次 check-in,之後間隔加倍,最多到第一次間隔的 4 倍。互動模式下,每個目標在你下一次輸入前最多自動發起 3 次閒置 check-in。能調的只有間隔:環境變數 CLAUDE_CODE_GOAL_CHECKIN_MINUTES,設成 0 會同時關掉 check-in 與自動重試。

/goal 搭 auto mode 一起跑,這個方向也對。文件的說法是,auto mode 拿掉每次工具呼叫的確認,/goal 拿掉每一輪的確認,兩者互補。/goal 本身不改權限模式,要讓目標無人值守地跑,就要在 auto mode 下執行。

四個地方跟文件對不上

技巧裡的說法 文件怎麼寫 照貼的後果
Fable 5.1 在 /goal 上當評審 /goal 沒有模型參數,預設用小型快速模型判定;要換模型得設 ANTHROPIC_DEFAULT_HAIKU_MODEL 什麼都不設,評審就不是 Fable;設了,連 haiku 別名與背景功能都一起換掉
claude --auto-mode "/goal …" 沒有 --auto-mode 旗標;--enable-auto-mode 已在 v2.1.111 移除,改用 --permission-mode auto;auto-mode 是管理分類規則的子指令 Claude Code 2.1.292 回應 error: unknown option '--auto-mode',結束代碼 1
背景任務執行時延後檢查 已是預設行為,只有 check-in 間隔可調 多寫一條不存在的設定
Jev 在 16 毫秒內處理小分岔 TypeSafe 公布的端到端回應時間是 70 到 500 毫秒,多數查詢約 100 毫秒;Jev 不能替換 Claude Code 背後的模型 沒有文件記載的接法,延遲數字也對不上
示意圖:爆紅設定的四個說法與 Claude Code、TypeSafe 文件的對照

爆紅技巧裡的 claude --auto-mode 指令,我們在 2026 年 10 月 7 日用 Claude Code 2.1.292 實際執行過,它在啟動前就因為不認得 --auto-mode 而結束。CLI 參考文件 寫明 --enable-auto-mode 已移除,要從 auto mode 啟動就用 --permission-mode auto。另外依 權限模式文件,Claude Code v2.1.283 以後,互動式終端機與 VS Code 工作階段的內建起始模式本來就是 auto。

Jev 的落差最大。TypeSafe 在 推出 Jev 的公告 寫的端到端回應時間是 70 到 500 毫秒。它的文件說多數查詢約 100 毫秒,一個範例實測的平均往返延遲是 114 毫秒。16 毫秒這個數字,TypeSafe 的完整文件裡找不到。用途也對不上。TypeSafe 給程式代理使用者的說明 寫明,Jev 不能直接替換 Claude Code、Cursor 這類工具背後的大型語言模型。它的用法,是讓你用程式代理寫出呼叫 Jev 的程式。Anthropic 與 TypeSafe 都沒有記載任何能把 Claude Code 的工具選擇或重試交給 Jev 的 hook 或設定。你當然可以自己寫 command hook 去打 Jev 的 API,但那是自製整合,延遲沒人量過。

還有三處不算錯,但照抄會吃虧:

  • 沒有內建的輪數上限。文件建議在條件裡寫上「or stop after 20 turns」這類輪數或時間子句,Claude 每輪會回報進度,評審從對話判斷。另一道保險是,Claude 連續好幾輪都沒用工具、只在回應評審時,Claude Code 會停下迴圈、把控制權交還給你。
  • 內建的 Explore 子代理用的是主對話的模型。主對話跑 Opus 5.5,Explore 就跑 Opus 5.5。只設 CLAUDE_CODE_SUBAGENT_MODEL,也改不了內建 Explore 與 Plan 的模型。想讓探索跑 Sonnet,要自己定義一個名為 Explore 的子代理。
  • Opus 5.5 預設 effort 是 medium。模型設定文件 說,在 Anthropic 的測試裡,Opus 5.5 的 medium 在程式與知識工作評測上追平或超過 Opus 5 的 high。從 Opus 5 換過來時,文件建議從 medium 開始。那則技巧一開頭就把主對話拉到 high。

想讓 Fable 5.1 當評審,要付出什麼

如果你讀完還是想讓 Fable 5.1 判斷「做完了沒」,文件給了兩條路,各有代價。

第一條是設環境變數 ANTHROPIC_DEFAULT_HAIKU_MODEL。/goal 頁面在這裡放了一個警告:Claude Code 在所有用到小型快速模型的地方都讀這個變數,不只 /goal 的判定。設了之後,haiku 別名也會解析成你指定的模型,對話摘要這類背景功能也跑在它上面。

# 不建議:這會把所有用到小型快速模型的工作,包含 haiku 別名與對話摘要,都換成 Fable 5.1
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-fable-5-1

費用也跟著變。文件說判定的 token 照小型快速模型計費,通常和主對話的花費相比可以忽略。換成 Fable 之後,每一輪判定與每一次背景工作都改用 Fable 計費,這筆錢就不再能忽略。依模型設定文件,部分方案的 Fable 用量會改計用量點數;互動模式會先跳出同意提示,用 -p 的非互動模式則不會詢問,直接照用量點數計費。

第二條是自己寫一個以提示判斷的 Stop hook,並用 model 欄位指定模型。hooks 文件 列出這個欄位,預設是 Claude Code 跑背景功能用的模型。這樣只有這個 hook 改用 Fable,不會動到其他背景工作。

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "prompt",
            "model": "claude-fable-5-1",
            "prompt": "判斷 Claude 現在可不可以停下來:$ARGUMENTS。只有最後一則回覆貼出 npm test 與 npm run lint 都以結束代碼 0 完成時,才回傳 {\"ok\": true}。還沒達成時回傳 {\"ok\": false, \"reason\": \"下一步該做什麼\"}。判斷永遠無法達成時,再加上 \"impossible\": true。"
          }
        ]
      }
    ]
  }
}

這條路有三個限制。它寫在設定檔裡,套用到該範圍內的每一個工作階段,不像 /goal 只在當下的工作階段有效。它收到的是 hook 的輸入 JSON,Stop 事件會帶 last_assistant_message、transcript_path 與背景任務清單;文件沒有說它會拿到整段對話,而提示型 hook 也不能呼叫工具去開 transcript_path 那個檔案。最後是上限:timeout 預設 30 秒。Stop hook 連續讓回合繼續 8 次、中間 Claude 都沒呼叫工具時,Claude Code 會強制結束回合。這個上限可用 CLAUDE_CODE_STOP_HOOK_BLOCK_CAP 調整。

還有一種 agent 型 hook 可以用 Read、Grep、Glob 查檔,最多 50 輪,預設 timeout 60 秒。但文件把它標為實驗性功能,而且不支援 impossible 判定。

我們的判斷是:npm test 與 lint 都通過這種條件,評審只要讀到兩個結束代碼就能判,小模型綽綽有餘。這裡換成 Fable,等於每一輪都付 Fable 的價錢去讀一個 0。Fable 的判斷力花在寫程式途中的取捨比較划算,那是 /advisor 的工作。

讓 Fable 5.1 待命的正規做法是 /advisor

那則技巧想要的效果,是 Opus 5.5 寫程式、Fable 5.1 在旁邊待命。Claude Code 為此有專門的功能:顧問工具(advisor tool)。啟用方式有三種:在對話中執行 /advisor fable、在設定檔寫 advisorModel,或用 claude --advisor fable 啟動。之後 Opus 5.5 需要指引時,就會諮詢 Fable 5.1。顧問工具文件 的配對表寫明,Opus 5 或 Opus 5.5 當主模型時,Fable 與 Opus 5 以上都是可接受的顧問。

顧問的細節,我們在 Claude Code 讓 Opus 5.5 寫程式時能打給 Fable 5.1 求救 一文整理過。重點有三個:何時求助由模型決定;每次諮詢都會重讀整段對話,照顧問模型的費率計費;它只支援 Anthropic API,目前標示為實驗性功能。

做法 什麼時候跑 用哪個模型 看得到什麼 範圍
/goal 每一輪結束 小型快速模型,可用 ANTHROPIC_DEFAULT_HAIKU_MODEL 全域替換 條件與目前為止的對話 目前工作階段
/advisor 任務途中,由主模型決定何時諮詢 你指定的顧問,例如 fable 完整對話,包含每次工具呼叫與結果 工作階段或使用者設定
自訂提示型 Stop hook 每一輪結束 model 欄位指定的模型 hook 的輸入 JSON 設定檔範圍內的每個工作階段
示意圖:/goal、/advisor 與自訂 Stop hook 三種讓第二個模型進場的方式比較

兩者管的時間點不同:/advisor 管途中的判斷,/goal 管什麼時候算做完。文件沒有說兩者不能同時開。

照文件改過的設定

照 Claude Code 文件修正後的設定如下:Jev 拿掉,因為沒有文件記載的接法;評審留給預設的小模型;Fable 改到顧問的位置。

主對話:Opus 5.5(effort 先用預設 medium,需要時再調 high),auto mode
├─ worker:修改與修補程式碼(model: sonnet,effort: medium)
├─ Explore:讀程式碼、找呼叫點(自訂同名子代理,覆寫內建版本,model: sonnet)
├─ verifier:跑測試與 lint,回報指令與結束代碼(model: sonnet,effort: medium)
├─ /advisor fable:Fable 5.1 待命,何時諮詢由 Opus 5.5 決定
└─ /goal:每輪結束由小型快速模型判定,條件裡寫明 20 輪上限
示意圖:照文件修正後的設定,Opus 5.5 主對話搭配 Sonnet 子代理,Fable 5.1 以 /advisor 待命,/goal 由小型快速模型判定

三個子代理放在專案的 .claude/agents/ 底下,每個檔案用 YAML frontmatter 設定。子代理文件 列出 model 可以填 sonnet、opus、haiku、fable、完整模型 ID 或 inherit。effort 會覆寫工作階段的 effort,但覆寫不了環境變數 CLAUDE_CODE_EFFORT_LEVEL。

---
name: worker
description: 依照主對話給的計畫修改與修補程式碼
tools: Read, Edit, Write, Bash, Grep, Glob
model: sonnet
effort: medium
---

你負責修改與修補程式碼。只改主對話指定的檔案,改完列出每個變更的檔案與原因。
---
name: Explore
description: 搜尋與閱讀程式碼,找出定義、呼叫點與相關檔案
tools: Read, Grep, Glob
model: sonnet
effort: medium
---

你只讀不寫。回報找到的檔案路徑、行號與呼叫關係,不要提出修改。
---
name: verifier
description: 執行測試與 lint,回報結果
tools: Read, Bash, Grep, Glob
model: sonnet
effort: medium
---

你只負責驗證,不修改任何檔案。執行 npm test 與 npm run lint,逐字回報每個指令與它的結束代碼。失敗時附上第一個錯誤訊息。

sonnet 這個別名在 Anthropic API 上解析成 Sonnet 5.5。換到 Amazon Bedrock 或 Google Cloud 的 Agent Platform,它是 Sonnet 4.5;在 Claude Platform on AWS 上則是 Sonnet 4.6。不是直接用 Anthropic API 的團隊,要確認自己的供應商實際給的是哪一版。

啟動時用 --permission-mode auto,取代不存在的 --auto-mode:

# 互動模式:v2.1.283 以後終端機預設就是 auto mode,寫出旗標只是讓意圖明確
# 帳號若需要 Fable 用量點數同意,先在工作階段執行 /model fable,否則 --advisor fable 會在啟動時結束
claude --model opus --permission-mode auto --advisor fable

進入工作階段後再設定目標。條件要求 Claude 在回覆裡貼出結束代碼,因為評審只讀得到對話裡出現的東西:

/goal npm test 與 npm run lint 都以結束代碼 0 完成,並在回覆中貼出兩個指令的結束代碼;不得修改 test/ 底下既有的測試檔;或在 20 輪後停止

無人值守的批次執行,文件示範的是 -p 加 /goal,--permission-mode 也能搭配 -p 使用:

# 非互動模式:整個 /goal 迴圈在一次呼叫內跑完;stream-json 會邊跑邊輸出,不會看起來像卡住
claude -p --permission-mode auto --output-format stream-json --verbose \
  "/goal npm test 與 npm run lint 都以結束代碼 0 完成,並在回覆中貼出兩個指令的結束代碼;或在 20 輪後停止"

要注意兩件事。把 /goal 當成互動模式的初始提示,也就是 claude "/goal …" 這種寫法,文件沒有示範,有記載的是 -p 版本;穩妥的做法是先進入工作階段再輸入 /goal。另外,-p 模式下 Fable 的用量點數不會跳出同意提示,所以這個範例沒有加 --advisor fable,要加之前先確認帳單由誰負責。

如果你想沿用那則技巧貼進 Claude Code 的做法,下面是同樣五個步驟、照文件修正過的版本:

請依照下面這棵樹重建我的 Claude Code 設定:

1. 主對話使用 Opus 5.5,以 --permission-mode auto 啟動。effort 維持 Opus 5.5 預設的 medium;如果要改成 high,用 /effort high 或 modelSettings,不要寫在使用者設定檔最上層的 effortLevel。
2. 讓 Fable 5.1 以顧問身分待命:把 advisorModel 設為 fable。/goal 的評審維持預設的小型快速模型,不要設定 ANTHROPIC_DEFAULT_HAIKU_MODEL。如果我的帳號需要先同意 Fable 的計費,告訴我先執行 /model fable,不要替我處理。
3. 在 .claude/agents 建立 worker、verifier 兩個子代理,再建立一個名為 Explore 的子代理覆寫內建版本,三者都設定 model: sonnet、effort: medium。已經存在的同名子代理不要動,列給我看。背景工作執行時 /goal 本來就會延後判定,不需要另外設定。
4. 不要建立任何把工具選擇、路徑選擇或自動重試交給 Jev 的 hook,Claude Code 與 TypeSafe 的文件都沒有記載這種整合。
5. 在 CLAUDE.md 加入一條規則:長任務在 auto mode 下用 /goal <條件> 執行,條件要寫出能在對話中證明的檢查方式,並在結尾加上「或在 20 輪後停止」。

每一項變更都先用 diff 給我看,我說可以之前不要動手。

常見問題

Claude Code /goal 預設用哪個模型判斷完成?

Claude Code /goal 預設用你設定的小型快速模型判斷,也就是 Claude Code 跑背景功能的 Haiku 等級模型。主對話的模型與 Fable 5.1 都不參與判定。要換模型只能設 ANTHROPIC_DEFAULT_HAIKU_MODEL,而這個變數會同時改掉 haiku 別名與對話摘要等背景功能。判定的 token 照小型快速模型計費。

Claude Code /goal 的評審會自己跑測試嗎?

不會。Claude Code /goal 的評審不呼叫工具,不跑指令也不讀檔,只看 Claude 已經呈現在對話裡的內容。跑測試的是 Claude 本身,所以條件要寫成「在回覆中貼出結束代碼」這類能從對話證明的形式。

Claude Code /goal 會一直跑下去嗎?

Claude Code /goal 沒有內建輪數上限,文件建議在條件裡加上「or stop after 20 turns」這類子句。Claude 連續好幾輪沒用工具、只在回應評審時,Claude Code 會停下迴圈並把控制權交還給你。身分驗證失敗、點數餘額用完、自動壓縮清不掉的內容溢位,或模型無法使用,這四種錯誤也會直接清除目標;你也可以隨時執行 /goal clear。

TypeSafe 的 Jev 能接進 Claude Code 當路由器嗎?

截至 2026 年 10 月 7 日,TypeSafe 與 Anthropic 都沒有記載把 Jev 接進 Claude Code 當路由器的整合。TypeSafe 的文件寫明 Jev 不能直接替換 Claude Code 背後的模型。它和 Claude Code 唯一的交集,是一個教 Claude 寫出呼叫 Jev 程式的 skill。TypeSafe 公布的回應時間是 70 到 500 毫秒,多數查詢約 100 毫秒。

主要來源

Author Insight

完成條件能用結束代碼證明的團隊,像是測試通過、建置成功、佇列清空,就讓 /goal 用預設的小模型打分,把 Fable 5.1 的預算留給 /advisor。只有當完成與否需要判讀設計取捨,小模型讀不出答案時,才值得自己寫 Stop hook 指定 Fable,並接受每一輪都多一次 Fable 計費。用 -p 跑批次的人更該先算帳:那裡 Fable 用量不會跳出同意提示,任何把 Fable 掛上評審的設定,帳單都會照跑。

Tenten 自己的內容產線就跑在 Claude Code 上,用 explorer、worker、reviewer 三種子代理分工。每篇文章的中英文稿都要等檢查腳本以結束代碼 0 完成,才進入發布。如果你想把同樣的完成條件與子代理分工導入團隊的開發流程,歡迎跟 Tenten 團隊聊聊。

術語表

  • /goal:Claude Code 設定完成條件的指令,每輪結束由模型判定條件是否成立。
  • 小型快速模型(small fast model):Claude Code 跑背景功能用的 Haiku 等級模型,也是 /goal 的預設評審。
  • Stop hook:Claude 結束一輪時觸發的 hook,常見類型有 command、prompt 與 agent。
  • 提示型 hook(prompt-based hook):把 hook 輸入與提示送給模型,由模型回傳 ok、reason 與 impossible 的 hook。
  • auto mode:由分類器自動核准工具呼叫的權限模式,用 --permission-mode auto 啟動。
  • 子代理(subagent):由主對話委派、使用自己模型與設定的代理,定義在 .claude/agents 的檔案裡。
  • effort 等級(effort level):控制模型推理深度的設定,Opus 5.5 與 Sonnet 5.5 預設 medium。
  • 顧問工具(advisor tool):讓主模型在任務途中諮詢另一個模型的伺服器端工具,目前標示為實驗性功能。
  • 用量點數(usage credits):部分方案用來計算 Fable 用量的計費方式。
  • Jev:TypeSafe 推出的 System One 模型,針對結構化問題回傳型別化的答案,不產生文字。
Share this post
Ewan Mak

I'm a Full Stack Developer with expertise in building modern web applications that fast, secure, and scalable. Crafting seamless user experiences with a passion for headless CMS, Vercel and Cloudflare

Loading...