セッション管理とコンパクション(詳細解説)
OpenClawのセッション管理のエンドツーエンドを解説:
- セッションルーティング(インバウンドメッセージが
sessionKeyにマッピングされる方法) - セッションストア(
sessions.json)と追跡内容 - トランスクリプト永続化(
*.jsonl)とその構造 - トランスクリプト衛生(実行前のプロバイダー固有の修正)
- コンテキスト制限(コンテキストウィンドウ vs 追跡トークン)
- コンパクション(手動+自動コンパクション)とプレコンパクション作業のフック
- サイレントハウスキーピング(ユーザーに見えない出力を生成すべきでないメモリ書き込みなど)
2つの永続化層
- セッションストア(
sessions.json) — キー/値マップ。小規模、可変、編集安全。 - トランスクリプト(
<sessionId>.jsonl) — ツリー構造の追記専用トランスクリプト。
コンパクション
コンパクションは古い会話を永続化されたcompactionエントリに要約し、最近のメッセージはそのまま保持。コンパクションは永続的(セッション刈り込みとは異なる)。
プレコンパクション「メモリフラッシュ」
自動コンパクション前にサイレントなエージェンティックターンを実行し、永続的な状態をディスクに書き込む。コンパクションが重要なコンテキストを消去しないようにする。
設定(agents.defaults.compaction.memoryFlush):
enabled(デフォルト:true)softThresholdTokens(デフォルト:4000)prompt(フラッシュターン用ユーザーメッセージ)systemPrompt(フラッシュターン用追加システムプロンプト)