Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 52
Słownik 12

Narzędzia

Factory Droid + JoinGonka Gateway: BYOK na modelach sieci Gonka

Factory Droid (komenda droid) — terminalowy agent kodujący firmy Factory. Rozumie projekt, naprawia pliki, uruchamia polecenia i testy, a przy dużych zadaniach potrafi najpierw stworzyć plan. Dostępne są dwa tryby: interaktywny droid w terminalu oraz jednorazowy droid exec — jedno zadanie ze skryptu lub CI.

Standardowo Droid działa na modelach z katalogu Factory, ale posiada funkcję BYOK: tablica customModels w ~/.factory/settings.json przyjmuje dowolny endpoint obsługujący OpenAI Chat Completions. JoinGonka Gateway jest właśnie takim rozwiązaniem, więc podłączenie sprowadza się do jednej komendy instalatora — a agent działa na modelach zdecentralizowanej sieci Gonka: DeepSeek V4 Flash, GLM-5.3 Flash i MiniMax M2.7, wszystko w tej samej cenie — $0.0069 za milion wejściowych tokenów.

Warto wiedzieć o jednym warunku: tryb interaktywny Droid wymaga zalogowania do konta Factory, a użycie własnych modeli tego nie zmienia. Jednorazowy droid exec na modelach BYOK w naszym teście zadziałał również bez logowania — szczegóły w sekcji o BYOK. Komendy, pliki i komunikaty poniżej zostały zweryfikowane podczas testu na żywo Droid 0.225.1 przez bramę 23 września 2026. Po potwierdzeniu adresu na konto trafią 3M darmowych tokenów — wystarczy, aby powtórzyć to samodzielnie.

Szybki start: instalacja i jedno polecenie

Krok 1: zainstaluj Droid. Oficjalne metody z dokumentacji Factory:

# macOS and Linux
curl -fsSL https://app.factory.ai/cli | sh

# Homebrew
brew install --cask droid

# Windows (PowerShell)
irm https://app.factory.ai/cli/windows | iex

# via npm
npm install -g droid

Skrypt umieszcza plik binarny w ~/.local/bin i podpowiada, jak dodać ten katalog do PATH; w Linuksie dokumentacja prosi o doinstalowanie pakietu xdg-utils. Weryfikacja — droid --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 droid

Instalator zapyta o klucz — nie przekazuje się go w argumentach wiersza poleceń, żeby nie trafił do historii powłoki — i zrobi cztery rzeczy:

  • dopisze do tablicy customModels w pliku ~/.factory/settings.json (w Windows — %USERPROFILE%\.factory\settings.json) po jednym wpisie dla każdego modelu w sieci: adres bramy, typ dostawcy generic-chat-completion-api, klucz jawnym tekstem, prawdziwe okno kontekstu i limit odpowiedzi; plik otrzyma uprawnienia 600;
  • ustawi model domyślny — sessionDefaultSettings.model — na DeepSeek V4 Flash, ale tylko jeśli nie jest wybrany lub wskazuje na model, który zniknął z sieci. Modelu z katalogu Factory ani cudzego wpisu BYOK nie przechwytuje, a jedynie podpowiada, jak się przełączyć;
  • zachowa kopię poprzedniego pliku, a cudze wpisy w customModels, pozostałe ustawienia i komentarze pozostawi bez zmian; pliku, którego nie da się sparsować, nie nadpisze, tylko powie, co poprawić;
  • na końcu wyśle prawdziwe zapytanie do bramy i wprost powie, czy klucz, adres i model zostały przyjęte.

Inny model domyślny ustawia flaga --model ze skrótami deepseek, glm lub minimax — jawnie wskazany model jest zapisywany zawsze. Dla dotfiles i serwerów jest tryb bez pytań, w którym klucz pochodzi ze zmiennej środowiskowej:

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

Nie trzeba restartować Droid: zmiany w settings.json zauważa sam. Wiersz ! Could not verify right now z odpowiedzią 429 na końcu oznacza zajęty model, a nie błąd konfiguracji — konfiguracja jest już zapisana.

Konfiguracja ręczna: customModels w settings.json

Wszystko, co robi instalator, można napisać ręcznie. Ustawienia użytkownika Droid są przechowywane w ~/.factory/settings.json; jeśli plik nie istnieje, Droid tworzy go przy pierwszym uruchomieniu. Dla sieci Gonka potrzebne są tablica customModels i model domyślny:

{
  "customModels": [
    {
      "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
      "id": "custom:deepseek-ai/DeepSeek-V4-Flash-0731",
      "displayName": "DeepSeek V4 Flash (Gonka)",
      "baseUrl": "https://gate.joingonka.ai/v1",
      "apiKey": "jg-your-key",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 32768,
      "maxContextLimit": 380000,
      "noImageSupport": true
    },
    {
      "model": "zai-org/GLM-5.3-Flash",
      "id": "custom:zai-org/GLM-5.3-Flash",
      "displayName": "GLM 5.3 Flash (Gonka)",
      "baseUrl": "https://gate.joingonka.ai/v1",
      "apiKey": "jg-your-key",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 8192,
      "maxContextLimit": 390000,
      "noImageSupport": true
    },
    {
      "model": "MiniMaxAI/MiniMax-M2.7",
      "id": "custom:MiniMaxAI/MiniMax-M2.7",
      "displayName": "MiniMax M2.7 (Gonka)",
      "baseUrl": "https://gate.joingonka.ai/v1",
      "apiKey": "jg-your-key",
      "provider": "generic-chat-completion-api",
      "maxOutputTokens": 8192,
      "maxContextLimit": 200000,
      "noImageSupport": true
    }
  ],
  "sessionDefaultSettings": {
    "model": "custom:deepseek-ai/DeepSeek-V4-Flash-0731"
  }
}
PoleWartośćCo jest ważne
modelid modelu sieciWysyłane w żądaniu bez zmian, wraz z prefiksem dostawcy
idcustom: + id modeluStała nazwa wpisu dla flagi -m i modelu domyślnego. Bez tego pola Droid buduje nazwę sam — z displayName i numeru porządkowego
displayNamedowolna etykietaTak model nazywa się na liście /model
baseUrlhttps://gate.joingonka.ai/v1Obowiązkowo z /v1 na końcu: ścieżkę /chat/completions Droid dopisuje sam
apiKeytwój klucz jg-…Literał — najpewniejszy wariant. Odwołanie w postaci ${JOINGONKA_API_KEY} też jest dopuszczalne, ale wtedy zmienna musi być w środowisku, z którego uruchomiono Droid, inaczej żądanie nie wyjdzie
providergeneric-chat-completion-apiTyp dla OpenAI Chat Completions — dokładnie tak, małymi literami; na nim sprawdzono całą tę instrukcję
maxOutputTokens32768, 8192, 8192Górny limit odpowiedzi każdego modelu w sieci
maxContextLimit380000, 390000, 200000Okno kontekstu modelu; pole opisane w schemacie ustawień Factory
noImageSupporttrueModele sieci są tekstowe, flaga wyłącza dla wpisu załączanie obrazków

Model domyślny jest przechowywany w sessionDefaultSettings.model i odwołuje się do wpisu przez jego id. Dokumentacja Factory wspomina jeszcze klucz model w katalogu głównym pliku, ale w naszym przebiegu droid exec bez flagi -m brał model właśnie z sessionDefaultSettings — i po zmianie wartości również.

Klucz leży w pliku otwartym tekstem: zabezpiecz plik poleceniem chmod 600 ~/.factory/settings.json i nie przenoś wpisów z kluczem do .factory/settings.json projektu — ten zwykle trafia do repozytorium. A jeśli po uruchomieniu Droid plik wygląda inaczej, to normalne: zapisując dowolne ustawienie, Droid przepisuje plik w całości — porządkuje klucze, dodaje wpisom pole index i nie zachowuje komentarzy. Prawa 600 przy tym zostają, a instalator takie wpisy spokojnie aktualizuje.

BYOK w Droid: wybór modelu i wymagania konta Factory

Swoje wpisy Droid pokazuje osobno od katalogu: zgodnie z dokumentacją w trybie interaktywnym komenda /model wyświetla je w sekcji Custom models, a Ctrl+N przełącza modele bezpośrednio w polu wprowadzania. W trybie jednorazowym model określa flaga -m z wartością z pola id, ukośniki zapisuje się tak, jak są: droid exec -m custom:zai-org/GLM-5.3-Flash "…".

Pomylisz nazwę — Droid odpowie Invalid model i wypisze wszystkie modele, które widzi, w tym swoje w postaci custom:… (display name): przy okazji widać, że wpisy się załadowały. Nazwa w stylu dokumentacji Factory, z podpisu i numeru (custom:DeepSeek-V4-Flash-(Gonka)-0), przy jawnym id nie zadziała — w naszym przebiegu dała ten sam Invalid model.

Co wymaga konta Factory. Własne modele zdejmują kwestię opłaty za tokeny, ale nie logowania do samego produktu. Oto co pokazał przebieg Droid 0.225.1 bez logowania do konta:

ScenariuszCzy potrzebne logowanie do FactoryCo było w przebiegu
Interaktywny droidTakZaraz po ekranie powitalnym — ekran „Please login with your Factory account to continue” z opcjami Login i Exit; dalej bez konta nie przejdziesz
droid exec na modelach BYOKZgodnie z dokumentacją — tak, przez klucz FACTORY_API_KEYWszystkie trzy modele sieci odpowiedziały; w wyjściu JSON factory_credits: 0, w logu — ostrzeżenia o niedostępnych funkcjach chmurowych
Funkcje chmurowe: synchronizacja sesji z wersją webową, konektory, limity planuTakZapytania do API Factory otrzymywały 401 i były pomijane — nie wpłynęło to na działanie agenta

Aby pracować w interfejsie, załóż konto Factory i zaloguj się przez przeglądarkę — opcja Login lub komenda /login; na maszynie bez przeglądarki dokumentacja proponuje klucz z ustawień konta w zmiennej FACTORY_API_KEY. Działanie droid exec bez logowania jest wygodne do wypróbowania, ale oficjalnie nieopisane — nie licz na nie w CI. Według strony cennika Factory BYOK wchodzi we wszystkie plany indywidualne z darmowym limitem, a powyżej limitu korzystanie z BYOK jest rozliczane zgodnie z warunkami planu; aktualne warunki — na factory.ai/pricing. Tokeny modeli sieci są przy tym opłacane osobno — z salda JoinGonka.

Który model wybrać. Cena wszystkich modeli sieci jest taka sama, więc wybór dotyczy zachowania. Oto jak wypadły w naszym przebiegu droid exec na jednym zadaniu — przeczytać plik i znaleźć błąd:

ModelKontekst / odpowiedźJak zachowuje się w Droid
DeepSeek V4 Flash380K / 32768Poprawna odpowiedź w dwóch turach. Największy limit odpowiedzi w sieci, dlatego instalator ustawia ją domyślnie. Z --auto low poprawiła plik i sama go uruchomiła w celu sprawdzenia
GLM-5.3 Flash390K / 8192Poprawna odpowiedź w dwóch turach, około 20 sekund. Model rozumujący: część limitu odpowiedzi idzie na rozumowanie
MiniMax M2.7200K / 8192Poprawna odpowiedź w dwóch turach, 10-20 sekund. Rozumowanie modelu przychodzi osobno od odpowiedzi, a w wyjściu droid exec zostaje tylko sama odpowiedź

Flaga -r (poziom rozumowania) do modeli BYOK, zgodnie z dokumentacją Factory, nie ma zastosowania. Dlaczego domyślnie wybrano DeepSeek V4 Flash, omówiono w przeglądzie modelu.

Weryfikacja: co powinno się stać

Umieść w pustym katalogu plik calc.py z oczywistym błędem — na przykład polem prostokąta, w którym boki są dodawane zamiast mnożone — i poproś Droid, żeby go znalazł:

droid exec "Read the file calc.py in the current project directory and tell me in one sentence whether it has a bug."

Bez flag droid exec działa w trybie tylko do odczytu: pliki można przeglądać, ale nie można ich zmieniać. Agent sam wywoła narzędzie odczytu i odpowie konkretnie, wskazując błędne wyrażenie. Z flagą -o json odpowiedź przychodzi jako jeden obiekt, który wygodnie parsować skryptem (wynik skrócony):

{"type":"result","subtype":"success","is_error":false,"duration_ms":2239,"num_turns":2,
 "result":"Yes, the file has a bug: the rectangle area is computed as the sum of the side lengths, but it should be their product (width * height). …",
 "usage":{"input_tokens":19016,"output_tokens":146,"factory_credits":0,"ttft_ms":747}}

Pole factory_credits: 0 potwierdza, że praca odbywała się na Twoim modelu, a nie na kredytach Factory. Aby agent mógł edytować pliki, dodaj poziom autonomii: droid exec --auto low "Fix the bug in calc.py and change nothing else." — w naszym przebiegu DeepSeek V4 Flash przeczytała plik, zamieniła dodawanie na mnożenie i sama uruchomiła skrypt, żeby sprawdzić, czy wyświetla się 12.

Trzecia weryfikacja — od strony bramy: w panelu w sekcji „Wykorzystanie” zapytanie pojawi się w podziale „Według modeli”, a w bloku „Według kluczy” zaktualizuje się czas ostatniego zapytania.

Jeśli coś poszło nie tak, pamiętaj o osobliwości Droid: w konsoli droid exec wyświetla tylko Error during droid execution: Exec failed (w JSON — "result":"Exec failed"), a prawdziwa przyczyna pozostaje w dzienniku. Można ją wyciągnąć jedną komendą:

grep agent_error_count ~/.factory/logs/droid-log-single.log | grep -o '"errorMessage":"[^,]*' | tail -1
Co widaćCo to znaczyCo zrobić
401 Invalid API keyBrama nie przyjęła kluczaSprawdź apiKey we wpisie modelu: klucz w całości, bez spacji. Jeśli jest tam odwołanie ${…} — zmienna musi znajdować się w środowisku, z którego uruchomiono Droid
405 <html>…405 Not Allowed…W baseUrl brakuje sufiksu /v1Adres musi być dokładnie https://gate.joingonka.ai/v1
400 Model "…" not found. Available: …Literówka w polu model, najczęściej brak przedrostka dostawcySkopiuj id z listy, którą brama podaje w samym komunikacie
Invalid model: custom:… i lista modeliFlaga -m lub model domyślny odwołują się do wpisu, którego nie maWeź nazwę z sekcji Available custom models. Modeli sieci tam nie ma — Droid nie wczytał wpisów: sprawdź składnię JSON
429 Model "…" is currently overloaded in the Gonka network (rate limit)Model w sieci nie ma teraz wolnej przepustowościDroid sam powtarza zapytanie — u nas pięć prób w ciągu około dwóch minut. Jeśli nie pomogło — zmień model flagą -m; stan sieci — na stronie statusu
402Na saldzie skończyły się środkiDoładuj konto w sekcji „Rozliczenia”; klucz przy tym działa
„Please login with your Factory account to continue”Tryb interaktywny wymaga konta FactoryZaloguj się przez Login lub pracuj przez droid exec
Długa pauza przed pierwszą odpowiedziąKolejka do modelu w godzinach szczytuPoczekaj lub zmień model flagą -m

Ile to kosztuje

Narzędzie agentskie zużywa tokeny inaczej niż czat: do każdej Twojej frazy Droid dodaje systemowy prompt, opisy narzędzi oraz migawkę katalogu roboczego, a zadanie zajmuje kilka tur. W naszym teście każda tura generowała około 9,5 tysiąca tokenów wejściowych jeszcze przed Twoim pytaniem: zadanie „przeczytaj plik i znajdź błąd” zajęło dwie tury i około 19 tysięcy tokenów, „napraw i sprawdź” — cztery tury i około 44 tysiące. Dlatego cena za token ma tutaj kluczowe znaczenie.

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

ScenariuszZużyciePrzez Gateway
Zadanie jednorazowe: odczyt, poprawa, weryfikacja19-44K tokenówsetne części centa
Dzień aktywnej pracy3-7M tokenówjednostki centów
Miesiąc aktywnego programowania~150M tokenówokoło dolara

Szacunki w prawej kolumnie są oparte na cenach z września 2026. Dla porównania — w jaki sposób można płacić za modele w Droid:

SposóbModel płatnościCo ogranicza
Modele z katalogu Factorysubskrypcja planu Pro, Plus lub Maxlimity kroczące na 5 godzin, 7 i 30 dni; powyżej nich — pula Droid Core lub dokupienie Extra Usage
BYOK z kluczem dostawcyza tokeny według cennika dostawcyrachunek rośnie wraz z długością sesji; cena zależy od wybranego modelu
JoinGonka Gateway (BYOK)za tokeny, przedpłacone saldozużycie widoczne w panelu, bramka nie posiada subskrypcji ani limitów; warunki BYOK po stronie Factory są takie same jak dla każdego własnego klucza

Komenda /cost w interfejsie Droid pokazuje statystyki sesji, a dokładne zużycie i saldo dla modeli BYOK — w panelu bramki, w sekcjach „Użycie” (Usage) i „Rozliczenia” (Billing). Załóż dla Droid osobny klucz — jego ruch będzie widoczny w osobnej linii.

O czym warto pamiętać w pracy

Autonomia. W trybie jednorazowym Droid domyślnie tylko czyta, a uprawnienia rozszerzają poziomy: --auto low — edycja plików, --auto medium — dodatkowo instalacja zależności, budowanie, testy i lokalne commity, --auto high — aż po push i deploy. Flaga --skip-permissions-unsafe znosi wszystkie sprawdzenia — tylko dla jednorazowych kontenerów. W trybie interaktywnym poziom przełącza Ctrl+L, a początkowy ustawia sessionDefaultSettings.autonomyLevel; domyślnie jest tam off — wszystko z potwierdzeniem.

Podpis w commitach. Ustawienie includeCoAuthoredByDroid jest domyślnie włączone: Droid dodaje do wiadomości commitów wiersz współautorstwa. Jeśli nie jest potrzebny, wpisz "includeCoAuthoredByDroid": false w settings.json.

Gdzie przechowywane są sesje. Po zalogowaniu na konto Droid domyślnie mirroruje sesje CLI do wersji webowej Factory — odpowiada za to cloudSessionSync. Klucze BYOK, zgodnie z dokumentacją, pozostają lokalne; jeśli i korespondencja ma pozostać na maszynie, ustaw "cloudSessionSync": false. Brama ze swojej strony nie przechowuje treści promptów i odpowiedzi — w statystykach pozostają tylko agregaty zużycia.

Aktualizacje. Instalacja skryptem aktualizuje się sama; wersję można przypiąć zmienną FACTORY_DROID_AUTO_UPDATE_ENABLED=false lub komendą droid update --version <version>; buildy z npm same się nie aktualizują. Po aktualizacji jednym droid exec sprawdź, czy modele sieci są na miejscu.

Obrazki. Modele sieci są tekstowe; do zrzutów ekranu trzymaj obok wpis z modelem, który umie widzieć, u innego dostawcy.

Jeśli praca bez konta dostawcy jest kluczowa. Te same modele sieci podłączają się do otwartych agentów terminalowych, które nie wymagają logowania — na przykład do OpenCode tym samym instalatorem, z flagą --tool opencode.

Factory Droid łączy się z JoinGonka Gateway przez BYOK: polecenie npx @joingonka/setup --tool droid dopisuje do customModels w pliku ~/.factory/settings.json wpisy DeepSeek V4 Flash, GLM-5.3 Flash i MiniMax M2.7 (provider: generic-chat-completion-api, baseUrl z /v1, klucz jg-…, jawny id w postaci custom:<model>) i ustawia DeepSeek V4 Flash w sessionDefaultSettings.model. Tryb interaktywny wymaga konta Factory; droid exec na modelach BYOK w wersji 0.225.1 działał także bez niego, z factory_credits: 0. Weryfikacja to droid exec -o json oraz sekcja „Użycie” w panelu, a przyczynę awarii Droid zapisuje nie w konsoli, lecz w ~/.factory/logs/droid-log-single.log.

Chcesz wiedzieć więcej?

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

Uzyskaj klucz i darmowe tokeny →