Tutorial Lengkap Aider: AI Pair Programming di Terminal
Aider adalah tool open-source yang memungkinkan Anda melakukan pair programming dengan Large Language Model (LLM) langsung dari terminal. Dengan Aider, Anda bisa mengedit kode di repository Git secara langsung melalui percakapan natural language, tanpa perlu copy-paste kode ke web interface. Tool ini mendukung berbagai model AI seperti GPT-4o, Claude, Gemini, dan model lokal melalui Ollama.
Mengapa Aider?
Dalam ekosistem AI coding assistant yang semakin ramai, Aider memiliki beberapa keunggulan yang membedakannya:
Instalasi
Menggunakan pip
pip install aider-chat
Menggunakan pipx (Direkomendasikan)
pipx menginstal Aider dalam environment terisolasi sehingga tidak konflik dengan package Python lainnya:
pipx install aider-chat
Menggunakan Homebrew (macOS)
brew install aider
Verifikasi Instalasi
aider --version
Konfigurasi API Key
Aider membutuhkan API key dari provider LLM yang ingin Anda gunakan. Berikut cara konfigurasinya:
OpenAI
export OPENAIAPIKEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
Anthropic (Claude)
export ANTHROPICAPIKEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx
Google Gemini
export GEMINIAPIKEY=xxxxxxxxxxxxxxxxxxxxxxxx
Menggunakan File .env
Anda juga bisa menyimpan API key di file .env pada root project:
# .env
OPENAIAPIKEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
ANTHROPICAPIKEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx
Aider akan otomatis membaca file .env saat dijalankan.
Basic Usage
Memulai Sesi Aider
Navigasi ke repository Git Anda dan jalankan:
cd /path/to/your/project
aider
Secara default, Aider akan menggunakan model terbaik yang tersedia berdasarkan API key yang dikonfigurasi.
Menentukan Model
# Menggunakan Claude Sonnet
aider --model claude-sonnet-4-6
Menggunakan GPT-4o
aider --model gpt-4o
Menggunakan model lokal via Ollama
aider --model ollama/deepseek-coder-v2
Menambahkan File ke Percakapan
Saat memulai Aider, Anda bisa langsung menentukan file yang ingin diedit:
aider src/main.py src/utils.py tests/testmain.py
Atau tambahkan file dari dalam sesi menggunakan perintah /add:
/add src/models.py
Contoh Percakapan Sederhana
$ aider app.py
Tambahkan endpoint GET /health yang mengembalikan status "ok" dan timestamp saat ini
app.py
<<<<<<< SEARCH
from flask import Flask
app = Flask(name)
=======
from flask import Flask, jsonify
from datetime import datetime
app = Flask(name)
@app.route('/health')
def healthcheck():
return jsonify({
'status': 'ok',
'timestamp': datetime.utcnow().isoformat()
})
>>>>>> REPLACE
Commit: feat: add health check endpoint with status and timestamp
Aider akan menunjukkan perubahan yang diusulkan dan langsung membuat commit jika Anda menyetujuinya.
In-Chat Commands
Aider memiliki banyak perintah yang bisa digunakan dalam sesi chat:
Manajemen File
/add # Tambahkan file ke percakapan (bisa diedit)
/read # Tambahkan file sebagai read-only (untuk konteks)
/drop # Hapus file dari percakapan
/ls # Tampilkan file yang sedang aktif
Kontrol Git
/commit # Commit perubahan yang pending
/undo # Undo commit terakhir yang dibuat Aider
/diff # Tampilkan diff dari perubahan terakhir
/git # Jalankan perintah git langsung
Navigasi
/clear # Bersihkan history chat
/run # Jalankan shell command dan tampilkan output
/test # Jalankan test dan minta Aider fix jika gagal
Advanced Usage
Multi-File Editing
Salah satu kekuatan utama Aider adalah kemampuannya mengedit banyak file sekaligus. Ini sangat berguna untuk refactoring:
aider src/models/user.py src/routes/auth.py src/services/userservice.py tests/testauth.py
> Refactor user authentication: pindahkan logic validasi password dari route ke
userservice.py, tambahkan password hashing menggunakan bcrypt, dan update
test-nya
Aider akan menganalisis semua file yang ditambahkan dan membuat perubahan terkoordinasi di seluruh file yang relevan.
Menggunakan Repository Map
Aider secara otomatis membuat peta dari repository Anda menggunakan tree-sitter. Ini memungkinkan Aider memahami hubungan antar file meskipun tidak semua file ditambahkan ke percakapan:
# Aider akan menganalisis seluruh repository untuk konteks
aider --map-tokens 2048 src/main.py
Parameter --map-tokens mengontrol seberapa banyak token yang digunakan untuk repository map. Nilai lebih tinggi memberikan konteks lebih banyak tetapi menggunakan lebih banyak token.
Architect Mode
Architect mode menggunakan dua model: satu untuk merencanakan perubahan (architect) dan satu lagi untuk mengeksekusi (editor):
aider --architect --model claude-sonnet-4-6 --editor-model claude-haiku-4-5-20251001
Ini berguna ketika Anda ingin model yang lebih powerful untuk merencanakan perubahan dan model yang lebih murah untuk mengimplementasikannya.
Integrasi dengan Ollama (Model Lokal)
Untuk menggunakan model lokal tanpa mengirim kode ke cloud:
# Pastikan Ollama sudah terinstal dan model sudah di-download
ollama pull deepseek-coder-v2
Jalankan Aider dengan model Ollama
aider --model ollama/deepseek-coder-v2
Lint dan Test Integration
Aider bisa menjalankan linter dan test secara otomatis setelah setiap perubahan:
aider --lint-cmd "ruff check --fix" --auto-lint \
--test-cmd "pytest tests/" --auto-test
Jika lint atau test gagal, Aider akan otomatis mencoba memperbaiki masalahnya.
Menggunakan .aider.conf.yml
Untuk konfigurasi yang konsisten di setiap sesi, buat file .aider.conf.yml di root project:
model: claude-sonnet-4-6
auto-commits: true
auto-lint: true
lint-cmd: "ruff check --fix"
auto-test: false
test-cmd: "pytest tests/ -x"
map-tokens: 2048
Workflow Praktis
1. Bug Fixing dengan Context
# Tambahkan file yang bermasalah dan file test
aider src/parser.py tests/testparser.py
Ada bug di fungsi parsecsv: ketika ada kolom kosong di akhir baris,
fungsi membuang kolom tersebut. Seharusnya kolom kosong tetap
dipertahankan sebagai string kosong. Perbaiki bug ini dan tambahkan
test case untuk skenario ini.
2. Menambahkan Fitur Baru
aider src/api/ src/models/ src/services/
Tambahkan fitur pagination pada endpoint GET /api/users. Gunakan
cursor-based pagination dengan parameter "cursor" dan "limit".
Default limit 20, maksimal 100. Response harus include "nextcursor"
dan "hasmore".
3. Code Review dan Refactoring
# Tambahkan file sebagai read-only untuk konteks
aider --read src/legacymodule.py src/newmodule.py
Review src/newmodule.py dan bandingkan dengan legacymodule.py.
Pastikan semua edge case dari legacy module sudah ditangani di
module baru.
4. Menulis Documentation
aider src/api/routes.py README.md
Buat dokumentasi API di README.md berdasarkan semua endpoint yang
ada di routes.py. Sertakan contoh request dan response untuk
setiap endpoint.
Tips dan Best Practices
1. Mulai dengan Scope Kecil
Jangan menambahkan terlalu banyak file sekaligus. Mulai dengan file yang benar-benar perlu diedit. Gunakan /read untuk file yang hanya perlu dijadikan konteks:
/add src/targetfile.py
/read src/referencefile.py
2. Berikan Instruksi yang Spesifik
Semakin spesifik instruksi Anda, semakin baik hasilnya:
# Kurang baik
Perbaiki fungsi login
Lebih baik
Di fungsi login() baris 45, tambahkan rate limiting: maksimal 5 percobaan
per IP address dalam 15 menit. Gunakan Redis untuk menyimpan counter.
Return HTTP 429 jika limit tercapai.
3. Gunakan /undo untuk Iterasi
Jika perubahan tidak sesuai harapan, gunakan /undo untuk kembali ke state sebelumnya dan coba instruksi yang berbeda:
/undo
Coba pendekatan lain: gunakan decorator @ratelimit(max=5, window=900)
daripada inline logic
4. Manfaatkan /run untuk Verifikasi
Setelah Aider membuat perubahan, verifikasi hasilnya:
/run python -m pytest tests/testauth.py -v
/run python src/main.py --dry-run
5. Konfigurasi Git Conventions
Aider membuat commit otomatis. Anda bisa mengkustomisasi format commit message:
aider --commit-prompt "Gunakan format conventional commits (feat:, fix:, refactor:, dll). Tulis dalam bahasa Inggris."
6. Hemat Token dengan Read-Only Files
File yang ditambahkan dengan /read menggunakan lebih sedikit token dibanding /add karena Aider tidak perlu memproses kemampuan edit untuk file tersebut:
/read src/config.py # Hanya untuk konteks
/read src/constants.py # Hanya untuk konteks
/add src/main.py # File yang akan diedit
Perbandingan Edit Format
Aider mendukung beberapa format edit yang bisa dipilih sesuai kebutuhan:
| Format | Deskripsi | Cocok Untuk |
|--------|-----------|-------------|
| whole | Mengirim ulang seluruh file | File kecil, perubahan besar |
| diff | Menggunakan unified diff | File besar, perubahan kecil |
| diff-fenced | Diff dalam fenced code blocks | Default untuk banyak model |
| udiff | Universal diff format | Model yang mendukung |
Untuk mengubah format edit:
aider --edit-format diff
Menggunakan Aider dengan Docker
Untuk environment yang terisolasi:
docker run -it --rm \
-v $(pwd):/app \
-e OPENAIAPIKEY=$OPENAIAPI_KEY \
paulgauthier/aider \
--model gpt-4o
Troubleshooting
Model Tidak Merespons dengan Baik
Jika model menghasilkan output yang kurang baik, coba:
Git Conflict
Jika terjadi conflict saat Aider membuat commit:
/git stash
/clear
Mulai percakapan baru dengan konteks yang lebih jelas
Token Limit
Jika percakapan terlalu panjang:
/clear # Reset history chat
/tokens # Cek penggunaan token saat ini
/drop # Hapus file yang tidak diperlukan
Kesimpulan
Aider adalah tool yang sangat powerful untuk AI-assisted coding langsung dari terminal. Keunggulan utamanya adalah integrasi native dengan Git, kemampuan multi-file editing, dan dukungan untuk berbagai model AI. Beberapa poin penting yang perlu diingat:
- Selalu mulai dengan scope yang kecil dan spesifik
- Manfaatkan
/readuntuk memberikan konteks tanpa menambah biaya token - Gunakan
/undosecara liberal untuk iterasi - Konfigurasikan
.aider.conf.ymluntuk konsistensi di seluruh tim - Pertimbangkan architect mode untuk refactoring berskala besar
Dengan pendekatan yang tepat, Aider bisa menjadi multiplier produktivitas yang signifikan dalam workflow development Anda. Tool ini bukan pengganti developer, melainkan partner yang mempercepat iterasi dan mengurangi boilerplate.