JIPRAKS Classroom

Cara Bangun AI Agent untuk Automated Code Refactoring dengan n8n + GPT (MVP 2 Hari)

· 3 menit baca

Cara Bangun AI Agent untuk Automated Code Refactoring dengan n8n + GPT (MVP 2 Hari)

🚨 Hook: Kode berantakan bikin tim dev tersendat

Anda pernah menatap pull‑request yang penuh duplikat, naming yang tidak konsisten, atau fungsi yang terlalu besar? Dengan tim junior‑intermediate, proses refactor menjadi bottleneck yang menghabiskan waktu & mengurangi kecepatan delivery. Apa jadinya kalau refactoring bisa dijalankan secara otomatis, men‑trigger setiap kali kode di‑push, dan tetap terkontrol via review?

🔧 Konsep: AI Agent + n8n = Refactor Otomatis

Inti ide:

  • AI Agent: LLM (GPT‑4o) yang diberi prompt khusus untuk meng‑analyze, suggest, dan men‑generate perubahan kode.
  • n8n: Orkestrator workflow yang memicu AI Agent pada event GitHub ‑ push / pull‑request, meng‑handle token, dan meng‑apply perubahan lewat git commit secara atomik.
  • Safety net: Linting, unit‑test, dan code‑review manual sebelum merge.

Pola ini memberi continuous refactoring tanpa mengorbankan kualitas.

⚙️ Breakdown Teknis / Workflow

  1. Trigger: Webhook – GitHub – Pull Request / Push.
    • Filter hanya file dengan ekstensi .js, .ts, .py, .java.
  2. Extract Diff: Gunakan node Git (n8n‑node‑git) untuk men‑grab git diff antara HEAD dan base branch.
  3. Prompt Engineering: Buat prompt dinamis yang meliputi:
    • Deskripsi kode (fungsi, variabel).
    • Standar style guide (Airbnb, Pylint, Google Java).
    • Goal: simplify, rename, extract method, remove dead code.
  4. AI Call: Node HTTP Request ke OpenAI /v1/chat/completions dengan max_tokens 1500, temperature 0.2, system prompt berisi aturan refactoring.
  5. Parse Response: Response berupa patch git diff (unified format). Gunakan node Function untuk validasi syntax (ESLint, Flake8, etc).
  6. Apply Patch: Node Execute Command menjalankan git apply di environment runner (Docker container). Jika linting gagal, kirim alert ke Slack & beri tombol “Approve Manual”.
  7. Commit & Push: Buat commit dengan message refactor: auto‑format & simplify XYZ dan push ke branch “auto‑refactor/…”.
  8. Pull Request Bot: Otomatis buat PR baru via GitHub API, assign reviewer, tambahkan label “auto‑refactor”.
  9. Post‑merge Hook: Jalankan CI (unit test) – bila lolos, merge otomatis; bila gagal, tutup PR & beri feedback ke developer.

💡 Contoh Use Case Real: Refactor Legacy Microservice Node.js

Tim Anda memiliki microservice order-service berisi 12 000 baris JavaScript, banyak fungsi terlalu panjang, dan kurang konsisten dengan standar Airbnb.

  • Langkah 1: Deploy workflow di server CI (Docker dengan n8n).
  • Langkah 2: Set webhook pada repo GitHub.
  • Langkah 3: Push satu commit yang men‑trigger workflow.
  • Hasil: AI menghasilkan 27 patch yang:
    • Meng‑extract helper calculateTax ke file terpisah.
    • Mengganti var let dengan const bila tidak di‑reassign.
    • Men‑rename variabel tmp menjadi orderPayload.
  • Keuntungan: Reduksi ukuran file 18 %, lint error 0, dan CI test tetap hijau – semua dalam kurang dari 2 hari kerja.

🧠 Insight / Strategi Eksklusif

  • Prompt Versioning: Simpan setiap prompt di repo prompts/refactor.yml. Ketika tim mengubah standar code‑style, cukup update prompt & bump versi – workflow otomatis pakai versi terbaru.
  • Cost‑Aware LLM Calls: Gunakan model=gpt‑4o-mini untuk bulk diffs, fallback ke gpt‑4o hanya bila patch > 500 lines.
  • Human‑in‑the‑Loop (HITL): Tambahkan tombol Slack “Approve” yang men‑trigger Execute Command – git apply hanya bila reviewer memberi green signal. Ini menurunkan false‑positive 70 % dibandingkan auto‑apply penuh.
  • Cache Diff: Simpan hash(diff) di Redis; jika diff belum berubah, skip AI call – menghemat token & latency.
  • Metric Dashboard: Buat panel Grafana (via n8n → InfluxDB) yang melaporkan patches per day, LOC reduced, lint violations fixed. Data ini jadi KPI refactoring otomatis.

📌 Penutup & Call to Action

Automated code refactoring bukan sekadar gimmick; ia mengurangi tech debt, meningkatkan kecepatan delivery, dan memberi tim space untuk inovasi. Mulailah dengan satu repo kecil, iterasikan prompt, dan scale ke seluruh monorepo Anda.

👉 Challenge: Implementasikan workflow ini dalam 48 jam, lalu bagikan hasilnya di komunitas JIPRAKS Classroom. Kami akan menampilkan contoh terbaik di newsletter bulan depan!

Artikel terkait