Debugging error traceback Python sambil bolak-balik menyalin log ke antarmuka web AI adalah pemborosan fokus terbesar bagi seorang engineer. Ketika kode backend kamu melempar AssertionError atau memory leak saat integrasi database, kamu butuh agent yang langsung membaca file, mengeksekusi pytest di terminal lokal, dan memperbaiki bug secara otonom.
Evolusi agent harness modern seperti OpenCode CLI membawa kapabilitas loop otonom langsung ke lingkungan shell kamu. Alih-alih mengandalkan workflow manual yang lambat, artikel ini akan memandu kamu membangun workflow otomatisasi debugging dan pembuatan unit test Python menggunakan OpenCode CLI yang terhubung ke custom endpoint berkinerja tinggi.
Mengapa Membawa AI Agent Langsung ke Terminal?
Bekerja langsung di terminal memberikan agent akses native terhadap runtime project kamu. Agent tidak hanya menebak perbaikan kode, tetapi juga mengeksekusi test runner, memeriksa return code, dan memvalidasi apakah fix yang diberikan benar-benar menyelesaikan masalah tanpa merusak dependensi lain.
Namun, menjalankan agent loop lokal sering terbentur masalah integrasi LLM luar negeri. Developer di Indonesia kerap menghadapi penolakan kartu kredit saat berlangganan token platform luar, ketentuan minimum deposit dollar yang mahal, serta borosnya biaya token saat agent membaca ribuan baris context project berulang kali.
Di sinilah perlunya menggunakan custom endpoint terpadu seperti ModelRouter. Dengan dukungan prompt caching otomatis hingga 95% dan integrasi pembayaran QRIS instan mulai Rp 5.000 tanpa kartu kredit, kamu bisa menjalankan continuous debugging loop tanpa khawatir tagihan jebol atau akun terblokir.
Prasyarat dan Arsitektur Workflow
Workflow yang kita bangun mengadopsi prinsip unrolling agent loop, di mana OpenCode CLI bertindak sebagai eksekutor lingkungan lokal sementara penalaran logika ditangani oleh model reasoning mutakhir seperti DeepSeek V4.1 atau Claude Sonnet 4.6.
Sebelum memulai, pastikan sistem kamu sudah terpasang:
- Python 3.10 atau versi lebih baru beserta
pytestdanpip. - Node.js runtime (v18+) untuk menjalankan engine OpenCode CLI.
- API Key aktif dari gateway ModelRouter dengan Base URL OpenAI-compatible.
💡 Catatan Praktisi: Jika kamu baru pertama kali menguji alur ini dan belum ingin mengisi saldo, kamu bisa memanfaatkan kuota gratis pengujian lewat Program Bansos AI untuk menguji respons agent secara instan.
Panduan Konfigurasi OpenCode CLI Step-by-Step
Ikuti langkah-langkah di bawah ini untuk mengonfigurasi agent CLI agar terhubung langsung ke custom gateway.
Langkah 1: Instalasi OpenCode CLI dan Dependensi
Pasang OpenCode CLI secara global di terminal development kamu menggunakan npm atau yarn:
npm install -g opencode-ai-cli
pip install pytest pytest-cov
Verifikasi bahwa instalasi berhasil dengan memeriksa versi binary di shell kamu:
opencode --version
Langkah 2: Konfigurasi Custom Endpoint ModelRouter
OpenCode CLI secara native mendukung standar OpenAI SDK. Kita cukup mengarahkan Base URL ke endpoint gateway ModelRouter dan memasukkan API Key yang kamu miliki.
Buat file konfigurasi di direktori home kamu ~/.opencode/config.json atau inisialisasi environment variable di terminal:
export OPENAI_BASE_URL="https://modelrouter.id/v1"
export OPENAI_API_KEY="sk-mr-live-xxxxxxxxxxxxxxxxxxxx"
export OPENCODE_DEFAULT_MODEL="deepseek/deepseek-v4.1"
Kamu juga bisa mendefinisikan konfigurasi permanen melalui file JSON proyek lokal .opencode.json:
{
"api_base": "https://modelrouter.id/v1",
"api_key_env": "OPENAI_API_KEY",
"model": "deepseek/deepseek-v4.1",
"temperature": 0.2,
"auto_exec_commands": false,
"caching_enabled": true
}
⚠️ Perhatian: Jangan pernah melakukan commit file yang berisi raw token API ke repository Git. Selalu simpan token rahasia di environment variable lokal atau gunakan
.gitignoreuntuk file konfigurasi credentials.
Langkah 3: Membuat Test Harness Python Target
Sebagai contoh kasus praktis, buat sebuah modul kalkulator diskon inventaris sederhana yang sengaja memiliki bug edge-case pada logic pembulatan harga. Buat file pricing_service.py:
from decimal import Decimal, ROUND_HALF_UP
def calculate_tiered_discount(base_price: float, tier: str, quantity: int) -> float:
"""Menghitung harga akhir berdasarkan tingkatan pembeli dan jumlah barang."""
if quantity <= 0 or base_price < 0:
raise ValueError("Harga dan kuantitas harus bernilai positif")
rates = {
"retail": Decimal("0.05"),
"wholesale": Decimal("0.15"),
"vip": Decimal("0.25")
}
# Bug: Tier fallback tidak terdaftar melempar unhandled KeyError
discount_rate = rates[tier.lower()]
total = Decimal(str(base_price)) * quantity
discount_amount = total * discount_rate
final_price = total - discount_amount
# Bug logic: Pembulatan flat tanpa memperhitungkan quantize dua desimal
return float(final_price)
Siapkan pula unit test awal pada test_pricing_service.py yang saat ini akan mengalami kegagalan:
import pytest
from pricing_service import calculate_tiered_discount
def test_tiered_discount_valid():
assert calculate_tiered_discount(100.0, "vip", 2) == 150.0
def test_tiered_discount_unknown_tier():
# Seharusnya fallback ke 0% discount jika tier tidak valid
assert calculate_tiered_discount(100.0, "guest", 1) == 100.0
def test_tiered_discount_precision():
# Menguji presisi pembulatan desimal mata uang
assert calculate_tiered_discount(33.333, "retail", 3) == 94.99
Eksekusi Debugging dan Auto-Generation Unit Test
Setelah lingkungan terpasang, kita dapat menjalankan agent harness untuk membaca kegagalan unit test dan mereparasi logika secara otomatis.
Langkah 4: Menjalankan Autonomous Debugging Loop
Jalankan test suite menggunakan OpenCode CLI dengan flag instruksi debugging otonom:
opencode fix "pytest test_pricing_service.py" --watch-files "pricing_service.py"
Agent akan menjalankan perintah pytest, menangkap output traceback KeyError: 'guest', membedah implementasi kode di pricing_service.py, lalu menyusun patch kode baru secara iteratif.
Begitu perbaikan diterapkan, agent akan mengeksekusi ulang perintah pytest sampai seluruh test suite menghasilkan status hijau (pass). Proses ini sepenuhnya memanfaatkan arsitektur Zero Prompt Retention (ZPR) dari ModelRouter, memastikan source code internal kamu tidak pernah direkam untuk melatih model publik.
Langkah 5: Validasi Test Coverage dan Caching Efficiency
Setelah logic utama diperbaiki, minta agent untuk melengkapi edge-case test suite agar mencapai coverage 100%:
opencode generate-tests --target pricing_service.py --framework pytest --coverage-min 95
Karena OpenCode CLI mengirimkan seluruh konteks file berulang kali selama siklus debugging, gateway ModelRouter secara otomatis mengaktifkan fitur prompt caching. Setiap prompt yang memiliki prefix konteks yang sama akan diproses jauh lebih cepat dengan diskon tarif token input hingga 95%.
Untuk melihat rincian model yang mendukung caching dengan tarif paling efisien, kamu bisa langsung memeriksa Katalog Model & Tarif.
Analisis Performa: Custom Gateway vs API Luar Negeri
Menggunakan custom endpoint gateway memberikan kendali teknis dan efisiensi finansial yang nyata bagi developer lokal. Berikut perbandingan komparatifnya:
| Parameter Evaluasi | Akses API Vendor Langsung | Integrasi ModelRouter | Keuntungan Praktis |
|---|---|---|---|
| Metode Pembayaran | Kartu Kredit Internasional / Stripe | QRIS Instan 24/7 | Bebas risiko card decline atau kurs tak terduga |
| Minimum Saldo | $5 - $20 USD (Rp 80.000+) | Rp 5.000 | Cocok untuk uji coba modular dan eksperimen |
| Prompt Caching | Konfigurasi manual per-SDK | Otomatis di server gateway | Hemat bandwidth dan biaya token input hingga 95% |
| Akses Multi-Model | Perlu multi API Key terpisah | Satu API Key untuk 50+ model | Fleksibel beralih dari DeepSeek ke Claude |
| Kebijakan Data | Bervariasi, potensi training | Zero Prompt Retention (ZPR) | Kode proprietary aman dari kebocoran data |
Mengintegrasikan agent langsung ke terminal adalah lompatan produktivitas nyata dalam siklus software development modern. Dengan mengandalkan OpenCode CLI dan gateway yang ramah infrastruktur lokal, kamu mendapatkan kecepatan eksekusi developer Silicon Valley tanpa kerumitan administrasi transaksi lintas negara.

