16.3 Terminal dan Repositori yang Bisa Diajak Bicara
Rina sudah memahami file yang ia buka. Tapi bug yang dilaporkan tidak hanya melibatkan satu file. Ia harus melihat bagaimana fungsi itu dipanggil dari modul lain, bagaimana data mengalir dari controller ke service ke repository, dan apakah ada efek samping di tempat lain. Ini bukan lagi pekerjaan yang bisa diselesaikan hanya dengan melihat satu file di editor.
Biasanya, Rina akan membuka terminal, mencari tahu di mana fungsi itu dipanggil dengan grep, membaca beberapa file sekaligus, lalu mencoba merekonstruksi alur di kepalanya. Butuh waktu. Dan semakin besar codebase, semakin besar pula celah antara apa yang ia ingat dan apa yang sebenarnya terjadi di kode.
Di sinilah AI di level repositori mulai berguna. Bukan hanya sebagai pelengkap editor, tetapi sebagai agen yang bisa membaca seluruh codebase, menjawab pertanyaan tentang hubungan antarmodul, dan bahkan membuat perubahan kecil secara mandiri.
Rina bisa bertanya langsung di terminal: “Cari semua tempat yang memanggil fungsi validateOrder dan perlihatkan parameter yang dikirim.” AI yang terhubung ke repositori akan membaca indeks kode, melacak referensi, dan menampilkan hasilnya dalam hitungan detik. Tidak perlu membuka file satu per satu. Tidak perlu menggrep manual dan menyaring baris yang tidak relevan.
Berikut contoh bagaimana Rina mengetikkan perintah tersebut di terminal dan melihat hasilnya.
# Contoh perintah ke AI repositori
$ ai "Cari semua tempat yang memanggil fungsi validateOrder dan perlihatkan parameter yang dikirim"
# Output yang dihasilkan AI:
# File: src/controllers/orderController.js:45
# pemanggil: validateOrder(req.body)
# parameter: { userId, items, shippingAddress }
#
# File: src/services/orderService.js:112
# pemanggil: validateOrder(orderData, userProfile)
# parameter: { orderId, totalAmount, discountCode }
#
# File: src/tests/orderTest.js:23
# pemanggil: validateOrder(mockOrder)
# parameter: { productList, quantity }
Berikut adalah diagram yang menggambarkan alur interaksi tersebut.
Yang lebih menarik, AI ini bisa membuat patch. Ketika Rina menemukan bahwa sebuah fungsi perlu ditambahkan parameter baru, ia tidak perlu mengedit semua pemanggil satu per satu. Ia bisa meminta AI untuk melakukannya: “Tambah parameter currency ke fungsi calculateTax dan sesuaikan semua pemanggilnya.” AI akan membaca struktur kode, mengidentifikasi semua lokasi yang perlu diubah, membuat perubahan, lalu menampilkan diff-nya sebelum Rina memutuskan untuk menerima atau menolak.
Tentu ada batasnya. AI tidak bisa memahami logika bisnis yang rumit, tidak bisa menilai apakah perubahan itu aman secara domain, dan tidak bisa menggantikan keputusan arsitektural. Tapi untuk tugas-tugas yang mekanis dan berulang — mengganti parameter, merapikan import, menambahkan logging, memperbaiki tipe data — AI di repositori bisa menjadi asisten yang sangat cepat.
Kemampuan lain yang langsung terasa adalah merangkum diff. Ketika Rina selesai membuat perubahan di beberapa file, ia bisa meminta AI untuk membuat ringkasan: “Apa yang berubah di pull request ini?” AI akan membaca semua file yang dimodifikasi, mengelompokkan perubahan berdasarkan fungsinya, dan menulis deskripsi yang bisa langsung ditempel ke commit message atau review request. Tidak perlu lagi menulis “fix bug” sebagai pesan commit.
Debugging terbatas juga bisa dilakukan. Jika test gagal, Rina bisa memberikan log error ke AI dan bertanya: “File mana yang paling mungkin menyebabkan error ini?” AI tidak bisa menjalankan debugger, tapi ia bisa membaca stack trace, mencocokkan dengan kode yang relevan, dan menunjuk ke lokasi yang mencurigakan. Ini bukan solusi ajaib, tapi bisa mempersempit area pencarian dari dua puluh file menjadi dua atau tiga.
Yang perlu diingat: AI di repositori bekerja berdasarkan apa yang sudah ada di kode. Ia tidak tahu konteks bisnis, tidak tahu rencana jangka panjang, dan tidak tahu mengapa sebuah keputusan arsitektural diambil di masa lalu. Ia adalah pembaca yang cepat, bukan pengganti pemahaman manusia.
Tapi bagi Rina, memiliki asisten yang bisa membaca seluruh codebase dalam hitungan detik, membuat patch untuk perubahan mekanis, dan merangkum diff dengan rapi — itu sudah mengubah cara ia bekerja. Waktu yang dulu ia habiskan untuk navigasi dan koreksi manual, sekarang bisa ia gunakan untuk berpikir: apakah perubahan ini sudah benar secara arsitektur? Apakah ada efek samping yang tidak terlihat? Apakah ini keputusan yang tepat untuk jangka panjang?
Editor yang mengerti konteks membantu Rina saat bekerja di satu file. AI di repositori membantunya saat bekerja di seluruh codebase. Tapi masih ada satu level lagi yang perlu dijelajahi: bagaimana AI bisa membantu bukan hanya saat menulis atau membaca kode, tetapi saat merancang keputusan arsitektural. Di situlah peran AI sebagai asisten arsitek mulai terasa.