powered by TechFeed
表示モード
ハウツー

Claude Codeにプロジェクト全体を読ませるのをやめたら、トークン消費が3分の1になった — 「検索してから開く」だけで1日の制限が持つようになった話

9月27日、Yasir Mahmoodが「I stopped letting Claude Code read my whole project, and my usage limit suddenly lasted all day」と題した記事を公開した。Claude Codeにプロジェクト全体を読ませるのをやめることでトークン消費を約3分の1に抑えられるという実験結果を詳しく解説した内容で、制限が「午前中に尽きる」という経験をした開発者には即座に試せる処方箋となっている。

9月27日、Yasir Mahmoodが「I stopped letting Claude Code read my whole project, and my usage limit suddenly lasted all day」と題した記事を公開した。Claude Codeにプロジェクト全体を読ませるのをやめることでトークン消費を約3分の1に抑えられるという実験結果を詳しく解説した内容で、制限が「午前中に尽きる」という経験をした開発者には即座に試せる処方箋となっている。


「全ファイル読んで」が1日の制限を食い尽くす

Claude Codeを使い始めるとき、「まずプロジェクト全体を読ませてから質問する」というアプローチをとる人は多い。一見、丁寧な準備に思える。しかし、これがトークン(AIが処理するテキストの単位)を猛烈な勢いで消費する原因になっている。

Claude Codeはコンテキストウィンドウと呼ばれるセッションの記録を保持している。自分のメッセージ、Claudeが開いたファイルの内容、実行したコマンドの出力——これらすべてが積み重なり、質問のたびにモデルへ丸ごと送り直される。セッション序盤に大量のファイルを読み込ませると、その内容が以降のすべての質問に付きまとう。この「雪だるま式の増加」こそが、午前中に制限を使い果たす根本原因だ。

数字で見る「全読み」の代償

Yasir MahmoodはPythonのWebフレームワークFlaskのソースコードを使い、Claude ProプランでSonnet 5(Claude ProおよびMaxプランで利用可能なAnthropicのモデル)でこれを実測した。

セッション開始直後、何も入力していない状態ですでに42.9kトークンを消費していた(システムプロンプトとツール定義による)。そこで「FlaskのソースフォルダにあるPythonファイルをすべて読んで、ある関数を説明して」と依頼すると、Claudeは24ファイルを開き、コンテキストは213.2kトークンへ急増した。

その後の追加質問がさらに重くなる。ステータスコードに関する短い質問で227.2k、JSONハンドリングについての3問目で240.8kトークンに達した——どちらの質問も新しいファイルを必要としないにもかかわらずだ。

Claude Code自身もこの問題を指摘し、「ファイル読み込みが102.3kトークンを占めている」と警告を出したという。

セッション全体のコストは$0.97(API料金換算)。新規に読み込んだ素材だけで203.5kトークンに上った。Pro・Maxプランでは直接の課金ではなく5時間ウィンドウと週次上限で管理されているが、消費の構造は同じだ。

「検索してから開く」に変えると3分の1になった

/clearでセッションをリセットし(コンテキストが42.9kトークンに戻る)、同じ3つの質問を別のアプローチで試した。

変えたのは1点だけ——ファイル名を指定し、先にgrepで検索させることだ。grepはすべてのファイルを丸ごと開かずにマッチする行だけを探すテキスト検索ツールで、Claude Codeはシェルコマンドとしてgrepを呼び出す組み込みのツール実行機能を持っており、ファイルの内容全体をコンテキストに載せることなく目的の行だけをピンポイントで取得できる。

結果、Claudeは検索1回・ファイル1件の読み込みで目的の関数の正確な行範囲を回答した。コンテキストは1問目で72k、3問目終了時点で約87kトークンに収まった。回答の質は全ファイル読み込み版と変わらなかった。

全ファイル読み込み 検索ファースト
最終コンテキスト 240.8k トークン 約87k トークン
新規読み込みトークン 203.5k 44.3k
セッションコスト(API換算) $0.97 $0.32

コストは約3分の1に下がった。キャッシュ済みデータの読み込みは安いが、新規素材の処理が高い——この構造を理解して使い方を変えるだけで効果が出る。

細かい節約テクニック

@ファイルメンションは小さいファイルにだけ使う。Flaskのメインアプリファイルを@でタグ指定しただけでコンテキストが81.3kトークンになった。@メンションはファイル全体をそのまま会話に流し込む仕様のため、大きなファイルへの使用は避けるべきだ。

不要なフォルダはdenyルールで封鎖する。プロジェクトの設定ファイル(.claude/settings.json等)にdenyルールを書けば、Claudeはそのフォルダを読もうとしない。docsやtestsなど、普段参照しないディレクトリに有効だ。実際にドキュメントファイルを読むよう指示したところ、Claudeはパーミッション設定を理由に断ったという。設定ファイルの書き方はClaude Codeの公式ドキュメントに詳しい。

/contextと/usageを習慣的に確認する。/contextはコンテキストウィンドウの内訳(システムプロンプト・メッセージ・ファイル読み込みの比率)を表示し、/usageはセッションのトークン消費と推定コストを示す。セッションが重くなる前にこの2コマンドで状態を把握するのが、制限を1日持たせるための基本習慣だ。

なお、検索ファーストのアプローチはリクエスト回数が増える(今回の比較では5回→9回)。リクエストのたびに履歴を送り直すため、キャッシュ済みデータの読み込みはわずかに増える。ただしキャッシュ読み込みのコストは新規素材より安く、全体的な節約効果は明確に出る。「検索してから開く」というたった一つの習慣の変化が、制限切れのストレスを大きく減らすことになる。


詳細はI stopped letting Claude Code read my whole project, and my usage limit suddenly lasted all dayを参照していただきたい。