メインコンテンツへスキップ

Compaction

すべてのモデルにはコンテキストウィンドウ、つまり処理できるトークン数の上限があります。 会話がその制限に近づくと、OpenClawは古いメッセージを要約して チャットを継続できるようにcompactsします。

仕組み

  1. 古い会話ターンはcompactエントリーに要約されます。
  2. 要約はセッショントランスクリプトに保存されます。
  3. 最近のメッセージはそのまま保持されます。
OpenClawが履歴をcompactionチャンクに分割するとき、assistantのtool callは対応する toolResult エントリーとペアのまま保持されます。分割位置が toolブロックの途中に来た場合、OpenClawはそのペアが一緒に保たれ、 現在の未要約の末尾が保持されるように境界を移動します。 会話の完全な履歴はディスク上に残ります。compactionは、次のターンで モデルが見る内容だけを変更します。

自動compaction

自動compactionはデフォルトで有効です。セッションがコンテキスト制限に 近づいたとき、またはモデルがコンテキストオーバーフローエラーを返したときに 実行されます(この場合、OpenClawはcompactionして再試行します)。典型的な オーバーフローシグネチャには request_too_largecontext length exceededinput exceeds the maximum number of tokensinput token count exceeds the maximum number of input tokensinput is too long for the modelollama error: context length exceeded があります。
compactionの前に、OpenClawは重要なメモをmemoryファイルに保存するよう エージェントへ自動的にリマインドします。これによりコンテキストの喪失を防ぎます。

手動compaction

任意のチャットで /compact と入力すると、compactionを強制できます。要約を導くための 指示を追加することもできます。
/compact API設計の意思決定に集中して

別のモデルを使う

デフォルトでは、compactionはエージェントのプライマリモデルを使用します。より良い要約のために、 より高性能なモデルを使うこともできます。
{
  agents: {
    defaults: {
      compaction: {
        model: "openrouter/anthropic/claude-sonnet-4-6",
      },
    },
  },
}

compaction開始通知

デフォルトでは、compactionは静かに実行されます。compactionが 開始されたときに短い通知を表示するには、notifyUser を有効にします。
{
  agents: {
    defaults: {
      compaction: {
        notifyUser: true,
      },
    },
  },
}
有効にすると、ユーザーには各compaction実行の開始時に短いメッセージ (たとえば「コンテキストをcompactionしています…」)が表示されます。

compaction と pruning の違い

CompactionPruning
何をするか古い会話を要約する古いtool resultを削る
保存されるかはい(セッショントランスクリプト内)いいえ(メモリ内のみ、リクエストごと)
対象範囲会話全体tool resultのみ
Session pruningは、要約せずにtool出力を 削る軽量な補完機能です。

トラブルシューティング

compactionの頻度が高すぎますか? モデルのコンテキストウィンドウが小さいか、 tool出力が大きい可能性があります。 session pruningを有効にしてみてください。 compaction後にコンテキストが古く感じますか? /compact Focus on <topic> を使って 要約を導くか、メモが残るようにmemory flushを有効にしてください。 まっさらな状態から始めたいですか? /new はcompactionせずに新しいセッションを開始します。 高度な設定(予約トークン、識別子の保持、カスタムコンテキストエンジン、 OpenAIのサーバーサイドcompaction)については、 Session Management Deep Diveを参照してください。

関連

  • Session — セッション管理とライフサイクル
  • Session Pruning — tool resultの削減
  • Context — エージェントターン用のコンテキストがどのように構築されるか
  • Hooks — compactionライフサイクルフック(before_compaction、after_compaction)