Jalankan Goose di endpoint OpenAI-compatible kustom.

Updated 2026-07-29

Provider openai Goose menerima override host. Atur GOOSE_PROVIDER=openai, arahkan OPENAI_HOST ke https://api.apisrouter.com, export satu key, dan seluruh loop agent, termasuk tool call, dirutekan melalui satu endpoint dengan setiap model katalog bisa dialamatkan lewat id.

Jawaban singkat: pertahankan provider openai, override host-nya.

Goose menyediakan jalur endpoint-kustom yang terdokumentasi: pertahankan GOOSE_PROVIDER diatur ke openai dan override ke mana provider itu mengarah. OPENAI_HOST menggantikan host default api.openai.com, OPENAI_API_KEY mengautentikasi, dan GOOSE_MODEL memilih model dengan id persis. Path request-nya terpisah: OPENAI_BASE_PATH default ke v1/chat/completions dan biasanya tidak perlu diubah. Perhatikan bentuknya dengan cermat, karena ini kebalikan dari kebanyakan tool sekelasnya: OPENAI_HOST menerima host telanjang, https://api.apisrouter.com, tanpa suffix /v1. Bagian /v1/chat/completions berada di OPENAI_BASE_PATH. Menambahkan /v1 ke host menggandakan path dan menghasilkan 404 yang terlihat seperti gateway yang rusak.

export GOOSE_PROVIDER=openai
export OPENAI_HOST=https://api.apisrouter.com   # host telanjang, tanpa /v1
export OPENAI_API_KEY=sk-APIsRouter-...
export GOOSE_MODEL=claude-sonnet-4-6

goose session

Bagaimana Goose berbicara dengan provider-nya.

Goose (block di GitHub, sekitar 51K bintang) adalah agent engineering otonom dari Block yang merencanakan tugas, mengedit file, menjalankan perintah shell, dan menjalankan ekstensi berbasis MCP. Semua itu berada pada satu percakapan model: setiap langkah loop adalah request /v1/chat/completions dengan definisi tool terlampir, jadi konfigurasi provider memutuskan di mana seluruh agent berjalan. Konfigurasinya berlapis. Jalur interaktifnya adalah goose configure, yang untuk provider openai meminta API key dan host kustom opsional, lalu menulis pengaturan non-secret seperti GOOSE_PROVIDER dan GOOSE_MODEL ke ~/.config/goose/config.yaml; aplikasi desktop menampilkan pengaturan provider yang sama melalui UI-nya. Secret ditangani terpisah: key masuk ke keychain sistem atau berasal dari environment variable, dan key yang ditempel langsung ke config.yaml diabaikan, bukan dibaca. Environment variable mengoverride file-nya, yang membuat jalur env di atas berfungsi di mana pun dari shell laptop hingga runner CI. Karena Goose meneruskan GOOSE_MODEL sebagai string biasa, id-nya bisa apa pun yang dilayani endpoint di balik OPENAI_HOST: id Claude hari ini, id Kimi atau Qwen besok, hanya berbeda satu variabel.

Jalur deklaratif: file provider kustom.

Di luar override env, dokumentasi Goose terkini juga menjelaskan provider kustom deklaratif: file JSON yang ditaruh di ~/.config/goose/custom_providers/ (direktori konfigurasi per-platform di Windows) yang mendaftarkan provider bernama di samping yang bawaan. File-nya mendeklarasikan engine (openai untuk endpoint chat-completions), environment variable mana yang menyimpan key, URL endpoint, dan model yang ditawarkan provider. Perhatikan konvensi URL-nya di sini, karena ia berbalik lagi: tidak seperti OPENAI_HOST, base_url provider kustom adalah URL request lengkap termasuk path-nya, https://api.apisrouter.com/v1/chat/completions. Setiap entri models membawa context_limit agar Goose tahu window yang bisa dikemasnya. File deklaratif adalah pilihan yang lebih cocok saat Anda ingin gateway muncul sebagai providernya sendiri yang bernama di daftar provider Goose, dengan variabel key-nya sendiri, alih-alih menempati slot openai. Override env adalah pilihan yang lebih cocok untuk CI dan pertukaran cepat. Keduanya berakhir di endpoint yang sama; pilih satu dan hindari menumpuk keduanya.

{
  "name": "apisrouter",
  "display_name": "APIsRouter",
  "engine": "openai",
  "api_key_env": "APISROUTER_API_KEY",
  "base_url": "https://api.apisrouter.com/v1/chat/completions",
  "models": [
    { "name": "claude-sonnet-4-6", "context_limit": 200000 },
    { "name": "claude-opus-4-7",   "context_limit": 200000 },
    { "name": "kimi-k2.7-code",    "context_limit": 200000 }
  ],
  "supports_streaming": true,
  "requires_auth": true
}

Memilih model untuk agent otonom.

Alur kerja praktisnya adalah menahan set tugas Anda tetap dan merotasi GOOSE_MODEL antara dua atau tiga kandidat untuk beberapa sesi masing-masing. Karena setiap kandidat dirutekan melalui key yang sama, tampilan penggunaan per-key memberi harga setiap eksperimen tanpa pembukuan apa pun di sisi Anda.

  • Goose menjalankan sesi tanpa pengawasan: rencanakan, edit, jalankan, baca output, ulangi. Keandalan tool-call lebih penting dari kefasihan mentah, itulah mengapa claude-sonnet-4-6 dan claude-opus-4-7 adalah default yang dituju orang untuk loop utama.
  • Id yang disetel untuk coding seperti kimi-k2.7-code layak diuji untuk sesi refactor-heavy; melalui gateway pengujian itu hanya satu perubahan GOOSE_MODEL, bukan migrasi provider.
  • Sesi panjang mengakumulasi context. Model dengan window 200k sungguhan, dideklarasikan jujur via context_limit di jalur deklaratif, membiarkan Goose membawa lebih banyak riwayat sesi sebelum meringkas.
  • Untuk penggunaan scripted atau CI, id mid-tier (gpt-5.4, qwen3.7-max) sering melewati ambang untuk tugas yang terlingkup baik pada sebagian kecil pengeluaran frontier; ukur pada tugas Anda sendiri sebelum default ke atas.

Bayar sesuai pemakaian · di bawah harga resmi

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModelHarga ResmiHarga Kami
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
Claude Opus 4.7$5.00 / $25.00 per M$4.00 / $20.00 per M
GPT-5.4$2.50 / $15.00 per M$2.00 / $12.00 per M
Kimi K2.7 Code$0.95 / $4.00 per M$1.00 / $4.00 per M
Qwen 3.7 Max$2.50 / $7.50 per M$2.50 / $7.50 per M

Mode kegagalan spesifik Goose.

/v1 ditambahkan ke OPENAI_HOST. Variabel host menerima host telanjang; path-nya berada di OPENAI_BASE_PATH, yang sudah default ke v1/chat/completions. https://api.apisrouter.com/v1 sebagai host menghasilkan request /v1/v1/... dan 404. Ini kesalahan paling umum, justru karena setiap tool lain menginginkan suffix /v1. Konvensi URL-lengkap di file provider kustom. base_url deklaratif adalah URL request lengkap termasuk /v1/chat/completions, konvensi yang berlawanan dari OPENAI_HOST. Menyalin host telanjang ke file provider kustom merusaknya sama pastinya dengan menyalin URL lengkap ke OPENAI_HOST. Key di config.yaml tidak mengautentikasi. Goose membaca secret dari keychain atau environment, dan mengabaikan nilai key yang ditaruh di config.yaml. Jika 401 bertahan setelah mengedit file, itulah sebabnya; export variabelnya atau jalankan ulang goose configure dan masukkan key saat diminta. Sesi desktop tidak melihat export shell. Aplikasi desktop tidak mewarisi apa pun dari profile terminal Anda. Konfigurasikan provider melalui UI pengaturan desktop, atau luncurkan dari shell yang sudah mengatur variabelnya. Sumber konfigurasi bertumpuk. Export OPENAI_HOST lama bisa mengoverride apa yang baru saja Anda atur di config.yaml, karena environment mengalahkan file. Saat routing terlihat salah, cetak variabel yang relevan di shell yang sama yang meluncurkan Goose sebelum menyalahkan salah satu lapisan.

Siapa yang merutekan Goose melalui gateway.

  • Engineer yang menjalankan Goose sebagai daily driver yang ingin Claude, GPT, Kimi, dan Qwen bisa dijangkau di balik satu key alih-alih satu set kredensial per vendor.
  • Tim yang menaruh Goose ke CI atau job terjadwal. Jalur env-only berarti runner-nya hanya butuh dua variabel routing dan satu secret, mudah disuntikkan dan mudah dirotasi.
  • Developer yang membandingkan model agent pada tugas nyata. Setiap kandidat adalah satu nilai GOOSE_MODEL terhadap endpoint yang sama, diberi harga otomatis oleh penggunaan per-key.
  • Tim platform yang ingin pengeluaran agent terlihat per key dan per model pada satu permukaan billing, alih-alih merekonsiliasi beberapa dashboard vendor.
  • Developer tanpa akses ke billing vendor tertentu. Akses berbasis top-up tanpa syarat kartu menghilangkan ketergantungan sign-up per provider.

Verifikasi endpoint dan debug sesi pertama.

Konfirmasi gateway melayani id di GOOSE_MODEL sebelum memulai sesi; listing /v1/models adalah ejaan otoritatif, termasuk suffix versi. Kegagalan sesi pertama konsisten. 404 berarti host dan path tersusun salah, hampir selalu /v1 di OPENAI_HOST. 401 berarti key tidak berada di tempat yang dicari Goose: tidak di-export di shell yang meluncurkannya, tidak di keychain, atau duduk tak berguna di dalam config.yaml. Error model-not-found dari gateway adalah salah ketik id di GOOSE_MODEL. Jika sesi mulai tapi tool call berperilaku aneh, cek Anda berada di model yang benar-benar mendukung penggunaan tool; id di tabel di atas semuanya mendukung. Setelah loop berjalan, konsol APIsRouter menunjukkan model per request, hitungan token, dan pengeluaran. Agent otonom adalah beban kerja di mana ini paling penting: sesi panjang, giliran tool-call banyak, dan tampilan penggunaan adalah cara Anda melihat berapa biaya satu sore Goose sebenarnya.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY" | head -50

Pertanyaan umum

Bisakah Goose menjalankan model Claude atau Kimi melalui provider openai-nya?

Ya. Provider openai adalah client protokol, bukan pengunci vendor: dengan OPENAI_HOST diarahkan ke endpoint multi-vendor, GOOSE_MODEL bisa berupa id apa pun yang dilayani, termasuk Claude, Kimi, dan Qwen, dan loop agent dengan tool calling berfungsi tanpa perubahan.

Apakah OPENAI_HOST butuh suffix /v1?

Tidak, dan menambahkannya merusak routing. OPENAI_HOST menerima host telanjang (https://api.apisrouter.com); path request berada di OPENAI_BASE_PATH, yang default ke v1/chat/completions. Ini kebalikan dari konvensi yang digunakan kebanyakan tool.

Apa perbedaan override env dan file provider kustom?

Override env merutekan ulang provider openai bawaan: paling cepat disiapkan, ideal untuk CI. JSON provider kustom di ~/.config/goose/custom_providers/ mendaftarkan gateway sebagai providernya sendiri yang bernama dengan variabel key dan daftar model sendiri. Endpoint sama bagaimanapun; pilih satu.

Mengapa Goose mengabaikan API key yang saya taruh di config.yaml?

Sengaja begitu. Goose membaca secret dari keychain sistem atau environment variable dan mengabaikan key di config.yaml. Export OPENAI_API_KEY (atau variabel api_key_env Anda), atau masukkan key melalui goose configure atau pengaturan desktop agar mendarat di keychain.

Apakah CLI dan aplikasi desktop berbagi konfigurasi ini?

Mereka berbagi config.yaml dan keychain, tapi tidak environment shell Anda: variabel yang di-export di terminal menjangkau sesi CLI yang diluncurkan dari terminal itu, bukan aplikasi desktop. Konfigurasikan aplikasi desktop melalui UI pengaturannya, atau andalkan file konfigurasi bersama plus keychain.

Model mana yang harus dinamai GOOSE_MODEL untuk kerja agent?

Mulai dengan claude-sonnet-4-6 untuk loop utama; ia bertahan baik pada penggunaan tool multi-langkah. Uji kimi-k2.7-code pada sesi refactor-heavy dan id mid-tier pada tugas CI yang terlingkup baik. Di balik satu endpoint setiap pengujian adalah satu perubahan variabel.