← Blog

Deep Dive Arsitektur Claude Code: Apa yang Terungkap dari Source Code yang Bocor

Source code bocor Claude Code mengekspos 512K baris TypeScript produksi. Berikut adalah uraian arsitektur lengkapnya — sistem alat, query engine, pola multi-agen, dan kompresi konteks.

9 min read
Deep Dive Arsitektur Claude Code: Apa yang Terungkap dari Source Code yang Bocor

Halo semuanya, saya Dora. Saya tidak sedang mencari masalah pada Maret 2026. Sebuah pesan muncul di feed saya: “​Claude Code source code telah bocor melalui file map di npm registry mereka.​”

Saya menutup tab yang sedang saya buka dan tidak menoleh ke belakang.

Apa yang terjadi selanjutnya adalah salah satu sore yang benar-benar menarik yang saya habiskan untuk mempelajari bagaimana sebuah alat AI produksi sebenarnya dibangun. Bukan karena drama kebocoran itu — itu cepat membosankan — tetapi karena kodenya adalah sesuatu yang langka: sebuah CLI agentik yang nyata, telah dirilis, dan secara komersial dominan yang diperiksa dengan detail 512.000 baris.

Inilah yang saya perhatikan.

Mengapa Source Code yang Bocor Adalah Kesempatan Langka untuk Mempelajari Arsitektur

Setelah Claude Code bocor, source code-nya muncul ke permukaan — terekspos melalui file .map yang salah konfigurasi dalam paket npm milik Anthropic sendiri — para developer dengan cepat menyadari bahwa ini bukan sekadar wrapper di sekitar API chat. Menurut analisis insiden dari cybersecuritynews.com, eksposur tersebut mencakup sekitar 1.900 file dan lebih dari ​512.000 baris TypeScript ketat​, dengan entry point utama saja berukuran 785KB.

Stack-nya sendiri sudah menarik: Bun sebagai runtime (bukan Node.js), React dengan Ink untuk rendering UI terminal, dan Zod v4 untuk validasi skema di seluruh kode. Menggunakan pola komponen React dalam CLI berarti manajemen state, re-render, dan komponen UI yang dapat dikomposis di dalam terminal Anda. Ini adalah pilihan yang disengaja dan berani.

Yang membuat ini layak dipelajari di luar meme: pola arsitektur Claude Code di sini berlaku untuk tim mana pun yang membangun sistem agentik yang serius.

Sistem Tool — 40+ Modul Terisolasi yang Dikendalikan Izin

Hal pertama yang menonjol bagi saya adalah betapa bersihnya sistem tool diisolasi. Setiap tool mendefinisikan skema input, tingkat izin, dan logika eksekusinya sendiri — secara independen. Tidak ada shared mutable state yang menyelinap di antara tool.

BashTool dan FileReadTool berada di registry yang sama tetapi memiliki profil risiko yang sangat berbeda. Eksekusi Bash dapat mengubah state sistem; pembacaan file bersifat read-only. Arsitekturnya memperlakukan keduanya sesuai, mengunci masing-masing di balik tingkat izinnya sendiri alih-alih menerapkan kebijakan menyeluruh. Pemisahan itu sangat penting dalam sistem agentik produksi, di mana model izin yang bocor antar tool adalah masalah keamanan dan keandalan yang menunggu untuk terjadi.

AgentTool adalah yang paling cerdik. Ini memungkinkan sistem untuk menelurkan sub-agen hanya sebagai pemanggilan tool lainnya — ​tidak diperlukan lapisan orkestrasi khusus, tidak ada model proses terpisah​. Sub-agen adalah warga kelas satu dari registry tool yang sama. Keputusan desain itu menjaga arsitektur tetap datar dan dapat diprediksi.

Definisi tool dasar saja mencakup sekitar 29.000 baris TypeScript. Itu bukan bloat — itulah tampilan validasi skema yang ketat, penegakan izin, dan penanganan error yang sebenarnya dalam skala ini. Dokumentasi resmi Claude Code dari Anthropic mengonfirmasi filosofi berpusat pada tool ini: tool adalah yang membuat sistem bersifat agentik sama sekali.

Query Engine 46K Baris — Otak Sesungguhnya dari Claude Code

QueryEngine.ts adalah 46.000 baris. Biarkan itu mengendap sejenak.

Ini adalah modul yang menangani semua pemanggilan API LLM, streaming, caching, dan orkestrasi. Dalam satu file. Itu mungkin terdengar seperti tanda peringatan — dan tergantung pada konvensi codebase Anda, Anda benar untuk mempertanyakannya — tetapi penalarannya koheren: semua yang menyentuh API model ada di satu tempat, yang berarti logika retry, penanganan batas rate, manajemen anggaran konteks, dan error streaming semuanya dipikirkan bersama.

Loop query self-healing adalah bagian yang mengejutkan saya. Ketika anggaran konteks mendekati batasnya, engine tidak crash atau meminta bantuan. Engine memicu kompresi secara otomatis, mengukir buffer sebelum batas atas dan menghasilkan ringkasan terstruktur dari apa yang telah didiskusikan. Itu bukan hack — itu adalah perilaku yang dirancang. Bagi siapa pun yang membangun sesi agen yang berjalan lama, pola ini layak dipelajari secara langsung.

Orkestrasi Multi-Agen — Koordinator, Worker, dan Pola Mailbox

Sistem multi-agen menggunakan apa yang disebut source code yang bocor sebagai pola mailbox untuk operasi berbahaya. Inilah artinya dalam praktik: worker agent yang menjalankan tugas tidak dapat secara mandiri menyetujui operasi berisiko tinggi. Sebaliknya, ia mengirim permintaan ke mailbox koordinator dan menunggu. Koordinator mengevaluasi dan menyetujui atau menolak.

Mekanisme klaim atomik mencegah dua worker menangani persetujuan yang sama secara bersamaan — detail yang halus namun kritis dalam sistem apa pun dengan eksekusi paralel. Ruang memori bersama di seluruh agen berarti tim mempertahankan konteks yang koheren tanpa re-fetching yang redundan.

Ini adalah keberangkatan yang bermakna dari desain multi-agen yang naif di mana setiap agen beroperasi dengan otonomi penuh. Pemisahan koordinator/worker dengan gerbang persetujuan adalah cara Anda mendapatkan paralelisme tanpa kekacauan. Tim yang membangun lapisan orkestrasi untuk sistem agentik mereka sendiri sebaiknya membaca dokumentasi pola agentik Anthropic sebelum merancang milik mereka sendiri.

Kompresi Konteks Tiga Lapisan — Rekayasa untuk Sesi Panjang

Ini mungkin bagian rekayasa yang paling langsung berguna dalam seluruh codebase bagi siapa pun yang membangun aplikasi AI produksi.

Claude Code menggunakan tiga strategi kompresi yang berbeda, masing-masing dipicu pada titik yang berbeda:

MicroCompact mengedit konten yang di-cache secara lokal, tanpa pemanggilan API. Output tool lama dipangkas secara langsung. Cepat, murah, transparan.

AutoCompact aktif ketika percakapan mendekati batas jendela konteks. Ini menyediakan buffer 13.000 token, kemudian menghasilkan ringkasan terstruktur sesi hingga 20.000 token. Ada circuit breaker bawaan — setelah tiga kegagalan kompresi berturut-turut, ia berhenti mencoba ulang. Tidak ada loop tak terbatas.

Full Compact mengompresi seluruh percakapan, kemudian menyuntikkan ulang file yang baru diakses (dibatasi 5.000 token per file), rencana aktif, dan skema skill yang relevan. Pasca-kompresi, anggaran kerja diatur ulang ke 50.000 token.

Yang perlu dicatat adalah apa yang diimplikasikan arsitektur ini bagi tool yang melewatkan kompresi sepenuhnya. Tool agentik yang tidak mengelola anggaran konteks akan gagal pada skala — terdegradasi secara diam-diam atau mengalami error keras. Pendekatan tiga lapisan adalah contoh langka dari ​perancangan untuk umur panjang sesi dari awal​, bukan menambahkannya di kemudian hari.

Feature Flag sebagai Arsitektur — 108 Modul yang Tidak Ada di Produksi

Salah satu temuan yang kurang dibahas dari source code yang bocor: ​108 modul yang dikendalikan feature flag​, dihapus dari build eksternal melalui eliminasi kode mati waktu kompilasi Bun.

KAIROS, VOICE_MODE, DAEMON — ini tidak ada dalam versi yang Anda instal. Kodenya ada di source, tetapi Bun menghapusnya pada waktu kompilasi berdasarkan konfigurasi feature flag. Bundle produksi dikirimkan dengan bersih. Inilah cara Anda mengiterasi kemampuan baru tanpa menyentuh apa yang sudah ada di tangan pengguna.

Ironisnya terdokumentasi dengan baik: Undercover Mode, subsistem yang dirancang khusus untuk mencegah nama kode internal muncul dalam commit git atau output, ada dalam source code yang bocor. Sistem yang dibangun untuk mencegah kebocoran tidak dapat mencegah kebocoran itu sendiri. Bukan kegagalan keamanan yang katastrofis, tetapi yang instruktif tentang di mana risiko sebenarnya terakumulasi dalam pipeline pengiriman perangkat lunak.

Telemetri yang Dibangun ke Dalam Loop Inti

Dua sinyal telemetri dalam source code yang bocor yang terus saya pikirkan:

Metrik frustrasi melacak frekuensi mengumpat sebagai sinyal UX. Jika pengguna mengutuk alat tersebut, sesuatu sedang rusak — sebuah indikator terdepan, bukan tertinggal.

Penghitung “continue” melacak seberapa sering pengguna mengetik kata “continue” di tengah sesi. Untuk CLI agentik, ini adalah proksi untuk kemacetan — momen di mana agen kehilangan momentum dan manusia harus mendorongnya ke depan.

Tidak satu pun yang merupakan metrik vanitas. Keduanya memunculkan mode kegagalan spesifik yang akan terlewatkan oleh analitik standar. Jika Anda membangun produk AI apa pun dengan sesi interaksi yang diperpanjang, menginstrumentasi perilaku agen dengan cara ini layak diinvestasikan dalam waktu rekayasa.

Apa yang Ini Ceritakan kepada Pembangun tentang Keputusan Stack

Kesimpulan jujur dari mempelajari ​arsitektur claude code​ ini: membangun CLI agentik produksi dari nol adalah komitmen rekayasa yang substansial. Sistem tool, query engine, orkestrasi multi-agen, kompresi konteks, dan telemetri bersama-sama mewakili tahun-tahun iterasi, bukan berbulan-bulan.

Itu bukan argumen menentang pembangunan. Itu adalah argumen untuk menjadi jelas tentang apa yang Anda ambil alih. Pola seperti sistem persetujuan mailbox dan kompresi tiga lapisan dapat diekspor — Anda tidak memerlukan 512.000 baris untuk mengimplementasikan ide-ide inti.

Di mana kalkulus build-vs-buy bergeser adalah dalam akses dan agregasi model. Arsitektur mengasumsikan akses langsung ke penyedia model tunggal. Tim yang bekerja di beberapa penyedia model, atau membangun produk yang perlu tetap model-agnostik, menghadapi serangkaian tradeoff yang sama sekali berbeda.

Pola di sini layak dipinjam. Kompleksitasnya layak dipahami sebelum berkomitmen untuk mereplikasinya.

FAQ

Bagaimana sistem tool Claude Code berbeda dari pemanggilan fungsi standar?

Pemanggilan fungsi standar memperlakukan tool sebagai daftar datar. Claude Code menambahkan gerbang izin per-tool, konteks eksekusi yang terisolasi, dan validasi skema di setiap batas — mencegah kebocoran state antar tool dan menegakkan akses hak istimewa minimal, yang penting ketika BashTool dapat memodifikasi state sistem.

Apa itu pola mailbox dan kapan pembangun harus menggunakannya?

Ini merutekan operasi berbahaya dari worker agent ke koordinator untuk persetujuan, alih-alih mengeksekusi secara otonom. Gunakan kapan pun Anda memiliki eksekusi agen paralel dan memerlukan mekanisme human-in-the-loop atau persetujuan hierarkis untuk tindakan berisiko tinggi.​​ Biaya throughput, keuntungan keamanan.

Bagaimana Claude Code menangani batas jendela konteks pada skala besar?

Kompresi tiga lapisan: MicroCompact (pengeditan lokal, tanpa biaya API), AutoCompact (dipicu mendekati batas, menghasilkan ringkasan terstruktur dengan buffer token yang dipesan), dan Full Compact (kompresi percakapan penuh dengan re-injeksi file selektif). Dirancang untuk sesi panjang tanpa intervensi manual.

Apa itu feature flag waktu kompilasi dan mengapa tool AI produksi menggunakannya?

Feature flag memungkinkan kode untuk fitur yang belum dirilis ada di source tanpa muncul dalam build produksi. Bun menghapus kode yang dinonaktifkan pada waktu kompilasi, sehingga pengguna eksternal tidak pernah menemukan fitur yang belum siap — memisahkan pengiriman dari kesiapan.

Apakah legal untuk mempelajari dan mereferensikan source code yang bocor sebagai inspirasi arsitektur?

Layak diperlakukan dengan hati-hati. Source code yang bocor adalah kekayaan intelektual Anthropic. Mempelajari pola arsitektur untuk tujuan pendidikan berada di wilayah yang berbeda dari menyalin kode secara langsung. Dokumentasi resmi Anthropic tetap menjadi referensi yang tepat untuk apa pun yang Anda bangun di atas sistem mereka. Jika ragu, konsultasikan dengan penasihat hukum Anda sendiri.

Hal yang terus saya pikirkan adalah betapa banyak arsitektur ini tentang mengelola kegagalan dengan anggun. Circuit breaker pada kompresi, pola mailbox untuk operasi berbahaya, isolasi izin antar tool — ini bukan desain yang optimistis. Ini dibangun oleh orang-orang yang telah menyaksikan sesuatu berjalan salah dan memutuskan untuk merekayasa di sekitarnya.

Itu adalah jenis kematangan yang berbeda dari kecepatan fitur.

Oke, berbagi hari ini sudah selesai. Sampai jumpa lagi.

Posting Sebelumnya: