Tarquinen/opencode-dynamic-context-pruning

Dynamic context pruning plugin for OpenCode - intelligently manages conversation context to optimize token usage

解決する課題

Dynamic Context Pruning (DCP) は、古い会話履歴を自動的に削除または要約することで、OpenCodeにおけるトークン使用量を削減し、コンテキストウィンドウの制限を管理します。これにより、大規模なセッション履歴によってLLMが圧倒されるのを防ぎつつ、重要な技術情報を確実に保持します。

仕組み

DCPはレイヤーとして機能し、LLMにリクエストを送信する前に、実際のセッション履歴を変更することなく、削除されたコンテンツをプレースホルダーに置き換えます。主に3つの戦略を採用しています。

  • 圧縮 (Compression):モデルが利用可能なツールで、古い会話スパン(範囲モード)や個別のメッセージ(メッセージモード)を高精度な技術要約に置き換えます。要約をネストすることで、複数回の圧縮サイクルを通じた情報損失を防ぎます。
  • 重複排除 (Deduplication):同一の引数を持つ重複したツール呼び出しを特定して削除し、最新の出力のみを保持します。
  • エラーパージ (Error Purging):設定されたターン数が経過した後、エラーの原因となったツール呼び出しの大きな入力コンテンツを削除し、エラーメッセージ自体は保持します。

対象ユーザー

トークンコストを削減し、長時間にわたるコーディングセッションでモデルのパフォーマンスを維持したいOpenCodeユーザー。

特徴

  • モデル駆動型圧縮 (Model-Driven Compression):静的なしきい値を使用するのではなく、タスクの完了状況に基づいて、いつ何を圧縮するかをLLMが判断できるようにします。
  • 情報保持 (Information Preservation):特定のツール出力(サブエージェントやスキルなど)やユーザーメッセージが削除されないように保護します。
  • 柔軟な設定 (Flexible Configuration):グローバル、プロジェクトレベル、およびカスタム設定ファイルをサポートしており、コンテキスト制限やナッジ頻度を詳細に制御できます。
  • 手動制御 (Manual Control):TUIパネルとスラッシュコマンド (/dcp, /dcp-compress) を含んでおり、手動でのコンテキスト管理が可能です。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト