Mengulik Cara Kerja Agentic Coding

✏️ Edit catatan ini.

Bayangkan teman-teman cukup menulis dan memberi perintah 'Buatkan aplikasi untuk mencatat pengeluaran', lalu tiba-tiba file baru muncul, terminal berjalan sendiri, dan beberapa menit berselang aplikasi sudah siap untuk digunakan. Apakah ini sihir? Bukan, ini Agentic Coding.

Agentic coding tool seperti Claude Code, Codex, Cursor atau yang lainnya, memang rasanya seperti sihir. Sedikit sulit dipercaya, apalagi yang belum merasakan manfaatnya. Bagi yang belum menggunakan, silakan dicoba dalam jangka beberapa waktu. Cepat atau lambat teman-teman akan merasakan daya magisnya.

Tapi di balik layar, semua itu bukanlah sihir. Melainkan sebuah pola yang disebut agentic coding. Di artikel ini, kita tidak hanya akan mengintip ke balik tirai, kita akan belajar bagaimana cara kerjanya dan mempelajari polanya.

Paham cara kerjanya tentu akan membantu kita menggunakan agentic coding dengan lebih efektif dan efisien. Semoga setelah membaca tulisan ini teman-teman bisa mendapat gambaran yang lebih jelas tentang apa itu agent dan apa yang membedakan AI agent dengan AI yang bukan agent.

Sebelum itu, mari kita lihat bagaimana perjalanan asisten ngoding dari awal hingga sekarang.

Dari Tukang Ketik ke Mandor Proyek

Perkakas ngoding dengan AI ini telah melewati evolusi yang cukup cepat. Mulai dari chatbot , autocomplete , coding assistant, hingga sekarang kita memasuki eranya agentic coding.

Chatbot umumnya menggunakan antarmuka web. Ketika butuh bantuan, kita membuka chatgpt.com, claude.ai, gemini.google, dsb. Bertanya tentang topik pemrograman (atau topik apapun), si chatbot memberikan potongan kode yang dibutuhkan. Lalu kita sebagai developer menyalin kode tersebut dan melanjutkan proses pengembangan aplikasi. Dan begitu seterusnya.

Chatbot Web
Chatbot web

Berikutnya muncul fitur autocomplete. Diawali oleh munculnya GitHub Copilot yang diusung oleh Visual Studio Code. Biasanya kita mengetik sesuatu di editor kode lalu AI akan mencoba "menebak" kita maunya apa. Atau autocomplete bisa dipantik dengan menulis komentar kita ingin melakukan apa, lalu AI akan memberikan tebakan terbaiknya.

Autocomplete
Fitur autocomplete

Kemudian berkembang lagi. Dengan kemunculan code editor baru, Cursor, asisten ngoding semakin populer. Sederhananya, ini adalah chatbot yang tadinya diakses dengan web browser sekarang ada langsung di editor kode. Dengan tambahan konteks file yang sedang dibuka sehingga kita tidak perlu copas lagi. Dan beberapa fitur menarik lainnya seperti inline chat, hingga fitur yang mampu memahami proyek secara keseluruhan dengan berbagai metodenya seperti indexing code, repomap dan sebagainya.

Setiap kode yang ditambahkan, tetap ada peran kita sebagai manusia yang melakukan perubahan. Menyimpan perubahan file misalnya. Meskipun biasanya editor kita set untuk melakukan auto save. File baru pun harus kita yang buat.

Coding assistant
Coding assistant

Terakhir, tibalah kita ke era agentic. Jika menggunakan agen, semuanya serba otomatis. Bikin file baru, baca, tulis dan ubah file, menjalankan perintah terminal dan sebagainya bisa dilakukan oleh LLM. Dimulai dari Cursor dan dipopulerkan oleh Claude Code.

Salah satu ciri khas agentic coding ketika diberi perintah, LLM akan merencanakan, membuat langkah demi langkah untuk menyelesaikan perintah terus menerus sampai perintah dianggap sudah selesai. Jadi si agen ini bukan hanya berusaha menyelesaikan perintah tapi seolah ia berpikir, berencana baru mengeksekusi hingga selesai.

Agentic coding
Agentic coding

Cara ini cocok sekali untuk tugas yang kompleks dan sulit dikerjakan dalam sekali tembak. Kok bisa ya tiba-tiba ada LLM yang bisa "mikir", buat rencana lalu eksekusi?

Pola Agentic

Agent atau Agentic berasal dari kata agency. Agency secara harfiah berarti kemampuan untuk bertindak, bukan cuma berpikir
atau memberi saran. Atau dengan kata lain punya inisiatif.

LLM tanpa agen layaknya AI dalam tempurung. Jago ngomong, pengetahuan luas, walaupun terbatas (cut off). Meski pintar menjawab pertanyaan kita, tapi LLM tidak bisa berbuat apa-apa, tidak bisa mengingat apapun dan tidak mampu memutuskan jika diberi pilihan. Tidak bisa membaca file, menulis file bahkan tidak tahu tanggal dan jam berapa saat ini.

Ilustrasi LLM
Ilustrasi LLM: AI dalam tempurung

LLM adalah mesin prediksi token. Berusaha menyelesaikan teks dengan probabilitas tertinggi. Termasuk juga autocomplete kode, yang adalah teks. Kemampuan dasar LLM adalah menghasilkan teks, tidak dapat mengetahui apa yang terjadi disekitarnya. Tidak tahu tanggal dan jam saat ini, baca dan tulis file, bahkan percakapan terdahulu pun LLM tidak ingat. Kecuali diberi akses untuk mendapatkan informasi tanggal dan jam saat ini, akses untuk baca dan tulis file atau menyertakan percakapan terdahulu.

Jadi sebenarnya LLM itu bukan kurang pintar, cuma kurang diberi akses saja.

LLM + Tools
LLM + Tools

Jadi gimana caranya supaya LLM punya inisiatif? Persenjatai LLM dengan perkakas atau tools. Mulai dari yang sederhana seperti kasih akses untuk ngecek jam dan tanggal, ngecek kurs atau cuaca hingga memberikan akses untuk baca dan tulis file.

LLM dengan perkakas ini, ditambah perkakas untuk menyimpan percakapan dan kemampuan untuk menentukan pilihan perkakas mana yang cocok, dan berjalan terus-menerus hingga tugas selesai itulah yang disebut sebagai AI Agent.

Agentic looping
Agentic looping

Dengan kata lain, LLM disebut sebagai agen atau agentic jika LLM berjalan terus-menerus (loop) yang dapat melakukan observasi apa yang sedang dikerjakan, disediakan perkakas untuk bekerja dan punya kemampuan untuk memutuskan kapan sebuah pekerjaan dinyatakan selesai.

Agentic Looping

Tiga Komponen Utama

Ada tiga komponen utama dalam Agentic AI, yaitu: perkakas, memori dan reasoning loop. Mari kita bahas satu-per-satu.

Perkakas

Memberikan kemampuan kepada LLM. Misalnya kemampuan mendapatkan informasi tanggal dan jam saat ini, cuaca di sebuah kota, harga emas terkini, hingga mengoperasikan file seperti baca dan tulis bahkan kita bisa memberikan kemampuan untuk menjalankan perintah bash.

Memori

Memberikan daya ingat, jangka panjang ataupun jangka pendek akan membuat LLM semakin terlihat "pintar". LLM bisa paham siapa yang sedang berbicara, tugas apa yang ingin diselesaikan karena setiap percakapan baru ditambahkan ke dalam memori. Mulai dari yang paling sederhana, menambahkan ke struktur data array dan mengirimkan kembali histori percakapan hingga yang canggih seperti database eksternal.

Kita bisa saja setiap kali ingin mengirimkan perintah selalu menyertakan percakapan terdahulu. Namun dalam jangka panjang hal ini menjadi melelahkan dan membuat LLM menjadi terlihat "bodoh". Atau bahkan membuat LLM bingung karena kebanyakan konteks.

Hal ini terjadi karena LLM memiliki batasan pandangan yang disebut Context Window. Bayangkan context window seperti meja kerja. Memori adalah lemari arsip yang penuh dengan dokumen. Kita tidak bisa menumpuk semua isi lemari ke atas meja sekaligus karena mejanya akan penuh, berantakan, dan kita malah tidak bisa bekerja.

Ilustrasi meja yang penuh dokumen
Ilustrasi meja yang penuh dokumen. Dibuat oleh AI.

Di sinilah Context Engineering berperan. Jika memori adalah tentang apa yang disimpan, maka context engineering adalah tentang bagaimana kita memilih dan menyusun informasi tersebut agar LLM tetap fokus. Tanpa pengelolaan konteks yang baik, LLM akan kehilangan arah, bingung lalu mulai mengabaikan instruksi yang berada di tengah-tengah percakapan yang terlalu panjang.

Reasoning Loop

Dan yang tidak kalah penting adalah kemampuan LLM dalam menentukan dan memilih perkakas yang mana yang cocok digunakan ketika ada permintaan dari pengguna. Misalnya, ketika pengguna bertanya tentang jam berapa, LLM dapat memutuskan untuk menggunakan perkakas jam dan tanggal, bukan malah baca atau tulis file.

Dan LLM juga punya kemampuan untuk terus menerus berusaha untuk menyelesaikan pekerjaannya. Hal inilah yang menjadi pembeda. Sebelum model Sonnet versi 3.7, LLM sulit sekali diajak looping. Meskipun sudah diinstruksikan secara eksplisit kadang LLM memutuskan berhenti sebelum tuntas.

Proses berpikir ini sering disebut sebagai Chain of Thought. LLM diinstruksikan untuk berpikir dan ngomong sendiri untuk merencanakan langkah-langkah untuk menyelesaikan sebuah tugas. Ketika digabung dengan perkakas lainnya, bisa menjelma menjadi sebuah framework seperti ReAct (Reason + Act) yang lebih powerful. Reasoning loop ini adalah "nyawa" dari agentic coding.

Proses berpikir ala LLM
Proses berpikir ala LLM

Praktek Membuat Agentic Coding Tool

Mari kita praktekkan langkah demi langkah. Berhubung LLM chatbot saat ini sudah dilengkapi oleh banyak perkakas, kita bisa bertanya tanggal dan jam saat ini dan LLM mampu menjawab dengan akurat. Karena itu kita akan membuat LLM chatbot dari awal dengan menggunakan REST API.

Gemini
Bertanya tentang jam dan tanggal.

Untuk itu, kita perlu membangun chatbot sederhana. Dengan memanfaatkan REST API, kita bisa memberi instruksi sederhana dalam satu kesempatan (one shot) dan LLM akan mengirimkan respons. Contohnya bisa menggunakan beberapa penyedia jasa LLM seperti Google, Anthropic, OpenAI dan sebagainya. Untuk contoh disini akan menggunakan Google dan Gemini 3 Flash sebagai pilihan modelnya. Silakan ganti URL, model dan variable API_KEY jika ingin menggunakan penyedia jasa LLM lain.

Kali ini kode menggunakan bahasa fungsional Elixir. Silakan kirim komentar dibawah jika ingin melihat dengan bahasa pemrograman lain.

defmodule Mbb do
  @model "gemini-3-flash-preview"
  @system_prompt """
  You are an excellent principal engineer. You love programming language. \
  Your favorite language is Elixir and you always write code in functional paradigm. \
  You always answer in a concise and precise manner. Answer in 1-3 sentences maximum. No preamble, no summary.\
  """

  defp api_url do
    api_key = System.get_env("API_KEY") || ""

    "https://generativelanguage.googleapis.com/v1beta/models/#{@model}:generateContent?key=#{api_key}"
  end

  defp send(message) do
    api_url()
    |> Req.post(
      json: %{
        system_instruction: %{parts: [%{text: @system_prompt}]},
        contents: [%{role: "user", parts: [%{text: message}]}],
        generationConfig: %{
          maxOutputTokens: 1_000,
          temperature: 0.0,
          thinkingConfig: %{
            thinkingLevel: "MEDIUM"
          }
        }
      }
    )
    |> handle_response()
  end
  
  # ... kode selanjutnya
  
end

🐙 Kode lengkap bisa diintip di GitHub


Sekarang coba kita jalankan untuk menanyakan tanggal dan jam saat ini.

$ mix escript.build # compile
Generated escript mbb

$ ./mbb "Tanggal dan jam berapa sekarang?"
Saat ini adalah Rabu, 22 Mei 2024, pukul 08:50 UTC.

Halu kan?! Saat menulis ini saya berada di tahun 2026. Ini bukanlah trik mesin waktu. Lebih kepada LLM belum diberi akses untuk mendapatkan informasi tanggal dan jam sehingga LLM terpaksa berbohong. Karena memang di desain seperti itu, untuk memastikan tugasnya selesai walaupun keliru.

Kesimpulan

Agentic coding itu bukan sulap bukan sihir. Agentic merupakan pola kerja. LLM pada dasarnya hanyalah mesin prediksi token: jago menebak kelanjutan teks, tapi “buta” terhadap dunia nyata kalau tidak diberi akses apa pun. Begitu kita lengkapi LLM dengan perkakas (bisa baca/tulis file, cek waktu, jalanin perintah), kita beri daya ingat (supaya tidak gampang lupa), dan kita bantu LLM bekerja dalam reasoning loop (merencanakan → mengeksekusi → mengamati → mengulang), barulah ia terlihat punya agency: bisa bertindak, bukan cuma menjawab.

Contoh paling sederhana adalah pertanyaan “jam berapa sekarang?” Tanpa diberi akses untuk mendapatkan informasi waktu, LLM bisa saja menjawab dengan percaya diri tapi keliru. Bukan karena bodoh, melainkan karena tidak punya cara untuk memverifikasi. Di sinilah inti agentic: kualitas output bukan cuma ditentukan oleh “seberapa pintar modelnya”, tapi juga oleh akses, batasan, dan mekanisme verifikasi yang kita desain. Setelah paham pola ini, kita bisa menggunakan agentic coding tools lebih efektif.

Perkakas yang diberikan bisa apa saja, namun untuk "menyulap" LLM agar menjadi lebih punya inisiatif atau agentic, LLM perlu setidaknya tiga komponen utama:

Di bagian berikutnya kita akan bikin versi minimal agentic coding tool melanjutkan aplikasi chatbot sederhana yang tadi sudah kita bahas.

Referensi