チュートリアル

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

Bob のコンテキストウィンドウを管理して、メモリを維持し、コストを抑え、出力品質を保ちます。

チャットパネル内の各 task(会話)には、コンテキストウィンドウ があります。コンテキストウィンドウは、現在のセッションで Bob がメモリに保持できる内容のトークン上限です。コンテキストには、システム指示、ツールスキーマ、あなたのルールや skills、そして完全な会話の記録が含まれます。

このチュートリアルでは、コンテキストウィンドウを開き、実際の作業を始める前に Bob が何を読み込むのかを確認し、新しいコンテキストウィンドウを作るべきタイミングを学びます。

このチュートリアルを終えると、次のことができるようになります。

  1. コンテキストウィンドウの各カテゴリと、Bob がそこに何を読み込むかを識別する。
  2. Galaxium Travels でコンテキストのベースライン overhead を測定する。
  3. リポジトリに関する prompt の後で Messages が増え、固定カテゴリは変わらないことを確認する。
  4. 前の task を履歴に残したまま、新しい task を開始してコンテキストウィンドウをリセットする。

このチュートリアルの構成

ステップセクション行うこと
1ラボを準備するGalaxium Travels とチャットパネルを開く
2コンテキストウィンドウの内訳を確認する最小限の prompt を送信し、新しい内訳(約 8.5k)を確認する
3prompt で Messages を増やすファイル一覧を取得し、Messages が約 4.2k(合計 12.1k)まで増えることを確認する
4新しいコンテキストウィンドウを作る+(New task)をクリックし、インジケーターがリセットされることを確認する

次の用語を確認しておきましょう。

  • Task: 独自のコンテキストウィンドウを持つ 1 つの会話スレッドです。+(New task)で新しいコンテキストウィンドウを開始します。あなたの prompts、Bob の返信、承認ボタンはここに含まれます。
  • コンテキストウィンドウの内訳: チャットパネル右上の token usage indicator をクリックすると、トークンがどこに使われているかを確認できます。

合計値は、MCP サーバー、ルール、skills、そして Bob がどれだけ読むかによって変わります。以下の数値は、270.0k のウィンドウを持つ Galaxium Travels の例です。固定カテゴリはこれらに近い値になるはずです。Messages は、Bob に何を依頼するかによって変わります。

前提条件

このチュートリアルを進めるには、次のものが必要です。

コンテキスト管理が重要な理由

トークンコスト

トークンは Bob の消費単位で、Bob coins で測定されます。会話が長くなるほど、また大きなファイルを読むほど、より多くのトークンを消費します。会話を絞ることでコストを抑えられます。

各 prompt では、アクティブなコンテキスト全体が毎回再送されます。これには、あなたが入力していない固定 overhead も含まれます。1 行だけの質問でも、Tool definitions、Rules、その他 Bob がデフォルトで読み込む内容が含まれます。

要約では情報が失われる

Bob がトークン上限に達すると、Bob は作業を続けるために古い内容を圧縮します。その結果、詳細が失われます。かなり前の prompts で伝えたエッジケース、中間の推論、制約が失われることがあります。

内容の詳細がまだ必要なら、Bob が要約してしまう前に新しい task を開始してください。

上限前でも品質は下がる

Bob は現在 270.0k トークンのウィンドウを使っています。正確な上限は、自分の token usage indicator で確認してください。品質は上限に達する前から下がることがよくあります。Messages が増えるほど、返信の信頼性は下がります。

ラボを準備する

  1. Galaxium Travels repository を clone します。

    git clone -b bob-learning-path-branch https://github.com/IBM/galaxium-travels
  2. File をクリックし、次に Open Folder をクリックします。

  3. clone した galaxium-travels ディレクトリに移動して開きます。

  4. ナビゲーションバー横の Bob アイコンをクリックして Bob のチャットインターフェースを開きます。 または、Option + Command + B(macOS)または Ctrl + Alt + B(Windows)のショートカットを使います。

  5. チャット入力欄で /init を実行します。Bob が repository をスキャンし、 プロジェクトルールを含む AGENTS.md ファイルを作成します。求められたら Approve todo tools for task をクリックします。

    Bob が完了を報告するまで待ちます。この AGENTS.md は後で コンテキストウィンドウの内訳に Rules として表示されるため、ベースラインを測定する前に repository に存在している必要があります。

コンテキストウィンドウの内訳を確認する

新しいベースラインを取得してから、内訳を確認します。

  1. チャットパネル上部の + をクリックして、新しい task を開始します。

  2. 少ないトークンで済む最小限の prompt を送信します。

    ひとことだけ、こんにちはと返して。

    Bob の返信を待ちます。

  3. チャットパネル右上の token usage indicator をクリックして、使用量の内訳を確認します。

Context Window Breakdown

Galaxium Travels でこのやり取りをした後、数値は多少変わりますが、次のような値に近くなるはずです。

Tokens
Total used8.5k(約 3% 使用)
System prompt1.5k
Tool definitions5.1k
Rules830
Skills454
Messages590
Reserved for model response20.0k
Available space241.5k

Total used8.5k から大きく外れている場合は、新しい task を開始し、その 1 つの prompt だけを送ったか確認してください。

Tool definitions は通常、最大の固定カテゴリです。MCP サーバーや組み込みツールのスキーマは、実際に呼び出さなくても読み込まれます。RulesAGENTS.md のようなプロジェクトファイルから来ます。Skills は、task 中に Bob が skill を読み込むと後で増えることがあります。

  1. 各カテゴリを確認します。内訳は、トークンがどこに使われているかを示します。

    カテゴリ内容
    System promptこのセッションにおける Bob の中核指示
    Tool definitionsBob の組み込みツールと接続された MCP tools のスキーマ
    Rulesプロジェクトやモードからのカスタム指示(custom rules、たとえば AGENTS.md
    SkillsBob が読み込んだ skills の指示(UI には Skills (1 loaded) のように表示されることがあります)
    Messagestask 内のあなたの prompts、Bob の返信、ツールアクティビティ。これはトークンとして数えられる transcript です。

    Estimated breakdown の下には次があります。

    • Reserved for model response: Bob がすぐに上限に達せず返信できるように予約されるトークン。
    • Available space: Bob が圧縮を始めるまでにまだ使える推定トークン数。

    Galaxium では、固定カテゴリ(System promptTool definitionsRulesSkills)だけで、実際の作業前におよそ 8k になります。これは自分で入力していなくても、毎ターン支払うコストです。

prompt で Messages を増やす

同じ task にとどまったまま、transcript を増やす prompt を送ります。

  1. ファイル一覧を依頼します。

    このディレクトリ内のすべてのファイルを一覧表示して。

    求められたら読み取り操作を承認します。Bob が repository 内のファイルを一覧表示します。

  2. 何が変わったかを比較します。もう一度内訳を開きます。Galaxium Travels では、次のような値に近くなるはずです。

    CategoryFresh taskAfter list-filesSustained work (reference)
    System prompt1.5k1.5k1.5k
    Tool definitions5.1k5.1k5.1k
    Rules830830830
    Skills4544541.2k(1 loaded)
    Messages5904.2k19.4k
    Total used8.5k(約 3%)12.1k(約 4%)28.0k(約 10%)
    Available space241.5k237.9k222.0k

    Messages はこの時点で約 4.2k になるはずです。かなり大きい場合は、Bob がこの例より多くのファイルを読んだということですが、それでも問題ありません。重要なのは、固定カテゴリが変わらないまま Messages が増えたことです。

    一覧出力とツールアクティビティは transcript に残ります。System promptTool definitionsRulesSkills は、1 回の list-files prompt の後では変わりません。

    右端の列は、より多くの読み取りや follow-up prompts を含む長めの Galaxium セッションの例です。Bob が skill を読み込むと Skills が増えることがあります(この例では 454 から 1.2k)。時間がたつと、通常もっとも速く増えるのは Messages です。

    1 回の list-files prompt で、Galaxium では Messages に約 3.6k が追加されます。固定 overhead は約 8k のままです。repository の探索は、overhead が変わらなくてもコンテキストをすばやく消費します。

新しいコンテキストウィンドウを作る

同じプロジェクト内で新しい task を開始します。古い task(会話)は履歴に残ります。

  1. チャットパネル上部の +New task)をクリックします。

    インジケーターがリセットされます。Messages は小さな値に戻ります。System promptTool definitionsRulesSkills は、おおよそベースラインまで再読み込みされます。

  2. 離れた task は task リストに残り、いつでも戻れます。その task は独自の transcript と token count を保持します。新しい task で作業している間、Bob はそれを使いません。

    次のような場合は新しい task を開始してください。

    • 話題や作業目標を切り替えるとき。
    • Messages が品質やコストに影響するほど大きくなったとき。Galaxium では、Messages19.4k ならリセットの目安として妥当です。
    • 計画が終わり、実装用にクリーンな task が欲しいとき。複雑な機能を計画して実装する を参照してください。

    振り返り: 新しい task で内訳を開いてください。どのカテゴリがベースラインに戻りましたか。古い task にとどまっていたら、どのカテゴリが増え続けていたでしょうか。

次のステップ

このチュートリアルでは、コンテキストウィンドウを効果的に管理する方法を学びました。内訳を確認し、固定トークン overhead を測定し、1 回の list-files prompt の後に Messages が増える様子を見て、+New task)でリセットしました。

このトピックはいかがですか?