Cara Membuat Prompt Grok 4 untuk Tinjauan Kode & Saran Refaktor yang Akurat
Anda tidak memerlukan lebih banyak komentar—Anda memerlukan prompt yang lebih baik. Perbedaan antara tinjauan kode AI yang biasa-biasa saja dan yang sangat tajam sering kali bergantung pada cara Anda bertanya.
Dalam panduan praktis yang mengutamakan pengembang ini, kita akan membahas cara membuat prompt Grok 4 untuk tinjauan kode dan saran refaktor yang akurat. Kita akan membahas templat prompt dunia nyata, jebakan umum, dan strategi tingkat lanjut yang membantu Grok 4 bernalar tentang konteks, arsitektur, kinerja, dan kemampuan pemeliharaan—sehingga menghasilkan perbaikan yang benar-benar dapat Anda rilis.
Agar tetap dapat ditindaklanjuti, kita akan menggunakan struktur berbasis pertanyaan:
- Seperti apa prompt tinjauan kode AI yang baik?
- Bagaimana cara memberi Grok 4 konteks yang tepat tanpa membuatnya kewalahan?
- Pola prompt mana yang menghasilkan saran refaktor terbaik?
- Bagaimana cara membuat Grok 4 menjelaskan trade-off, bukan hanya menulis ulang kode?
- Apa cara tercepat untuk beriterasi menuju output AI yang "siap produksi"?
Sepanjang jalan, Anda akan mendapatkan resep prompt, contoh, dan daftar periksa siap pakai yang dapat Anda adaptasi ke tumpukan Anda.
Mengapa Grok 4 Membutuhkan Prompt yang Bagus (Dan Apa Arti "Bagus")
Grok 4 adalah model bahasa besar yang mumpuni dengan kemampuan penalaran dan pengkodean yang kuat, tetapi kualitas outputnya sangat terkait dengan kejelasan dan batasan input. Prompt yang bagus untuk tinjauan kode atau refactoring melakukan empat hal:
- Memberikan ruang lingkup: File, fungsi, atau modul apa yang sedang kita bicarakan? Apa yang dilarang?
- Mendefinisikan maksud: Apakah kita mengoptimalkan kinerja, meningkatkan keterbacaan, menegakkan gaya, atau memperbaiki bug?
- Menyediakan konteks: Bahasa, kerangka kerja, runtime, dependensi, batasan, dan kriteria penerimaan.
- Menuntut bukti: Mintalah penjelasan, analisis kompleksitas, dan penalaran langkah demi langkah—bukan hanya perubahan.
Saat Anda secara konsisten menyandikan elemen-elemen tersebut, saran tinjauan kode dan refaktor Grok 4 menjadi lebih akurat, mendasar, dan mudah dipelihara.
Pola Prompt Emas untuk Tinjauan Kode
Gunakan pola utama ini, lalu sesuaikan per tugas:
Anda adalah seorang insinyur [bahasa/kerangka kerja] senior yang meninjau kode untuk [proyek/domain].
Tujuan: [Perbaikan Bug | Kinerja | Keterbacaan | Keamanan | DX | Konsistensi API]
Batasan: [Panduan gaya, versi yang didukung, batas memori/waktu, batasan pustaka]
Konteks:
- Runtime/Env: [Node 20, JVM 17, Python 3.11, iOS 17, dll.]
- Dependensi utama: [daftar]
- Arsitektur: [monolit, microservice, serverless, heksagonal, dll.]
- Antarmuka/kontrak yang relevan: [tautan atau sebaris]
Tugas:
1) Tinjau kode berikut untuk [tujuan].
2) Identifikasi masalah spesifik dengan bukti (referensi baris, perkiraan kompleksitas, kasus tepi).
3) Usulkan diff minimal dan terarah.
4) Berikan versi refaktor akhir.
5) Jelaskan trade-off dan risiko.
Kode:
```[bahasa]
// tempel kode di sini
Format output:
- Temuan: daftar poin dengan tingkat keparahan dan alasan
- Refaktor: blok kode lengkap
- Tes: saran pengujian unit (jalur bahagia + kasus tepi)
- Catatan: trade-off, alternatif, masalah migrasi
Mengapa ini berhasil:
- Membingkai peran dan tujuan.
- Menetapkan batasan dan konteks.
- Memaksa bukti dan struktur.
- Menghasilkan diff + kode akhir + pengujian.
---
## Templat Mulai Cepat untuk Skenario Umum
### 1) Perbaikan bug + jaring pengaman
```text
Bertindak sebagai insinyur [bahasa] senior. Tinjau untuk kebenaran dan kasus tepi tersembunyi.
Fokus: kondisi balapan, penanganan null/None, off-by-one, validasi input, propagasi kesalahan.
Berikan: masalah dengan referensi baris, diff minimal, dan refaktor aman dengan pengujian.
2) Jalur panas kinerja
Tujuan: mengurangi kompleksitas waktu dan memori tanpa mengubah perilaku publik.
Berikan: kompleksitas saat ini, kompleksitas yang diusulkan, micro-optimizations vs perubahan algoritmik, dan tolok ukur untuk dijalankan.
3) Keterbacaan & kemampuan pemeliharaan
Refaktor untuk kejelasan: penamaan yang lebih baik, fungsi yang lebih kecil, tanggung jawab tunggal.
Tambahkan docstring/JSDoc, sederhanakan alur kontrol, hapus kode mati. Pertahankan API publik yang stabil.
4) Tinjauan keamanan
Model ancaman: input yang tidak tepercaya dari [sumber].
Periksa: injeksi, deserialisasi, SSRF, XSS, CSRF, authZ/authN, penanganan rahasia.
Sarankan: pustaka yang aman, pola validasi, dan diff minimal.
5) Memigrasikan kerangka kerja atau SDK
Kami bermigrasi dari [lib A] ke [lib B].
Cantumkan perubahan yang merusak, usulkan lapisan adaptor, dan berikan rencana peluncuran bertahap dengan pengujian.
Berikan Konteks yang Tepat (Tanpa Membebani)
Jika itu menemukan API: “Hanya gunakan API yang ditampilkan dalam kode atau dikonfirmasi dalam konteks.”
- Bahasa dan versi: misalnya, Python 3.12, TypeScript 5.4.
- Kerangka kerja/runtime: misalnya, FastAPI, Spring Boot, Node 20.
- Batasan: batas memori/waktu, kontrak API, batasan dependensi.
- Antarmuka yang berdekatan: tanda tangan metode publik, DTO, skema, atau contoh permintaan.
- Input representatif: payload realistis, bukan hanya contoh mainan.
- Panduan gaya: tautan atau ringkasan (PEP 8, Google Java Style, Airbnb TS).
Hindari membuang seluruh repositori. Sebagai gantinya:
- Bagikan unit terkecil yang menunjukkan masalah tersebut.
- Tambahkan antarmuka/kontrak yang berinteraksi dengannya.
- Sertakan pengujian yang gagal atau contoh input yang rusak.
Contoh blok konteks:
Env: Python 3.11, FastAPI, Pydantic v2.
Kontrak: endpoint harus mengembalikan 200 dengan { data, meta } bahkan pada kegagalan parsial.
Batasan: harus tetap async; tidak dapat menambahkan dependensi berat baru.
Struktur Prompt yang Membuka Refaktor yang Lebih Baik
Struktur A: Kritik → Diff → Refaktor → Pengujian
Terbaik saat Anda menginginkan kemenangan cepat dan hasil konsolidasi akhir.
1) Kritik: cantumkan masalah konkret dengan bukti.
2) Diff: perubahan terkecil untuk diperbaiki.
3) Refaktor: kode akhir yang bersih dan idiomatis.
4) Pengujian: pengujian unit yang mencakup jalur bahagia + 3 kasus tepi.
Struktur B: Set Opsi dengan Trade-off
Bagus untuk refaktor yang sensitif terhadap desain.
Usulkan 3 opsi refaktor:
- Opsi A: perubahan minimal
- Opsi B: desain ulang moderat
- Opsi C: penulisan ulang penuh
Untuk masing-masing: pro/kontra, kompleksitas, risiko, rencana migrasi, dan kapan harus memilihnya.
Struktur C: Refaktor Berbasis Batasan
Gunakan saat Anda harus mempertahankan perilaku dan anggaran.
Batasan: API publik yang sama, <50ms p95, <10MB memori tambahan, tidak ada dependensi runtime baru.
Tunjukkan bagaimana refaktor Anda memenuhi setiap batasan dengan pengukuran atau penalaran.
Contoh: Meminta Grok 4 untuk Meninjau dan Merefaktor Endpoint Python
Prompt:
Anda adalah seorang insinyur Python senior. Tujuan: kebenaran + kinerja.
Env: Python 3.11, FastAPI, httpx, Pydantic v2. Kontrak: jangan pernah meningkatkan kegagalan parsial.
Tugas: tinjau dan refaktor. Berikan kritik → diff minimal → refaktor akhir → pengujian.
Kode:
```python
from fastapi import APIRouter
import httpx
router = APIRouter
@router.get("/users/{user_id}")
async def get_user(user_id: str):
async with httpx.AsyncClient as client:
profile = await client.get(f")
posts = await client.get(f")
return {"data": {"profile": profile.json, "posts": posts.json}}
Penerimaan:
- Tangani non-200 dari salah satu panggilan tanpa menaikkan.
- p95 < 100ms menambahkan latensi di luar hulu; pertahankan permintaan bersamaan.
- Tambahkan validasi input dasar, batas waktu, dan coba lagi dengan jitter.
Prompt ini memberi Grok 4 pekerjaan, pagar pembatas, dan bentuk output—sehingga sarannya mudah diterapkan.
---
## Dari Saran Mentah ke Kode Siap Kirim: Loop Iterasi
Perlakukan Grok 4 seperti pair-programmer. Gunakan loop yang ketat:
1. Mulai dengan kode dan batasan minimal yang dapat direproduksi.
2. Mintalah kritik + diff yang ditargetkan.
3. Terapkan diff secara lokal; jalankan pengujian/tolok ukur.
4. Tempel kegagalan/output kembali ke Grok 4 dengan: “Inilah kasus yang gagal; sesuaikan.”
5. Kunci batasan: “Jangan ubah API publik. Pertahankan kompleksitas O(n).”
6. Mintalah pengujian dan kasus berbasis properti.
Prompt iterasi:
```text
Berikut adalah kegagalan pengujian dan tolok ukur. Pertahankan batasan sebelumnya. Usulkan perubahan terkecil untuk memperbaiki semua pengujian merah tanpa merusak API publik. Kembalikan hanya diff terpadu.
Membuat Saran Refaktor Dapat Ditindaklanjuti
Minta Grok 4 untuk:
- Tandai setiap saran dengan tingkat keparahan (Tinggi/Sedang/Rendah) dan kategori (Bug, Perf, Gaya, Keamanan).
- Berikan alasan satu baris per saran.
- Sertakan cuplikan sebelum/sesudah yang cepat.
- Berikan rencana migrasi jika ada risiko perubahan yang merusak.
Tambahan prompt:
Anotasi setiap saran dengan: {tingkat keparahan, kategori, alasan}. Sertakan cuplikan sebelum/sesudah dan rencana migrasi satu langkah jika perilaku dapat berubah.
Keamanan, Kinerja, dan Pengujian: Tambahan Prompt Bertarget
- “Asumsikan semua input dikendalikan oleh penyerang. Identifikasi injeksi, SSRF, lintasan jalur, dan paparan rahasia. Berikan pola aman dan diff minimal.”
- “Laporkan kompleksitas saat ini vs yang diusulkan. Soroti hotspot dan alternatif yang lebih murah. Sertakan harness tolok ukur kecil.”
- “Usulkan pengujian unit, pengujian berbasis properti, dan kasus batas. Sertakan tiruan untuk jaringan/IO. Pastikan cakupan jalur kegagalan.”
Penyesuaian Prompt Khusus Bahasa
- Tentukan target
tsconfig, lingkungan Node/browser, tree-shaking bundler, dan aturan ESLint/Prettier.
- Mintalah
JSDoc/TSDoc dan gabungan diskriminasi untuk tipe yang lebih aman.
- Catat target
mypy, pydantic v1 vs v2, sinkron vs asinkron, dan tingkat petunjuk tipe.
- Minta perlengkapan
pytest dan pengujian properti melalui hypothesis.
- Sebutkan versi JDK, ekspektasi immutabilitas, aturan penggunaan Lombok, dan strategi penanganan kesalahan.
- Mintalah pengujian JUnit 5 dan petunjuk tolok ukur melalui JMH.
- Tekankan alokasi nol pada jalur panas, propagasi
context.Context, dan pembungkusan kesalahan dengan %w.
- Mintalah pengujian berbasis tabel dan bendera pendeteksi balapan.
- Tentukan edisi, kebijakan kode tidak aman, dan bendera fitur. Minta tolok ukur dan kasus
proptest.
Mendapatkan Output Diff yang Lebih Baik Dari Grok 4
Model terkadang menghalusinasi jalur file atau baris konteks. Kurangi gesekan dengan:
Kembalikan output sebagai diff terpadu dengan jalur file yang benar dari root repo ini. Hanya sertakan hunks yang diubah. Tidak ada komentar dalam diff. Kemudian sertakan bagian terpisah untuk catatan.
Jika diff masih berantakan, batasi lebih lanjut:
Balas dengan tepat dua blok:
1) ```diff
...perubahan...
---
## Menegakkan Persyaratan Non-Fungsional (NFR)
Jika Anda memerlukan jaminan seputar latensi, memori, atau kompatibilitas, masukkan ke dalam prompt dan minta Grok 4 untuk memeriksa sendiri:
```text
NFR: latensi p95 +< 20ms vs baseline, delta memori < 5MB, nol dependensi runtime baru, API publik yang sama.
Tambahkan bagian pemeriksaan mandiri yang mengonfirmasi setiap NFR, dengan penalaran kasar atau ide microbench.
Buat Grok 4 Menjelaskan Penalarannya (Tanpa Bertele-tele)
Anda hanya ingin penjelasan yang cukup untuk mempercayai saran tersebut. Coba:
Jelaskan setiap perubahan dalam satu kalimat dengan baris atau cuplikan yang dikutip. Jika tidak yakin, ajukan pertanyaan klarifikasi alih-alih menebak.
Dan secara eksplisit izinkan pertanyaan:
Jika persyaratannya ambigu, ajukan hingga 3 pertanyaan klarifikasi sebelum melanjutkan.
Anti-Pola: Mengapa Prompt Anda Mungkin Gagal
- Tujuan yang tidak jelas: “Tolong perbaiki ini.”
- Batasan yang hilang: “Tentu, tambahkan dependensi besar dan rusak CI.”
- Tidak ada kriteria penerimaan: “Terlihat bagus di mesin saya.”
- Dinding kode tanpa konteks: model tidak dapat menyimpulkan batasan atau kontrak.
- Ekspektasi satu bidikan: penyempurnaan iteratif mengalahkan prompt satu kali.
Perbaiki dengan menentukan tujuan, ruang lingkup, batasan, konteks, dan pengujian penerimaan.
Contoh Prompt Refaktor Dengan Bentuk Output
Peran: Insinyur TypeScript senior.
Tujuan: meningkatkan keterbacaan dan keamanan runtime tanpa mengubah API publik.
Env: Node 20, TypeScript 5.4, Zod untuk validasi, ESLint Airbnb, strictNullChecks.
Batasan: tidak ada dependensi runtime baru di luar Zod, tidak ada perubahan yang merusak, pertahankan kompleksitas O(n).
Tugas:
- Kritik → Diff → Refaktor → Pengujian → Catatan.
- Tandai masalah dengan {tingkat keparahan, kategori, alasan}.
- Sertakan skema Zod untuk validasi input dan 4 pengujian unit.
Kode:
```ts
export function parseUser(raw: any) {
if (!raw) return null
return {
id: raw.id || '0',
<a17>name: raw.name || 'Unknown',</a16>age: parseInt(raw.age),
}
}
---
## Membuat Grok 4 Menghormati Gaya dan Arsitektur
Jangkarkan model dengan aturan konkret:
```text
Gaya: Airbnb TS. Lebih suka pengembalian awal, hindari bersarang dalam, gunakan tipe eksplisit.
Arsitektur: pertahankan fungsi murni; tidak ada efek samping. Validasi input di batas.
Dan minta lintasan linter:
Jalankan lintasan ESLint mental dan cantumkan pelanggaran yang Anda harapkan, lalu perbaiki.
Ubah Refaktor Menjadi Pembelajaran: Minta Pola
Buat peningkatan tetap dengan meminta Grok 4 menyebutkan nama pola dan mengapa itu cocok:
Untuk setiap perubahan, sebutkan nama pola refactoring (misalnya, Extract Function, Introduce Parameter Object) dan jelaskan kapan menerapkannya di basis kode ini.
Pemecahan Masalah: Saat Grok 4 Meleset dari Sasaran
- Jika terlalu banyak merefaktor: “Diff minimal dulu; refaktor hanya jika diperlukan.”
- Jika mengabaikan batasan: “Tunjukkan pemeriksaan mandiri terhadap batasan sebelum mengembalikan kode.”
- Jika terlalu bertele-tele: “Kembalikan hanya diff dan ringkasan 5 poin.”
- Jika pengujian tidak stabil: “Usulkan pengujian deterministik dan hindari pernyataan berbasis waktu.”
Alur Kerja Dunia Nyata: Dari PR ke Gabung
- Pengembang membuka PR dengan artefak prompt yang ditargetkan: tujuan, batasan, konteks, pengujian penerimaan.
- Tempel diff + konteks ke Grok 4 dengan Pola Emas.
- Terapkan diff minimal, jalankan ulang CI.
- Berinteraksi dengan log yang gagal sebagai umpan balik.
- Minta refaktor akhir dan pengujian.
- Tambahkan komentar ringkasan dengan trade-off dan catatan migrasi untuk peninjau.
Ini membuat manusia tetap memegang kendali, sementara Grok 4 mempercepat bagian-bagian yang membosankan: deteksi, perbaikan kecil, dan refaktor terstruktur.
Ngomong-ngomong: Percepat Loop Ini Dengan Sider.AI
Jika alur kerja Anda mencampur prompt obrolan, konteks kode, dan diff iteratif, perlu dicatat bahwa alat seperti Sider.ai mengintegrasikan tinjauan kode AI langsung ke dalam permintaan tarik Anda, memungkinkan Anda menerapkan prompt seperti yang di atas dengan konteks yang sadar repositori. Manfaatnya adalah landasan yang lebih ketat: lebih sedikit impor halusinasi, referensi baris yang lebih baik, dan iterasi yang lebih cepat dengan komentar sebaris. Prompt yang disarankan untuk digunakan di dalam asisten yang sadar repo:
Hanya gunakan konteks repo. Tinjau file yang diubah dalam PR ini untuk [tujuan]. Anotasi temuan sebaris dengan tingkat keparahan dan alasan. Usulkan diff yang mempertahankan API publik dan NFR. Sertakan pengujian yang hanya menyentuh jalur yang diubah.
Poin-Poin Penting
- Tentukan ruang lingkup, maksud, konteks, dan batasan di muka.
- Mintalah kritik → diff minimal → refaktor → pengujian untuk menjaga perubahan tetap aman.
- Gunakan set opsi dengan trade-off untuk perubahan yang berat desain.
- Sandikan NFR dan minta Grok 4 untuk memeriksa sendiri.
- Berinteraksi dengan cepat: jalankan pengujian, kirimkan kembali kegagalan, ulangi.
- Gunakan alat yang sadar repo seperti Sider.AI untuk mendasarkan saran dalam kode nyata.
Langkah Selanjutnya
- Simpan Pola Prompt Emas ke cuplikan Anda.
- Bangun varian khusus bahasa untuk tumpukan Anda.
- Cobalah pada PR kecil hari ini; ukur berapa banyak siklus peninjauan yang Anda hemat.
- Tambahkan pengujian penerimaan dalam prompt Anda untuk menegakkan hal-hal yang tidak dapat dinegosiasikan.
- Perluas secara bertahap ke prompt kinerja dan keamanan setelah dasar-dasarnya melekat.
FAQ
Q1: Apa cara terbaik untuk memberikan perintah (prompt) ke Grok 4 untuk tinjauan kode (code review)?
Gunakan perintah terstruktur yang mendefinisikan peran, tujuan, batasan, lingkungan, dan kriteria penerimaan. Minta kritik, diff minimal, refaktor akhir, pengujian, dan analisis trade-off singkat.
Q2: Bagaimana cara mendapatkan saran refaktor yang akurat dari Grok 4?
Berikan maksud yang jelas (misalnya, keterbacaan atau kinerja), sertakan konteks seperti antarmuka dan batasan, dan minta set opsi dengan pro dan kontra. Terapkan persyaratan non-fungsional dan minta pemeriksaan mandiri (self-check).
Q3: Haruskah saya menempelkan seluruh repositori ke Grok 4?
Tidak. Bagikan kode terkecil yang dapat direproduksi dengan antarmuka dan batasan yang relevan. Jaga agar perintah tetap fokus dan lakukan iterasi dengan memberikan umpan balik kegagalan pengujian dan benchmark.
Q4: Bagaimana cara mencegah Grok 4 mengubah API publik selama refaktor?
Nyatakan batasan eksplisit seperti "jangan mengubah API publik," berikan contoh input/output, dan minta model untuk mengonfirmasi kepatuhan dengan pemeriksaan mandiri sebelum mengembalikan kode.
Q5: Bisakah Grok 4 menyarankan pengujian dan benchmark?
Ya. Minta untuk menyertakan pengujian unit, pengujian berbasis properti, dan harness benchmark kecil. Tentukan kerangka kerja pengujian dan runtime untuk menjaga saran tetap dapat dijalankan.