Jalankan AI Coding Assistant Lokal dengan Ollama + Continue

by Marcus Chen
Jalankan AI Coding Assistant Lokal dengan Ollama + Continue

Kamu lagi nulis kode, stuck di sebuah fungsi, dan pengen tanya ke AI. Tapi ada dua masalah nyata:

  1. GitHub Copilot butuh subscription $10/bulan — lumayan buat indie hacker.
  2. Kode kamu — termasuk logic bisnis, API key yang keselip, schema database — naik ke server orang lain.

Solusinya: jalanin AI coding assistant sendiri, di mesin sendiri, tanpa satu byte pun keluar dari laptop kamu.

Setup ini pakai Ollama (runtime model LLM lokal) + Continue (VS Code extension yang nyambungin editor ke model lokal). Total biaya: Rp 0.


Kenapa Setup Ini Lebih Masuk Akal dari Cloud AI

Sebelum masuk ke instalasi, gue mau jujur soal trade-off-nya.

Kelebihannya:

  • Privasi penuh — kode nggak pernah keluar dari mesin kamu.
  • Nggak ada rate limit, nggak ada API quota.
  • Bisa jalan offline — di pesawat, di kafe tanpa WiFi bagus, di mana aja.
  • Model bisa diganti-ganti sesuai kebutuhan.

Kekurangannya:

  • Butuh RAM yang cukup. Minimum 8 GB untuk model kecil, 16 GB untuk model yang lebih capable.
  • Respons lebih lambat dari cloud, terutama di mesin tanpa GPU.
  • Model lokal belum se-pintar GPT-4 atau Claude 3.5 Sonnet untuk task kompleks.

Kalau kamu pakai MacBook M-series atau PC dengan GPU NVIDIA, pengalaman kamu bakal jauh lebih smooth karena Ollama bisa leverage Metal/CUDA.


Instalasi Ollama

macOS / Linux

curl -fsSL https://ollama.com/install.sh | sh

Windows

Download installer dari ollama.com dan jalanin seperti biasa. Ollama akan jalan sebagai background service.

Verifikasi instalasi

ollama --version
# ollama version is 0.3.x

Setelah Ollama jalan, dia expose REST API di http://localhost:11434 secara default.


Pilih Model yang Tepat

Ini bagian yang sering bikin bingung. Ada puluhan model di Ollama library. Buat coding assistant, fokus ke model yang ditraining khusus untuk code.

Rekomendasi berdasarkan RAM

RAM tersedia Model yang disarankan Size
8 GB qwen2.5-coder:7b ~4.7 GB
16 GB qwen2.5-coder:14b ~9 GB
32 GB+ qwen2.5-coder:32b ~20 GB

Gue pakai qwen2.5-coder:7b di MacBook Pro M2 16 GB dan hasilnya cukup solid untuk autocomplete, explain code, dan nulis unit test.

Pull model

ollama pull qwen2.5-coder:7b

Proses ini download model ke ~/.ollama/models. Tunggu sampai selesai — tergantung koneksi, bisa 5–20 menit.

Test model langsung dari terminal

ollama run qwen2.5-coder:7b
>>> Tulis fungsi Python untuk validasi email
def validate_email(email: str) -> bool:
    import re
    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
    return bool(re.match(pattern, email))

Kalau responnya masuk akal, model siap dipakai.


Pasang Continue Extension di VS Code

Continue adalah open-source AI coding assistant yang bisa nyambung ke berbagai provider — termasuk Ollama yang kita jalanin lokal.

Instalasi

  1. Buka VS Code.
  2. Pergi ke Extensions (Ctrl+Shift+X / Cmd+Shift+X).
  3. Search Continue.
  4. Install extension dari Continue Dev (bukan yang lain).

Setelah install, icon Continue muncul di sidebar kiri.

Konfigurasi Continue ke Ollama

Buka file konfigurasi Continue:

# macOS/Linux
cat ~/.continue/config.json

# Windows
cat %USERPROFILE%\.continue\config.json

Edit file tersebut. Ini contoh konfigurasi minimal yang langsung jalan:

{
  "models": [
    {
      "title": "Qwen2.5 Coder 7B",
      "provider": "ollama",
      "model": "qwen2.5-coder:7b",
      "apiBase": "http://localhost:11434"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Qwen2.5 Coder 7B",
    "provider": "ollama",
    "model": "qwen2.5-coder:7b",
    "apiBase": "http://localhost:11434"
  },
  "allowAnonymousTelemetry": false
}

Simpan file, reload VS Code (Cmd+Shift+P → Reload Window).


Cara Pakai Continue Sehari-hari

Ini yang bikin Continue beda dari sekadar chatbot:

1. Chat dengan context kode

Highlight kode yang mau kamu tanyain, tekan Cmd+L (Mac) atau Ctrl+L (Windows/Linux). Kode langsung masuk ke chat window sebagai context.

Contoh prompt yang gue sering pakai:

/explain

Atau langsung ketik:

Kenapa fungsi ini bisa return None padahal gue udah kasih default value?

2. Inline edit

Highlight kode, tekan Cmd+I, ketik instruksi:

Refactor ini pakai async/await

Continue akan generate diff langsung di editor — kamu bisa accept atau reject.

3. Tab autocomplete

Ini jalan otomatis di background. Waktu kamu nulis kode, Continue kasih suggestion berbasis context file yang lagi kamu edit. Tekan Tab untuk accept.

4. Tambahkan file sebagai context

Ketik @ di chat window untuk attach file, folder, atau bahkan documentation URL sebagai context tambahan.

@src/models/user.py Tulis unit test untuk class User ini

Gotcha yang Gue Ketemu

1. Ollama service nggak auto-start setelah reboot

Di Linux, Ollama perlu didaftarin sebagai systemd service biar jalan otomatis:

sudo systemctl enable ollama
sudo systemctl start ollama

Di macOS, Ollama otomatis masuk ke login items setelah instalasi — cek di System Settings → General → Login Items kalau nggak jalan.

2. Continue nggak bisa connect ke Ollama

Pastiin Ollama jalan:

curl http://localhost:11434/api/tags
# Harusnya return JSON list of models

Kalau curl-nya timeout, Ollama belum jalan. Start manual:

ollama serve

3. Autocomplete lambat banget

Ini normal kalau kamu pakai CPU-only. Solusinya:

  • Pakai model yang lebih kecil untuk autocomplete (qwen2.5-coder:1.5b) dan model yang lebih besar untuk chat.
  • Di config.json, kamu bisa set model berbeda untuk tabAutocompleteModel vs models:
{
  "models": [
    {
      "title": "Qwen2.5 Coder 14B",
      "provider": "ollama",
      "model": "qwen2.5-coder:14b",
      "apiBase": "http://localhost:11434"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Qwen2.5 Coder 1.5B",
    "provider": "ollama",
    "model": "qwen2.5-coder:1.5b",
    "apiBase": "http://localhost:11434"
  }
}

Model 1.5B jauh lebih ringan dan autocomplete-nya bisa terasa real-time bahkan di CPU.

4. Model lupa context panjang

Model lokal punya context window yang lebih kecil dari cloud model. Kalau kamu paste kode yang panjang banget dan model mulai hallucinate atau jawab nggak nyambung, itu tandanya context window penuh. Solusinya: pecah pertanyaan jadi lebih spesifik, atau attach file langsung pakai @ daripada paste manual.


Bonus: Expose Ollama ke Jaringan Lokal

Kalau kamu punya homelab atau mau share model ke laptop lain di jaringan yang sama, Ollama bisa di-expose ke network interface:

# Set environment variable sebelum jalanin Ollama
export OLLAMA_HOST=0.0.0.0:11434
ollama serve

Di mesin lain, tinggal ganti apiBase di config.json Continue:

"apiBase": "http://192.168.1.100:11434"

Ini berguna banget kalau kamu punya PC desktop yang lebih kenceng — jalanin Ollama di sana, akses dari laptop.

Peringatan: Jangan expose port ini ke internet publik tanpa authentication. Ollama belum punya built-in auth.


Langkah Lanjutan

Setup dasar ini udah cukup buat daily use. Tapi kalau mau lebih jauh:

Coba model lain untuk task spesifik:

  • deepseek-coder-v2 — alternatif yang bagus, terutama untuk reasoning.
  • codellama:13b — kalau kamu lebih familiar dengan ekosistem Meta.

Integrasikan ke Neovim: Continue punya plugin Neovim juga. Config-nya sama persis, cukup install via lazy.nvim atau packer.

Monitor resource usage:

# Lihat model yang lagi loaded di memory
ollama ps

# Output:
# NAME                    ID              SIZE    PROCESSOR    UNTIL
# qwen2.5-coder:7b       abc123def456    5.2 GB  100% GPU     4 minutes from now

Ollama otomatis unload model dari memory setelah idle beberapa menit — jadi RAM kamu nggak terus-terusan kepake.


Gue udah pakai setup ini sebagai pengganti Copilot selama dua bulan terakhir. Untuk task sehari-hari — nulis boilerplate, explain error, generate test — qwen2.5-coder:7b sudah lebih dari cukup. Untuk task yang butuh reasoning lebih dalam, gue masih sesekali buka Claude di browser, tapi setidaknya kode sensitif nggak pernah keluar dari mesin.

Coba pull modelnya sekarang, dan lihat sendiri apakah ini worth it buat workflow kamu.