概要
コーディングエージェント「Pi」がLLMの文脈制限に対処するため、履歴を要約してトークン消費を抑制する「コンパクション」の技術的実装とプロンプトキャッシュへの影響を詳説している。
詳細内容
LLMを使用したコーディングエージェントにおいて、会話履歴の累積によるコンテキストウィンドウの枯渇は避けられない課題である。本稿では、Earendil Engineeringが開発するエージェント「Pi」が採用している「コンパクション(Compaction)」という解決策を解説している。
### コンパクションのメカニズム
コンパクションとは、会話履歴の古い部分をLLMによって要約し、より小さな表現に置き換えるプロセスである。Piでは以下の手順で実行される:
1. **トリガー**: コンテキスト制限に近づいた際、またはユーザーの`/compact`コマンドにより発動する。
2. **履歴の保持**: 直近の約20,000トークン(5~20ターン程度)をそのまま維持し、それ以前の履歴を要約対象とする。
3. **要約プロンプト**: 「文脈要約アシスタント」という専用のシステムプロンプトを用い、目標・進捗・重要な決定事項を構造的に抽出する。
### プロンプトキャッシュへの影響
コンパクション後の履歴はプレフィックス(接頭辞)が変化するため、LLMプロバイダーの「プロンプトキャッシュ」は一時的に無効化される。しかし、圧縮された新しい文脈でのリクエストが続くにつれ、再びキャッシュによるコスト削減の恩恵が受けられるようになる。この仕組みにより、長いセッションでも精度を維持しつつ継続的な作業が可能となっている。