Artikel ini melakukan analisis teknis mendalam terhadap kode sumber Claude Code (v2.1.88) yang bocor pada 31 Maret 2026, menjadikannya sebagai kasus berharga yang mengungkap arsitektur rekayasa AI Agent mutakhir.
Penulis artikel, sumber: Max
Hari ini (31 Maret 2026), Anthropic kembali karena kesalahan rendah dalam proses pengemasan, mengekspos seluruh kode frontend dan klien versi terbaru Claude Code (v2.1.88) di repositori npm.
Seorang pengguna mempublikasikan file cli.js.map yang tidak dihapus, yang secara langsung memulihkan sekitar 1.900 file dan lebih dari 510.000 baris kode TypeScript asli.
Bagi Anthropic, ini adalah insiden OpSec serius lainnya setelah kebocoran dokumen model Mythos beberapa hari yang lalu.
Namun bagi pengembang dan peneliti industri di lapisan aplikasi model besar, kode sumber ini adalah whitepaper arsitektur teknis AI Agent mutakhir yang dibagikan tanpa penyembunyian dan bernilai sangat tinggi.
Terlepas dari kontroversi terkait kepatuhan dan insiden kebocoran, saya menghabiskan waktu untuk melakukan tinjauan mendalam terhadap kode sumber ini secara lokal.
Jika tidak dilihat sebagai gosip, tetapi sebagai kasus arsitektur asisten pemrograman AI produksi, ada banyak keputusan teknik yang melampaui pemikiran konvensional.
Berikut adalah analisis teknis mendetail mengenai arsitektur dasar, mekanisme penjadwalan, sistem memori, dan strategi keamanan Claude Code dari sudut pandang objektif.
Artikel ini panjang, cocok dibaca oleh profesional yang bekerja di bidang AI Infra, pengembangan Agent, serta yang tertarik pada arsitektur lapisan aplikasi model besar.
BAGIAN.01 Bukan Hanya Sebuah Alat CLI
Dari struktur direktori (sekitar 40 modul tingkat pertama di bawah src/), kompleksitas Claude Code jauh melebihi agen monolitik biasa yang tersedia secara open source saat ini.

Pemilihan teknologi stack-nya sangat pragmatis dan berfokus pada pengalaman interaksi pengguna akhir:
Bahasa menggunakan TypeScript, runtime memilih Bun yang lebih agresif dalam hal kinerja, kerangka CLI menggunakan Commander, dan lapisan rendering terminal secara tak terduga menggunakan React + Ink.
Mengapa sebuah alat baris perintah menggunakan React?
Jawabannya terdapat di screens/REPL.tsx dalam kode sumber (hingga 5005 baris).
Dalam skenario output streaming model besar dan eksekusi simultan banyak alat, manajemen status UI terminal menjadi sangat kompleks (misalnya merender proses pemikiran, progress bar pemanggilan alat, pratinjau Diff kode, dll.).
Menggunakan React deklaratif yang dipadukan dengan custom Store bergaya Zustand yang minimalis (state/store.ts) adalah praktik teknik terbaik untuk menangani pembaruan lokal frekuensi tinggi ini.
Dalam mode operasi, sistem dibagi secara ketat menjadi dua bentuk:
Mode REPL interaktif: Antarmuka terminal berbasis Ink, terutama untuk pengembang manusia.
Mode headless/SDK (kelas QueryEngine): UI sepenuhnya dilepas, mendukung output streaming JSON. Ini membuka kemungkinan untuk mengintegrasikannya sebagai mesin dasar ke dalam IDE (seperti bentuk Cursor) atau alur CI/CD di masa depan.
Proses booting sistem juga dioptimalkan secara paralel secara ekstrem.
Di main.tsx, operasi intensif I/O seperti pembacaan konfigurasi (MDM Settings) dan pre-fetching kunci Keychain dijalankan di proses anak, secara paralel dengan proses pemuatan modul utama sekitar 135ms; ketelitian milidetik terhadap latensi startup ini meresap ke seluruh kodebase.
PART.02 Rekayasa Prompt Cache
Ini adalah bagian paling teknis dari seluruh kode sumber, sekaligus hambatan utama yang membedakan pengalaman Claude Code dari aplikasi biasa yang hanya membungkus.
Saat ini, alat Agent sering kali masih secara sederhana dan kasar menggabungkan System Prompt dan riwayat percakapan saat menangani konteks panjang.
Di services/api/claude.ts dari Claude Code (modul interaksi inti sepanjang 3.419 baris), perakitan prompt dilakukan dengan presisi hingga tingkat byte.
Seperti yang diketahui, mekanisme Prompt Cache Anthropic menggunakan pencocokan awalan (Prefix Matching).
Untuk memaksimalkan tingkat keberhasilan cache, Claude Code dirancang dengan arsitektur cache bersegmentasi yang ketat:
Bagian statis (dapat di-cache secara global): Dihasilkan melalui systemPromptSection(), mencakup pengenalan identitas model ("You are Claude Code..."), aturan keamanan sistem, batasan gaya kode, panduan dasar penggunaan alat, dll. Bagian ini hampir tidak berubah selama siklus sesi.
Garis dinamis: Dalam kode sumber, ditetapkan secara hardcoded tanda khusus SYSTEM_PROMPT_DYNAMIC_BOUNDARY.
Segment dinamis (cache sesi/tidak dicache): berisi data yang sering berubah, seperti informasi direktori kerja saat ini (CWD), status Git, instruksi MCP (Model Context Protocol), dan konfigurasi pengguna.

Dan untuk mencegah terjadinya cache penetration akibat perubahan kecil pada Prompt, sistem melakukan sejumlah upaya cadangan yang tampak rumit:
- Deterministic sorting: Deskripsi alat yang diberikan ke model besar diurutkan secara alfabetis berdasarkan awalan alat bawaan + akhiran alat MCP.
- Pemetaan jalur hash: Jalur profil tidak menggunakan UUID acak, tetapi menggunakan nilai hash berbasis konten untuk menghindari pembatalan cache akibat perubahan jalur setiap kali injeksi.
- Status eksternal: Bahkan daftar Agent yang tersedia saat ini pun telah dipindahkan dari deskripsi alat ke lampiran pesan (Attachments). Menurut komentar kode sumber, perubahan ini saja mengurangi konsumsi Cache Creation Tokens sekitar 10,2%.
Semua ini menunjukkan kondisi industri saat ini: pengembangan lapisan aplikasi AI yang unggul pada tahap ini pada dasarnya adalah memanfaatkan nilai sistem cache API secara serakah dan cermat.
BAGIAN.03 Alat dan eksekusi paralel streaming
Claude Code menyertakan lebih dari 40 alat (meliputi pembacaan dan penulisan file, eksekusi Bash, pengambilan data web, dll.), dan arsitektur sistem alatnya menggunakan pola pabrik (Factory Pattern) yang sangat modular.
Setiap alat mewarisi antarmuka Tool dasar dan harus mengimplementasikan metode seperti checkPermissions(), validateInput(), dan isConcurrencySafe() (apakah aman secara konkuren).
Mekanisme ToolSearch yang dimuat sesuai kebutuhan: Ketika jumlah alat melebihi ambang tertentu, memasukkan deskripsi semua alat ke dalam Prompt akan menimbulkan biaya Token yang tidak dapat diterima.
Kode sumber menampilkan strategi elegan bernama ToolSearch: alat non-inti (seperti beberapa plugin analisis tertentu) ditandai sebagai defer_loading: true.

Model tidak melihat definisi spesifik dari alat-alat ini dalam Prompt saat ini, hanya mengetahui adanya alat ToolSearch. Ketika model merasa membutuhkan kemampuan tambahan, ia harus terlebih dahulu memanggil ToolSearch untuk memuat konfigurasi alat yang sesuai secara dinamis.
StreamingToolExecutor: Untuk meningkatkan efisiensi eksekusi, sistem mendukung pemanggilan alat secara paralel.
Coordinator (toolOrchestration.ts) akan membagi permintaan pemanggilan alat yang dikembalikan oleh model besar menjadi batch paralel dan batch serial.
Alat yang aman secara konkuren (seperti membaca beberapa file yang tidak saling terkait secara bersamaan, atau melakukan pencarian web secara konkuren) akan dijalankan secara paralel, sedangkan alat yang tidak aman secara konkuren (seperti mengubah file kode yang sama secara berurutan) akan dijalankan secara serial.
Alat untuk hasil set besar (seperti pencarian Grep penuh) memiliki anggaran maxResultSizeChars; konten yang melebihi anggaran akan dipotong langsung dan disimpan ke file sementara lokal, hanya mengembalikan ringkasan preview ke LLM untuk mencegah ukuran hasil yang terlalu besar memenuhi jendela konteks.
Mekanisme Fork untuk Menyelesaikan Kontaminasi Konteks
Agent monolitik saat ini memiliki satu kelemahan mematikan:
Saat menjalankan tugas kompleks (misalnya, melacak bug lintas file), model mungkin membaca file yang salah berulang kali atau mencoba perintah yang salah; proses coba-coba ini menghasilkan banyak konteks sampah yang dengan cepat mencemari percakapan utama, menyebabkan model mengalami disosiasi atau melupakan tujuan awal dalam penalaran selanjutnya.
Claude Code memperkenalkan mekanisme Coordinator Mode yang kompleks dan Fork Subagent untuk menyelesaikan masalah ini.

Setelah mode koordinator diaktifkan melalui variabel lingkungan, sistem akan direkonstruksi menjadi arsitektur Coordinator-Workers:
- Coordinator (Koordinator): Kehilangan izin untuk mengoperasikan file secara langsung, hanya mempertahankan tiga alat: Agent (agen turunan), SendMessage, dan TaskStop. Satu-satunya tugasnya adalah merencanakan alur kerja (Penelitian → Sintesis → Implementasi → Verifikasi).
- Workers (Executor): Diturunkan dengan deskripsi alat spesifik.
Yang paling patut diacungi jempol adalah mekanisme warisan Fork-nya.
Ketika diperlukan eksplorasi kode skala besar, Coordinator akan Fork sebuah Explore Agent.
Sub-Agent ini akan mewarisi cache percakapan induk (berbagi Prompt Cache untuk menghemat biaya), tetapi tindakan eksplorasi selanjutnya dan file sampah yang dibacanya sepenuhnya dilakukan dalam konteks terisolasi.
Setelah eksplorasi selesai, sub-Agent hanya perlu mengirimkan kesimpulan utama yang telah disintesis (Synthesis) kembali ke konteks utama Coordinator melalui format XML tertentu .
Desain yang habis pakai dan hanya menyisakan kesimpulan ini merupakan salah satu praktik terbaik industri saat ini untuk mengelola kolaborasi teks panjang kompleks dengan banyak Agent.
Desain yang habis pakai dan hanya menyisakan kesimpulan ini merupakan salah satu praktik terbaik industri saat ini untuk mengelola kolaborasi teks panjang kompleks dengan banyak Agent.
BAGIAN.05 Menerobos Mekanisme Paralel Agent Swarm Monolitik
Selain mekanisme Fork serial yang digunakan untuk mengatasi kontaminasi konteks, kode sumber juga menunjukkan arsitektur agen konkuren yang lebih ambisius—kluster Swarm (Teammate).
Logika bagian ini terutama tersembunyi di dalam direktori utils/swarm/ dan tasks/.
Sistem mendukung jenis tugas bernama in_process_teammate.
Dalam arsitektur ini, proses utama dapat membangunkan beberapa Agent secara paralel (disebut Teammate) untuk menjalankan tugas yang berbeda secara bersamaan.
Namun, dalam lingkungan CLI terminal, menjalankan banyak agen secara konkuren akan menghadapi dua tantangan teknis yang sangat serius: konflik jendela izin dan kekacauan render UI.
Solusi dari Anthropic sangat elegan:
- Kepemilikan Leader (permissionSync.ts): Semua proses anak Teammate tidak diizinkan untuk secara langsung menampilkan jendela permintaan izin kepada pengguna. Mereka akan mengarahkan permintaan izin melalui saluran internal ke Leader Agent proses utama, yang akan secara terpusat melakukan penyaringan keamanan dan konfirmasi pengguna di terminal utama.
- Otomatisasi tata letak terminal: Untuk memungkinkan pengguna memantau status kerja beberapa Agent paralel dengan jelas, kode sumber secara langsung mengintegrasikan perintah AppleScript untuk iTerm2 dan Terminal.app. Saat sebuah Teammate baru dihasilkan, sistem secara otomatis membagi panel di terminal (Split Pane) dan memberikan jendela output terpisah untuk setiap Agent anak.
Ini menandai peralihan AI secara resmi dari "pemikiran monolitik" menuju "kolaborasi paralel kelompok".
BAGIAN.06 Dream (Mimpi) Arsitektur Memori
Di era di mana RAG (Retrieval-Augmented Generation) sangat populer, hampir semua produk AI mengintegrasikan vector database.
Namun yang mengejutkan, sistem memori Claude Code (memdir/ modul) sangat klasik dan pragmatis, karena sepenuhnya didasarkan pada sistem file lokal.
Arsitekturnya terdiri dari satu file inti MEMORY.md (sebagai indeks tingkat tinggi, dibatasi hingga maksimal 200 baris/25KB) dan beberapa file topik berformat Frontmatter.
Memori dibagi secara rinci menjadi empat kategori: User, Feedback, Project, Reference.
Yang lebih menarik adalah mode asisten KAIROS yang tersembunyi dalam kode sumber.
Ini adalah mode daemon yang belum dirilis secara resmi.
Dalam mode KAIROS, sistem memori bukan lagi sekadar pembaruan indeks sederhana, tetapi menggunakan pola penambahan serupa log manusia (menulis ke logs/YYYY/MM/YYYY-MM-DD.md).
Pada malam hari atau saat waktu luang, tugas offline bernama Dream (bermimpi) akan diaktifkan di latar belakang.

Tugas Agen ini adalah merangkum dan memadatkan log transaksi harian, lalu mengekstraksi dan mengkonsolidasikannya ke dalam file tema jangka panjang yang terstruktur.
Mekanisme integrasi asinkron dari log jangka pendek ke memori jangka panjang ini tidak hanya menghindari masalah recall pada pencarian vektor, tetapi juga menunjukkan arah jelas menuju asisten AI sisi perangkat yang selalu aktif dan terus belajar.
BAGIAN.07 Konsolidasi Izin dan Keamanan
Memberikan izin kepada AI untuk menjalankan perintah Shell lokal dan mengubah file adalah pedang bermata dua.
Pop-up yang muncul terlalu sering meminta konfirmasi pengguna akan menghancurkan pengalaman otomatisasi sepenuhnya, sementara eksekusi otomatis tanpa batas dapat menyebabkan sistem crash (misalnya, eksekusi salah rm -rf).
Claude Code menggunakan arsitektur konsentrasi izin multi-lapisan:
Dari sandbox file/jaringan berbasis @anthropic-ai/sandbox-runtime di tingkat dasar, hingga pemblokiran hard-coded untuk operasi berbahaya tertentu (seperti git push --force), hingga validasi di tingkat alat.

Namun yang paling menarik adalah komponen bernama Auto Mode Classifier (yoloClassifier.ts).
Ketika pengguna mengaktifkan mode otomatis, sistem tidak menggunakan ekspresi reguler kaku untuk mengevaluasi tingkat bahaya perintah, melainkan menggunakan mekanisme Side Query.
Sistem akan secara diam-diam memanggil LLM yang lebih kecil dan lebih murah di latar belakang, mengirimkan transkrip ringkas dari percakapan saat ini dan perintah Bash yang akan dijalankan ke model sampingan tersebut, agar model tersebut menghasilkan keputusan Allow atau Deny.
Selain itu, sistem internal juga memiliki Denial Tracking berbasis ambang batas, yang akan secara elegan menurunkan performa dan kembali ke mode Prompting untuk meminta intervensi manusia ketika alat otomatis sering ditolak.
Sistem otoritas dinamis yang menggunakan AI kecil untuk mengawasi AI besar jauh lebih fleksibel dibandingkan aturan blokir statis tradisional.
BAGIAN.08 Beberapa kejutan kecil
Terakhir, banyaknya Feature Flags (seperti VOICE_MODE, SSH_REMOTE, dll.) dan pemeriksaan variabel lingkungan process.env.USER_TYPE === 'ant' dalam kode sumber menunjukkan standar ganda yang diterapkan perusahaan besar dalam pengujian internal dan peluncuran eksternal.
Untuk karyawan internal Anthropic (Ant-only), aturan kode yang disuntikkan ke dalam sistem sangat ketat bahkan hingga bersifat obsesif:
Jangan menambahkan fitur secara sembarangan, jika tidak diminta jangan melakukan重构, tiga baris kode yang serupa lebih baik daripada abstraksi terlalu dini, secara default jangan menulis komentar apa pun kecuali alasan WHY sangat tidak jelas, jika pengujian gagal harus dilaporkan secara jujur.
Sedangkan untuk konstruksi publik eksternal, petunjuk sistem jauh lebih lembut: langsung ke inti masalah, coba metode paling sederhana, dan usahakan sejelas dan sesingkat mungkin.
Perbedaan ini menunjukkan bahwa batas perilaku model besar sebagian besar ditentukan oleh kecenderungan instruksi yang dihardcode.
Perlu dicatat bahwa kode tersebut mencakup dua modul yang menarik.
Mode Sopan (Undercover Mode):
Ini adalah fitur yang kontroversial di kalangan komunitas keamanan.
Untuk skenario di mana karyawan bekerja di repositori open source atau publik, mode ini secara default diaktifkan dan tidak dapat dinonaktifkan secara paksa. Mode ini akan secara jelas meminta model dalam Prompt untuk "Do not blow your cover" (jangan ungkap identitas Anda), serta secara paksa menghapus semua tanda disclaimer atau kode yang dihasilkan oleh AI.
Dari sudut pandang publik relations, ini mungkin tampak kurang transparan, tetapi secara tidak langsung menegaskan kendali mutlak pabrikan terhadap peran model dan intervensi output.
Buddy System (hewan peliharaan elektronik) Easter egg:
Kode sumber menyertakan sistem hewan peliharaan tersembunyi (menghasilkan bebek, burung hantu, dll.).

Untuk menjamin keacakan dan determinisme dalam generasi hewan peliharaan, insinyur menggunakan ID pengguna bersama dengan algoritma generator angka pseudo-acak Mulberry32.
typescript
// 18 spesies: duck, goose, blob, cat, dragon, octopus, owl, penguin, ...
5 tingkat kelangkaan: common (60%), uncommon (25%), rare (10%), epic (4%), legendary (1%)
// Atribut: DEBUGGING, PATIENCE, CHAOS, WISDOM, SNARK
// Aksesori: mahkota, topi tinggi, baling-baling, halo, penyihir, topi rajut, bebek kecil
// Khusus: 1% kemungkinan shiny
Detail paling lucu adalah, karena nama bahasa Inggris dari suatu spesies hewan secara kebetulan sama dengan kode nama model internal Anthropic yang sangat rahasia (mungkin Claude Capybara terkuat yang bocor dua hari lalu).
Untuk melewati deteksi kata terlarang dari scanner kode kepatuhan, insinyur bahkan menggunakan String.fromCharCode() untuk menyusun kata tersebut secara dinamis.
Pendekatan geek yang penuh humor ini tampak unik dalam kode infrastruktur yang sangat serius.
BAGIAN.09 Apa yang bisa kita pelajari?
Dalam waktu singkat, terjadi kebocoran dokumen teknis model inti dan kode sumber aplikasi inti; Anthropic memang perlu melakukan evaluasi mendalam terhadap pengendalian proses internalnya. Namun, teknologi itu tidak bersalah, kode sebanyak 510.000 baris ini merupakan bahan ajar yang sangat baik bagi industri.
Dari desain dasar Claude Code, era kewirausahaan di lapisan aplikasi model besar yang hanya mengandalkan penyusunan Prompt, penumpukan database vektor, dan pembungkusan dengan cangkang siklus sederhana telah berakhir.
Hambatan sejati dibangun atas penghematan ekstrem terhadap biaya Token (optimasi Prompt Cache), penjadwalan aliran untuk koordinasi mesin status ganda (mekanisme Coordinator dan Fork), keseimbangan antara toleransi terhadap niat pengguna dan intervensi keamanan (YOLO Classifier), serta integrasi mendalam terhadap aliran file sistem operasi host.
Saat ini, repositori yang memfork kode sumber ini di GitHub berisiko diturunkan kapan saja karena permintaan DMCA.
Namun bagaimanapun juga, tingkat rekayasa yang ditunjukkan oleh Claude Code telah menetapkan tolok ukur teknis baru untuk produk asisten AI pada tahun 2026.
Praktisi sebaiknya memanfaatkan kesempatan ini untuk secara serius meninjau dan mengadopsi praktik terbaik teknis di dalamnya.
