Dokumentasi

Dokumentasi

mini-SWE-agent

mini tidak memiliki variabel lingkungan URL dasar ataupun tombol untuk diklik. Endpoint ditentukan oleh empat baris YAML yang diteruskan mini langsung ke litellm — ditambah registri harga, karena anggaran per proses mini tidak dapat menghitung token tanpa tarifnya.

mini-SWE-agent tidak memiliki variabel lingkungan base-URL — endpoint ditempatkan di model.model_kwargs.api_base dalam konfigurasi YAML, yang langsung diteruskan mini ke litellm.completion.

kunavo.yaml · mini -c kunavo.yaml
# mini has no base-URL environment variable and no settings UI. The endpoint
# goes in an agent config file, under model.model_kwargs — which mini's docs
# describe as "directly passed to litellm.completion".
model:
  model_name: "openai/claude-sonnet-5"
  model_kwargs:
    custom_llm_provider: "openai"
    api_base: "https://api.kunavo.com/v1"   # keep the /v1
  litellm_model_registry: "kunavo-registry.json"   # see "Cost tracking" below

# The key does not live in this file. With custom_llm_provider: "openai",
# litellm reads OPENAI_API_KEY, and mini documents two ways to set it:
#
#   export OPENAI_API_KEY=sk-kn-...          # environment, wins over .env
#   mini-extra config set OPENAI_API_KEY sk-kn-...   # mini's own .env
#
# Then run it:  mini -c kunavo.yaml
# Or make it the default:  mini-extra config set MSWEA_MINI_CONFIG_PATH kunavo.yaml
Pertahankan akhiran /v1 — mini tidak menyatakannya dalam satu kalimat, jadi berikut penjelasan yang memastikan hal tersebut. mini tidak pernah membaca nilainya: dokumentasinya menyatakan model_kwargs “diteruskan langsung ke litellm.completion” dan menunjukkan pemanggilannya sebagai litellm.completion(model=model_name, messages=messages, **model_kwargs). Jadi, aturan ini berasal dari litellm. Satu-satunya contoh konkret api_base yang pernah dicantumkan mini menyertakan akhiran — http://localhost:8000/v1, dalam contoh vLLM-nya — sementara halaman kompatibilitas OpenAI litellm sendiri menyarankan untuk “memastikan api_base Anda memiliki akhiran /v1” jika permintaan mengembalikan Not Found. Kilo Code dan Aider menggunakan format yang sama; klien bergaya Anthropic dan goose menggunakan origin dasar tanpa akhiran.
Awalan openai/ pada nama model dan custom_llm_provider menjalankan fungsi yang sama. Contoh mini sendiri hanya menggunakan yang kedua — salah satu boleh digunakan, keduanya juga boleh digunakan bersama, tetapi apa pun pilihannya harus sesuai dengan litellm_provider di registri harga. Awalan tersebut menunjukkan protokol wire, bukan vendor: ID Claude di bawah openai/ merupakan kombinasi yang dimaksud, karena ID diresolusikan pada endpoint, bukan di dalam litellm.
Konfigurasi ini diambil dari dokumentasi mini sendiri pada tanggal di bawah. Kunavo belum menjalankan mini-SWE-agent pada endpoint-nya — tidak ada sesi, giliran streaming, maupun interaksi bolak-balik alat, dan hal yang sama berlaku untuk setiap klien lain dalam keluarga ini. Halaman penyiapan yang diterbitkan bukanlah uji kompatibilitas. Dua hal yang secara khusus belum dipastikan: apakah jalur openai/ litellm menegosiasikan pemanggilan alat native — setelan default mini v2 — dengan /v1/chat/completions Kunavo, dan apakah antarmuka tersebut bertindak atas penanda cache_control yang ditambahkan mini sendiri pada ID bernama Claude. Bagian curl di bawah dapat Anda pastikan dalam sepuluh detik; sisanya dapat dipastikan dengan menjalankan proses pertama secara singkat.
Kunavo tidak menyediakan model embedding, text-to-speech, atau speech-to-text, jadi endpoint ini hanya menangani chat completions. mini hanya meminta satu jenis model — mini memiliki satu alat, yaitu bash — tetapi jika skrip di sekitarnya mengindeks repositori atau mentranskripsikan apa pun, panggilan tersebut tetap menggunakan kunci penyedia yang sudah digunakan.
Belum punya kunci? Buat akun Kunavo, buat kunci (diawali sk-kn-) dan tambahkan kredit mulai dari $10 — panggilan dibayar dari saldo tersebut, dan panggilan yang gagal tidak ditagihkan. Dasbor kemudian terbuka pada penyiapan mini-SWE-agent.

Langkah demi langkah

  1. Buat key di /app/keys dan salin — key hanya ditampilkan sekali.
  2. Instal lalu jalankan sekali agar jalurnya tersedia: pip install mini-swe-agent, lalu mini. Proses pertama akan menampilkan lokasi .env dan konfigurasi agen, serta menawarkan mini-extra config setup.
  3. Simpan kunci di lokasi yang akan dicari litellm: export OPENAI_API_KEY=sk-kn-..., atau simpan secara persisten dengan mini-extra config set OPENAI_API_KEY sk-kn-.... mini mencatat bahwa “Variabel lingkungan lebih diutamakan daripada variabel yang ditetapkan dalam berkas .env”, yang biasanya menjelaskan mengapa kunci yang baru saja Anda ubah tampak tidak berubah.
  4. Simpan YAML di atas sebagai kunavo.yaml bersama konfigurasi agen lainnya, lalu tambahkan registri harga dari bagian di bawah — tanpanya, proses akan berhenti karena kesalahan penghitungan biaya, bukan karena jawabannya buruk.
  5. Jalankan dengan mini -c kunavo.yaml, atau gunakan mini -c kunavo.yaml -m openai/claude-haiku-4-5 untuk mengganti ID pada satu kali proses. mini terbuka dalam mode confirm, yang meminta persetujuan Anda untuk setiap perintah — pilihan awal yang baik saat mencoba endpoint baru.
  6. Berikan tugas yang benar-benar menjalankan perintah, bukan sekadar sapaan. Setelan default mini v2 adalah pemanggilan alat native dan prompt bawaan menyatakan bahwa “Setiap respons harus menggunakan alat 'bash' setidaknya sekali untuk menjalankan perintah” — karena itu, satu interaksi bolak-balik alat yang sesungguhnya akan memastikan pasangan konfigurasi ini berfungsi. Jika panggilan alat menghasilkan respons kosong atau tidak valid, mini masih menyediakan jalur penguraian teks yang lebih lama: mini -c mini_textbased.yaml, atau model_class: litellm_textbased dalam berkas Anda sendiri.

Diperiksa terhadap Panduan model lokal mini-SWE-agent pada 21 September 2026. Pengaturan pihak ketiga dapat berubah; jika nama bidang di sini tidak lagi sama dengan yang Anda lihat, halaman tersebut adalah acuan, bukan halaman ini.

Ini versi singkatnya. Panduan lengkap — pilihan model, biaya sesi nyata, dan mode kegagalan — ada di mini-SWE-agent dibandingkan dengan Claude Code.

Verifikasi sebelum men-debug klien

Satu permintaan menentukan apakah masalahnya ada pada endpoint, kunci, atau berkas konfigurasi. Jika ini mengembalikan JSON, base URL dan kunci yang sama berfungsi di mini-SWE-agent.

# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

ID model yang harus dimasukkan ke bidang

Setiap model teks dapat diakses melalui ID model — daftar terkininya ada di GET /v1/models, dan katalog beserta harga ada di halaman model. Tarif dalam USD per 1 juta token, input / output.

ID modelKunavo masuk / keluarKegunaannya di mini-SWE-agent
claude-sonnet-5$1.40 / $7.00ID default untuk sesi kerja — mini mengirim ulang konteks pada setiap langkah, jadi di sinilah tagihan bertambah
claude-opus-5$3.50 / $17.50proses saat rencana yang salah akan mahal; pasangkan dengan cost_limit yang lebih rendah, bukan yang lebih tinggi
claude-haiku-4-5$0.70 / $3.50proses batch untuk banyak tugas, dan setiap loop yang Anda biarkan dalam mode yolo
gpt-5-6-sol$2.00 / $12.00keluarga kedua di balik api_base yang sama — ubah model_name, tambahkan satu entri registri
Penagihan dilakukan per token dari saldo prabayar tanpa biaya bulanan — lihat penagihan. Pada konteks berulang — yang merupakan sebagian besar kiriman editor atau klien obrolan — caching prompt lebih memengaruhi tagihan daripada pilihan model.

Pelacakan biaya yang wajib digunakan di sini

Konfigurasi bawaan mini menyertakan mini.yaml yang memuat cost_limit: 3. — batas maksimum biaya per proses — dan batas tersebut diterapkan oleh kalkulator biaya litellm, yang menentukan harga proses dengan mencari ID model di registrinya. ID Kunavo tidak ada di registri tersebut, jadi hal pertama yang dilihat kebanyakan orang bukanlah jawaban yang buruk, melainkan sebuah kesalahan: halaman pemecahan masalah mini menampilkannya sebagai Exception: This model isn't mapped yet. model=…, custom_llm_provider=….

Ada dua cara untuk mengatasinya, dan keduanya tidak setara. Sakelar global MSWEA_COST_TRACKING="ignore_errors" (atau cost_tracking: "ignore_errors" dalam berkas) menghapus pengaman, bukan memperbaiki masalahnya, dan mini memberi label “HATI-HATI: Ini dapat menyebabkan pengeluaran yang tidak terkelola!” Cara lainnya adalah memberi tahu litellm tarifnya, seperti yang ditunjukkan oleh litellm_model_registry di blok penyiapan. Tarif di bawah ini adalah tarif katalog situs ini yang berlaku saat ini, dikonversi ke format per token litellm:

kunavo-registry.json
{
  "claude-sonnet-5": {
    "input_cost_per_token": 0.0000014,
    "output_cost_per_token": 0.000007,
    "litellm_provider": "openai",
    "mode": "chat"
  },
  "claude-opus-5": {
    "input_cost_per_token": 0.0000035,
    "output_cost_per_token": 0.0000175,
    "litellm_provider": "openai",
    "mode": "chat"
  },
  "claude-haiku-4-5": {
    "input_cost_per_token": 0.0000007,
    "output_cost_per_token": 0.0000035,
    "litellm_provider": "openai",
    "mode": "chat"
  }
}
  1. Nama model dicocokkan secara persis dan peka huruf besar-kecil. Contoh mini menetapkan entri menggunakan nama tanpa awalan penyedianya — jadi di sini, claude-sonnet-5, meskipun konfigurasinya menyatakan openai/claude-sonnet-5.
  2. litellm_provider harus sesuai dengan awalan dan custom_llm_provider. Peringatan mini menyatakannya secara eksplisit: “Jika Anda menggunakan custom_llm_provider atau menambahkan awalan penyedia pada nama model (misalnya, openai/…), maka ini juga harus cocok dengan litellm_provider di konfigurasi!”
  3. Jalurnya juga dapat berasal dari LITELLM_MODEL_REGISTRY_PATH, bukan dari kunci konfigurasi — berguna untuk pelaksana batch, misalnya LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench …
  4. Tarif ini merupakan masukan anggaran, bukan tagihan. Biaya yang benar-benar Anda kenakan tercatat di saldo Kunavo; salin ulang tarifnya jika katalog berubah, atau lihat tarifnya di GET /v1/models.

Pertanyaan umum

Bagaimana cara mengarahkan mini-SWE-agent ke endpoint API kustom?

Melalui berkas konfigurasi, bukan variabel lingkungan — mini sama sekali tidak memiliki variabel URL dasar. Dalam berkas konfigurasi agen, atur model.model_name ke ID Anda (dapat diawali openai/), lalu di bawah model.model_kwargs atur custom_llm_provider: "openai" dan api_base ke URL dasar endpoint. Dokumentasi mini menjelaskan alasan cara ini berfungsi: model_kwargs “diteruskan langsung ke litellm.completion”. Pilih berkas dengan `mini -c kunavo.yaml`, atau jadikan sebagai default dengan MSWEA_MINI_CONFIG_PATH. Untuk Kunavo, URL dasarnya adalah https://api.kunavo.com/v1.

Dari mana mini-SWE-agent membaca kunci API?

Dari variabel kunci litellm yang sesuai dengan penyedia yang Anda pilih. Untuk custom_llm_provider: "openai", variabelnya adalah OPENAI_API_KEY. Anda dapat mengekspornya di shell atau menyimpannya secara persisten dengan `mini-extra config set OPENAI_API_KEY <key>` — perintah ini menulis ke .env milik mini, dan mini mencatat bahwa variabel lingkungan lebih diutamakan daripada nilai dalam berkas. Kunci tidak dicantumkan sebagai kolom di konfigurasi agen. Jika Anda mengikuti tutorial lama, perlu diketahui bahwa panduan migrasi v2 mencantumkan MSWEA_MODEL_API_KEY sebagai “Tidak lagi digunakan untuk mengganti kunci API”.

Apakah api_base mini-SWE-agent perlu diakhiri dengan /v1?

Ya, untuk endpoint yang kompatibel dengan OpenAI — misalnya https://api.kunavo.com/v1 — meskipun mini menyatakannya lewat contoh, bukan sebagai aturan. mini meneruskan model_kwargs langsung ke litellm.completion, jadi konvensi ini berasal dari litellm. Satu-satunya api_base konkret yang dicantumkan dalam dokumentasi mini adalah http://localhost:8000/v1 pada contoh vLLM-nya. Halaman kompatibilitas OpenAI litellm sendiri memastikan hal ini: jika permintaan mengembalikan Not Found, pastikan api_base memiliki akhiran /v1. Karena itu, ketiadaan /v1 akan menyebabkan respons 404, bukan kesalahan autentikasi.

Mengapa mini-SWE-agent gagal dengan pesan "This model isn't mapped yet"?

Karena litellm tidak dapat menentukan harga ID model tersebut, sementara cost_limit per proses milik mini — 3. dolar dalam mini.yaml bawaan — diterapkan melalui kalkulator biaya litellm. Solusi yang direkomendasikan mini adalah registri model: berkas JSON dalam format harga model litellm, dengan entri yang menggunakan nama model tanpa awalan penyedia sebagai kunci, dan litellm_provider yang sesuai dengan nilai custom_llm_provider atau awalan nama yang Anda tetapkan. Arahkan litellm_model_registry di konfigurasi, atau LITELLM_MODEL_REGISTRY_PATH di lingkungan, ke berkas tersebut. Menetapkan MSWEA_COST_TRACKING="ignore_errors" juga akan membungkam pesan, tetapi menghapus pengaman pengeluaran alih-alih memperbaiki masalahnya.

Bisakah mini-SWE-agent menggunakan model Claude melalui endpoint yang kompatibel dengan OpenAI?

Bisa. Awalan openai/ dan custom_llm_provider menunjukkan protokol wire, bukan vendor: litellm mengirim chat completion berbentuk OpenAI ke api_base yang Anda konfigurasi dan meneruskan ID model, sehingga ID Claude diresolusikan pada endpoint tersebut, bukan di tabel penyedia litellm. Ada satu dampak khusus mini yang perlu diketahui: mini menambahkan pengaturan kontrol cache secara otomatis jika nama model yang diresolusikan memuat "anthropic", "claude", "sonnet", atau "opus"; ID openai/claude-… yang diawali awalan tersebut juga memenuhi kondisi ini.

Apakah Kunavo telah menguji mini-SWE-agent pada endpoint-nya?

Belum. Yang diperiksa pada 21 September 2026 adalah dokumentasi mini sendiri — kunci, urutannya, dan format api_base dikutip dari dokumentasi tersebut. Kunavo belum menjalankan sesi mini pada endpoint-nya dan tidak mengklaim kompatibilitas terkait streaming, interaksi bolak-balik alat, atau pelaporan biaya di klien ini. Dua hal yang secara khusus belum dipastikan: apakah jalur openai/ litellm menegosiasikan pemanggilan alat native — setelan default mini sejak v2.0 — dengan endpoint chat-completions, dan apakah endpoint tersebut bertindak atas penanda cache_control yang ditambahkan mini pada ID bernama Claude. Perintah curl di halaman ini memastikan endpoint dan kuncinya; sisanya dapat dipastikan dengan menjalankan proses pertama secara singkat dalam mode confirm.