Bagian Basis Pengetahuan ▾

Navigasi

▸ Mulai di sini Berdasarkan peran

Kategori

Alat 52
Glosarium 12

Alat

Goose + JoinGonka Gateway: penyedia dan kunci sendiri di keyring

Goose adalah agen AI open-source yang dapat diperluas yang berjalan di mesin Anda: aplikasi desktop untuk macOS, Linux, dan Windows, CLI untuk terminal, dan API untuk integrasi. Ia membaca dan mengedit file, menjalankan perintah, dan menghubungkan layanan eksternal melalui ekstensi MCP. Ditulis dalam Rust dan didistribusikan di bawah lisensi Apache 2.0. Proyek ini tumbuh di perusahaan Block dan sekarang menjadi bagian dari Agentic AI Foundation di bawah Linux Foundation; repositori kanonis adalah github.com/aaif-goose/goose, alamat lama block/goose mengarahkan ke sana.

Goose mendeskripsikan penyedianya secara deklaratif: file JSON di direktori custom_providers akan menambahkan sumber model lain ke daftar. JoinGonka Gateway berbicara dalam OpenAI Chat Completions, sehingga terhubung dengan satu perintah penginstal atau satu file. Setelah itu, agen berjalan pada model jaringan terdesentralisasi Gonka — DeepSeek V4 Flash, GLM-5.3 Flash, dan MiniMax M2.7 — dengan harga seragam: $0.0069 per juta token input.

Satu fitur Goose yang perlu diketahui: ia tidak menyimpan kunci penyedia di config, melainkan di penyimpanan rahasia sistem. Bergantung pada apakah ada penyimpanan seperti itu di mesin Anda, apakah masih diperlukan satu langkah manual setelah penginstal — bagian khusus membahas hal ini. Perintah dan pesan di bawah telah diverifikasi dengan eksekusi langsung goose 1.51.0 melalui gateway pada 23 September 2026. Setelah konfirmasi alamat, 3M token gratis akan masuk ke akun Anda — cukup untuk mengulangi semua ini sendiri.

Mulai cepat: instalasi dan satu perintah

Langkah 1: pasang Goose. Cara resmi untuk CLI dari dokumentasi proyek:

# macOS and Linux: the script puts the binary in ~/.local/bin
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash

# macOS, Homebrew
brew install block-goose-cli

Variabel CONFIGURE=false menonaktifkan wizard goose configure yang jika tidak akan dijalankan skrip segera setelah instalasi: penyedianya akan dikonfigurasi oleh installer. Jika direktori ~/.local/bin tidak ada di PATH, skrip akan memberi tahu. Untuk Windows, di repositori yang sama ada skrip download_cli.ps1, dan aplikasi desktopnya diunduh dari halaman dokumentasi; aplikasi itu dan CLI membaca pengaturan yang sama, jadi semua di bawah ini berlaku untuk keduanya. Verifikasi — goose --version.

Langkah 2: dapatkan kunci. Daftar di gate.joingonka.ai/register, konfirmasi alamatnya, dan buat kunci dengan prefiks jg- di bagian "Kunci API". Satu kunci dan satu saldo berlaku untuk semua model di jaringan.

Langkah 3: jalankan installer.

npx @joingonka/setup --tool goose

Installer akan menanyakan kunci — tidak diteruskan sebagai argumen command line agar tidak tersimpan di riwayat shell — lalu melakukan hal berikut:

  • membuat file penyedia custom_providers/custom_joingonka.json berisi alamat gateway dan tiga model jaringan dengan jendela konteks yang sebenarnya, dengan izin 600. Nama custom_joingonka dan CUSTOM_JOINGONKA_API_KEY sama dengan yang diturunkan Goose sendiri dari nama "JoinGonka", jadi kunci dari wizard akan masuk ke tempat yang benar;
  • menjadikan JoinGonka penyedia default dengan model DeepSeek V4 Flash — tetapi hanya jika penyedia belum dipilih atau yang dipilih adalah milik kami dengan model kosong atau yang sudah tidak ada di jaringan. Pilihan pihak lain tidak diusik, ia hanya mencetak perintah untuk mencoba: goose session --provider custom_joingonka --model …;
  • menaruh kunci di secrets.yaml, hanya jika penyimpanan rahasia Goose memang berbasis file; jika tidak, ia akan langsung mengatakan bahwa masih ada satu langkah lagi — detailnya di bagian tentang kunci;
  • membuat cadangan file yang diubah dan di akhir mengirim permintaan langsung ke gateway untuk segera memeriksa kunci, alamat, dan model.

Installer menemukan direktori pengaturan sama seperti Goose sendiri: ~/.config/goose di Linux dan macOS, %APPDATA%\Block\goose\config di Windows, <root>/config jika GOOSE_PATH_ROOT ditetapkan. Model lain ditentukan dengan flag --model beserta singkatan deepseek, glm, atau minimax; model yang disebutkan secara eksplisit selalu ditulis. Mode tanpa pertanyaan mengambil kunci dari variabel environment:

JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool goose --model glm --non-interactive

Konfigurasi manual: file penyedia dan config.yaml

Segala sesuatu yang dilakukan installer dapat dilakukan secara manual. Provider adalah file JSON terpisah ~/.config/goose/custom_providers/custom_joingonka.json; nama file harus sama dengan bidang name:

{
  "name": "custom_joingonka",
  "engine": "openai",
  "display_name": "JoinGonka",
  "description": "JoinGonka Gateway — Gonka AI inference (OpenAI-compatible)",
  "api_key_env": "CUSTOM_JOINGONKA_API_KEY",
  "base_url": "https://gate.joingonka.ai/v1/chat/completions",
  "models": [
    { "name": "deepseek-ai/DeepSeek-V4-Flash-0731", "context_limit": 380000 },
    { "name": "zai-org/GLM-5.3-Flash", "context_limit": 390000 },
    { "name": "MiniMaxAI/MiniMax-M2.7", "context_limit": 200000 }
  ],
  "supports_streaming": true,
  "requires_auth": true
}
BidangNilaiPenting
namecustom_joingonkaIni juga merupakan nama file dan nilai untuk --provider
engineopenaiFormat OpenAI Chat Completions adalah jalur utama gateway. Selain itu, Goose mengenali anthropic dan ollama
api_key_envCUSTOM_JOINGONKA_API_KEYBukan kuncinya, melainkan nama secret. Bidang untuk nilainya sendiri tidak ada di dalam file — di mana Goose mencarinya dibahas di bagian berikutnya
base_urlhttps://gate.joingonka.ai/v1/chat/completionsAlamat lengkap, seperti dalam contoh dokumentasi Goose: bentuk ini juga dipahami oleh build lama
modelstiga entri dengan context_limitTanpa context_limit, Goose mengambil jendela dari katalog modelnya sendiri, atau 128.000 token untuk model yang tidak dikenal, dan memampatkan riwayat saat mencapai 80% dari jendela. Model jaringan memiliki jendela dari 200.000 hingga 390.000
supports_streaming, requires_authtrueRespons diterima melalui streaming, permintaan memerlukan kunci. Jangan matikan streaming: tanpa itu dan tanpa batas dalam permintaan, gateway akan membatasi respons ke nilai default yang singkat

Tidak ada batas respons terpisah untuk entri model di Goose. Untuk model semacam itu, ia sama sekali tidak mengirimkan batasan dalam permintaan — kami telah memverifikasinya melalui log permintaannya — dan dalam mode streaming, gateway membatasi respons sendiri sesuai dengan plafon model: 32.768 token untuk DeepSeek V4 Flash, 8.192 untuk GLM-5.3 Flash dan MiniMax M2.7. Variabel global GOOSE_MAX_TOKENS tidak perlu disetel untuk ini: ia berlaku untuk semua provider sekaligus.

Goose membaca file provider dengan parsing JSON yang ketat: komentar atau trailing comma akan membuat provider hilang dari daftar. Anda dapat membuatnya melalui wizard (goose configure → Custom Providers), tetapi wizard tidak menanyakan jendela konteks — Anda harus menambahkannya sendiri secara manual.

Provider dan model default berada di ~/.config/goose/config.yaml. Beginilah cara Goose menulisnya sendiri:

active_provider: custom_joingonka
providers:
  custom_joingonka:
    enabled: true
    model: deepseek-ai/DeepSeek-V4-Flash-0731
    configured: true

Tata letak lama — kunci flat GOOSE_PROVIDER dan GOOSE_MODEL di root file — juga berfungsi: Goose membacanya dan secara otomatis menerjemahkannya ke format baru saat pengaturan disimpan untuk pertama kalinya, seperti yang terjadi setelah goose configure. Installer pada file kosong menulis kunci flat tersebut — versi apa pun memahaminya. Variabel lingkungan dengan nama yang sama lebih diutamakan daripada file: jika disetel di shell, pilihan dari config.yaml tidak akan berlaku, dan installer akan memberikan peringatan mengenai hal ini.

Di mana kunci berada: keyring, secrets.yaml, atau variabel lingkungan

Di file provider Goose, hanya ada nama secret — CUSTOM_JOINGONKA_API_KEY. Nilainya dicari secara berurutan: di variabel environment dengan nama tersebut, lalu di penyimpanan secret sistem (keyring, di macOS — Keychain), kemudian di file secrets.yaml di samping config. Secret masuk ke file tersebut ketika penyimpanan Goose berbasis file, dan tersimpan di sana dalam teks terbuka, dengan izin 600. Sedangkan di config.yaml, Goose sama sekali tidak mencari key (dokumentasi).

Penyimpanan menjadi berbasis file jika keyring dinonaktifkan — melalui variabel GOOSE_DISABLE_KEYRING dengan nilai apa pun atau baris GOOSE_DISABLE_KEYRING: true di config.yaml — atau tidak tersedia: server tanpa sesi grafis, container, CI. Pada kasus kedua, Goose menulis ke log « Keyring unavailable. Using file storage for secrets. » dan otomatis beralih ke file — persis inilah yang kami lihat di container. Installer tidak bisa menulis ke keyring, dan tidak akan menonaktifkannya untuk Anda: Goose akan berhenti melihat secret yang sudah tersimpan di sana. Dari sini muncul skenario berikut:

SituasiApa yang akan dilakukan installerApa yang tersisa untuk Anda
Desktop dengan keyring: macOS, Windows, Linux dengan sesi grafisAkan menuliskan provider dan model, tidak menulis key dan akan mengatakan « ONE STEP LEFT »Simpan key sekali melalui wizard
Server atau container tanpa keyring, secrets.yaml belum adaSama: penyimpanan file tidak bisa ditebak dari tanda-tanda tidak langsungLewati wizard — Goose sendiri akan menaruh key di secrets.yaml, selanjutnya installer akan memperbaruinya di sana
GOOSE_DISABLE_KEYRING disetel atau secrets.yaml sudah adaAkan menulis key ke secrets.yaml dengan izin 600, secret lain tetap dipertahankanTidak ada
Key diberikan ke provider oleh perintah (field auth)Tidak akan menulis key: pada Goose auth dan api_key_env saling eksklusifTidak ada

Langkah yang tersisa. Jalankan goose configure dan jawab pertanyaan wizard — beginilah tampilannya pada eksekusi kami:

  • What would you like to configure? → Configure Providers;
  • Which model provider should we use? → JoinGonka (pada kami ini yang pertama);
  • Would you like to set CUSTOM_JOINGONKA_API_KEY? (optional) → Yes, lalu pada Enter value for CUSTOM_JOINGONKA_API_KEY tempelkan key — alih-alih karakter akan muncul kotak-kotak. Key langsung disimpan;
  • Would you like to configure advanced settings? → No;
  • Select a model — Goose mendapatkan daftarnya dari gateway: MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731, zai-org/GLM-5.3-Flash. Kursor berada di baris pertama — untuk mempertahankan model yang dipilih installer, pilih DeepSeek V4 Flash dengan tombol panah. Setelah permintaan verifikasi, wizard akan berakhir dengan baris « Configuration saved successfully ».

Di Goose Desktop, jalurnya seperti ini: Settings → Models → Configure providers → JoinGonka → key → Submit. Tidak ingin menempelkan key secara manual — letakkan di variabel dan jalankan wizard dari shell yang sama: Goose akan menulis « CUSTOM_JOINGONKA_API_KEY is set via environment variable » dan menawarkan untuk menyimpan nilainya:

read -s CUSTOM_JOINGONKA_API_KEY && export CUSTOM_JOINGONKA_API_KEY
goose configure

Dan untuk sekali jalan, key bisa diteruskan tanpa disimpan sama sekali: CUSTOM_JOINGONKA_API_KEY=jg-your-key goose session, di PowerShell — $env:CUSTOM_JOINGONKA_API_KEY = "jg-your-key"; goose session. Variabel environment lebih diutamakan daripada nilai yang tersimpan, tetapi hanya bertahan sampai shell ditutup.

Pemeriksaan: apa yang seharusnya terjadi

Pertama-tama, lihat pengaturan apa yang sebenarnya dibaca Goose:

goose info -v

Di blok « goose Configuration » harus ada baris GOOSE_PROVIDER: custom_joingonka dan GOOSE_MODEL dengan ID model. Setelah itu, jalankan sekali tanpa sesi interaktif: taruh file berisi bug yang jelas di direktori kosong dan minta Goose menemukannya.

goose run --no-session -t "Read calc.py and tell me in one sentence whether it has a bug."

Flag --no-session tidak menyimpan proses ini ke riwayat. Di bagian atas akan muncul baris seperti ● new session · custom_joingonka deepseek-ai/DeepSeek-V4-Flash-0731, lalu pemanggilan tool — ▸ shell dengan perintah cat calc.py — dan jawaban berisi bug yang ditemukan. Untuk memakai model lain pada satu kali jalan, gunakan --model: zai-org/GLM-5.3-Flash atau MiniMaxAI/MiniMax-M2.7. Pada uji coba kami 23 September 2026, ketiga model di jaringan berhasil melewati siklus «permintaan → tool → hasil → jawaban». Secara bawaan, CLI Goose menyembunyikan penalaran model — untuk menampilkannya, gunakan variabel GOOSE_CLI_SHOW_THINKING=1 jika outputnya keluar di terminal. Dari sisi gateway, permintaan bisa dilihat di dashboard: bagian «Penggunaan», rincian «Per model» dan «Per kunci».

Kalau ada yang tidak beres, diagnosisnya biasanya bisa langsung dibaca dari pesan errornya:

Yang terlihatArtinyaYang harus dilakukan
Error missing required key CUSTOM_JOINGONKA_API_KEY: Configuration value not foundGoose tidak menemukan kunci di environment maupun di penyimpanan secretSimpan kunci lewat wizard. Jika kunci ada di secrets.yaml tetapi error tetap muncul, berarti Goose kini menyimpan secret di keyring — simpan ulang kunci lewat wizard
Authentication failed … Status: 401 Unauthorized. Response: Invalid API key.Gateway menolak kunciSimpan ulang kunci — lengkap, tanpa spasi. Ingat bahwa variabel CUSTOM_JOINGONKA_API_KEY di environment lebih diutamakan daripada nilai yang tersimpan
Error Unknown provider: custom_joingonkaFile provider gagal dibaca: ada komentar, koma menggantung, atau salah ketik di JSONPerbaiki filenya, atau hapus dan jalankan ulang installer: jika filenya rusak, installer tidak akan menulis apa pun, hanya menyebutkan namanya
Bad request (400): Model "…" not found. Available: …Salah ketik pada nama modelGateway sendiri akan menampilkan daftar ID yang tersedia — salin yang Anda butuhkan
Rate limit exceeded: Model "…" is currently overloaded in the Gonka network (rate limit)Kapasitas model di jaringan habis saat jam sibukGoose akan mengulang permintaan sendiri, tetapi dengan jeda pendek. Ganti model — /model di sesi atau --model saat menjalankan — atau tunggu sebentar; status jaringan bisa dilihat di halaman status
402Saldo habisIsi ulang saldo di bagian «Billing»; kuncinya sendiri masih berfungsi

Berapa biayanya

Agen menghabiskan token dengan cara yang berbeda dari chat biasa. Dalam konfigurasi standar, Goose mengirimkan deskripsi delapan belas alat bawaan ke model, dan dalam pengujian kami, setiap langkah memakan sekitar 4,6 ribu token input bahkan sebelum pertanyaan Anda. Tugas "membaca file dan menemukan kesalahan" memakan dua hingga tiga langkah dan 10-15 ribu token, hampir semuanya adalah input; satu permintaan pendek tambahan dilakukan Goose sendiri untuk menentukan nama sesi. Ekstensi yang tidak perlu dapat dimatikan di goose configure → Toggle Extensions — ini adalah cara termudah untuk mengurangi input.

Melalui JoinGonka Gateway, token berharga $0.0069 per juta di input dan $0.021 per juta di output — harga sama untuk semua model di jaringan dan diambil di halaman ini dari sumber langsung.

SkenarioPenggunaanMelalui Gateway
Tugas sekali jalan: baca file, cari kesalahan10-15K tokenseper seratus sen
Hari kerja aktif3-7M tokenbeberapa sen
Bulan pengembangan aktif~150M tokensekitar satu dolar

Estimasi di kolom kanan didasarkan pada harga September 2026. Sebagai perbandingan — bagaimana cara membayar model di Goose:

MetodeModel PembayaranApa yang membatasi
Langganan Claude, ChatGPT, atau Gemini melalui ACPjumlah tetap per bulankuota dan batas vendor
Kunci vendor langsungper token sesuai harga vendortagihan naik seiring panjangnya sesi
JoinGonka Gatewayper token, saldo prabayarpenggunaan terlihat di dashboard; tidak ada langganan atau kuota bulanan

Penggunaan tepat dan sisa saldo dapat dilihat di dashboard, di bagian "Penggunaan" dan "Penagihan". Mengapa DeepSeek V4 Flash menjadi default — dengan batas jawaban terbesar di jaringan — dijelaskan secara mendetail dalam ulasan model.

Hal yang perlu diperhatikan saat bekerja

Mode konfirmasi. Secara default, Goose berjalan dalam mode auto — sepenuhnya otonom: ia sendiri mengedit dan menghapus file, menjalankan perintah, dan memakai ekstensi tanpa bertanya apa pun. Di proyek sendiri ini praktis, tapi pada kode orang lain sebaiknya mode diperketat:

# inside a session
/mode smart_approve

# permanently, as a line in config.yaml
GOOSE_MODE: smart_approve
ModePerilaku Goose
autoBertindak tanpa konfirmasi — mode default
smart_approveMelewatkan sendiri tindakan berisiko rendah, menanyakan sisanya
approveBertanya sebelum setiap pemanggilan tool
chatHanya mengobrol: tanpa tool, tanpa edit

Ini sifat Goose sendiri, tidak bergantung pada provider model.

Ganti model. Di dalam sesi — perintah /model dengan ID, misalnya /model zai-org/GLM-5.3-Flash; sekali jalan — flag --model pada goose run dan goose session; permanen — goose configure atau baris model di config.yaml. Providernya tetap sama. GLM-5.3 Flash yang bernalar bagus untuk logika yang rumit, tapi batas jawabannya 8192 token, dan sebagian terpakai untuk penalaran — detailnya di ulasan model.

Eksekusi tanpa pengawasan. goose run cocok untuk skrip dan CI: flag -q hanya menyisakan jawaban model di output, --output-format json memberikan hasil untuk diproses. Pembatas --max-turns (berapa langkah yang dilakukan agen tanpa campur tangan manusia) dan --max-tool-repetitions (berapa kali berturut-turut satu tool boleh dipanggil dengan argumen yang sama) melindungi dari looping.

Privasi. Statistik penggunaan anonim di Goose nonaktif secara default (GOOSE_TELEMETRY_ENABLED). Gateway tidak menyimpan isi prompt dan jawaban — yang tersisa di statistik hanya agregat pemakaian.

Goose terhubung ke JoinGonka Gateway dengan satu perintah — npx @joingonka/setup --tool goose — atau satu file: penyedia custom_joingonka di custom_providers (engine: openai, alamat https://gate.joingonka.ai/v1/chat/completions, model dengan context_limit yang jujur) ditambah penyedia dan model default di config.yaml. Kunci Goose tidak disimpan di konfigurasi, melainkan di keyring atau di secrets.yaml: pada mesin dengan keyring hanya tersisa satu langkah — goose configure → Configure Providers → JoinGonka → kunci, dan saat memilih model sebaiknya biarkan DeepSeek V4 Flash. Verifikasi — goose run dan bagian "Penggunaan" di dashboard; harga untuk DeepSeek V4 Flash, GLM-5.3 Flash, dan MiniMax M2.7 sama, jadi model dipilih berdasarkan perilaku, bukan berdasarkan anggaran.

Ingin tahu lebih banyak?

Jelajahi bagian lain atau mulai hasilkan GNK sekarang.

Dapatkan kunci dan token gratis →