Codex Beralih ke Jendela Konteks Baru, Bukan Lagi Ringkasan

Tiga pull request yang sudah digabung ke branch utama repositori openai/codex memaparkan arah perombakan pengelolaan jendela konteks Codex: saat sesi melampaui kapasitas jendelanya, sistem tidak lagi menghasilkan ringkasan untuk memampatkan riwayat — melainkan langsung membuka jendela yang sama sekali baru dan melanjutkan pekerjaan. Kemampuan ini berada di balik feature flag bernama Feature::TokenBudget dan belum diluncurkan secara resmi.

Pendekatan yang berlaku sekarang adalah pemampatan berbasis ringkasan. Ketika jendela hampir penuh, sistem meminta backend memadatkan percakapan sebelumnya menjadi satu ringkasan, lalu menggantikan riwayat mentah dengan ringkasan itu. Cara ini punya dua biaya tetap: menghasilkan ringkasan itu sendiri menghabiskan token, dan pemampatannya bersifat lossy — kontrak API, nama path, serta trade-off yang disepakati beberapa giliran sebelumnya bisa saja terkikis dalam proses pemadatan. Siapa pun yang pernah menjalankan tugas panjang dengan Codex pasti akrab dengan mode kegagalan yang kedua ini: model lupa aturan yang disepakati dua jam lalu, tapi tetap menjawab dengan percaya diri.

Membiarkan model sendiri yang meminta lembar baru

Langkah pertama adalah #27488, digabung 11 Juni dengan judul "Add new context window tool". PR ini memberi model sebuah alat new_context yang hanya bisa diakses oleh model itu sendiri — dalam deskripsinya, penulisnya menyebutnya sebagai "escape hatch" untuk saat jendela yang sedang berjalan sudah tidak lagi berguna.

Permintaan ini dicatat di bawah AutoCompactWindow dan dikonsumsi setelah sampling; permintaan berikutnya dalam giliran yang sama langsung jatuh ke jendela baru. Jendela baru itu dimulai dari checkpoint pemampatan tanpa ringkasan — hanya menyimpan konteks awal, sementara riwayat percakapan sebelumnya tidak ikut terbawa.

Pembersihan manual juga melewati jalur yang sama

Langkah kedua adalah #29743, digabung 23 Juni. PR ini menyatukan pemampatan manual dan otomatis ke dalam satu siklus hidup bernama compact_token_budget: ketika token budget aktif, pemampatan tidak lagi meminta ringkasan ke backend — melainkan langsung memuat konteks awal yang sepenuhnya baru secara lokal.

Detail rekayasa di langkah ini menunjukkan kehati-hatian: perilaku yang terlihat dari luar tetap dipertahankan. Hook compact tetap terpicu seperti biasa, dan event siklus hidup ContextCompaction tetap diterbitkan seperti biasa. Dengan kata lain, klien yang bergantung pada event-event ini tidak perlu diubah — yang berganti hanyalah implementasi di baliknya.

Bagian yang perlu diambil kembali diserahkan ke riwayat dan catatan

Dua langkah pertama hanya menyelesaikan soal "membuang". #39827, digabung 21 Agustus, baru menambahkan bagian "mengambil kembali". Deskripsi PR ini blak-blakan: sesi token budget membutuhkan cara untuk memulihkan konteks percakapan sebelumnya dan menjaga status kerja tetap utuh saat berpindah jendela.

PR ini menambahkan dua kelompok alat. Alat riwayat bertugas mendaftar jendela dan entri, membaca entri tertentu, serta mencari di dalam isi sesi. Alat catatan bertugas mendaftar, membaca, mencari, menambahkan, dan menulis catatan permanen. Pemanggilannya melewati backend Codex, membutuhkan provider OpenAI plus autentikasi backend, dan juga berada di balik feature flag lain: features.token_budget.use_history_notes_history.

Beberapa pembatasan juga dibangun di sisi rekayasa: output diproses dengan kesadaran akan pemotongan (truncation), dan parameter permintaan punya batas. Komentar review otomatis banyak berfokus pada batas atas 10.000 token untuk hasil teks polos, batasan pengikatan parameter pada operasi catatan, serta saran untuk merilisnya secara bertahap.

Yang sebenarnya digantikan

Pemampatan berbasis ringkasan dan jendela-baru-plus-pencarian pada dasarnya adalah dua strategi memori yang berbeda. Yang pertama adalah pemampatan lossy secara implisit — model tidak tahu apa yang hilang, dan tidak punya cara mengambilnya kembali. Yang kedua adalah restart eksplisit dan stateless — model tahu konten lama masih ada di suatu tempat, dan pergi mencarinya saat dibutuhkan.

Biayanya sekadar berpindah tempat. Kegagalan pemampatan lossy terjadi secara diam-diam. Kegagalan perpindahan jendela muncul sebagai "tidak mencari saat seharusnya mencari" atau "mencari tapi salah sasaran" — yang pertama sulit di-debug, yang kedua setidaknya muncul di log. Bagi agent yang menjalankan tugas panjang, kegagalan yang bisa diamati jauh lebih mudah ditangani daripada kegagalan yang diam-diam.

Uang yang dihemat adalah keuntungan di sisi lain. Membuat ringkasan membutuhkan satu kali pemanggilan model, dan biaya ini berulang terus-menerus dalam sesi yang panjang; perpindahan jendela tidak memicu pemanggilan itu, dan pencarian hanya mengambil entri saat benar-benar dibutuhkan. Bagi pengguna berat yang menghabiskan kuota setiap hari, ini penghematan yang nyata.

Satu hal yang perlu diperjelas adalah temponya: PR yang digabung bukan berarti fitur sudah dirilis. Ketiga perubahan ini masih berada di balik feature flag, dan review otomatis pun masih menyarankan peluncuran bertahap. Dari versi pertama alat ini di bulan Juni hingga penyempurnaan riwayat dan catatan di bulan Agustus, OpenAI sudah menghabiskan lebih dari dua bulan di jalur ini — dan catatan repositori tidak memberi jawaban kapan, atau untuk siapa, flag ini akan dinyalakan.

Sumber: tiga pull request yang sudah digabung di repositori openai/codex, CocoLoop, komentar review otomatis GitHub; nama alat, nama feature flag, dan status penggabungan dicocokkan satu per satu dengan catatan repositori.