- Struktur inti asisten coding AI bukanlah sihir yang rumit, melainkan terdiri dari sekitar 200 baris kode Python sederhana
- Sistem ini berbasis loop percakapan dengan LLM; ketika LLM meminta pemanggilan tool, kode lokal mengeksekusinya lalu mengirimkan hasilnya kembali
- Tiga tool dasar yang dibutuhkan adalah membaca file (read), melihat daftar file (list), dan mengedit file (edit), yang memungkinkan penjelajahan proyek dan modifikasi kode
- LLM menentukan sendiri tool apa yang harus dipanggil dan kapan, berdasarkan signature dan deskripsi (docstring) dari tiap tool
- Struktur ini sama dengan inti produk komersial seperti Claude Code, dan bahkan struktur sederhana pun bisa mewujudkan agen coding yang kuat
Konsep dasar agen coding
- Agen coding adalah sistem berbasis percakapan dengan LLM yang menerima perintah pengguna lalu melakukan operasi file nyata melalui pemanggilan tool
- Pengguna memasukkan permintaan seperti “buat file baru yang berisi fungsi hello world”
- LLM merespons dalam format JSON untuk pemanggilan tool yang diperlukan
- Program menjalankan tool tersebut dan mengirimkan hasilnya kembali ke LLM
- LLM tidak mengakses sistem file secara langsung; ia hanya membuat permintaan, sedangkan pekerjaan sebenarnya ditangani oleh kode lokal
Tiga tool yang dibutuhkan
- read_file: membaca seluruh isi file yang ditentukan dan mengembalikannya
- list_files: mengembalikan daftar file dan folder di dalam direktori
- edit_file: mengganti string lama dengan string baru, atau membuat file baru jika
old_str kosong
- Jika string yang akan diganti tidak ditemukan, mengembalikan “old_str not found”
- Dengan hanya tiga tool ini, pembuatan, pengeditan, dan penelusuran file sudah bisa dilakukan
Registrasi tool dan integrasi LLM
- Semua tool didaftarkan di TOOL_REGISTRY dengan nama dan fungsi agar bisa dipanggil oleh LLM
- Docstring dan signature dari setiap tool diekstrak lalu dikirim ke LLM
- System prompt memberi tahu LLM dengan jelas tentang “daftar tool yang tersedia” dan “format pemanggilan”
- Pemanggilan tool dibatasi pada format
'tool: TOOL_NAME({JSON_ARGS})'
- Hasil eksekusi tool dikirim ke LLM dalam bentuk
tool_result(...)
Parsing pemanggilan tool dan pemrosesan respons LLM
- Dari respons LLM, sistem mencari baris yang diawali
tool: lalu mengekstrak nama tool dan argumennya (JSON)
- Setelah setiap tool dijalankan, hasilnya diserialisasi ke JSON dan ditambahkan ke riwayat percakapan
- Fungsi execute_llm_call memanggil API LLM dan mengembalikan teks respons
- run_coding_agent_loop menerima input pengguna dan mempertahankan loop percakapan dengan LLM
- Loop internal terus berulang sampai LLM tidak lagi meminta pemanggilan tool
Contoh eksekusi dan kemungkinan pengembangan
- Contoh percakapan:
- “buat file hello.py dan implementasikan hello world” → membuat file baru lewat pemanggilan
edit_file
- “tambahkan fungsi untuk mengalikan dua angka di hello.py” → memanggil
read_file lalu edit_file
- Asisten coding yang lengkap bisa diimplementasikan hanya dengan sekitar 200 baris kode
- Produk komersial menambahkan hal-hal seperti penanganan error, respons streaming, manajemen konteks, tool tambahan, dan prosedur persetujuan
- Namun struktur intinya tetap sama: loop sederhana di mana LLM memutuskan dan kode mengeksekusi
Praktik dan pengembangan lebih lanjut
- Seluruh source hanya sekitar 200 baris, dan dapat diperluas dengan mengganti penyedia LLM lain atau menambahkan tool
- Bahkan dengan struktur sederhana, kita bisa langsung membangun prototipe agen coding AI yang kuat
1 komentar
Opini Hacker News
Yang ingin saya tambahkan adalah planning
Kunci penggunaan alat yang efektif adalah menyadari bahwa semuanya bekerja di atas daftar TODO dinamis
Mode Plan berfungsi untuk melakukan bootstrap pada bagaimana daftar itu di-seed dan kapan tiap item dijalankan
Interaksi pengguna bekerja dengan cara menyusun ulang daftar tersebut
Bulan lalu saya bereksperimen melihat seberapa baik Claude Code menyelesaikan soal CTF, dan saat alat TodoList serta planning dimatikan, performanya turun 1–2 tingkat
Untuk videonya, lihat Breaking Bots: Cheating at Blue Team CTFs with AI Speed Runs
Yang menarik, banyak orang hanya fokus pada “pakai mode plan atau tidak”, padahal daftar TODO selalu aktif
Selain itu, agak lucu melihat tulisan yang meremehkan “manajemen konteks cerdas” sebagai sekadar item TODO sederhana
Banyak juga yang mencoba mengimplementasikannya sendiri lalu membuang 1 tahun karena hasil evaluasi yang rusak di lingkungan produksi
Ini memang bisa saja ditambahkan sebagai reasoning token, tetapi dalam praktiknya jauh lebih bisa diprediksi dan efektif jika diimplementasikan sebagai alat penyimpanan eksplisit dengan satu kunci
Rasanya pendekatan sesederhana ini juga bisa berhasil untuk ide alat lain yang menyimpan struktur bahasa
Saat menguji Codex, saya meluangkan sekitar 10 menit merapikan spesifikasi dan membaginya menjadi daftar perubahan, lalu menyuruhnya menyimpan itu ke file dan meninjau serta merevisi rencana setelah tiap perubahan
Dengan begitu, LLM bisa tetap fokus pada pekerjaan pendek yang berorientasi tujuan tanpa perlu input prompt terus-menerus
Efeknya pada dasarnya mirip seperti memiliki subagen
Terkadang saya juga mengarahkan agar todo terakhir berbunyi “tinjau ulang seluruh pekerjaan dan periksa kualitasnya dengan linter dan sebagainya”
Saat kompresi konteks, itu juga dipakai sebagai representasi ringkas dari sesi
Inti agen coding sebenarnya hanyalah loop dan struktur pemanggilan alat yang sederhana
Tetapi kalau mau menulis artikel seperti “The Emperor Has No Clothes: How to Code Claude Code in 200 Lines of Code”, wajib melihat How to Build an Agent dari Thorsten Ball
Artikel itu yang pertama kali mengemukakan gagasan bahwa “hakikat agen itu sederhana”
Tentu saja dalam praktiknya dibutuhkan TODO dan berbagai scaffolding, dan Claude Code sendiri juga punya banyak konfigurasi kompleks, plugin, dan fitur UI
Meski begitu, dengan loop minimal saja kita tetap bisa melakukan bootstrap agar ia memperluas fungsinya sendiri
Kalau ingin melihat cara kerjanya di dalam, claude-trace bisa digunakan untuk melacak interaksi antara LLM dan pemanggilan alat
Di luar loop sederhana, ada banyak elemen kompleks seperti uuid threading, pemrosesan message queue, snapshot perubahan file, dan sidechain subagen
Jadi “200 baris” benar secara konseptual, tetapi pada level produksi nyata jauh lebih kompleks
Codex memang belum punya fitur queueing, tetapi tetap kuat
Saya membuat aplikasi macOS bernama Contextify untuk memantau transkrip CLI Claude Code dan Codex secara real-time, serta memungkinkan riwayat percakapan ditanyakan lewat fitur Total Recall
Model Claude dilatih dengan skema alat str replace miliknya sendiri
Menulis ulang seluruh file tidak efisien, jadi revisi parsial adalah kuncinya
Sebenarnya ada lebih banyak elemen lagi
Misalnya, ada kasus ketika agen mengalami early stopping lalu mengakhiri tugas begitu saja
Ini tidak terselesaikan bahkan dengan model reasoning terbaru
Claude Code mengatasinya dengan menyuntikkan TODO ke setiap prompt untuk mengingatkan pekerjaan yang masih tersisa
Repositori publik HolmesGPT memiliki berbagai benchmark eksperimen
Konsep “cukup beri LLM daftar alat dan format pemanggilannya” awalnya terasa mengejutkan
Saya sempat berpikir, bagaimana mungkin LLM yang hanya menghasilkan teks bisa memanggil alat, tetapi saat sadar bahwa memang hanya itu yang terjadi, rasanya seperti sihir
Saat liburan saya membuat agen coding berbasis DSL Prolog dengan Opus (jumlahnya lebih dari 200 baris)
Yang mengejutkan, itu hampir langsung bekerja dengan baik
Model generasi terbaru tampaknya sudah mencapai tahap di mana pentingnya agent harness berkurang
Untuk eksperimen terkait, lihat posting ini
Setahun lalu artikel ini cukup akurat, tetapi sekarang harness sudah jauh lebih berkembang sehingga model loop sederhana sulit menjelaskan perilaku nyata Claude Code
Bahkan agen sederhana pun tidak terlalu berbeda performanya jika memakai model yang sama
Mirip seperti tutorial “membuat DB sendiri” yang memperlihatkan B-tree dasar
Subagent, MCP, dan Skills ada di tingkat menengah, sedangkan optimasi konteks hanya benar-benar berarti untuk eksekusi jangka panjang
Saya membangun sendiri agent loop untuk penggunaan enterprise dan memproses lebih dari 1 miliar token per bulan
Loop sederhana memang inti utamanya, tetapi di lingkungan nyata banyak detail yang membuat kompleksitas meledak
Misalnya bagaimana memproses loop ketika pengguna mengirim pesan di tengah jalan, bagaimana menyinkronkan input webhook seperti Slack,
serta hal-hal seperti persetujuan, guardrail, dan pemrosesan task asinkron
Saya sempat berpikir untuk merangkum pengalaman ini dalam sebuah blog
Bacaan referensi yang layak dilihat adalah You Should Write An Agent dan How To Build An Agent
Tim SWE-bench kami merilis agen open-source 100 baris
Namanya mini-swe-agent, dan populer baik di akademia maupun industri
Ini titik awal yang bagus untuk mempelajari dunia agen
Pada 2023 ada artikel berjudul “mengimplementasikan ulang LangChain dalam 100 baris”
Saya melihat artikel itu, lalu benar-benar mengimplementasikannya dan memakainya di beberapa proyek