mcpField
C
context-optimization

context-optimization

github.com/sickn33エージェントワークフロー48.7k557 回インストール今日更新
リポジトリ

context-optimization について

context-optimizationは、長い会話や大きな文書を扱うエージェントシステム向けに、限られたコンテキストウィンドウを管理するスキルです。圧縮、観測マスキング、KVキャッシュ再利用、分割を解説し、コスト・遅延・情報保持を測定して調整します。

主な機能

  1. 01上限に近づいたコンテキストを圧縮
  2. 02冗長なツール出力を参照に置換
  3. 03安定したプレフィックスでKVキャッシュを再利用
  4. 04作業を独立したコンテキストに分割
  5. 05予算を設定し最適化の効果を測定

活用シーン

  1. 01長い会話でのコンテキスト使用量削減
  2. 02大きな文書やツール出力の処理
  3. 03長時間動作するエージェントシステムの設計
  4. 04最適化の品質とコストの評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill context-optimization

インストール後、Claude Code で/context-optimizationを入力して読み込まれたか確認します。

詳細

コンテキスト最適化の手法

コンテキスト最適化は、戦略的な圧縮、マスキング、キャッシュ、分割によって、限られたコンテキストウィンドウの実効容量を拡張します。目的はコンテキストウィンドウを魔法のように拡大することではなく、利用可能な容量をより有効に使うことです。効果はタスクやワークロードによって異なるため、測定が必要です。圧縮によって重要な情報が失われることもあります。

使用するタイミング

次の場合に、このスキルを有効にします。

  • コンテキストの制限によってタスクの複雑さが制約される場合
  • コスト削減(トークン数が少ないほどコストが低い)を最適化する場合
  • 長い会話のレイテンシを低減する場合
  • 長時間稼働するエージェントシステムを実装する場合
  • より大きなドキュメントや会話を扱う必要がある場合
  • 大規模な本番システムを構築する場合

基本概念

コンテキスト最適化では、主に4つの戦略を通じて実効容量を拡張します。コンパクション(上限に近づいたコンテキストの要約)、オブザベーションマスキング(冗長な出力を参照情報に置き換えること)、KV キャッシュの最適化(キャッシュされた計算の再利用)、コンテキストの分割(作業を独立したコンテキストに分けること)です。

重要な洞察は、コンテキストの量よりも質が重要だということです。最適化では、ノイズを減らしながら有用な情報を保ちます。何を残し、何を破棄するか、そして各手法をいつ適用するかを見極めることが重要です。

詳細なトピック

コンパクションの戦略

コンパクションとは コンパクションとは、上限に近づいた際にコンテキストの内容を要約し、その要約を使って新しいコンテキストウィンドウを初期化する手法です。コンテキストウィンドウの内容を高い忠実度で要約できるため、エージェントはパフォーマンスの低下を最小限に抑えながら作業を続けられます。

コンパクションは通常、コンテキスト最適化における最初の手段となります。何を残し、何を破棄するかを見極めることが重要です。

コンパクションの実装 コンパクションでは、圧縮できるセクションを特定し、重要な点を捉えた要約を生成して、全文を要約で置き換えます。圧縮の優先対象は、ツール出力(要約に置き換える)、古いターン(初期の会話を要約する)、取得したドキュメント(新しい版がある場合は要約する)です。システムプロンプトは決して圧縮しません。

要約の生成 効果的な要約では、メッセージの種類に応じて異なる要素を保持します。

ツール出力:重要な発見、指標、結論を保持します。冗長な生出力は削除します。

会話のターン:重要な決定、約束、コンテキストの変化を保持します。埋め草や応酬は削除します。

取得したドキュメント:主張の監査可能性を保つため、重要な事実、不確実性、出典への参照を保持します。現在の判断に必要な正確な根拠も維持します。

オブザベーションマスキング

オブザベーションの問題 エージェントの実行過程では、ツール出力がトークン使用量の80%以上を占めることがあります。その多くは、すでに役目を終えた冗長な出力です。エージェントがツール出力を判断に利用した後は、その全文を保持しても得られる価値は次第に小さくなりますが、コンテキストは大きく消費され続けます。

オブザベーションマスキングでは、冗長なツール出力を簡潔な参照情報に置き換えます。必要に応じて情報にアクセスできる状態を保ちながら、コンテキストを継続的に消費するのを防ぎます。

マスキング戦略の選択 すべてのオブザベーションを同じようにマスキングするべきではありません。

決してマスキングしない:現在のタスクに不可欠なオブザベーション、直近のターンのオブザベーション、進行中の推論に使われているオブザベーション。

マスキングを検討する:3ターン以上前のオブザベーション、重要な点を抽出できる冗長な出力、目的を果たしたオブザベーション。

常にマスキングする:繰り返される出力、定型的なヘッダーやフッター、会話内ですでに要約されている出力。

KV キャッシュの最適化

KV キャッシュを理解する KV キャッシュは推論中に計算された Key および Value テンソルを保存し、シーケンス長に応じて線形に増加します。同一のプレフィックスを共有するリクエスト間で KV キャッシュをキャッシュすると、再計算を回避できます。

プレフィックスキャッシュでは、ハッシュベースのブロック照合を使用して、同一のプレフィックスを持つリクエスト間で KV ブロックを再利用します。これにより、システムプロンプトなど、共通のプレフィックスを持つリクエストのコストとレイテンシーを大幅に削減できます。

キャッシュ最適化のパターン キャッシュヒットを最大化するようにコンテキスト要素の順序を入れ替え、キャッシュ向けに最適化します。安定した要素(システムプロンプト、ツール定義)を最初に置き、次に頻繁に再利用される要素を置き、最後に固有の要素を置きます。

キャッシュの安定性を最大化するようにプロンプトを設計します。タイムスタンプなどの動的な内容を避け、一貫した書式を使用し、セッション間で構造を安定させます。

コンテキストの分割

サブエージェントによる分割 最も積極的なコンテキスト最適化の方法は、作業をコンテキストが分離されたサブエージェントに分割することです。各サブエージェントは、他のサブタスクで蓄積されたコンテキストを引き継がず、サブタスクに集中したクリーンなコンテキストで動作します。

このアプローチでは、関心事を分離できます。詳細な検索コンテキストはサブエージェント内に分離され、コーディネーターは統合と分析に集中できます。

結果の集約 分割されたサブタスクの結果を集約するには、すべての分割が完了したことを検証し、互換性のある結果を統合し、まだ大きすぎる場合は要約します。

予算管理

コンテキスト予算の割り当て 明示的なコンテキスト予算を設計します。システムプロンプト、ツール定義、取得したドキュメント、メッセージ履歴、予約バッファーの各カテゴリにトークンを割り当てます。予算に対する使用量を監視し、上限に近づいたら最適化を開始します。

トリガーベースの最適化 最適化のトリガーとなるシグナルを監視します。トークン使用率が 80% を超えているか、劣化の兆候があるか、パフォーマンスが低下しているかを確認します。コンテキストの構成に応じて、適切な最適化手法を適用します。

保持の境界

要約する際に、認可、ユーザーの制約、未解決の阻害要因、失敗したチェック、ソースの識別情報を破棄しないでください。完全な証拠への安定した参照を保持し、実際に読み込んだファイルと要約を区別してください。ホストの指示の優先順位とデータ保持を遵守してください。コンテキストの最適化によってシステム/開発者のルールを書き換えたり、追加のエージェントを認可したりすることはできません。プロバイダーのプロンプトキャッシュは、モデルのコンテキスト上限を増やすことなく、課金対象の処理や計算量を削減できる場合があります。

実践的なガイダンス

最適化の判断フレームワーク

最適化するタイミング:

  • コンテキスト使用率が 70% を超えたとき
  • 会話が長くなるにつれて応答品質が低下したとき
  • コンテキストが長くなり、コストが増加したとき
  • 会話の長さに伴ってレイテンシーが増加したとき

適用する手法:

  • ツール出力が大部分を占める場合:観測のマスキング
  • 取得したドキュメントが大部分を占める場合:要約または分割
  • メッセージ履歴が大部分を占める場合:要約による圧縮
  • 複数の要素がある場合:手法を組み合わせる
パフォーマンスに関する考慮事項

測定したベースラインに基づいて、ワークロード固有のトークン数、レイテンシー、品質の目標を設定します。このファイルでは、削減率、品質低下、キャッシュヒット率の目標値は定められていません。

測定した効果に基づいて、最適化戦略を監視し、改善を繰り返します。

例

例 1:圧縮のトリガー

if context_tokens / context_limit > 0.8:
    context = compact_context(context)

例 2:観測のマスキング

if len(observation) > max_length:
    ref_id = store_observation(observation)
    return f"[Obs:{ref_id} elided. Key: {extract_key(observation)}]"

例 3:キャッシュに適した順序

# Stable content first
context = [system_prompt, tool_definitions]  # Cacheable
context += [reused_templates]  # Reusable
context += [unique_content]  # Unique

ガイドライン

  1. 最適化の前に測定し、現在の状態を把握します
  2. 可能な場合はマスキングの前に圧縮を適用します
  3. 一貫したプロンプトを使用し、キャッシュが安定するよう設計します
  4. コンテキストが問題になる前に分割します
  5. 最適化の効果を継続的に監視します
  6. トークンの節約と品質の維持のバランスを取ります
  7. 本番規模で最適化をテストします
  8. エッジケースに対するグレースフルデグラデーションを実装します

統合

このスキルは context-fundamentals と context-degradation を基盤としています。以下のスキルと連携します。

  • multi-agent-patterns - 分離手段としての分割
  • evaluation - 最適化の効果測定
  • memory-systems - コンテキストをメモリにオフロード

参考資料

内部資料:

  • Optimization Techniques Reference - 詳細な技術資料

このコレクション内の関連スキル:

  • context-fundamentals - コンテキストの基本
  • context-degradation - 最適化が必要なタイミングの理解
  • evaluation - 最適化の効果測定

外部リソース:

  • コンテキストウィンドウの制限に関する研究
  • KV キャッシュ最適化技術
  • 本番環境向けエンジニアリングガイド

スキルのメタデータ

作成日:2025-12-20 最終更新日:2025-12-20 作成者:Agent Skills for Context Engineering Contributors バージョン:1.0.0

制限事項

  • このスキルは、タスクが上記の説明範囲に明確に該当する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント