- "Eksperimen membingungkan yang mengubah cara berpikir tentang analisis kode oleh AI"
- Menyaksikan situasi ketika AI yang ada sering gagal saat menganalisis codebase React
- Menyadari bahwa penyebabnya adalah cara analisis yang hanya melihat per baris, seperti ketika developer junior pertama kali membaca kode
Masa bootcamp dan perbedaan pola pikir senior
- Saat masih junior, sering membaca file secara berurutan, baris demi baris, lalu cepat kehilangan arah
- Developer senior saat melihat PR berskala besar menggunakan pendekatan seperti berikut
- Memeriksa file inti terlebih dahulu
- Mengelompokkan perubahan berdasarkan fitur
- Memahami arsitektur keseluruhan terlebih dahulu, lalu meninjau implementasi detailnya
- Diputuskan untuk menerapkan pendekatan ini pada AI
Eksperimen
- Mencoba metode mengelompokkan file berdasarkan fungsi, lalu lebih dulu memberi AI informasi konteks tentang grup tersebut
- Dalam kode contoh, mendefinisikan interface
FileGroup dan memproses file dengan mengelompokkannya menurut fitur terkait dan ukuran file
- Menyusun prompt untuk AI per grup, seperti panduan tentang "area fitur apa ini dan hal apa yang perlu menjadi fokus peninjauan"
Momen perubahan yang mengejutkan
- Sebelumnya AI hanya memberi respons sederhana seperti "terdapat logika autentikasi token JWT"
- Lalu mulai memberikan wawasan setingkat developer senior seperti "dampaknya terhadap koneksi WebSocket" dan "kemungkinan race condition pada PR yang baru saja digabung"
- AI mulai menunjukkan temuan dengan mempertimbangkan konteks seluruh sistem
Apa yang benar-benar berubah
- Kuncinya bukan memakai model machine learning yang lebih kompleks, melainkan memberi AI urutan berpikir seperti developer senior
- Konteks lebih dulu: mulai dari memahami keseluruhan sistem
- Pattern matching: mengelompokkan file yang serupa untuk menemukan logika yang berulang
- Analisis dampak: mengenali pengaruh perubahan terhadap keseluruhan sistem
- Memahami histori: menelusuri alasan atau konteks perubahan kode di masa lalu
Efek samping yang tak terduga
- Bukan hanya memperbaiki titik yang diinginkan, tetapi juga menangkap insight seperti berikut
- Mengidentifikasi blok kode duplikat akibat copy-paste
- Memperingatkan pola penanganan error yang tidak konsisten
- Menemukan potensi bottleneck performa
- Mengusulkan perbaikan arsitektur berdasarkan pola penggunaan
Mengapa ini penting
- IDE berbasis AI belakangan ini berfokus pada pembuatan kode secara otomatis
- Namun, sekadar memberi saran tanpa konteks seluruh sistem bisa berbahaya, seperti "developer junior yang baru bergabung"
- Hal yang benar-benar penting adalah "pemahaman kode yang mendalam"
Pertanyaan yang masih tersisa
- Masalah menentukan kapan konteks (informasi historis) harus diperbarui dan kapan harus dipertahankan
- Cara merespons ketika ditemukan pola-pola yang saling bertentangan
- Cara menandai hasil analisis dengan tingkat ketidakpastian tinggi kepada pengguna
Arah selanjutnya
- Sedang memikirkan apakah AI juga bisa diajari kepekaan berikut seperti developer senior
- Kemampuan mendeteksi utang teknis lebih awal
- Kapabilitas mengusulkan perbaikan arsitektur secara proaktif
- Kemampuan mendeteksi masalah keamanan dari pola penggunaan
- Kepekaan memahami aturan informal di dalam tim
- Tujuan akhirnya bukan sekadar menghasilkan "lebih banyak kode", tetapi mengajarkan "cara memahami keseluruhan kode secara mendalam seperti developer senior"
3 komentar
Pertanyaan yang layak diajukan untuk analisis dan perbaikan codebase bukankah sudah cukup baku? Penulisnya tampak terlalu bersemangat.
Sepertinya konteksnya mirip dengan saat menjelaskan keseluruhan proyek dari Cursor ke Notepad.
Pendapat Hacker News
Orang-orang di komentar bersikap kritis. Tulisan ini membahas hasil singkat dan positif tentang kemungkinan alat baru, serta memuat pemikiran yang jujur dan masuk akal
Ini contoh lain dari hal menakjubkan yang bisa dilakukan LLM. Namun, membangun sistem yang bekerja secara konsisten dan akurat untuk semua masukan sangatlah sulit
Sepertinya ada pelajaran untuk sistem agen yang lebih baik dalam penulisan kode
Saya merasa seperti alien saat membaca baris pertama tulisan itu. Saya memang perlu membaca seluruh tulisannya, tetapi membaca kode yang sudah ada secara berurutan terasa aneh
Menekankan pentingnya unsur manusia. Tanpa pemahaman kontekstual terhadap codebase, sulit mengetahui arti peringatan dari AI
Sulit mencegah AI mengarang API yang sebenarnya tidak ada. Saat berhasil, hasilnya bagus, tetapi sebagian besar waktu tidak berjalan baik
Konteks dan pemahaman kode penting untuk meningkatkan kualitas kode yang dihasilkan LLM
Seperti keluhan John McCarthy, ini adalah cerita, bukan eksperimen atau pembuktian
Hasilnya mengesankan. Ada kritik soal gaya dan konsistensi, tetapi hasilnya terlihat berguna
Rasanya bagian penting dari teknik ini hilang dari tulisan. Implementasi
getFileContext()danshouldStartNewGroup()tidak ada