AIFCC
記事一覧へ
claude-workflow

Claude Codeコンテキスト管理の5つの術

60948
皆さんClaudeCodeを使っててこんな悩みありませんか? ・Claude Codeのセッションが長くなると、なぜかバカになって回答の質が落ちる ・コマンドって何?違いがよくわからない ・サブエージェントをいつ使えばいいのか判断できない ・コンテキストがぐちゃぐちゃあああ 今、Anthropicの社員であるThariq氏(@trq212)が書いた「Claude Codeのセッション管理と100万トークンコンテキスト」に関する投稿が54万ビューの大バズ中😳 なのでそんな悩みを持たれてるみなさんに、今回はその内容をわかりやすく噛み砕いて解説します👇 元ポストはこちら:https://x.com/trq212/status/2044548257058328723?s=20 ■ 𝗰𝗼𝗻𝘁𝗲𝘅𝘁 𝘄𝗶𝗻𝗱𝗼𝘄(コンテキストウィンドウ)の基本 まず前提として、Claude Codeのコンテキストウィンドウは100万トークンです。 コンテキストには以下のすべてが含まれます: ・システムプロンプト ・これまでの会話履歴 ・すべてのツール呼び出しとその出力 ・読み込まれたファイルの内容 つまり、セッションが長くなればなるほど、このコンテキストにはどんどん情報が積み重なっていきます。 ■ 𝗰𝗼𝗻𝘁𝗲𝘅𝘁 𝗿𝗼𝘁(コンテキスト腐敗)とは何か ここで重要な概念が「コンテキスト腐敗(context rot)」です。 コンテキストが大きくなると、モデルの注意が多くのトークンに分散され、古い・関係ない情報がノイズになって現在のタスクの邪魔をし始めます。 Thariq氏によると、100万トークンモデルでは約30万〜40万トークンあたりからコンテキスト腐敗が観察されるとのこと。ただしこれはタスクに大きく依存するため、厳密なルールではありません。 コンテキストウィンドウはハードカットオフ(上限に達すると強制終了)なので、上限に近づくとこれまでの作業を要約して新しいコンテキストで続行する必要があります。これが「コンパクション」と呼ばれる処理です。 ■ 毎ターンが「分岐点」である Claude Codeが1つのタスクを終えた後、次に何をするか。実はここが最も重要な判断ポイントです。 Thariq氏は5つの選択肢を挙げています: 𝟭. 𝗖𝗼𝗻𝘁𝗶𝗻𝘂𝗲(続行) 同じセッションでそのまま次のメッセージを送る。最も自然な選択肢。 𝟮. /𝗿𝗲𝘄𝗶𝗻𝗱(Esc Escダブルタップ) 過去のメッセージまで戻り、そこからやり直す。それ以降のメッセージはコンテキストから削除される。 𝟯. /𝗰𝗹𝗲𝗮𝗿(新規セッション) 自分で重要な情報をまとめ、まっさらなセッションを開始する。 𝟰. /𝗰𝗼𝗺𝗽𝗮𝗰𝘁(圧縮) これまでの会話をモデルに要約させ、その要約の上に新しい会話を続ける。 𝟱. 𝗦𝘂𝗯𝗮𝗴𝗲𝗻𝘁𝘀(サブエージェント) 次の作業チャンクを独自のクリーンなコンテキストを持つエージェントに委任し、結果だけを親セッションに返す。 ■ 新しいセッションを始めるべきタイミング 100万トークンのコンテキストウィンドウのおかげで、フルスタックアプリをゼロから構築するような長いタスクもより安定して実行できるようになりました。 しかし、コンテキストがまだ余っているからといって、同じセッションを続けるべきとは限りません。 Thariq氏の経験則はシンプルです: 🔥 「新しいタスクを始めるなら、新しいセッションも始めるべき」 ただし例外もあります。たとえば、機能を実装した直後にそのドキュメントを書く場合。新しいセッションを始めるとClaude Codeは先ほど実装したファイルをもう一度読み直す必要があり、遅くてコストもかかります。ドキュメント作成のような「高度な知性を要求しない」タスクなら、多少のコンテキスト汚染を受け入れてそのまま続行する方が効率的です。 ■ 𝗿𝗲𝘄𝗶𝗻𝗱 が最も過小評価されている機能 Thariq氏が「良いコンテキスト管理を示す最大の習慣」として挙げたのが、rewindです。 Claude Codeでは、Escキーをダブルタップ(または/rewindコマンド)することで、過去の任意のメッセージまで戻ってやり直せます。その地点より後のメッセージはコンテキストから完全に削除されます。 具体的なシナリオを考えてみましょう: Claudeが5つのファイルを読み、あるアプローチを試みたが失敗した。 ❌ 普通の反応:「それじゃダメだった。代わりにXを試して」 → 失敗したアプローチの全ログがコンテキストに残り続ける ✅ 良いやり方:ファイル読み込み直後までrewindし、学んだことを含めて再指示 → 「アプローチAは使わないで。fooモジュールはそれを公開していない。直接Bで行って」 こうすることで、失敗した試行錯誤のトークンがコンテキストから消え、クリーンな状態で再挑戦できます。 さらに「ここから要約して」機能を使えば、Claudeが自分の学びをまとめて「過去の自分から未来の自分へのメモ」を作成することもできます。 ■ /𝗰𝗼𝗺𝗽𝗮𝗰𝘁 と /𝗰𝗹𝗲𝗮𝗿 の決定的な違い セッションが長くなった時、重量を減らす方法は2つ。似ているようで全く違います。 【/compact(圧縮)】 ・モデルがこれまでの会話を要約し、履歴をその要約に置き換える ・不可逆(lossy)── 何が重要かはClaudeの判断に委ねられる ・自分で何も書かなくていいが、Claudeが見落とす可能性がある ・指示を渡して方向付けもできる(例:/compact auth refactorに集中して、テストのデバッグは削除して) 【/clear(新規セッション)】 ・自分で重要な情報を書き出し、まっさらなセッションを開始 ・「リファクタ対象はauth middleware、制約はX、関連ファイルはAとB、アプローチYは除外済み」のように ・手間はかかるが、結果のコンテキストは自分が選んだ情報だけで構成される どちらを選ぶかは、コントロールと手軽さのトレードオフです。 ■ なぜ𝗰𝗼𝗺𝗽𝗮𝗰𝘁が失敗するのか 長時間のセッションを使っていると、compactの品質が極端に悪くなることがあります。 Thariq氏によると、悪いcompactが起きる最大の原因は「モデルが作業の方向性を予測できない時」です。 具体例: 長いデバッグセッションの後にautocompactが発動し、調査内容を要約した。 → 次のメッセージで「bar.tsのあの警告も直して」と言ったら、デバッグ中心の要約からその警告の情報が抜け落ちていた。 さらに厄介なのは、コンテキスト腐敗によってcompact実行時のモデルが「最も知性が低い状態」にあるということ。つまり、最も正確な要約が必要な瞬間に、最も質の低い要約が生成されるというジレンマです。 100万トークンのコンテキストがある今、余裕のあるうちに自分から/compactを実行し、次にやることの説明を添えるのが最善策です。 ■ 𝗦𝘂𝗯𝗮𝗴𝗲𝗻𝘁𝘀(サブエージェント)の使い所 サブエージェントもコンテキスト管理の一形態です。 Claude CodeがAgentツールでサブエージェントを生成すると、そのサブエージェントは独自のクリーンなコンテキストウィンドウを持ちます。必要なだけ作業を行い、結果を要約して親セッションに返します。 判断基準はシンプル: 👀 「このツール出力は後でまた必要か?それとも結論だけあればいいか?」 結論だけでいいなら、サブエージェントに任せるべきです。 Claude Codeは自動的にサブエージェントを呼び出しますが、明示的に指示するのも効果的です: ・「サブエージェントを立ち上げて、このスペックファイルに基づいて作業結果を検証して」 ・「サブエージェントで別のコードベースのauth flowの実装方法を読んで要約して。それを参考に同じように実装して」 ・「サブエージェントでgitの差分からこの機能のドキュメントを書いて」 中間出力を親コンテキストに持ち込まないことで、コンテキストをクリーンに保てます。 ■ まとめ:5つのコンテキスト管理術 Claudeが1ターン終了し、次のメッセージを送る前に必ず判断すべきこと: 1. タスクが変わったか? → /clear で新規セッション 2. アプローチが失敗したか? → /rewind でファイル読み込み直後に戻る 3. セッションが長くなってきたか? → 余裕のあるうちに /compact(方向性を添えて) 4. 大量の中間出力が出る作業か? → サブエージェントに委任 5. 関連タスクでコンテキストが使えるか? → そのまま続行 将来的にはClaude自身がこの判断を助けてくれるようになるとのことですが、今はユーザーがこの判断をすることで、Claude Codeの出力品質を大きく向上させることができます。 セッション管理は地味ですが、Claude Codeの体験を根本から変えるスキルです🔥 この記事が少しでも参考になった方へ。 𝗖𝗹𝗮𝘂𝗱𝗲 𝗖𝗼𝗱𝗲 𝗦𝘁𝘂𝗱𝗶𝗼 @ 𝗝𝗮𝗽𝗮𝗻(@ClaudeCode_love)は、 Claude Codeガチ勢3人で運営しているアカウントです。 実務レベルのCLI活用・自動化を毎日発信しています。 現在は上場企業とAIエージェントを共同開発中。 普段の発信内容👇 ・Claude CodeやClaudeを活用したリアルなプロダクト開発事例 ・Claude Code活用/Vibe Coding/開発トレンドの整理 ・海外のClaude Codeに関する最新情報 開発思想から設計、実装、改善まで、 「作って終わり」ではなく動くプロダクトを世に出すところまでを 海外の情報や1次情報をまとめています。 ご関心のある方は、ぜひフォローしてチェックしてみてください👀有益だと思います!
原文を表示 / Show original
皆さんClaudeCodeを使っててこんな悩みありませんか? ・Claude Codeのセッションが長くなると、なぜかバカになって回答の質が落ちる ・コマンドって何?違いがよくわからない ・サブエージェントをいつ使えばいいのか判断できない ・コンテキストがぐちゃぐちゃあああ 今、Anthropicの社員であるThariq氏(@trq212)が書いた「Claude Codeのセッション管理と100万トークンコンテキスト」に関する投稿が54万ビューの大バズ中😳 なのでそんな悩みを持たれてるみなさんに、今回はその内容をわかりやすく噛み砕いて解説します👇 元ポストはこちら:https://x.com/trq212/status/2044548257058328723?s=20 ■ 𝗰𝗼𝗻𝘁𝗲𝘅𝘁 𝘄𝗶𝗻𝗱𝗼𝘄(コンテキストウィンドウ)の基本 まず前提として、Claude Codeのコンテキストウィンドウは100万トークンです。 コンテキストには以下のすべてが含まれます: ・システムプロンプト ・これまでの会話履歴 ・すべてのツール呼び出しとその出力 ・読み込まれたファイルの内容 つまり、セッションが長くなればなるほど、このコンテキストにはどんどん情報が積み重なっていきます。 ■ 𝗰𝗼𝗻𝘁𝗲𝘅𝘁 𝗿𝗼𝘁(コンテキスト腐敗)とは何か ここで重要な概念が「コンテキスト腐敗(context rot)」です。 コンテキストが大きくなると、モデルの注意が多くのトークンに分散され、古い・関係ない情報がノイズになって現在のタスクの邪魔をし始めます。 Thariq氏によると、100万トークンモデルでは約30万〜40万トークンあたりからコンテキスト腐敗が観察されるとのこと。ただしこれはタスクに大きく依存するため、厳密なルールではありません。 コンテキストウィンドウはハードカットオフ(上限に達すると強制終了)なので、上限に近づくとこれまでの作業を要約して新しいコンテキストで続行する必要があります。これが「コンパクション」と呼ばれる処理です。 ■ 毎ターンが「分岐点」である Claude Codeが1つのタスクを終えた後、次に何をするか。実はここが最も重要な判断ポイントです。 Thariq氏は5つの選択肢を挙げています: 𝟭. 𝗖𝗼𝗻𝘁𝗶𝗻𝘂𝗲(続行) 同じセッションでそのまま次のメッセージを送る。最も自然な選択肢。 𝟮. /𝗿𝗲𝘄𝗶𝗻𝗱(Esc Escダブルタップ) 過去のメッセージまで戻り、そこからやり直す。それ以降のメッセージはコンテキストから削除される。 𝟯. /𝗰𝗹𝗲𝗮𝗿(新規セッション) 自分で重要な情報をまとめ、まっさらなセッションを開始する。 𝟰. /𝗰𝗼𝗺𝗽𝗮𝗰𝘁(圧縮) これまでの会話をモデルに要約させ、その要約の上に新しい会話を続ける。 𝟱. 𝗦𝘂𝗯𝗮𝗴𝗲𝗻𝘁𝘀(サブエージェント) 次の作業チャンクを独自のクリーンなコンテキストを持つエージェントに委任し、結果だけを親セッションに返す。 ■ 新しいセッションを始めるべきタイミング 100万トークンのコンテキストウィンドウのおかげで、フルスタックアプリをゼロから構築するような長いタスクもより安定して実行できるようになりました。 しかし、コンテキストがまだ余っているからといって、同じセッションを続けるべきとは限りません。 Thariq氏の経験則はシンプルです: 🔥 「新しいタスクを始めるなら、新しいセッションも始めるべき」 ただし例外もあります。たとえば、機能を実装した直後にそのドキュメントを書く場合。新しいセッションを始めるとClaude Codeは先ほど実装したファイルをもう一度読み直す必要があり、遅くてコストもかかります。ドキュメント作成のような「高度な知性を要求しない」タスクなら、多少のコンテキスト汚染を受け入れてそのまま続行する方が効率的です。 ■ 𝗿𝗲𝘄𝗶𝗻𝗱 が最も過小評価されている機能 Thariq氏が「良いコンテキスト管理を示す最大の習慣」として挙げたのが、rewindです。 Claude Codeでは、Escキーをダブルタップ(または/rewindコマンド)することで、過去の任意のメッセージまで戻ってやり直せます。その地点より後のメッセージはコンテキストから完全に削除されます。 具体的なシナリオを考えてみましょう: Claudeが5つのファイルを読み、あるアプローチを試みたが失敗した。 ❌ 普通の反応:「それじゃダメだった。代わりにXを試して」 → 失敗したアプローチの全ログがコンテキストに残り続ける ✅ 良いやり方:ファイル読み込み直後までrewindし、学んだことを含めて再指示 → 「アプローチAは使わないで。fooモジュールはそれを公開していない。直接Bで行って」 こうすることで、失敗した試行錯誤のトークンがコンテキストから消え、クリーンな状態で再挑戦できます。 さらに「ここから要約して」機能を使えば、Claudeが自分の学びをまとめて「過去の自分から未来の自分へのメモ」を作成することもできます。 ■ /𝗰𝗼𝗺𝗽𝗮𝗰𝘁 と /𝗰𝗹𝗲𝗮𝗿 の決定的な違い セッションが長くなった時、重量を減らす方法は2つ。似ているようで全く違います。 【/compact(圧縮)】 ・モデルがこれまでの会話を要約し、履歴をその要約に置き換える ・不可逆(lossy)── 何が重要かはClaudeの判断に委ねられる ・自分で何も書かなくていいが、Claudeが見落とす可能性がある ・指示を渡して方向付けもできる(例:/compact auth refactorに集中して、テストのデバッグは削除して) 【/clear(新規セッション)】 ・自分で重要な情報を書き出し、まっさらなセッションを開始 ・「リファクタ対象はauth middleware、制約はX、関連ファイルはAとB、アプローチYは除外済み」のように ・手間はかかるが、結果のコンテキストは自分が選んだ情報だけで構成される どちらを選ぶかは、コントロールと手軽さのトレードオフです。 ■ なぜ𝗰𝗼𝗺𝗽𝗮𝗰𝘁が失敗するのか 長時間のセッションを使っていると、compactの品質が極端に悪くなることがあります。 Thariq氏によると、悪いcompactが起きる最大の原因は「モデルが作業の方向性を予測できない時」です。 具体例: 長いデバッグセッションの後にautocompactが発動し、調査内容を要約した。 → 次のメッセージで「bar.tsのあの警告も直して」と言ったら、デバッグ中心の要約からその警告の情報が抜け落ちていた。 さらに厄介なのは、コンテキスト腐敗によってcompact実行時のモデルが「最も知性が低い状態」にあるということ。つまり、最も正確な要約が必要な瞬間に、最も質の低い要約が生成されるというジレンマです。 100万トークンのコンテキストがある今、余裕のあるうちに自分から/compactを実行し、次にやることの説明を添えるのが最善策です。 ■ 𝗦𝘂𝗯𝗮𝗴𝗲𝗻𝘁𝘀(サブエージェント)の使い所 サブエージェントもコンテキスト管理の一形態です。 Claude CodeがAgentツールでサブエージェントを生成すると、そのサブエージェントは独自のクリーンなコンテキストウィンドウを持ちます。必要なだけ作業を行い、結果を要約して親セッションに返します。 判断基準はシンプル: 👀 「このツール出力は後でまた必要か?それとも結論だけあればいいか?」 結論だけでいいなら、サブエージェントに任せるべきです。 Claude Codeは自動的にサブエージェントを呼び出しますが、明示的に指示するのも効果的です: ・「サブエージェントを立ち上げて、このスペックファイルに基づいて作業結果を検証して」 ・「サブエージェントで別のコードベースのauth flowの実装方法を読んで要約して。それを参考に同じように実装して」 ・「サブエージェントでgitの差分からこの機能のドキュメントを書いて」 中間出力を親コンテキストに持ち込まないことで、コンテキストをクリーンに保てます。 ■ まとめ:5つのコンテキスト管理術 Claudeが1ターン終了し、次のメッセージを送る前に必ず判断すべきこと: 1. タスクが変わったか? → /clear で新規セッション 2. アプローチが失敗したか? → /rewind でファイル読み込み直後に戻る 3. セッションが長くなってきたか? → 余裕のあるうちに /compact(方向性を添えて) 4. 大量の中間出力が出る作業か? → サブエージェントに委任 5. 関連タスクでコンテキストが使えるか? → そのまま続行 将来的にはClaude自身がこの判断を助けてくれるようになるとのことですが、今はユーザーがこの判断をすることで、Claude Codeの出力品質を大きく向上させることができます。 セッション管理は地味ですが、Claude Codeの体験を根本から変えるスキルです🔥 この記事が少しでも参考になった方へ。 𝗖𝗹𝗮𝘂𝗱𝗲 𝗖𝗼𝗱𝗲 𝗦𝘁𝘂𝗱𝗶𝗼 @ 𝗝𝗮𝗽𝗮𝗻(@ClaudeCode_love)は、 Claude Codeガチ勢3人で運営しているアカウントです。 実務レベルのCLI活用・自動化を毎日発信しています。 現在は上場企業とAIエージェントを共同開発中。 普段の発信内容👇 ・Claude CodeやClaudeを活用したリアルなプロダクト開発事例 ・Claude Code活用/Vibe Coding/開発トレンドの整理 ・海外のClaude Codeに関する最新情報 開発思想から設計、実装、改善まで、 「作って終わり」ではなく動くプロダクトを世に出すところまでを 海外の情報や1次情報をまとめています。 ご関心のある方は、ぜひフォローしてチェックしてみてください👀有益だと思います!

AIFCC — AI Fluent CxO Club

読み書きそろばん、AI。経営者が AI を自分で動かせるようになるコミュニティ。

Claude Codeコンテキスト管理の5つの術 | AIFCC