Ultracode 與 Effort 等級:把 Claude Code 開到十一級
了解 Claude Code 的 effort 等級(low 到 xhigh)與 ultracode:如何選擇加入、+500k 等 token 預算指令、逐 agent 的 effort 設定,以及何時該火力全開。
在 Claude Code 的大部分歷史裡,你只有一個大旋鈕:用哪個模型。到了 Fable 5 時代,出現了第二個旋鈕,而且它在日常使用中可能更重要。/effort(推理強度)控制模型對每一步推理的用力程度,與你選了哪個模型無關。而在這個旋鈕的最頂端,坐落著 ultracode——一種讓 Claude Code 完全停止為速度或成本最佳化、並在每個實質任務上啟動多代理 Workflow 編排(orchestration,工作流程編排)的模式。
本指南涵蓋四個 effort 等級、ultracode 實際改變了什麼、防止大型執行失控的 token 預算指令,以及——同樣重要的——什麼時候該把這一切通通關掉。
Effort 實際控制什麼
/effort 為你的 session 設定推理強度。它不會改變由哪個模型回答你——那是 /model 的事——它改變的是那個模型在行動之前,對每一步花多少思考。
這筆交易很直接:
more effort → deeper reasoning per step
→ more tokens, more latency
→ better answers on hard problems
less effort → faster, cheaper turns
→ perfectly fine for mechanical work
/model 和 /effort 都可以在 session 中途切換,而且選擇儲存後都會持續作為預設值。所以流程是:先設一個合理的預設值,當某個特定任務值得比預設更多(或更少)時,再伸手去轉旋鈕。
如果你同時也在決定要跑哪個模型,建議搭配我們的模型選擇指南一起讀——模型層級與 effort 等級是兩個獨立的旋鈕,而有趣的配置正是把它們混搭起來。
四個等級
/effort 提供四個 session 等級:low、medium、high 與 xhigh。
官方沒有逐等級的規格表,你也不需要。有用的心智模型來自 effort 在多代理 workflow 內部的使用方式:便宜、機械式的階段用低 effort;困難的驗證與判斷階段用高階層級。把同樣的邏輯套用到你的 session:
| 等級 | 什麼時候用它 |
|---|---|
| low | 機械式工作:改名、格式化、樣板程式碼、「讀這個檔案告訴我 X」 |
| medium | 日常寫程式:例行功能、直觀的修復 |
| high | 真正困難的問題:棘手的除錯、跨多檔案的重構、設計問題 |
| xhigh | 最困難的判斷型工作:架構決策、對抗式驗證、「這絕對不能錯」 |
關鍵轉變在於:品質與成本的取捨,過去是你所選模型的屬性。現在它是一個握在你手上的旋鈕,可以逐 session 調整,而且——如下所見——可以逐個子代理(subagent)調整。
Ultracode:xhigh 加上常駐編排
在 xhigh 之上有一個特殊的頂級設定:ultracode = xhigh effort + 動態 workflow 編排。
後半部分才是讓它在「種類」而非只是「程度」上與眾不同的原因。開啟 ultracode 後,Claude Code 被指示要:
- 為最詳盡、最正確的答案最佳化——而不是最快或最便宜的答案
- 在每個實質任務上使用多代理 Workflow 編排,而不是只在你要求時才用
- 把 token 成本明確地視為不是限制條件
實務上這代表:像「review 這個 diff」這樣的任務,不再是一個 agent 讀檔案,而是變成一個腳本化的 Workflow:平行的搜尋者在整個變更範圍扇出(fan out),懷疑者 agent 嘗試反駁每一項發現,再由綜整階段組裝存活下來的結果。Workflow 可以生成數十個 agent、消耗大量 token——這正是 ultracode 採用選擇加入(opt-in)機制的原因。執行框架(harness)要求你明確請求那種規模;它絕不會在你不知情的情況下替你燒掉一筆 workflow 等級的 token 帳單。
如何選擇加入
Ultracode 本身有兩條啟用路徑:
-
關鍵字。 在 prompt 中包含「ultracode」進行單次選擇加入:
ultracode: audit the payments module for correctness bugs那一輪會以全規模執行。下一輪就回到正常。
-
Session 切換。 透過
/effort選擇 ultracode 進行常駐選擇加入——session 中的每個實質任務都會得到這種待遇,直到你把旋鈕調回去為止。
拉遠一層來看,更廣義的 workflow 編排還有第三扇門:當你明確要求(「用一個 workflow 來……」)或你呼叫的 skill 指示時,workflow 也會執行。沒有這三種選擇加入之一——ultracode、明確請求或 skill——Claude Code 預設使用個別子代理或獨自作業。大規模的編排永遠是你主動要求的。
Token 預算:「+500k」與硬上限
「token 成本不是限制條件」聽起來很嚇人,直到你遇見它的制衡機制:token 預算指令(token budget directives)。直接在 prompt 中寫下目標:
ultracode +500k: find every place our API contract and the
OpenAPI spec disagree
那個 +500k 為這一輪設定了 token 目標,而且它不是建議。在 workflow 腳本內部,它以 budget 物件的形式出現:
budget.total——目標值(一個數字,或在沒有給指令時為null)budget.spent()——到目前為止消耗的 tokenbudget.remaining()——剩餘量
有兩個性質很重要:
資金池是共用的。 一份預算涵蓋主迴圈和這一輪中的所有 workflow。你沒辦法靠把工作拆進巢狀 workflow 來超支——所有東西都從同一個帳戶提款。
上限是硬的。 一旦 spent() 達到 total,後續的 agent() 呼叫就會拋出例外。寫得好的 workflow 會檢查預算並優雅降級;天真的 workflow 則會在執行途中死掉。這就帶我們來到程式碼。
逐 Agent 的 Effort:把錢花在判斷所在之處
在 workflow 腳本內部,推理強度是逐個子代理設定的:effort: 'low' | 'medium' | 'high' | 'xhigh' | 'max'。大型執行的經濟學實際上就是在這裡決定的。模式是:
- 便宜的機械式階段(搜尋、讀取、格式化)→ 低 effort,通常搭配便宜的模型
- 困難的驗證/評判階段→ 高階層級
以下是一個帶預算防護的探索迴圈,把兩個想法結合在一起——便宜的搜尋者持續搜捕,直到再也挖不出新東西或預算防護觸發為止,然後由昂貴的懷疑者處理所有找到的東西。(Workflow 腳本以一個 export const meta = { ... } 字面值開頭,宣告 name、description 和 phases;下面的片段是主體。)
phase('Discover');
let dryRounds = 0;
const seen = [];
while (dryRounds < 2) {
// budget is a HARD ceiling: once spent() reaches total,
// further agent() calls throw. Leave headroom for the
// verify phase instead of running into the wall.
if (budget.total && budget.remaining() < budget.total * 0.2) {
log(`Budget guard: ${budget.spent()} of ${budget.total} spent — moving on`);
break;
}
const round = await parallel([
() => agent(
`Hunt for correctness bugs in the payments module.
Already seen: ${seen.join('; ') || 'none'}.
Report only NEW findings, or the word NONE.`,
{ label: 'hunt-correctness', model: 'haiku', effort: 'low' }
),
() => agent(
`Hunt for error-handling gaps in the payments module.
Already seen: ${seen.join('; ') || 'none'}.
Report only NEW findings, or the word NONE.`,
{ label: 'hunt-errors', model: 'haiku', effort: 'low' }
),
]);
const fresh = round.filter(Boolean).filter(r => !r.trim().startsWith('NONE'));
if (fresh.length === 0) dryRounds += 1;
else { dryRounds = 0; seen.push(...fresh); }
}
phase('Verify');
const verdicts = await parallel(
seen.map(finding => () => agent(
`Try to REFUTE this finding. Confirm only if you cannot:
${finding}`,
{ label: 'skeptic', effort: 'xhigh' }
))
);
注意花費的形狀:可能跑很多輪的迴圈使用 Haiku 搭配低 effort,而 xhigh 保留給驗證階段——在那裡,一個錯誤的判斷才真的會讓你付出代價。搜尋者會被告知已經看過哪些東西,這樣它們就不會重複兜售舊發現;而迴圈只在連續兩輪空手而回之後才停止——這就是「loop-until-dry」(搜到枯竭)模式,在 effort 與 ultracode 教學及其品質模式姊妹篇中有深入說明。
什麼時候不該用 Ultracode
強力旋鈕的失敗模式,就是一直開著不關。以下情況請跳過 ultracode:
- 瑣碎的編輯。 改名、修錯字、調整設定只需要一個 agent 和低 effort。為此生成一個編排 workflow 純屬浪費。
- 對話式回合。 「這個函式在做什麼?」或「你偏好哪種做法?」從上下文(context)就能回答。沒有什麼可以扇出的。
- 單一事實查詢。 如果你知道答案在哪個檔案,直接讀取勝過任何委派。
- 任何你想要快速迭代的情況。 Ultracode 為詳盡與正確最佳化,這與你還在打草稿時需要的快速回饋迴圈恰恰相反。
經驗法則:ultracode 適合那些漏掉東西代價高昂、且搜尋空間大於單一 agent 上下文的任務。其他所有事情用正常 effort 跑得更好——而且便宜得多。關於更全面的成本考量,請見成本最佳化教學。
三個配方
稽核。 ultracode +500k: audit the auth module for security issues. 這是 ultracode 的主場:規模未知的探索工作,完整性就是全部的重點。可以預期上面片段中的 loop-until-dry 形狀、對每項發現的對抗式驗證,以及——因為寫得好的 workflow 會在覆蓋範圍受限時記錄被捨棄的內容——一份關於預算防護砍掉了什麼的誠實交代。
遷移。 ultracode: migrate every deprecated API call in src/ to the new client. 平行修改檔案的 agent 需要在它們的 agent() 呼叫上設定 isolation: 'worktree'——每個 agent 都拿到一個全新的 git worktree,這樣它們就不會互相踩踏,若無變更則自動移除。Worktree 每個 agent 都要花費實際的設置時間與磁碟空間,而這正是你輸入這個關鍵字時所同意的那種規模。
研究掃描。 ultracode: map every place we handle currency rounding, and how. 一次多模式掃描——平行的 agent 各自用不同的方式搜尋(按檔案位置、按內容、按實體、按時間)——接著由一個完整性評論者問「還缺什麼?」,其答案為下一輪播種。便宜模型搭配低 effort 負責掃描;最終綜整才享受昂貴的待遇。
重點結論
Effort 等級把答案品質變成你可以逐任務控制的東西,而不是烙死在模型裡的定數。Ultracode 是那個旋鈕的頂端:xhigh 推理加上常駐 workflow 編排,因為它花錢毫不手軟而被關在明確選擇加入的門後,並由被強制執行為硬上限(而非禮貌性提醒)的預算指令所約束。
值得培養的技能不是「永遠用 ultracode」——而是知道你的哪些任務值得轉這顆旋鈕。稽核、遷移、研究掃描:值得。你正要修的那個錯字:不值得。
想更深入?Effort 等級與 Ultracode 教學會手把手帶你操作帶預算防護的迴圈,而什麼是 Workflow?則解釋了 ultracode 賴以建立的編排層。