この章の答え
コンテキストの制約に合わせて履歴を組み替え、次の処理に必要な情報を引き継ぐ。
作業が長くなると、モデルへ渡す情報も増えていきます。Compaction を理解するには、短くする処理だけでなく、いつ起動し、置き換えた履歴をどこから使い始めるかを見る必要があります。
01|図でつかむ
処理の目的は、必要な情報を引き継いで会話を続けること。
02|3つのポイントで理解する
1. 起動の条件を探す
ContextWindowTokenStatus や token_limit_reached を検索し、どの使用量・閾値が判定に使われるかを見ます。設定値だけでなく、それを比較する場所まで追います。
2. 圧縮を独立した処理として読む
run_auto_compact や CompactTask 周辺には、通常のモデル要求とは異なる準備や結果の扱いがあります。成功時だけでなく失敗時に元の履歴がどう扱われるかも確認します。
3. 置き換えの後が重要
replacement history を採用した後、Agent Loop がどの情報から続行するかを見ます。要約で細部が省かれる可能性を考え、重要な制約や未完了の作業が残るかを検証します。
03|ソースで確かめる
以下の検索は Codex リポジトリのルートで実行します。最初に対象 commit を記録し、検索結果から定義と呼び出し元を一つずつ開いてください。
git rev-parse --short HEAD
rg -n "run_auto_compact|replace_compacted_history" codex-rs
読む入口: codex-rs/core/src/session/turn.rs 。リンク先は照合に使った固定 commit のファイルです。手元の版と異なる場合は、上の検索語から探し直します。
小さく試す
長さ判定、圧縮の実行、履歴置換の三箇所を見つけ、一つの流れに並べます。
04|30秒で復習
- 起動条件は使用量と制約から読む。
- 圧縮の失敗経路も確認する。
- 置き換え後に何を引き継ぐかが核心。