セッション管理とコンパクション(詳細解説)

OpenClawのセッション管理のエンドツーエンドを解説:

  • セッションルーティング(インバウンドメッセージがsessionKeyにマッピングされる方法)
  • セッションストアsessions.json)と追跡内容
  • トランスクリプト永続化*.jsonl)とその構造
  • トランスクリプト衛生(実行前のプロバイダー固有の修正)
  • コンテキスト制限(コンテキストウィンドウ vs 追跡トークン)
  • コンパクション(手動+自動コンパクション)とプレコンパクション作業のフック
  • サイレントハウスキーピング(ユーザーに見えない出力を生成すべきでないメモリ書き込みなど)

2つの永続化層

  1. セッションストア(sessions.json — キー/値マップ。小規模、可変、編集安全。
  2. トランスクリプト(<sessionId>.jsonl — ツリー構造の追記専用トランスクリプト。

コンパクション

コンパクションは古い会話を永続化されたcompactionエントリに要約し、最近のメッセージはそのまま保持。コンパクションは永続的(セッション刈り込みとは異なる)。

プレコンパクション「メモリフラッシュ」

自動コンパクション前にサイレントなエージェンティックターンを実行し、永続的な状態をディスクに書き込む。コンパクションが重要なコンテキストを消去しないようにする。

設定(agents.defaults.compaction.memoryFlush):

  • enabled(デフォルト: true
  • softThresholdTokens(デフォルト: 4000
  • prompt(フラッシュターン用ユーザーメッセージ)
  • systemPrompt(フラッシュターン用追加システムプロンプト)