Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 52
Słownik 12

Narzędzia

Goose + JoinGonka Gateway: własny dostawca i klucz w keyring

Goose — otwarty, rozszerzalny agent AI, który działa na Twojej maszynie: aplikacja desktopowa dla macOS, Linux i Windows, CLI dla terminala i API do osadzania. Czyta i poprawia pliki, uruchamia polecenia, podłącza zewnętrzne usługi przez rozszerzenia MCP. Napisany w Rust, rozprowadzany na licencji Apache 2.0. Projekt wyrósł w firmie Block, a teraz wchodzi w skład Agentic AI Foundation przy Linux Foundation; kanoniczne repozytorium — github.com/aaif-goose/goose, stary adres block/goose przekierowuje tam.

Własnych dostawców Goose opisuje deklaratywnie: plik JSON w katalogu custom_providers — i na liście pojawia się kolejne źródło modeli. JoinGonka Gateway mówi w języku OpenAI Chat Completions, dlatego podłącza się jedną komendą instalatora lub jednym plikiem. Po tym agent działa na modelach zdecentralizowanej sieci Gonka — DeepSeek V4 Flash, GLM-5.3 Flash i MiniMax M2.7 — po jednolitej cenie: $0.0069 za milion tokenów wejściowych.

Jedną cechę Goose lepiej znać wcześniej: klucze dostawców przechowuje nie w pliku konfiguracyjnym, a w systemowym magazynie sekretów. Od tego, czy taki magazyn istnieje na Twojej maszynie, zależy, czy po instalatorze zostanie jeden ręczny krok — poświęcono mu osobny rozdział. Polecenia i komunikaty poniżej zostały zweryfikowane żywym uruchomieniem goose 1.51.0 przez bramę 23 września 2026. Po potwierdzeniu adresu na konto trafią 3M darmowych tokenów — wystarczą, aby powtórzyć to wszystko samodzielnie.

Szybki start: instalacja i jedno polecenie

Krok 1: zainstaluj Goose. Oficjalne sposoby dla CLI z dokumentacji projektu:

# 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

Zmienna CONFIGURE=false wyłącza kreator goose configure, który skrypt inaczej uruchamia zaraz po instalacji: providera skonfiguruje instalator. Jeśli katalogu ~/.local/bin nie ma w PATH, skrypt sam o tym powie. Dla Windowsa w tym samym repozytorium jest skrypt download_cli.ps1, a aplikację desktopową pobierzesz ze strony dokumentacji; ona i CLI czytają te same ustawienia, więc wszystko poniżej dotyczy obu. Weryfikacja — goose --version.

Krok 2: zdobądź klucz. Zarejestruj się na gate.joingonka.ai/register, potwierdź adres i utwórz klucz z prefiksem jg- w sekcji „Klucze API”. Jeden klucz i jedno saldo działają dla wszystkich modeli w sieci.

Krok 3: uruchom instalator.

npx @joingonka/setup --tool goose

Instalator zapyta o klucz — nie przekazuje się go w argumentach wiersza poleceń, żeby nie zaległ w historii powłoki — i zrobi następujące rzeczy:

  • utworzy plik providera custom_providers/custom_joingonka.json z adresem bramy i trzema modelami sieci z prawdziwymi oknami kontekstu, z prawami 600. Nazwy custom_joingonka i CUSTOM_JOINGONKA_API_KEY są takie same, jakie Goose sam wyprowadza z nazwy „JoinGonka”, więc klucz z kreatora trafi tam, gdzie trzeba;
  • ustawi JoinGonka jako providera domyślnego z modelem DeepSeek V4 Flash — ale tylko jeśli provider nie jest jeszcze wybrany albo wybrany jest nasz z pustym bądź znikniętym z sieci modelem. Cudzego wyboru nie rusza, a zamiast tego wypisuje polecenie do wypróbowania: goose session --provider custom_joingonka --model …;
  • umieści klucz w secrets.yaml, tylko jeśli magazyn sekretów Goose jest z założenia plikowy; w przeciwnym razie wprost powie, że została jeszcze jedna czynność — szczegóły w sekcji o kluczu;
  • zrobi kopie zapasowe zmienionych plików, a na końcu wyśle żywe zapytanie do bramy, żeby od razu sprawdzić klucz, adres i model.

Katalog ustawień instalator znajduje tak samo jak sam Goose: ~/.config/goose na Linuksie i macOS, %APPDATA%\Block\goose\config na Windowsie, <root>/config przy ustawionym GOOSE_PATH_ROOT. Inny model ustawia flaga --model ze skrótem deepseek, glm lub minimax; jawnie wskazany model jest zapisywany zawsze. Tryb bez pytań bierze klucz ze zmiennej środowiskowej:

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

Konfiguracja ręczna: plik dostawcy i config.yaml

Wszystko, co robi instalator, można napisać ręcznie. Dostawca to oddzielny plik JSON ~/.config/goose/custom_providers/custom_joingonka.json; nazwa pliku musi być zgodna z polem 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
}
PoleWartośćCo jest ważne
namecustom_joingonkaTo także nazwa pliku i wartość --provider
engineopenaiFormat OpenAI Chat Completions — główna ścieżka bramy. Oprócz tego Goose obsługuje anthropic oraz ollama
api_key_envCUSTOM_JOINGONKA_API_KEYTo nie klucz, lecz nazwa sekretu. W pliku nie ma pola na samą wartość — to, gdzie Goose jej szuka, omówiono w następnej sekcji
base_urlhttps://gate.joingonka.ai/v1/chat/completionsPełny adres, jak w przykładzie dokumentacji Goose: taką formę rozumieją też starsze buildy
modelstrzy wpisy z context_limitBez context_limit Goose pobiera okno ze swojego katalogu modeli, a dla nieznanych — 128 000 tokenów, i kompresuje historię, gdy zapełni ona 80% okna. Modele sieciowe mają okna od 200 000 do 390 000
supports_streaming, requires_authtrueOdpowiedź przychodzi strumieniowo, zapytania wymagają klucza. Nie wyłączaj strumieniowania: bez niego i bez limitu w zapytaniu brama ograniczy odpowiedź do krótkiej wartości domyślnej

Dla modelu Goose nie przewidziano oddzielnego limitu odpowiedzi. W przypadku takich modeli nie przekazuje on w ogóle ograniczenia w zapytaniu — sprawdziliśmy to w jego dzienniku zapytań — a w trybie strumieniowym brama sama ogranicza odpowiedź do limitu modelu: 32 768 tokenów dla DeepSeek V4 Flash, 8192 dla GLM-5.3 Flash oraz MiniMax M2.7. Nie trzeba w tym celu ustawiać globalnej zmiennej GOOSE_MAX_TOKENS: jest ona wspólna dla wszystkich dostawców naraz.

Goose odczytuje plik dostawcy za pomocą ścisłego parsowania JSON: komentarz lub końcowy przecinek sprawią, że dostawca zniknie z listy. Można go utworzyć również za pomocą kreatora (goose configure → Custom Providers), ale kreator nie pyta o okno kontekstu — trzeba je dopisać ręcznie.

Dostawca i model domyślny znajdują się w ~/.config/goose/config.yaml. W ten sposób Goose zapisuje je samodzielnie:

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

Stary układ — płaskie klucze GOOSE_PROVIDER i GOOSE_MODEL w głównym katalogu pliku — również działa: Goose odczytuje go i samodzielnie konwertuje do nowego formatu przy pierwszym zapisie ustawień, tak jak u nas po goose configure. Instalator na pustym pliku zapisuje właśnie płaskie klucze — rozumie je każda wersja. Zmienne środowiskowe o tej samej nazwie mają pierwszeństwo przed plikiem: jeśli są ustawione w powłoce, wybór z config.yaml nie zadziała, o czym instalator ostrzeże.

Gdzie znajduje się klucz: keyring, secrets.yaml czy zmienna środowiskowa

W pliku dostawcy Goose widnieje tylko nazwa sekretu — CUSTOM_JOINGONKA_API_KEY. Wartości szuka po kolei: w zmiennej środowiskowej o tej nazwie, następnie w systemowym magazynie sekretów (keyring, w macOS — Keychain), a potem w pliku secrets.yaml obok konfiguracji. Do pliku sekrety trafiają, gdy magazyn Goose jest plikowy, i leżą tam jawnym tekstem, z uprawnieniami 600. Natomiast w config.yaml Goose w ogóle nie szuka kluczy (dokumentacja).

Magazyn staje się plikowy, jeśli keyring jest wyłączony — zmienną GOOSE_DISABLE_KEYRING o dowolnej wartości lub wierszem GOOSE_DISABLE_KEYRING: true w config.yaml — albo niedostępny: serwer bez sesji graficznej, kontener, CI. W drugim przypadku Goose zapisuje w dzienniku „Keyring unavailable. Using file storage for secrets.” i sam przechodzi na plik — dokładnie to widzieliśmy w kontenerze. Instalator nie umie pisać do keyringa, a wyłączać go za Ciebie nie będzie: Goose przestałby widzieć sekrety, które już tam leżą. Stąd scenariusze:

SytuacjaCo zrobi instalatorCo zostanie Tobie
Pulpit z keyringiem: macOS, Windows, Linux z sesją graficznąWpisze dostawcę i model, klucza nie zapisze i powie „ONE STEP LEFT”Raz zapisać klucz przez kreatora
Serwer lub kontener bez keyringa, secrets.yaml jeszcze nie maTo samo: po pośrednich przesłankach plikowego magazynu nie da się odgadnąćPrzejść kreatora — Goose sam położy klucz w secrets.yaml, dalej instalator będzie go tam aktualizować
Ustawiono GOOSE_DISABLE_KEYRING lub secrets.yaml już istniejeZapisze klucz w secrets.yaml z uprawnieniami 600, cudze sekrety zachowaNic
Klucz dostawcy wydaje komenda (pole auth)Klucza nie zapisze: u Goose auth i api_key_env wzajemnie się wykluczająNic

Pozostały krok. Uruchom goose configure i odpowiedz na pytania kreatora — tak wyglądały w naszym przebiegu:

  • What would you like to configure? → Configure Providers;
  • Which model provider should we use? → JoinGonka (u nas stał pierwszy);
  • Would you like to set CUSTOM_JOINGONKA_API_KEY? (optional) → Yes, następnie przy Enter value for CUSTOM_JOINGONKA_API_KEY wklej klucz — zamiast znaków pojawią się kwadraciki. Klucz zapisuje się od razu;
  • Would you like to configure advanced settings? → No;
  • Select a model — listę Goose pobiera z bramy: MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731, zai-org/GLM-5.3-Flash. Kursor stoi na pierwszym wierszu — aby zostawić model wybrany przez instalator, wybierz strzałkami DeepSeek V4 Flash. Po zapytaniu kontrolnym kreator zakończy wierszem „Configuration saved successfully”.

W Goose Desktop ścieżka jest taka: Settings → Models → Configure providers → JoinGonka → klucz → Submit. Nie chcesz wklejać klucza ręcznie — połóż go w zmiennej i uruchom kreatora z tej samej powłoki: Goose napisze „CUSTOM_JOINGONKA_API_KEY is set via environment variable” i zaproponuje zapisanie wartości:

read -s CUSTOM_JOINGONKA_API_KEY && export CUSTOM_JOINGONKA_API_KEY
goose configure

A na jedno uruchomienie klucz można przekazać zupełnie bez zapisywania: CUSTOM_JOINGONKA_API_KEY=jg-your-key goose session, w PowerShell — $env:CUSTOM_JOINGONKA_API_KEY = "jg-your-key"; goose session. Zmienna środowiskowa ma pierwszeństwo przed zapisaną wartością, ale żyje tylko do zamknięcia powłoki.

Weryfikacja: co powinno się stać

Najpierw sprawdź, jakie ustawienia Goose faktycznie widzi:

goose info -v

W bloku „goose Configuration” powinny znajdować się wiersze GOOSE_PROVIDER: custom_joingonka oraz GOOSE_MODEL z identyfikatorem modelu. Następnie — jednorazowe uruchomienie bez sesji interaktywnej: umieść w pustym katalogu plik z oczywistym błędem i poproś, aby go znalazł.

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

Flaga --no-session nie zapisuje uruchomienia w historii. W nagłówku pojawi się wiersz w postaci ● new session · custom_joingonka deepseek-ai/DeepSeek-V4-Flash-0731, następnie wywołanie narzędzia — ▸ shell z komendą cat calc.py — i odpowiedź ze znalezionym błędem. Inny model na jeden przebieg ustawia się flagą --model: zai-org/GLM-5.3-Flash lub MiniMaxAI/MiniMax-M2.7. W naszym uruchomieniu 23 września 2026 cykl „zapytanie → narzędzie → wynik → odpowiedź” przeszły wszystkie trzy modele sieci. Rozumowanie modeli CLI Goose domyślnie ukrywa — można je pokazać zmienną GOOSE_CLI_SHOW_THINKING=1, jeśli dane wyjściowe trafiają do terminala. Po stronie bramy zapytanie jest widoczne w panelu: sekcja „Użycie”, podział „Według modeli” i „Według kluczy”.

Jeśli coś poszło nie tak, diagnozę zwykle można odczytać wprost z komunikatu:

Co widaćCo to znaczyCo zrobić
Error missing required key CUSTOM_JOINGONKA_API_KEY: Configuration value not foundGoose nie znalazł klucza ani w środowisku, ani w magazynie sekretówZapisz klucz za pomocą kreatora. Jeśli klucz znajduje się w secrets.yaml, a błąd nadal występuje, Goose trzyma teraz sekrety w keyringu — zapisz klucz za pomocą kreatora jeszcze raz
Authentication failed … Status: 401 Unauthorized. Response: Invalid API key.Brama nie przyjęła kluczaZapisz klucz ponownie — w całości, bez spacji. Pamiętaj, że zmienna CUSTOM_JOINGONKA_API_KEY w środowisku ma priorytet nad zapisaną wartością
Error Unknown provider: custom_joingonkaPlik dostawcy nie został odczytany: komentarz, wiszący przecinek lub literówka w JSONPopraw plik albo usuń go i uruchom instalator ponownie: na uszkodzonym pliku instalator nic nie zapisuje, a jedynie podaje jego nazwę
Bad request (400): Model "…" not found. Available: …Literówka w nazwie modeluBrama sama wymienia dostępne identyfikatory — skopiuj właściwy
Rate limit exceeded: Model "…" is currently overloaded in the Gonka network (rate limit)Modelowi w godzinach szczytu skończyła się wolna przepustowość w sieciGoose sam powtarza zapytanie, ale z krótkimi przerwami. Zmień model — /model w sesji lub --model przy uruchomieniu — albo poczekaj minutę; stan sieci — na stronie statusu
402Na koncie skończyły się środkiDoładuj konto w sekcji „Rozliczenia”; klucz przy tym działa

Ile to kosztuje

Agent zużywa tokeny inaczej niż czat. Już w standardowej konfiguracji Goose wysyła do modelu opisy osiemnastu wbudowanych narzędzi, a w naszym teście każdy ruch generował około 4,6 tysiąca tokenów wejściowych jeszcze przed Twoim pytaniem. Zadanie „przeczytać plik i znaleźć błąd” zajęło dwa-trzy ruchy i 10-15 tysięcy tokenów, prawie wszystko to wejście; jeszcze jedno krótkie zapytanie Goose wykonuje samodzielnie, aby wymyślić nazwę sesji. Niepotrzebne rozszerzenia można wyłączyć w goose configure → Toggle Extensions — to najprostszy sposób na skrócenie wejścia.

Przez JoinGonka Gateway tokeny kosztują $0.0069 za milion na wejściu i $0.021 za milion na wyjściu — cena jest jednakowa dla wszystkich modeli sieci i pobierana na tej stronie z żywego źródła.

ScenariuszZużyciePrzez Gateway
Jednorazowe zadanie: przeczytać plik, znaleźć błąd10-15K tokenówsetne części centa
Dzień aktywnej pracy3-7M tokenówkilka centów
Miesiąc aktywnej pracy~150M tokenówokoło dolara

Szacunki w prawej kolumnie bazują na cenach z września 2026. Dla porównania — jak w ogóle można płacić za modele w Goose:

SposóbModel płatnościCo ogranicza
Subskrypcja Claude, ChatGPT lub Gemini przez ACPstała kwota miesięcznielimity i okna odświeżania limitów po stronie vendora
Klucz vendora bezpośrednioza tokeny według cennika vendorarachunek rośnie wraz z długością sesji
JoinGonka Gatewayza tokeny, saldo przedpłaconezużycie widoczne w panelu; brak subskrypcji i miesięcznych limitów

Dokładne zużycie i pozostałe środki znajdują się w panelu, w sekcjach „Użycie” i „Billing”. Dlaczego domyślnie ustawiony jest DeepSeek V4 Flash — z największym limitem odpowiedzi w sieci — zostało szczegółowo wyjaśnione w przeglądzie modelu.

O czym pamiętać w pracy

Tryb potwierdzeń. Domyślnie Goose działa w trybie auto — w pełni autonomicznie: sam edytuje i usuwa pliki, uruchamia komendy i korzysta z rozszerzeń, o nic nie pytając. We własnym projekcie to wygodne, ale przy cudzym kodzie lepiej zaostrzyć tryb:

# inside a session
/mode smart_approve

# permanently, as a line in config.yaml
GOOSE_MODE: smart_approve
TrybJak zachowuje się Goose
autoDziała bez potwierdzeń — tryb domyślny
smart_approveSam przepuszcza działania niskiego ryzyka, o pozostałych pyta
approvePyta przed każdym wywołaniem narzędzia
chatTylko rozmawia: ani narzędzi, ani poprawek

To cecha samego Goose, niezależna od dostawcy modelu.

Zmiana modelu. W sesji — komenda /model z identyfikatorem, na przykład /model zai-org/GLM-5.3-Flash; na jedno uruchomienie — flaga --model przy goose run i goose session; na stałe — goose configure lub linia model w config.yaml. Dostawca przy tym pozostaje ten sam. Rozumujący GLM-5.3 Flash jest dobry do zawiłej logiki, ale jego limit odpowiedzi to 8192 tokeny, a część z nich pochłania rozumowanie — szczegóły w omówieniu modelu.

Uruchomienia bez nadzoru. goose run nadaje się do skryptów i CI: flaga -q zostawia w danych wyjściowych tylko odpowiedź modelu, --output-format json zwraca wynik do parsowania. Ograniczniki --max-turns (ile kroków agent wykonuje bez udziału człowieka) i --max-tool-repetitions (ile razy z rzędu można wywołać jedno narzędzie z tymi samymi argumentami) chronią przed zapętleniem.

Prywatność. Anonimowe statystyki użycia w Goose są domyślnie wyłączone (GOOSE_TELEMETRY_ENABLED). Brama nie przechowuje treści promptów ani odpowiedzi — w statystykach pozostają wyłącznie agregaty zużycia.

Goose łączy się z JoinGonka Gateway jedną komendą — npx @joingonka/setup --tool goose — lub jednym plikiem: dostawca custom_joingonka w custom_providers (engine: openai, adres https://gate.joingonka.ai/v1/chat/completions, modele z uczciwym context_limit) plus dostawca i model domyślny w config.yaml. Goose nie przechowuje klucza w konfiguracji, lecz w keyring lub w secrets.yaml: na maszynie z keyringiem pozostaje jeden krok — goose configure → Configure Providers → JoinGonka → klucz, a przy wyborze modelu warto zostawić DeepSeek V4 Flash. Weryfikacja — goose run i sekcja „Użycie” w panelu; cena dla DeepSeek V4 Flash, GLM-5.3 Flash oraz MiniMax M2.7 jest taka sama, więc model wybiera się według zachowania, a nie budżetu.

Chcesz wiedzieć więcej?

Zapoznaj się z innymi sekcjami lub zacznij zarabiać GNK już teraz.

Odbierz klucz i darmowe tokeny →