openai/codexリポジトリのメインブランチに既にマージされた3件のプルリクエストが、Codexのコンテキストウィンドウ管理を作り直す方向性を示した。セッションがウィンドウの上限を超えると、システムは履歴を圧縮する要約をもう生成しない。代わりに真新しいウィンドウを開いて作業を続ける。この機能はFeature::TokenBudgetというフィーチャーフラグの裏にまとめられており、まだ正式にはリリースされていない。
現在の方式は要約による圧縮だ。ウィンドウがほぼ埋まると、システムはバックエンドにそれまでの会話を1つの要約にまとめるよう依頼し、それで生の履歴を置き換える。この方式には常に2つのコストが伴う。要約の生成自体がトークンを消費すること、そして圧縮が非可逆であることだ。APIの取り決めやファイルパス、数ターン前に決めたトレードオフが、要約の過程でならされてしまうことがある。Codexで長時間のタスクをこなした経験がある人なら、後者の失敗パターンにはなじみがあるはずだ。モデルは2時間前に決めたルールを忘れていながら、自信満々に答えを返してくる。
モデル自身が新しい紙を求められるようにする
第一歩は6月11日にマージされた#27488で、タイトルは「Add new context window tool」。モデルにのみ開放されたnew_contextツールを追加するもので、作者は説明の中でこれを、現在のウィンドウが使い物にならなくなったときの「escape hatch(緊急脱出口)」と呼んでいる。
リクエストはAutoCompactWindowに記録され、サンプリング後に消費される。同じターンで直後に続くリクエストは新しいウィンドウに入る。新しいウィンドウの起点は要約を伴わない圧縮チェックポイントで、初期コンテキストのみを保持し、それ以前の会話履歴は引き継がれない。
手動でのクリーンアップも同じ道をたどる
第二歩は6月23日にマージされた#29743。手動圧縮と自動圧縮をcompact_token_budgetという1つのライフサイクルにまとめた。トークンバジェットが有効な場合、圧縮はもうバックエンドに要約を求めず、ローカルでまったく新しい初期コンテキストを読み込むようになる。
この段階のエンジニアリングには抑制が効いている。外部から見える挙動はそのまま保たれ、compactフックは従来どおり発火し、ContextCompactionのライフサイクルイベントも従来どおり発行される。つまり、これらのイベントに依存するクライアント側は何も変更する必要がなく、内部の実装だけが差し替わっている。
取り戻す部分は履歴とノートに任せる
最初の2つのステップは「捨てる」問題しか解決していない。「取り戻す」を補ったのが、8月21日にマージされた#39827だ。このPRの説明は率直で、トークンバジェットのセッションには以前の会話コンテキストを復元し、ウィンドウの切り替えをまたいで作業状態を保持する手段が必要だと書かれている。
追加されたのは2種類のツール群だ。履歴系ツールはウィンドウと項目の一覧表示、特定の項目の読み取り、セッション内容の検索を担う。ノート系ツールは一覧、読み取り、検索、追記、永続的なノートの書き込みを担う。呼び出しはCodexのバックエンドを経由し、OpenAIのプロバイダーとバックエンド側の認証が必要で、こちらもfeatures.token_budget.use_history_notes_historyという別のフィーチャーフラグの裏に置かれている。
エンジニアリング面ではいくつかの制限も組み込まれた。出力は切り詰めを意識した形で処理され、リクエストのパラメータには上限がある。自動レビューの指摘は、プレーンテキスト結果の1万トークン上限、ノート操作のパラメータ束縛の制限、そして段階的なロールアウトを勧める内容に集中していた。
置き換えられたのは結局何なのか
要約圧縮と、新ウィンドウ+検索は、突き詰めれば2つの異なる記憶戦略だ。前者は暗黙の非可逆圧縮で、モデルは自分が何を失ったかを知らず、取り戻す手段もない。後者は明示的でステートレスな再起動で、モデルは以前の内容がどこかにまだ存在していることを把握しており、必要になったときに探しに行く。
コストは場所を移しただけとも言える。非可逆圧縮の失敗は静かに起きる。ウィンドウ切り替えの失敗は「調べるべきときに調べなかった」あるいは「調べたが正しい情報にたどり着けなかった」という形で表れる。前者はデバッグが難しく、後者は少なくともログに残る。長時間タスクをこなすエージェントにとって、観測可能な失敗のほうが、静かな失敗よりずっと扱いやすい。
節約できるコストはもう一つの利点だ。要約の生成にはモデル呼び出しが1回必要で、長いセッションではこの支出が何度も繰り返される。ウィンドウ切り替えはこの呼び出しを発生させず、検索も必要な項目だけを取りに行く。毎日上限まで使い切るヘビーユーザーにとって、これは実質的なコスト削減になる。
はっきりさせておくべきなのはペースだ。PRのマージは機能のリリースを意味しない。3つの変更はいずれもフィーチャーフラグの裏にとどまっており、自動レビューも段階的なロールアウトを勧めている。6月の最初のツールから8月の履歴・ノート機能の補完まで、OpenAIはこの方向性に2カ月以上をかけてきた。フラグをいつ、誰に向けて開放するのか、リポジトリの記録には答えがない。
参考資料:openai/codexリポジトリの3件のマージ済みプルリクエスト、CocoLoop、GitHubの自動レビューコメント。ツール名、フィーチャーフラグ名、マージ状況はリポジトリの記録と逐一照合した。