Skip to main content

でコンテキストを管理する GitHub Copilot CLI

          Copilotが会話コンテキストを管理する方法、長いセッション中の動作、コンテキスト ウィンドウの制御を維持する方法について説明します。

コンテキスト ウィンドウについて

          GitHub Copilot CLIを使用すると、送信するすべてのメッセージ、Copilotからのすべての応答、すべてのツール呼び出しとその結果、およびCopilotの動作を定義するシステム命令がすべて**コンテキスト ウィンドウ**に保持されます。 コンテキスト ウィンドウは、AI モデルが応答を生成するときに一度に考慮できる情報の合計量です。

コンテキスト ウィンドウには、モデルによって異なる、トークン単位で測定される固定サイズがあります。 トークンは通常、短い一般的に使用される単語と、複数音節の単語のフラグメントで構成されます。 会話が進むと、コンテキスト ウィンドウに次の情報が表示されます。

  •         **システム命令とツール定義**: Copilot の動作を指示する組み込み命令と、使用可能なすべてのツールのスキーマ。 これらは常に存在し、コンテキスト ウィンドウの固定部分を占めます。
    
  •         **メッセージ**: 送信するすべてのプロンプト。
    
  •         **
            Copilotの回答**: Copilotが応答するすべてがあなたに返されます。
    
  •         **ツールの呼び出しと結果**: Copilot ファイルの読み取り、コマンドの実行、またはコードベースの検索を行うと、要求と出力の両方がコンテキストに追加されます。 ツールの結果は特に大きくなる可能性があります。たとえば、ツールが長いファイルを読み取ったり、広範な出力を生成するコマンドを実行したりする場合などです。
    

これらすべてがコンテキスト ウィンドウに蓄積されます。 長いセッションまたは複雑なセッションでは、コンテキスト ウィンドウがいっぱいになる可能性があります。

コンテキスト ウィンドウが重要な理由

コンテキスト ウィンドウは、Copilot に会話の「メモリ」を与えます。 コンテキスト ウィンドウ内のすべての情報は、応答時に Copilot が参照できます。

つまり、非常に長いセッションでは、 Copilot は会話履歴全体を一度に保持できない可能性があります。 Copilot CLI そのため、必要な限り、 Copilot との会話を効果的に継続できるコンテキスト管理機能があります。

コンテキストの使用状況の確認

          `/context`スラッシュ コマンドを入力すると、現在使用されているコンテキスト ウィンドウの量を確認できます。 これにより、トークンの使用状況の視覚的な内訳が表示され、次の情報が表示されます。

* システム/ツール: システム命令およびツール定義の固定オーバーヘッド。 * メッセージ: 会話履歴で使用される領域。 * 空き領域: 新しいメッセージ用の残りのスペース。 * バッファー: 自動コンテキスト管理をトリガーする予約済み部分。

"/context" CLI コマンドの出力のスクリーンショット。

次の場合は、 /context スラッシュ コマンドを使用できます。

  • セッションが長くなると、残りの空き容量がどれくらいあるか知りたくなることがあります。
  •         Copilot は会話の最初の部分を忘れているように見えます。
    
  • 圧縮が発生したかどうか、または間もなく発生する可能性があるかどうかを理解する必要があります。

圧縮

圧縮は、コンテキスト ウィンドウの制限に達することなく、 GitHub Copilot CLI が実行時間の長いセッションをサポートできるようにするプロセスです。

圧縮が行われる場合

会話がコンテキスト ウィンドウの容量の約 80% に達すると、 Copilot CLI 自動的にバックグラウンドでコンテキストの圧縮が開始されます。 これにより、圧縮の進行中にツール呼び出しを引き続き実行できるように、約 20% のバッファーが残ります。 コンパクションが完了する前にコンテキストが約 95% に満たされた場合、 Copilot CLI は圧縮が完了するまでしばらく一時停止してから続行します。

          `/compact` コマンドを入力して、いつでも手動で圧縮をトリガーすることもできます。 これは、新しい作業フェーズを開始しようとしている場合に、コンテキスト領域を事前に解放する場合に便利です。 気が変わる場合は、 <kbd>Esc</kbd> キーを押して手動圧縮をキャンセルします。

圧縮の機能

圧縮を実行すると、次の Copilot CLI。

  1. 現在の会話履歴のスナップショットを取得します。
  2. 構造化された概要を生成するように求める特別なプロンプトを使用して、完全な会話を AI モデルに送信します。 概要では、会話の目標、何が行われたか、主要な技術的な詳細、重要なファイル、および計画された次の手順がキャプチャされます。
  3. 古い会話履歴を概要に置き換え、元のユーザー指示やプランまたはTo-Doリストの現在の状態も一緒に含めます。
  4. 圧縮の実行中に追加されたすべてのメッセージをバックグラウンドで保持します。

その結果、会話履歴がはるかに小さな要約に圧縮され、新しい作業のコンテキスト ウィンドウの大部分が解放されます。 Copilot では、元のメッセージが置き換えられたにもかかわらず、この概要を使用して継続性を維持します。これは、話し合われた内容、決定された内容、次に何を行うかを知っています。

圧縮で保持されない内容

圧縮は集計プロセスであるため、一部の詳細は必然的に失われます。 この概要では重要なポイントをキャプチャしますが、細かい詳細 (すべてのメッセージの正確な文言、すべてのコマンドの完全な出力、長い会話の早い段階で行われた小さな決定など) は含まれない場合があります。 セッションのはるかに早い段階から非常に具体的な詳細を思い出すために Copilot が必要な場合は、圧縮後にその情報が含まれていない可能性があります。

圧縮なしで何が起こるか

圧縮を行わないと、コンテキスト ウィンドウがいっぱいになった場合、Copilot は最後の手段として、単に古いメッセージを会話履歴から削除し、要約や記録なしにそれらを削除することになります。 これは、コンテキストが突然失われ、削除されたメッセージの内容を Copilot が認識できなくなることを意味します。 圧縮では、履歴を破棄するのではなく、インテリジェントな要約に置き換えることで、これを回避できます。

Checkpoints

自動でも手動でも、圧縮が行われるたびに チェックポイント が作成されます。 チェックポイントは圧縮の概要の保存されたコピーであり、セッションのワークスペースに番号付きのタイトル付きファイルとして格納されます。

チェックポイントの表示

現在のセッションのすべてのチェックポイントを表示するには、次のように入力します。

Copilot prompt
/session checkpoints

これにより、番号とタイトルを持つすべてのチェックポイントが一覧表示されます。

Checkpoint History (3 total):
  3. Refactoring authentication module
  2. Implementing user dashboard
  1. Initial planning and setup

チェックポイント番号を使用して、チェックポイントの完全な内容を表示します。 たとえば、チェックポイント 2 を表示するには、次のように入力します。

Copilot prompt
/session checkpoints 2

チェックポイントが役立つ場合

  •         **何が起こったかを確認する**: 複数の圧縮を伴う長いセッションの後、会話の以前のフェーズはアクティブなコンテキストではなくなりました。 チェックポイントを使用すると、圧縮のたびに Copilot が行ったことを読み返します。
    
  •         **継続性の確認**: 続行する前に、 Copilotの概要が以前の作業を正確にキャプチャしたことを確認する場合は、最新のチェックポイントを確認できます。
    
  •         **デバッグの混乱**: Copilot 決定を忘れたように思われる場合や、以前の作業と矛盾する方向に進む場合、チェックポイントをチェックすると、圧縮時に保持されていた内容と、予想とは異なる要約が表示される可能性があります。
    

メモ

  • チェックポイントは自動的に作成されます。 管理する必要はありません。必要なときには存在しています。 ほとんどのセッションでは、チェックポイントをまったく確認する必要はありません。
  • 圧縮が完了したら、圧縮を元に戻すことはできません。

実行時間の長いセッションの使用

自動圧縮を使用すると、コンテキスト ウィンドウの制限に達することを心配することなく、実行時間の長いセッションで作業を続けられます。 これが非常に便利な場合もあれば、新しいセッションを開始したい場合もあります。

長いセッションが役立つ場合

実行時間の長いセッションは、次の場合に適切に機能します。

  • スキャフォールディング、実装、テスト、プル要求の作成を必要とする機能の構築など、複数フェーズのタスクに取り組んでいます。
  • あなたは問題を繰り返しており、 Copilot は何が試みられ、何がうまくいっていないかのコンテキストを保持したいと考えています。
  • コードベース全体で探索的な作業を行い、時間の経過と共に Copilot との共有理解を構築しています。

新しいセッションを開始するタイミング

次の場合は、新しいセッションを開始することをお勧めします。

  • 関連のないタスクに切り替えます。 Copilot は前の作業のコンテキストを必要とせず、クリーン なコンテキスト ウィンドウは新しいタスクのためのより多くの領域を意味します。
  • 会話は多くの圧縮を経て、要約プロセスで重要なコンテキストが失われていると感じています。
  • 新しいスタートを切りたい場合があります。たとえば、作業が間違った方向に進んでしまい、以前の決定を新しいアプローチで調整するのではなく、最初からやり直すことを選ぶ方が良いと考える場合です。

ヒント

          `/resume` コマンドを使用して、以前のセッションをいつでも再開できます。 これにより、中断した場所 (そのセッション中に作成されたすべてのチェックポイントを含む) を取得できます。

詳細については、次を参照してください。

  •         [AUTOTITLE](/copilot/how-tos/copilot-cli)
    
  •         [AUTOTITLE](/copilot/how-tos/use-copilot-agents/use-copilot-cli)
    
  •         [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference)