Claude Media
Claude Code /code-reviewでeffortを指定する — 前回レベルの再利用

Claude Code /code-reviewでeffortを指定する — 前回レベルの再利用

/code-reviewはlow〜maxのeffortを引数で渡せます。lowとmediumは確度の高い指摘だけ、highからmaxは網羅重視です。レベルを省くと前回入力した値を使う挙動と、-pやultraの例外を扱います。

/code-reviewのeffortは、コマンドの後ろにレベルを付けるだけで指定できます。lowとmediumは確度の高い指摘だけを返し、highからmaxは網羅を広げるかわりに、確信の弱い指摘も混ざります。レベルを省いた場合は「前回自分が入力したレベル」が使われます。この記憶が別セッションにも及ぶ点が、いちばん見落とされやすい挙動です。

/code-reviewのeffort指定は何を変えるのか

/code-reviewは、ローカルの差分をターミナルで見るレビューコマンドです。ブランチの上流より先にあるコミットと未コミットの変更が既定の対象になり、正しさのバグに加えて、再利用・単純化・効率化の指摘も返します。

effortを渡すと、この報告の「厳しさ」が変わります。公式の説明は2段階です。

レベル指摘の傾向
low / medium指摘の傾向最も確信の持てる指摘だけを報告する。誤検知が少ない
high / xhigh / max指摘の傾向網羅を広げる。確信の弱い指摘も含まれることがある

公式が区別しているのは、この2つのグループです。highとxhighとmaxの3者の差、つまりmaxがxhighより何をどれだけ多く拾うのかは、公式には書かれていません。

つまりeffortは「思考の深さ」だけでなく、レビューでは「どこまで指摘を出すか」の閾値として働きます。誤検知に付き合う時間を惜しむ日常の確認はlow〜medium、見落としを減らしたいマージ前はhigh以上、という割り振りが自然です。

セッション全体のeffortの仕組みは、Claude Code effortレベルの使い方とClaude effortの使い分けにまとめています。ここで扱うのは、/code-reviewの引数として渡すeffortだけです。

レベルの書き方と実行例

書式は/code-review <レベル> [フラグ] [対象]です。レベルに続けて--fixや--commentなどのフラグ、そして対象(ファイルパス・PR番号・ブランチ名・main...my-featureのような範囲)を置きます。

/code-review low
/code-review high
/code-review max --fix
/code-review medium 123

最後の例は、mediumでPR 123を対象にする形です。--fixは指摘を作業ツリーに適用するフラグで、経緯はv2.1.152のリリースノートにあります。

/reviewは/code-reviewの別名です。v2.1.223より前の/reviewは、GitHubのPRを1回の読み取り専用パスで見る別のコマンドでした。

レベルを省くと前回の値が使われる

引数なしの/code-reviewは、直近に自分で打ったlow〜maxのレベルを再利用します。別セッションでも同じです。使われるときは、次のようなnoticeが出ます。

Reusing high effort, the level you typed last time

レベルを変えたいときは、/code-review highのように打ち直します。それ以降の引数なし実行は、打ち直したレベルを使います。

公式の説明を読むかぎり、記憶の対象は「セッションのeffort」ではなく「/code-reviewに自分で入力したレベル」です。/effortでセッションの値を変えても、この記憶は動きません。逆に、一度も/code-reviewにレベルを打っていなければ、記憶はなく、セッションの現在のeffortが使われます。

変更が入ったのはv2.1.223です。それより前は、レベルなしの/code-reviewは常にセッションの現在のeffortで動いていました。バージョンを上げた後で「毎回同じ深さになる」と感じたなら、この変更が原因です。

記憶が更新されない3つの場面

前回レベルの記憶に触れない実行が、公式に明記されています。

  • -p(非対話)実行: そこで渡したレベルは、記憶を更新しない
  • ultra: 記憶を更新せず、記憶したレベルも使わない
  • 一度もレベルを打っていない場合: セッションの現在のeffortを使う

CIやスクリプトでclaude -p "/code-review high"を回しても、手元の対話セッションで次に使われるレベルは変わりません。逆方向、つまり-pでレベルを省いたときに記憶が読まれるかどうかは、公式に明記されていません。スクリプトからは毎回レベルを明示しておくと、挙動を読み違えずに済みます。

セッションの/effortとレビューのレベルは別の設定

同じlow〜maxの語彙でも、セッションの/effortと/code-reviewの引数は保存の仕方が違います。混同すると「変えたはずなのに効かない」につながるので、並べておきます。

観点セッションの/effort/code-reviewのレベル引数
変わるものセッションの/effort推論の深さ全体/code-reviewのレベル引数指摘を出す閾値
保存セッションの/effortEnterで既定として保存、sでそのセッションのみ(v2.1.257以降)/code-reviewのレベル引数打ったレベルを記憶し、別セッションでも再利用
maxの扱いセッションの/effort環境変数で指定しないかぎり、現在のセッションだけ/code-reviewのレベル引数記憶の対象に含まれる
-p実行セッションの/effortそのセッションだけに適用し、既定には保存しない/code-reviewのレベル引数渡したレベルは記憶を更新しない
非対応レベルセッションの/effort指定値以下で最も高いレベルに落ちる/code-reviewのレベル引数レビューのページに記載なし

レベルを一度も打っていない場合は、セッションの現在のeffortが使われます。その既定値は、対応モデルの多くでhigh、Opus 5.5とSonnet 5.5はmediumです。つまり、この2モデルで引数なしの/code-reviewを打つと、確度の高い指摘だけを返す側のレベルで動きます。

effortの記憶を使った運用の組み立て

記憶の仕組みは、書き方次第で便利にも事故のもとにもなります。実務では次の使い分けが成り立ちます。

場面打つもの狙い
作業中の素早い確認打つもの/code-review medium狙い確度の高い指摘だけを見る
プッシュ前打つもの/code-review high狙い網羅を広げ、見落としを減らす
以降の日常確認打つもの/code-review(省略)狙い直前に打ったレベルをそのまま使う
CI・スクリプト打つもの-pでレベルを明示狙い手元の記憶と切り離す

注意したいのは、プッシュ前にmaxを試したあと、そのまま日課の/code-reviewを省略形で打ち続けるケースです。次の実行でmaxが再利用され、時間も指摘の数も増えます。実行のたびにnoticeの文言を見て、意図しないレベルが使われていないかを確かめてください。

チームで共有したい判断は、レベルの記憶ではなくCLAUDE.mdに書いておくほうが確実です。レビューはCLAUDE.mdに従って動くためです(REVIEW.mdは読まれません)。たとえば次のように書きます。

## コードレビュー
- プッシュ前は `/code-review high` を実行し、指摘を確認してから push する
- 認証・課金に触れる変更は `/code-review ultra` も併用する

effortの後ろに書いた文字列はどう読まれるか

レベルとフラグの後ろに残った文字列は、ultraの有無で扱いが変わります。

  • ultraなし: 残りはすべてレビュー対象のテキストになる。/code-review /fix-issue 123は、/fix-issueを別のスキルとして読み込まず、/fix-issue 123を対象の文字列として扱う
  • ultraあり: 1語なら基準ブランチかPR番号として読み、それ以上の文章はレビューに添えるメモになる。/code-review ultra check my auth changesは現在のブランチを見て、指摘をメモに関連づける

後ろに別のコマンドを付けても連鎖しないのは、v2.1.218からの挙動です。それより前は、/code-reviewの後ろのコマンドが別のスキルとして展開されていました。

ultraはeffortの最上位ではない

ultraはmaxの次の段ではなく、クラウドで動く別の経路(ultrareview)を呼ぶ引数です。前回レベルの記憶にも関与しません。/code-review ultra --fixなら、クラウドのレビューが返した指摘を、戻ってきた時点で作業ツリーに適用します。

ultrareviewには前提があります。claude.aiアカウントでの認証が必要で、Amazon Bedrock、Google CloudのAgent Platform、Microsoft Foundry、ゼロデータ保持を有効にした組織では使えません。使えない環境で/code-review ultraを打つと、セッション内のローカルレビューに切り替わります。「ultraと書いたのにクラウドで動いていない」ときは、この条件を確認します。実行手順と料金はultrareviewの使い方に分けてあります。

スクリプトやCIからクラウドレビューを起動するなら、claude -p '/code-review ultra'と打ちます。レビューが起動し、追跡用のリンクが表示されます(v2.1.218以降)。ただし利用クレジットの課金が発生する場合は、確認に対話セッションが要るため起動前に止まります。

スケジュールタスクからは、クラウドレビューは起動しません。/code-reviewを定期実行するなら、ultraを付けずに登録します。

Claudeが自分でレビューを始めることもあります。「変更をレビューして」と自然な文で頼めば、コマンドを打たなくてもスキルが走ります。/code-reviewを手で打つときだけに絞りたい場合は、設定ファイルのskillOverridesで"code-review": "user-invocable-only"を指定すると、Claudeとスケジュールタスクからの起動を止められます。

実行の裏側 — バックグラウンドとサブエージェント数

effortの選択は、レビューの動き方にも関わります。押さえておきたい変更は3つです。

バージョン変更
v2.1.218変更レビューがバックグラウンドのサブエージェントとして動き、会話のコンテキストを占有しなくなった
v2.1.232変更high・xhigh・maxもほかのレベルと同じくバックグラウンドのエージェントで動くようになった
v2.1.274変更独自のチューニング設定を持たないモデルでは、多数のレビュー用サブエージェントを起こさず、軽量なインラインのプロンプトで動く

v2.1.274の変更は、モデルによってレビューの分割数が変わることを意味します。どのモデルが「チューニング済み」に当たるのかは、確認した公式ドキュメントには書かれていません。モデルを切り替えたあとにレビューの挙動(所要時間やサブエージェントの数)が変わって見えたら、この変更が背景にあります。

実行の場所は、既定ではバックグラウンドです。次の場合は、フォアグラウンドで動きます。

  • 前のレビューが終わる前に、もう一度/code-reviewを実行した
  • -pやAgent SDKで非対話実行した(発見は応答に含まれる。ただしultraは待たずに起動する)
  • 環境変数CLAUDE_CODE_DISABLE_BACKGROUND_TASKSを1にした(ほかのバックグラウンド機能もすべて止まる)

バックグラウンド実行の--fixの編集は、セッションのチェックポイントの外で適用されます。/rewindでは戻せないので、元に戻すときはgitを使います。フォアグラウンドの場合は、/rewindで戻せます。

よくあるつまずき

前回と違うレベルで動いた気がする: noticeの文言を確認します。/effortで変えたセッションの値ではなく、/code-reviewに最後に打ったレベルが使われているはずです。

レベルを指定したのに次の実行で反映されない: -pで渡したレベルは記憶を更新しません。対話セッションで打ち直します。

CIで毎回同じ深さにしたい: 記憶に頼らず、レベルと対象をコマンドに書き切ります。

claude -p "/code-review high main...my-feature"

-pでは、レビューの完了を待って発見が応答に含まれます。渡したhighは手元の記憶を更新しないので、開発者の対話セッションには影響しません。

古いバージョンで記憶が効かない: v2.1.223より前は、レベルなしの実行は常にセッションのeffortを使います。

xhighを渡すモデルに使えない: Opus 4.6とSonnet 4.6は、セッションのeffortでxhighを持ちません。セッション側では、対応していないレベルは指定値以下で最も高いレベルにフォールバックします。/code-reviewの引数でも同じ扱いかは、公式のレビューのページには書かれていません。

まとめ

/code-reviewのeffortは、深さより先に「指摘の閾値」を動かします。lowとmediumは確度の高い指摘だけ、high以上は網羅重視で、確信の弱い指摘も含みます。

レベルを省くと前回打った値が別セッションでも再利用されるので、maxを試したあとは/code-review mediumなどで打ち直すと、次回以降の深さを意図どおりに戻せます。-pとultraはその記憶に触れません。CIからは毎回レベルを明示し、ultraはeffortの最上位ではなく別経路として扱います。

この記事を共有:XはてブLinkedIn