メインコンテンツへスキップ

Ultracode と Effort レベル:Claude Code を限界まで引き上げる

Claude Code の5つの標準 effort レベル(low〜max)と独立した session-only ultracode モードを解説。オプトイン、workflow コストの監視、全開にすべき場面を整理。

Claude Code の歴史の大半において、大きなダイヤルは 1 つ——どのモデルを使うか——だけでした。Fable 5 時代には 2 つ目のダイヤルが加わり、日々の作業ではこちらのほうが重要かもしれません。対応モデルでは、/effort が各ステップでどれだけ深く推論するかを制御します。Ultracode はこの5段階のモデルダイヤルとは別物です。 実質的なタスクで xhigh と dynamic workflow オーケストレーションを組み合わせる session-only の Claude Code モードです。

本ガイドでは、5つの標準 effort レベル、ultracode が実際に何を変えるのか、workflow の規模を監視・制御する公式の仕組み、そして——同じくらい重要な——すべてをオフにしておくべき場面を扱います。


Effort が実際に制御するもの

/effort はセッションの推論 effort(どれだけ考えるか)を設定します。どのモデルが応答するかは変わりません——それは /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 もセッション途中で切り替えられますが、永続化には例外があります。maxCLAUDE_CODE_EFFORT_LEVEL で設定しない限りセッション限定で、ultracode は必ずセッション終了時にリセットされます。まずモデルが対応する妥当なデフォルトを設定し、特定のタスクがデフォルトより多く(あるいは少なく)値するときにダイヤルへ手を伸ばします。

どのモデルを動かすかも同時に検討しているなら、モデル選択ガイドと合わせて読んでください。モデル階層と effort レベルは別々の 2 つのダイヤルであり、面白い構成は両者の組み合わせから生まれます。

5つの標準レベル

Effort 対応モデルでは、/effortlowmediumhighxhighmax の5つの標準レベルがあります。

レベルごとの公式スペックシートは存在しませんし、必要もありません。有用なメンタルモデルは、マルチエージェントワークフローの内部で effort がどう使われているかから得られます。安価で機械的なステージには低 effort、難しい検証や判断のステージには高い階層。同じロジックをセッションにも適用してください。

レベル使いどころ
low機械的な作業:リネーム、フォーマット、ボイラープレート、「このファイルを読んで X を教えて」
medium日常のコーディング:定型的な機能追加、素直な修正
high本当に難しい問題:厄介なデバッグ、複数ファイルにまたがるリファクタリング、設計の検討
xhigh最も難しい判断を要する作業:アーキテクチャの意思決定、敵対的検証、「絶対に間違えられない」場面
max追加コストが正当化される場合の最深モデル推論。効果逓減に注意

Claude Code 2.1.226ではFable 5、Opus 5、Sonnet 5、前世代のOpus 4.8が5段階すべてに対応します。Haiku 4.5はeffort対応モデルとして掲載されていないため、--effort やworkflowの effort オプションを付けません。モデルの表示とentitlementはprovider、プラン、アカウント、rolloutによって異なるため、現在の環境では /model を確認してください。

重要な変化はここにあります。対応モデルでは、品質対コストがあなたの握るダイヤルとなり、セッション単位で——そして後述するように、個々のサブエージェント単位で——調整できます。

Ultracode:Session-Only の xhigh + オーケストレーションモード

Ultracode は第6のeffortレベルではなく、max の上位でもありません。Claude Codeのsessionモードとして、ultracode = xhigh の effort + 動的なワークフローオーケストレーションを意味します。

この後半の要素こそが、程度の違いではなく種類の違いを生みます。ultracode をオンにすると、Claude Code は次のように指示されます。

  • 最速でも最安でもなく、最も網羅的で正確な回答に最適化する
  • 求められたときだけでなく、あらゆる実質的なタスクでマルチエージェントの Workflow オーケストレーションを使う
  • 実質的なタスクではより多くのトークンと時間を使い得ることを受け入れる

実際には、「この diff をレビューして」といったタスクが、1 つのエージェントがファイルを読むだけの作業ではなくなり、スクリプト化された Workflow になります。変更全体に並列のファインダー(探索役)がファンアウトし、スケプティック(懐疑役)エージェントが各発見の反証を試み、生き残ったものを統合ステージが組み立てる。ワークフローは数十のエージェントを生成し、大量のトークンを消費し得ます——ultracode がオプトイン方式である理由はまさにここにあります。ハーネスは、この規模を明示的に要求するようあなたに求めます。あなたに代わって黙ってワークフロー規模のトークン請求を燃やすことは決してありません。

オプトインの方法

ultracode 自体には 2 つの有効化パスがあります。

  1. キーワード。 プロンプトに「ultracode」を含めると、その場限りのオプトインになります。

    ultracode: audit the payments module for correctness bugs

    このターンだけがフルスケールで実行されます。次のターンは通常に戻ります。

  2. セッショントグル。 /effort から ultracode を選ぶと、セッション内のオプトインになります——ダイヤルを下げるかセッションを終えるまで、あらゆる実質的なタスクがこの扱いを受けます。Ultracode は常設の effortLevel として保存できず、セッション終了時にリセットされます。

一段引いて見ると、ワークフローオーケストレーション全般には 3 つ目の扉もあります。ワークフローは、明示的に依頼したとき(「ワークフローを使って…」)や、呼び出したスキルがそれを指示したときにも実行されます。これらのオプトイン——ultracode、明示的な依頼、スキル——のいずれもなければ、Claude Code は個別のサブエージェントか単独作業をデフォルトとします。大規模なオーケストレーションは、常にあなたが自ら求めたものなのです。

コスト管理:可視性、警告、規模ガイド

Ultracode はより広範なオーケストレーションへのオプトインであり、固定費用の保証ではありません。公式の管理手段は運用上のものです。

  • /workflows は実行中のエージェント別トークン使用量を表示し、run を停止できます。
  • 25 エージェント超または推定 150 万トークン超では Large workflow 警告が表示されます。
  • /config の Dynamic workflow size 設定は、5、15、50 未満のエージェント数を目標にするよう Claude を導きます。

警告と size 設定はいずれも助言です。Claude Code は +500k をハード上限として文書化しておらず、workflow スクリプトにも公開された budget.total / budget.remaining() 強制 API はありません。高コストな run は 1 ディレクトリや狭い問いから始め、結果とトークン使用量を確認してから意図的に拡大してください。

エージェント単位の Effort:判断が生きる場所に投資する

ワークフロースクリプトの内部では、推論 effort はサブエージェント単位で設定します:effort: 'low' | 'medium' | 'high' | 'xhigh' | 'max'。大規模実行の経済性が実際に決まるのはここです。パターンはこうなります。

  • 安価で機械的なステージ(検索、読み取り、整形)→ 対応モデルは低 effort、または Haiku を effort 上書きなしで
  • 難しい検証・判定ステージ → 高い階層

以下は、この 2 つの考え方を組み合わせた停止条件付きの発見ループです——安価なファインダーが 2 回連続で新規発見を得られなければ停止し、その後、見つかったものすべてに高価なスケプティックを投入します。(ワークフロースクリプトは、name、description、phases を宣言する export const meta = { ... } リテラルで始まります。以下の断片は本体部分です。)

phase('Discover');

let dryRounds = 0;
const seen = [];

while (dryRounds < 2) {
  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' }
    ),
    () => 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' }
    ),
  ]);

  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 は、誤った判定が実際に高くつく検証ステージのために温存されています。ファインダーには既出の発見が伝えられるので、古い発見を焼き直して売り込むことはありません。そしてループは、空のラウンドが 2 回連続して初めて停止します——effort と ultracode のチュートリアルとその姉妹編(品質パターン)で詳しく扱われている「loop-until-dry」パターンです。

Ultracode を使うべきでない場面

強力なダイヤルの失敗モードは、上げっぱなしにすることです。次の場面では ultracode を避けてください。

  • 些細な編集。 リネーム、タイポ修正、設定の微調整に必要なのは 1 つのエージェントと低い effort です。そのためにオーケストレーションされたワークフローを立ち上げるのは純粋な無駄です。
  • 会話的なターン。 「この関数は何をする?」「どちらのアプローチが好み?」はコンテキストから答えられます。ファンアウトするものが何もありません。
  • 単一の事実の参照。 答えがどのファイルにあるか分かっているなら、直接読むほうがどんな委譲にも勝ります。
  • 高速なイテレーションを求めるすべての作業。 ultracode は網羅性と正確性に最適化しますが、それはまだスケッチ段階にいるときの素早いフィードバックループとは正反対のものです。

経験則:ultracode は、見落としが高くつき、探索空間が 1 つのエージェントのコンテキストより大きいタスクのためのものです。それ以外はすべて、通常の effort のほうがうまく——そして劇的に安く——動きます。コスト全体の視点はコスト最適化のチュートリアルを参照してください。

3 つのレシピ

監査。 ultracode: audit the auth module for security issues. これは ultracode のホームグラウンドです。まず範囲を区切り、上の loop-until-dry の形を使い、すべての発見を敵対的に検証し、カバレッジ上の制約を明記します。

移行。 ultracode: migrate every deprecated API call in src/ to the new client. ファイルを並列に変更するエージェントには、agent() 呼び出しに isolation: 'worktree' が必要です。各エージェントが新しい git worktree を受け取るので互いを踏み荒らすことがなく、変更がなければ自動的に削除されます。worktree はエージェントごとに実際のセットアップ時間とディスクを消費します——まさに、あのキーワードを打ち込むときにあなたが同意している規模です。

リサーチスイープ。 ultracode: map every place we handle currency rounding, and how. マルチモーダルなスイープ(一斉探索)です。並列エージェントがそれぞれ異なる方法で検索し(ファイルの場所で、内容で、エンティティで、時間で)、その後に「何が欠けている?」と問う網羅性クリティックの回答が次のラウンドの種になります。Haiku は effort 上書きなしで、または effort 対応の低コストモデルは low でスイープし、最終的な統合には高価な処遇を与えます。

持ち帰るべきこと

Effort 対応モデルでは、回答の品質をタスク単位で制御できます。Ultracode は別の session-only モードです。xhigh の推論に常時ワークフローオーケストレーションを加え、多くの時間とトークンを使い得るため明示的なオプトインになっています。コスト管理はスコープ、規模ガイド、ライブ可視性、run を停止する能力によって行い、文書化されていないハード上限には頼りません。

身につける価値のあるスキルは「常に ultracode を使う」ことではありません。自分のタスクのうち、どれがダイヤルを回すに値するタスクなのかを見分けることです。監査、移行、リサーチスイープには「はい」。いま直そうとしているタイポには「いいえ」。


さらに深く知りたい方へ。Effort レベルと Ultracode のチュートリアルでは検証済みのコスト管理を扱い、Workflow とは何か?では ultracode の土台となるオーケストレーション層を解説しています。