- Codex CLI dirancang sebagai agen yang melakukan perubahan perangkat lunak berkualitas tinggi secara aman dan efisien di lingkungan lokal
- Struktur intinya, agent loop, menghubungkan input pengguna, penalaran model, dan pemanggilan alat secara berulang untuk menjalankan pekerjaan yang bermakna
- Dalam proses loop, penyusunan prompt, pengelolaan context window, dan prompt caching yang dihasilkan menjadi elemen kunci bagi performa dan stabilitas
- Codex berkomunikasi dengan model melalui Responses API, dan setiap permintaan disusun sebagai payload JSON lengkap untuk mempertahankan operasi stateless
- Struktur ini memungkinkan fitur tingkat lanjut seperti Zero Data Retention(ZDR), prompt caching, dan compaction otomatis, serta menjadi fondasi bagi perancangan agen skala besar
Ikhtisar agent loop Codex
- Codex CLI beroperasi dengan berfokus pada struktur loop yang mengoordinasikan interaksi antara pengguna, model, dan alat
- Menerima input pengguna lalu menyusun prompt untuk dikirim ke model
- Jika model menghasilkan respons atau meminta tool call, agen mengeksekusinya lalu menambahkan hasilnya kembali ke prompt
- Satu giliran berakhir ketika model tidak lagi melakukan tool call dan menghasilkan pesan assistant
- Setiap giliran merupakan bagian dari conversation, dan pesan sebelumnya beserta riwayat tool call semuanya disertakan dalam prompt permintaan berikutnya
- Karena panjang prompt dipengaruhi oleh batas context window model, Codex perlu mengelolanya
Struktur komunikasi Codex dengan Responses API
- Codex CLI mengirim permintaan HTTP ke Responses API untuk inferensi model
- Endpoint API berbeda sesuai konfigurasi, dan dapat digunakan di lingkungan OpenAI, ChatGPT, Azure, maupun lokal (LM Studio, Ollama, dll.)
- Permintaan API disusun sebagai payload JSON, dengan bidang utama sebagai berikut
- pesan system/developer: menetapkan konteks dasar model
- instructions: daftar alat yang dapat dipanggil model
- tools: definisi alat yang disediakan oleh Codex CLI, Responses API, atau pengguna (seperti server MCP)
- input: daftar pesan yang mencakup riwayat percakapan dan informasi lingkungan
- Codex membaca konfigurasi
~/.codex/config.toml serta AGENTS.md, file skills, dan lainnya di dalam proyek untuk menyisipkan instruksi pengguna dan informasi lingkungan secara otomatis
Penyusunan prompt dan penanganan event
- Codex menyusun setiap pesan sebagai objek JSON (
type, role, content) lalu mengirimkannya ke Responses API
- Server membuat prompt model berdasarkan JSON ini dan mengembalikan respons melalui stream SSE(Server-Sent Events)
- Event
response.output_text.delta digunakan untuk output streaming
- Event
response.output_item.added ditambahkan ke input permintaan berikutnya untuk melanjutkan loop
- Dirancang agar prompt sebelumnya menjadi prefix yang tepat dari prompt baru, sehingga prompt caching dapat dimanfaatkan
Optimasi performa: caching dan desain stateless
- Codex tidak menggunakan
previous_response_id, sehingga mempertahankan struktur permintaan stateless sepenuhnya
- Hal ini memungkinkan dukungan pelanggan Zero Data Retention(ZDR) dan meminimalkan retensi data
- Prompt caching menggunakan kembali prefix yang sama untuk membuat biaya sampling menjadi linear
- Cache hit hanya terjadi saat ada kecocokan prefix yang persis sama pada prompt
- Perubahan daftar alat, model, pengaturan sandbox, atau direktori kerja akan menyebabkan cache miss
- Perubahan dinamis pada alat MCP dapat menyebabkan hilangnya cache, sehingga Codex mencerminkan perubahan melalui metode penyisipan pesan baru
Pengelolaan context window dan compaction otomatis
- Saat percakapan menjadi panjang, dilakukan compaction percakapan untuk mencegah context window terlampaui
- Awalnya ringkasan dilakukan manual dengan perintah
/compact, tetapi kini secara otomatis menggunakan endpoint /responses/compact milik Responses API
- Endpoint ini mengembalikan item
type=compaction dan encrypted_content terenkripsi untuk menjaga pemahaman model
- Codex secara otomatis menjalankan compaction ketika melebihi auto_compact_limit agar kesinambungan percakapan tetap terjaga
Kesimpulan dan arah berikutnya
- Agent loop Codex adalah struktur inti yang mengintegrasikan inferensi model, tool call, caching, dan pengelolaan konteks
- Struktur ini memungkinkan perancangan agen yang berperforma tinggi, stateless, dan berfokus pada keamanan
- Pada artikel berikutnya, struktur internal Codex seperti arsitektur CLI, implementasi penggunaan alat, dan model sandboxing akan dibahas lebih lanjut
1 komentar
Komentar Hacker News
Hal terbaik dari tulisan blog ini adalah sama sekali tidak mengejutkan. Codex CLI bersifat open source, jadi kita bisa melihat bagian dalamnya tanpa perlu reverse engineering
Komunikasi Eric Traut, pengembang yang dikenal lewat Pyright, juga sangat bagus. Ia aktif terlibat dalam issue dan PR
Repositori GitHub
Aku juga pernah berkontribusi beberapa perbaikan ke CLI dan terus mengikuti rilis serta PR untuk menambah wawasan
Bagian yang menarik adalah bahwa compaction dilakukan sebagai “pesan terenkripsi yang mempertahankan pemahaman laten model”
Saat melebihi auto_compact_limit, Codex otomatis memakai endpoint ini untuk merangkum konteks percakapan secara efisien
Hal yang membuatku terkejut saat melihat ke dalam Codex adalah token reasoning dipertahankan di loop pemanggilan tool agen, tetapi dihapus setiap kali giliran pengguna berubah
Jadi konteks bisa dipertahankan lintas beberapa giliran, tetapi sebagian konteks bisa hilang di antara permintaan pengguna yang saling berkaitan
Aku biasanya menyuruh model mencatat progres, rencana, atau detail debug ke file Markdown agar berfungsi semacam snapshot di antara beberapa context window
Repositori GitHub
Hal yang benar-benar kuinginkan di Codex adalah fitur checkpoint ala Copilot. Ada beberapa issue terkait di GitHub (#2788, #3585), tetapi tampaknya itu bukan prioritas tim
Saat mengagregasi instruksi pengguna dalam loop agen, aku penasaran bagaimana mereka mengelola pemeliharaan konteks dalam percakapan multi-giliran. Aku juga ingin tahu apakah mereka pernah mencoba teknik penyesuaian dinamis ketika kebutuhan pengguna berubah
Aku suka Codex, tetapi terasa lebih lambat daripada antarmuka web ChatGPT. Saat ingin saling melempar ide dengan cepat, tetap lebih produktif menyalin-tempel di web
Codex sering mulai mengubah kode yang salah, jadi loop umpan balik terasa lambat dan membuat frustrasi. Meski begitu, saat bekerja dengan baik hasilnya sangat bagus. Semoga suatu hari bisa secepat web sambil tetap mampu bekerja lokal
Tidak terlalu baru, tetapi tetap tulisan yang bernilai. Akan bagus jika di CLI coding berbasis agen, loop atau histori bisa lebih mudah untuk direfleksikan. Aku pernah mencoba cara mengueri riwayat chat lewat MCP, tetapi tidak nyaman karena harus ditentukan secara eksplisit. Pembelajaran berkelanjutan tampaknya bisa menyelesaikan masalah seperti ini
Perilaku seperti ini juga bisa diamati lewat telemetri OTEL. Aku sering memakai headless codex exec, tetapi dukungan telemetri bawaannya kurang sehingga sulit untuk debugging
Karena itu aku membuat codex-plus sendiri. Ini mengikuti antarmuka codex exec apa adanya, dibangun di atas TypeScript SDK, dan setelah eksekusi mengekspor log sesi ke kolektor OpenTelemetry jarak jauh agar bisa dianalisis dengan codex-plus-log-viewer
Bagian yang menjelaskan skill terasa aneh
Tautan kode terkait
Aku bertanya-tanya kenapa mereka tidak langsung mengekspos file, melainkan membuat model memintanya seperti file biasa
Aku penasaran apakah ada yang benar-benar pernah memakai Codex CLI secara serius. Aku pernah mencoba ekstensi Codex untuk VSCode, Gemini CLI, dan Claude Code CLI, dan semuanya berantakan dari sisi performa.
Tapi Codex CLI baru yang dibuat ulang dengan Rust performanya luar biasa. UX-nya juga sempurna, sampai detail kecil seperti shortcut pun ditangani dengan baik. Theo bilang mereka seharusnya fokus memperbaiki model daripada mengoptimalkan CLI, tapi setelah mencobanya aku sama sekali tidak setuju
Tulisan terkait: Scribe Swebench Benchmark