(更新:)
Claude Code でタスクの難しさによってモデルを使い分ける(Haiku / Sonnet / Opus の判断基準)
- Claude Code
- Claude
Claude Code では、Haiku・Sonnet・Opus のどのモデルで作業するかを選べます。
わたしは、どのモデルを使うべきかの判断基準をグローバルの CLAUDE.md(ホーム直下の ~/CLAUDE.md)に書いています。最近その基準を、以前よりかなり Opus 寄り に変えました。その中身と理由をまとめます。
判断表
CLAUDE.md に書いている表は次のとおりです。
| タスク | 推奨 |
|---|---|
| 質問・説明・typo・単純読取・雑談 | Haiku |
| 実装・デバッグ・レビュー・調査で、定型的・単一ファイル・パターンが明白なもの | Sonnet |
| 実装・デバッグ・レビュー・調査が複雑(多ファイル・原因不明・設計判断を伴う)、または設計・リファクタ・ML パイプライン・難解バグ | Opus + thinking |
ポイントは、タスクの種類ではなく、複雑さで分けている ところです。同じ「実装」でも、1ファイルで直し方が明らかなら Sonnet、複数ファイルにまたがったり設計の判断が入ったりするなら Opus です。
Opus 寄りに変えた理由
以前は「Opus は重いので、本当に難しいときだけ」という使い方でした。変えたきっかけは2つです。
- Opus が速くなった:新しいモデルになって応答が速くなり、待ち時間がそれほど気にならなくなりました
- Opus 5.5 でトークン消費が減った:同じ作業でも使うトークンが減ったので、利用上限を気にして Sonnet に落とす理由が薄れました
速さと消費の両方で「Opus を避ける理由」が減ったので、迷ったら品質を優先して Opus にする方針にしました。CLAUDE.md の冒頭にも、こう書いています。
同じタスク種別でも複雑さで判断し、Sonnetで足りるかOpusが向くか見極める。重心は以前よりOpus寄り。
Claude に「モデル違うよ」と言わせるルール
判断表を書いておくだけでなく、Claude 自身にもモデルの選び方をチェックさせています。
ユーザー指定モデルと表の推奨が2段階以上ズレる時のみ作業開始前に一言提案(確認待ちはせず続行)。差が1段階以内・モデル指定済みなら黙る。
たとえば、Haiku のまま複雑なリファクタを頼んだら「これは Opus 向きです」と一言だけ言ってもらいます。ただし、
- 2段階以上ズレたときだけ 言う(Haiku と Opus の組み合わせ)
- 言ったあとも 確認を待たずに作業を続ける
という条件を付けています。1段階のズレまで毎回指摘されるとうるさいですし、確認待ちで止まられると任せた意味がなくなるからです。
サブエージェントは Claude Code に任せる
以前は環境変数 CLAUDE_CODE_SUBAGENT_MODEL で、サブエージェント(調査やレビューを別に走らせる Explore・Plan など)のモデルを固定していました。
今はこの固定をやめて、Claude Code 本体がタスクに応じて選ぶのに任せています。
サブエージェント(Explore/Plan/code-reviewer等)のモデルはClaude Code本体のデフォルト判断に委ねる(CLAUDE_CODE_SUBAGENT_MODEL固定は廃止、タスクに応じた自動選択)。
まとめ
- モデルは タスクの種類ではなく複雑さ で選ぶ。判断表を
CLAUDE.mdに書いておく - Opus 5.5 が速くなりトークン消費も減ったので、迷ったら Opus にした
- 指定したモデルが大きくズレているときだけ、Claude に一言言わせる。確認待ちはさせない
モデルの性能や消費量は新しいモデルが出るたびに変わるので、この表もそのたびに見直すつもりです。
この記事をシェア