Anatomi Frustrasi: Mengapa Copilot Sidebar Gagal di Monorepo Besar

Bayangkan Anda bekerja di sebuah perusahaan teknologi yang mengelola satu repositori raksasa—sebuah monorepo berisi jutaan baris kode. Di sana, layanan autentikasi berbasis Go berdampingan dengan frontend React, modul microservices Python, dan pustaka utilitas TypeScript yang dibagikan ke puluhan tim. Suatu pagi, arsitek sistem memutuskan untuk mengubah kontrak API global. Perubahan ini memerlukan modifikasi pada 140 file yang tersebar di enam direktori berbeda.

Anda membuka editor, menyalakan ekstensi AI di bilah samping (sidebar), lalu mengetik perintah lugas: "Tolong perbarui semua pemanggilan fungsi fetchUserData agar menerima parameter objek baru."

Apa yang terjadi berikutnya adalah sebuah teater absurd. Ekstensi tersebut memindai beberapa file secara serampangan, menghasilkan potongan kode yang tampak meyakinkan, namun ketika Anda menekan tombol Accept, kode di file ke-42 rusak karena AI lupa mengimpor modul tipe data terkait. Lebih parah lagi, token Anda habis terkuras untuk mengirimkan seluruh isi file yang sebenarnya tidak relevan. Anda menghabiskan dua jam berikutnya hanya untuk melakukan git checkout dan memperbaiki kekacauan yang dibuat oleh asisten digital Anda sendiri.

Masalah utamanya bukan terletak pada seberapa pintar model bahasanya (GPT-4o atau Claude 3.5 Sonnet sudah lebih dari cukup cerdas). Masalahnya ada pada antarmuka dan manajemen konteks. Kebanyakan alat bantu AI dirancang dengan asumsi naif: bahwa seluruh repositori Anda dapat dimasukkan ke dalam jendela konteks tanpa strategi, atau bahwa Anda ingin melihat kode baru di panel obrolan terpisah alih-alih langsung di dalam riwayat proyek.

Di sinilah Aider masuk sebagai antitesis. Alih-alih memperlakukan AI sebagai penasihat pasif di pinggir layar, Aider mendesain ulang interaksi manusia dan mesin langsung di dalam teras paling suci seorang programmer: terminal dan sistem kendali versi Git.


Bedah Jeroan Aider: Bagaimana Git dan Tree-Sitter Berkolaborasi

Aider bukanlah sekadar pembungkus API OpenAI atau Anthropic yang dicetak dengan antarmuka baris perintah. Ia adalah sebuah agen otonom berbasis state-machine yang memahami dua hal mendasar dalam rekayasa perangkat lunak modern: riwayat perubahan (git) dan struktur sintaksis kode (tree-sitter).

Arsitektur Git-Native

Bagi Aider, Git bukan sekadar alat cadangan setelah kode selesai ditulis. Git adalah runtime environment itu sendiri. Setiap kali Aider melakukan perubahan pada basis kode Anda, ia tidak langsung menulis ke file lalu lepas tangan. Alurnya berjalan presisi:

  1. Aider membaca instruksi Anda.
  2. Ia memilih file mana saja yang perlu dimasukkan ke dalam konteks.
  3. Ia memodifikasi file tersebut.
  4. Secara otomatis, ia mengeksekusi perintah git diff untuk memeriksa apakah perubahan tersebut logis.
  5. Jika uji coba atau sintaks gagal, ia melakukan iterasi mandiri.
  6. Begitu tugas selesai, ia langsung melakukan commit dengan pesan yang deskriptif dan akurat sesuai konvensi repositori Anda.

Pendekatan ini mengubah paradigma. Jika AI membuat kesalahan fatal, Anda tidak perlu pusing mencari tombol undo atau memeriksa ulang ratusan baris secara manual. Cukup ketik /undo, dan repositori Anda kembali bersih seperti sedia kala. Hubungan antara programmer, AI, dan Git menjadi simbiotik: AI bertindak sebagai tangan kedua yang cepat, sementara Git bertindak sebagai rem pengaman yang absolut.

Ast/Tree-Sitter Tags Mapping: Peta Buta Menjadi Terang

Tantangan terbesar dalam merefaktor monorepo bukan pada menulis kodenya, melainkan pada pemahaman dependensi. Mengubah nama sebuah fungsi di file auth.ts bisa merusak fungsi lain di direktori billing/ yang mengimpornya secara tidak langsung.

Jika Anda mengirim seluruh isi monorepo ke LLM, Anda akan menghadapi dua tembok besar: biaya token yang membengkak luar biasa dan penurunan akurasi model akibat fenomena lost in the middle (informasi penting terabaikan di tengah tumpukan data teks yang masif).

Aider mengatasi hal ini dengan memanfaatkan Tree-Sitter, sebuah pustaka pengurai sintaksis inkremental (incremental parsing library). Alih-alih mengirim seluruh file, Aider memindai repositori secara lokal dan membangun sebuah Repository Map


Catatan Penulis

Sandra
Sandra

> Sandra menulis seputar rekayasa prompt, efisiensi arsitektur AI, dan produk digital di AiStudio.id.