💪

俺なりのHow to Claude Code(codex) 〜コンテキストウィンドウ管理〜

に公開

TL;DR

  • 不要な情報をコンテキストに含めない
  • チェックポイント機能(rewind)を活用する
  • Auto-compactは発生させるな

はじめに

最後にClaudeに関する記事を書いてから5ヶ月程度経過した。自分なりに使い方が確立したのでアウトプットしてみる。

現在使用しているコーディングエージェントは以下の通り:

  • Claude Code
  • codex

主に設計とコーディングで使用している。

ただし、世の中にはもっと有用に使いこなしている人が多いと思う。
私の使い方はMCPなどをあまり活用せず、純粋にClaude Codeだけを使用している。
使いこなしている人は様々なMCPを導入しているのだろうが、私はただClaudeとゴリゴリ対話して進めているだけである。
MCPはcontext7を調査用、serenaをおまじないとして入れている程度。
(余裕が出来たら色々やってみたい)

本記事では、俺流コンテキストウィンドウ管理方法について説明する。

コンテキストウィンドウとは

コンテキストウィンドウの仕組み

コンテキストウィンドウとはAIエージェントの記憶のこと
これは私のイメージで、しっかり調査した訳ではないけど、大体こんな感じだと思う。
左が古い会話、右が新しい会話でどんどん右から入ってくる。

コンテキストウィンドウ1

会話を続けると古い会話の内容を忘れてくる

忘れてる訳ではないが、認識しづらくなる。

コンテキストウィンドウ2

コンテキストウィンドウを管理する

今回紹介する方法は自力で管理する方法。
これは結構自分流のやり方だと思う。
おそらく有用なMCPがある。

1. コンテキストは内容を制限する

機能Aを実装させた後に、そのまま機能Bを実装させない。
機能Aの実装が完了したら、スラッシュコマンド /clear を使ってコンテキストウィンドウを解放する。(codex では /new
または後述する チェックポイント機能 を使って、不要なコンテキストを省く。
機能Bの実装には、機能Aの設計検討などの詳細は不要。

2. 不要な情報を入れないため、会話の履歴を遡ってやり直す

例えば実装や設計が微妙だった時、会話をそのまま続けない。
前の会話に戻って実装をやり直させる。それにより無駄なコンテキストを省く。
これがチェックポイント機能と言って、めちゃめちゃ使います

muda1
muda2

チェックポイント機能(rewind)

escキーを2度押すと、昔の会話まで戻れる。

rewind1
rewind2

3. Auto-compact(要約)に気をつける

要約機能(/compact

コンテキストウィンドウを要約する機能。スラッシュコマンドの一つ。
"Claude Code"、"codex"ともに同様の機能がある。
compact機能によって重要なことを覚えてくれている印象がないので、基本的に使わない。
どういうロジックで要約されているかわからないが、あまり信用できないと思ってる。

claude_compact
compact

Auto-compactは発生させるな!!

Claude Codeのデフォルト設定だと、Auto-compact設定がtrueになっており、
コンテキストが上限に達するとcompactの処理が走る。(codexも同様のはず。)

claude_config

問題はこれが意図せず起きること。
実装させてる途中でAuto-compactが走ることがよくある。
そうするとタスクのtodoリストまで忘れてることはないにしても、詳細を忘れてることが多々ある。

そうならないために、コンテキストウィンドウの使用量に注意する

以下のいずれかの方法でコンテキストウィンドウの状況を把握する。

  • スラッシュコマンド /context で、現在のコンテキストウィンドウの使用状況が確認できる。
  • チャットフィールドの右下に表示される残りのコンテキスト量を確認する。

until_limit

4. どうしても大量の情報を与えたい場合は

ドキュメントを作成する

これが王道。重要な情報をファイルとしてコンテキストウィンドウから切り出す。
「実装計画をdocsディレクトリにmarkdownファイルとして出力して」
などと指示をして、実装計画を立ててファイルに出力させる。
その後、スラッシュコマンド /clear で、コンテキストウィンドウを解放する。
(codexでは /new コマンド)

コンテキストが開放されたら、改めて実装の指示を出す。
「docs/実装計画.mdファイルを読んで、実装を進めて」
そうすることで、実装計画を立てる途中の不要な情報をコンテキストウィンドウから省く。

(一応)compactで詳細な指示を出す

自分はやったことないが、こういうこともできるらしい。compact嫌い。

compact_detail

Discussion