Saya Membangun Generator Pesan Commit Git Berbasis AI
Dulu saya sering menulis pesan commit yang buruk seperti "fixed bug" atau "updated stuff." Hal ini membuat pull request saya berantakan. Saya memutuskan untuk mengotomatiskannya menggunakan AI. Saya ingin menghasilkan pesan commit yang bersih dan konvensional dari diff kode saya.
Ternyata ini lebih sulit dari yang saya bayangkan. Prompt sederhana saja tidak cukup.
Upaya awal saya gagal karena banyak alasan:
- AI menulis paragraf panjang alih-alih baris pendek.
- AI mengabaikan awalan "feat:" atau "fix:" yang diwajibkan.
- AI berhalusinasi tentang fitur yang sebenarnya tidak ada di dalam kode.
- Model lokal terlalu lambat dan menulis dengan gaya puitis yang tidak berguna.
Akhirnya saya membangun sistem hibrida yang berhasil. Berikut adalah struktur yang saya gunakan:
- Klasifikasi Tipe: Saya meminta model untuk memilih tipe seperti feat, fix, atau chore sebelum menulis pesan.
- Pemotongan Konteks: Saya hanya mengirimkan 250 baris pertama dari diff. Ini menghemat biaya dan menjaga fokus tetap tajam.
- Validasi: Saya menggunakan regex untuk memeriksa output. Jika pesannya salah, skrip akan mencoba lagi.
- Temperatur Rendah: Saya mengatur temperatur ke 0.2. Ini membuat output menjadi konsisten dan membosankan. Sesuatu yang membosankan justru bagus untuk log.
Saya tidak menggunakan commit hook otomatis. AI bisa melakukan kesalahan. Saya menjalankan skrip tersebut sebagai git alias. Skrip akan menyarankan pesan, lalu saya meninjaunya sebelum melakukan commit. Peninjauan manual adalah asuransi terbaik untuk menghindari riwayat git yang buruk.
Tiga pelajaran yang saya dapatkan:
- Batasan token adalah musuh Anda. Diff yang besar akan merusak anggaran atau prompt Anda.
- Validasi itu wajib. Tanpanya, Anda akan mendapatkan hasil yang tidak masuk akal.
- Kecepatan itu penting. Saya menggunakan GPT-4o-mini karena cepat dan murah.
Jika Anda mengerjakan kode yang sensitif, jangan kirim diff Anda ke API eksternal. Gunakan model lokal sebagai gantinya.
Bagaimana Anda menangani pesan commit Anda? Apakah Anda menggunakan AI atau menulisnya secara manual?
