Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 52
Słownik 12

Narzędzia

OpenHands + JoinGonka Gateway: agent na własnym endpoincie

OpenHands to otwarta platforma do autonomicznego programowania: agent samodzielnie czyta repozytorium, uruchamia polecenia, edytuje pliki i prowadzi zadanie do rezultatu, a Ty wyznaczasz cel i sprawdzasz wynik. W 2026 roku głównym interfejsem jest Agent Canvas, konsola przeglądarkowa, z której uruchamia się rozmowy z agentem i automatyzację na własnym komputerze, w Docker, na serwerze lub w chmurze OpenHands. Kod jest otwarty na licencji MIT.

OpenHands nie narzuca konkretnego modelu: cała warstwa obsługi LLM oparta jest na LiteLLM, więc agentowi pasuje każdy endpoint kompatybilny z OpenAI. Dla JoinGonka Gateway to trzy pola w ustawieniach: Custom Model — openai/deepseek-ai/DeepSeek-V4-Flash-0731, Base URL — https://gate.joingonka.ai/v1, API Key — Twój klucz jg-…. Osobny instalator nie jest potrzebny: wszystko wykonuje się w interfejsie w kilka minut.

Autonomiczny agent to najbardziej żarłoczny konsument tokenów: każdy krok niesie ze sobą prompt systemowy, historię i wyniki narzędzi, a kroków w zadaniu są dziesiątki. Dokumentacja OpenHands wprost ostrzega: agent wysyła do modelu wiele zapytań, monitoruj zużycie. Przez bramkę milion tokenów wejściowych kosztuje $0.0069 — jednakowo dla DeepSeek V4 Flash, GLM-5.3 Flash i MiniMax M2.7, — więc długie przebiegi przestają być obciążeniem dla budżetu. Po potwierdzeniu adresu na konto wpłyną 3M darmowych tokenów: wystarczy to, aby przetestować agenta na realnym zadaniu i zobaczyć własne zużycie.

Jakiego OpenHands używasz: cztery interfejsy i klucz

Projekt ma obecnie kilka interfejsów, a od tego, który z nich jest uruchomiony, zależy, gdzie szukać ustawień modelu. Same wartości są wszędzie takie same — różni się tylko ścieżka dostępu do nich.

InterfejsJak uruchomićGdzie ustawić modelStan na wrzesień 2026
Agent Canvasnpx @openhands/agent-canvas lub npm install -g @openhands/agent-canvas oraz polecenie agent-canvas; otwiera się pod http://localhost:8000Settings > LLM, zakładka Advancedgłówny interfejs projektu
OpenHands CLIuv tool install openhands --python 3.12, następnie openhandskreator pierwszego uruchomienia, Ctrl+P → Settings, plik ~/.openhands/agent_settings.jsondziała, ale w README oznaczony jako projekt, który nie jest już aktywnie rozwijany
Dawny interfejs webowy w Dockeropenhands serve lub docker run z dokumentacji; port 3000Settings → zakładka LLM → przełącznik Advancedw dokumentacji określony jako Local GUI (Legacy)
OpenHands Cloudzarządzana chmura projektuta sama strona ustawień LLMwedług dokumentacji własny LLM konfiguruje się tam tak samo; tej ścieżki nie testowaliśmy

Dla Agent Canvas potrzebne są Node.js i uv — na nim działa lokalny serwer agenta (szczegóły w instrukcji instalacji). Instrukcja wspomina o Node.js 22.12 lub nowszym, ale sam pakiet począwszy od wersji 1.17 wymaga Node.js 24 lub nowszego — zainstaluj 24, aby uniknąć ostrzeżenia o niekompatybilnej wersji. Jest też opcja w kontenerze: obraz ghcr.io/openhands/agent-canvas udostępnia interfejs pod http://localhost:8000/canvas i widzi tylko te katalogi, które zamontujesz.

Klucz JoinGonka. Zarejestruj się na gate.joingonka.ai/register, potwierdź adres i stwórz klucz z prefiksem jg- w sekcji „API-klucze”. Jeden klucz i jedno saldo działają dla wszystkich modeli w sieci. W liście narzędzi instalatora @joingonka/setup nie ma OpenHands, i nie jest to przeoczenie: jego ustawienia znajdują się w interfejsie oraz w bezpiecznym magazynie backendu, a nie w pliku tekstowym, który można łatwo edytować z zewnątrz.

Podłączenie w Agent Canvas: trzy pola na zakładce Advanced

Krok 1. Uruchom Agent Canvas i otwórz Settings > LLM. Kreator pierwszego uruchomienia proponuje własnego dostawcę OpenHands — ten krok można pominąć, do ustawień łatwo wrócić później.

Krok 2. Kliknij Add LLM Profile i przejdź do zakładki Advanced: zakładka Basic oferuje tylko dostawców i modele z wbudowanej listy.

Krok 3. Wypełnij trzy pola:

PoleWartość
Custom Modelopenai/deepseek-ai/DeepSeek-V4-Flash-0731
Base URLhttps://gate.joingonka.ai/v1
API Keytwój klucz jg-…

Krok 4. Zapisz profil. Przed zapisem Canvas sprawdza konfigurację zapytaniem z backendu: jeśli klucz zostanie odrzucony lub model będzie niedostępny, profil się nie zapisze, a zobaczysz komunikat o błędzie.

Krok 5. Rozpocznij nową konwersację i wyślij krótką wiadomość. Już otwarte rozmowy nadal działają na modelu, z którym zostały rozpoczęte.

Dlaczego openai/. LiteLLM określa dostawcę na podstawie prefiksu modelu. Prefiks openai/ oznacza nie „model od OpenAI”, a „komunikuj się z serwerem poprzez protokół OpenAI Chat Completions”. Odcinany jest tylko pierwszy segment, więc do bramki dociera właściwy identyfikator — deepseek-ai/DeepSeek-V4-Flash-0731. W dokumentacji OpenHands ten sam schemat pokazano na przykładzie openai/qwen/qwen3.6-35b-a3b. Bez prefiksu LiteLLM odmówi współpracy z komunikatem LLM Provider NOT provided.

Dlaczego /v1 i nic więcej. LiteLLM łączy się z serwerem przez oficjalnego klienta OpenAI, a ten sam dopisuje /chat/completions. Dlatego adres musi kończyć się na /v1: bez sufiksu zapytanie trafi obok API, z dodatkowym ogonem — na ścieżkę, która nie istnieje. I jeszcze jeden wymóg Canvas: adres musi być dostępny z backendu, a nie tylko z przeglądarki. Bramka to publiczny adres HTTPS, z kontenera Docker jest widoczny tak samo jak z hosta; techniki takie jak host.docker.internal są potrzebne tylko dla modeli na twojej maszynie.

Profile dla wszystkich trzech modeli. Załóż osobny profil dla każdego modelu sieci i nazwij je krótko — na przykład deepseek, glm i minimax (dokumentacja wspomina o limicie dziesięciu profili). Przełączać można się bezpośrednio w rozmowie, bez utraty kontekstu: przyciskiem wyboru profilu w polu wprowadzania lub komendą /model glm; /model bez argumentu wyświetli listę. Aby nie wklejać klucza w każdy profil, można go zapisać raz w bloku Provider Connections — jest on dostępny na lokalnym backendie.

Poprzedni interfejs w Docker. Pola są te same: Settings → zakładka LLM → włącz Advanced → Custom Model, Base URL, API Key → Save Changes.

Terminal i automatyzacja: CLI, zmienne środowiskowe, SDK

CLI instaluje się jedną komendą przez uv, a przy pierwszym uruchomieniu sam przeprowadzi przez konfigurację modelu; później wraca się do niej przez Ctrl+P → Settings:

uv tool install openhands --python 3.12
openhands

Do skryptów wygodniejsze są zmienne środowiskowe. Ważny szczegół: domyślnie CLI je ignoruje i stosuje tylko z flagą --override-with-envs — na jedno uruchomienie, niczego nie zapisując:

export LLM_MODEL="openai/deepseek-ai/DeepSeek-V4-Flash-0731"
export LLM_BASE_URL="https://gate.joingonka.ai/v1"
export LLM_API_KEY="jg-your-key"

openhands --override-with-envs

Ten sam zestaw działa bez interfejsu — dla CI i zadań wsadowych:

openhands --headless --override-with-envs -t "Read calc.py and tell me in one sentence whether it has a bug."

W trybie headless agent zawsze działa z automatycznym zatwierdzaniem, więc uruchamiaj go tam, gdzie może wszystko: w osobnym katalogu lub kontenerze. Flaga --json zamienia wyjście w strumień zdarzeń JSONL — wygodnie rozbierać go w potoku. Dokładnie tak sprawdzaliśmy to zestawienie 21 września 2026 na CLI 1.16.0: w nagłówku CLI wypisuje Agent initialized with model: openai/deepseek-ai/DeepSeek-V4-Flash-0731, następnie agent czyta plik i odpowiada konkretnie.

SposóbGdzie działaCzy się zapisuje
Settings > LLM w Agent Canvaswszystkie nowe rozmowy na tym backendzietak, w magazynie backendu (~/.openhands)
Kreator i Ctrl+P → Settings w CLIwszystkie uruchomienia CLItak, w ~/.openhands/agent_settings.json
LLM_MODEL, LLM_BASE_URL, LLM_API_KEY z flagą --override-with-envsjedno uruchomienie CLInie
config.tomlwcześniejsza linia V0 i tryb deweloperskiw dokumentacji określony jako Legacy; w Agent Canvas i CLI 1.x ustawienia zadaje się sposobami powyżej

Zapisane ustawienia CLI leżą w ~/.openhands/agent_settings.json: model zmienia się tam przez edycję trzech pól bloku llm — model, api_key i base_url. Nie warto tworzyć pliku od zera: kreator pierwszego uruchomienia zapisuje tam też pozostałe ustawienia agenta, w tym kompresję historii, bez której długa rozmowa utknie w oknie kontekstu.

Jeśli wbudowujesz agenta we własny kod, te same trzy wartości przyjmuje OpenHands SDK:

from pydantic import SecretStr
from openhands.sdk import LLM

llm = LLM(
    model="openai/deepseek-ai/DeepSeek-V4-Flash-0731",
    base_url="https://gate.joingonka.ai/v1",
    api_key=SecretStr("jg-your-key"),
)

Jaki model wybrać do długich, autonomicznych przebiegów

Cena modeli w sieci jest jednolita, więc wybór zależy od zachowania. Dla autonomicznego agenta kluczowe są dwie liczby. Okno kontekstowe: każdy krok wysyła historię od nowa, a im dłuższe okno, tym dłużej agent pracuje bez utraty danych. Limit odpowiedzi: krok, w którym agent zapisuje cały duży plik, musi mieścić się w jednej odpowiedzi. W tabeli znajdują się wyniki naszego testu tego samego zadania (odczyt pliku i znalezienie błędu) za pomocą OpenHands CLI 1.16.0 z SDK 1.21.0.

ModelCustom Model dla OpenHandsKontekstLimit odpowiedziZachowanie w OpenHands
DeepSeek V4 Flashopenai/deepseek-ai/DeepSeek-V4-Flash-0731380K32768Odczytał plik i odpowiedział merytorycznie, bez zbędnego tekstu. Długi kontekst i najwyższy limit odpowiedzi w sieci to domyślny wybór dla wielogodzinnych zadań
GLM-5.3 Flashopenai/zai-org/GLM-5.3-Flash390K8192Rozumuje przed udzieleniem odpowiedzi; pętla z narzędziami przeszła czysto. Profil do planowania i analizy skomplikowanej logiki — z poprawką na to, że część odpowiedzi jest przeznaczana na rozumowanie
MiniMax M2.7openai/MiniMaxAI/MiniMax-M2.7200K8192Zadanie rozwiązane, ale w końcowej wiadomości model na głos przedstawił proces myślowy. Model ma największą pojemność w sieci — profil zapasowy na godziny szczytu i nagłówki rozmów

Działający schemat dla długiego zadania powtarza poradę z dokumentacji OpenHands — planowanie jednym modelem, wykonanie drugim. Rozpocznij rozmowę na profilu glm i poproś o plan bez wprowadzania zmian w plikach; następnie wyślij /model deepseek i wydaj polecenie wykonania. Historia, pliki i stan zadania są zachowywane przy przełączaniu. Profil minimax trzymaj jako trzeci: wygodnie się na niego przełączyć, gdy dwóm pozostałym w godzinach szczytu kończy się pojemność, a w Settings > Application można mu również powierzyć generowanie nagłówków rozmów.

Kompresja historii. Nawet okno liczące setki tysięcy tokenów przy wielogodzinnym zadaniu jest skończone. W OpenHands odpowiada za to kondenser: zwija stare zdarzenia w krótkie podsumowanie, co według dokumentacji zmniejsza opóźnienia i zużycie tokenów w długich rozmowach. W Agent Canvas konfiguruje się go w sekcji Settings > Condenser; w naszym teście CLI włączył go automatycznie, z progiem 80 zdarzeń.

Limity modelu. Okno kontekstowe i limit odpowiedzi OpenHands pobiera z wykazu LiteLLM, a identyfikatorów sieci Gonka w nim nie ma (sprawdziliśmy w LiteLLM 1.81), więc agent nie ma własnych wartości dla tych modeli. Nie przeszkadza to w pracy: bramka sama stosuje limit odpowiedzi zgodnie z tabelą powyżej. Jeśli chcesz określić limity jawnie — w SDK są to pola max_input_tokens i max_output_tokens, a w Canvas pełny zestaw pól profilu otwiera zakładka All. Szczegóły dotyczące domyślnego modelu znajdują się w przeglądzie DeepSeek V4 Flash.

Weryfikacja i częste błędy

Możesz upewnić się, że zapytania rzeczywiście przechodzą przez bramkę z dwóch stron. Od strony OpenHands — nowa rozmowa i krótkie zadanie, np. „przeczytaj README i streść w jednym zdaniu”: agent powinien wywołać narzędzie i odpowiedzieć. Od strony bramki — panel, sekcja „Użycie”: zapytanie pojawi się w podziale „Według modeli”, a w bloku „Według kluczy” zaktualizuje się czas ostatniego zapytania. Pusto oznacza, że rozmowa odbywa się na innym profilu: sprawdź, który z nich jest oznaczony jako aktywny.

Co widaćCo to oznaczaCo zrobić
LLM Provider NOT providedW polu modelu brak prefiksu dostawcyWpisz openai/ przed identyfikatorem: openai/deepseek-ai/DeepSeek-V4-Flash-0731
Profil się nie zapisuje, Canvas pokazuje błąd backenduCanvas sprawdził konfigurację zapytaniem i otrzymał odmowęTreść błędu to jeden z poniższych wierszy: popraw klucz, adres lub model i zapisz ponownie
AuthenticationError … Invalid API keyBramka odpowiedziała 401: klucz nie został zaakceptowanyWklej cały klucz, bez spacji na brzegach; sprawdź w panelu, czy nie został cofnięty
405 Not Allowed i strona HTML nginxW Base URL brak przyrostka /v1Adres musi być dokładnie https://gate.joingonka.ai/v1
404 … Invalid URL (POST /v1/v1/chat/completions)W Base URL zbędny ogonek: drugie /v1 lub pełna ścieżka /chat/completionsPozostaw tylko /v1 — ścieżkę LiteLLM dopisuje sam
400 … Model "…" not found. Available: …Identyfikator po openai/ nie pasuje do żadnego modelu sieciBramka sama wymienia dostępne; pełna lista — GET https://gate.joingonka.ai/v1/models
429Klucz wyczerpał minutowy limit zapytań lub model w godzinach szczytu osiągnął limit przepustowościOpenHands sam powtarza zapytanie z narastającą pauzą. Jeśli to trwa zbyt długo — przełącz profil komendą /model; stan sieci widać na stronie statusu
402Skończyły się środki na saldzieDoładuj konto w sekcji „Billing”; klucz pozostaje aktywny
Agent odpowiada jak czat-bot: nie dotyka plików, myli się w wywołaniach narzędziModel nie radzi sobie z cyklem agenta; dokumentacja OpenHands zaleca w takim przypadku zmianę modeluPrzełącz się na profil DeepSeek V4 Flash — w naszym teście przeszedł cykl agenta bez uwag

Według dokumentacji OpenHands, liczba powtórzeń i pauzy między nimi przy błędzie 429 są konfigurowane zmiennymi LLM_NUM_RETRIES, LLM_RETRY_MIN_WAIT oraz LLM_RETRY_MAX_WAIT. Wartości domyślne w dokumentacji i SDK różnią się, dlatego kieruj się faktycznymi: w stanie rozmowy CLI 1.16.0 zaobserwowaliśmy 5 prób z pauzami od 8 do 64 sekund.

Ile to kosztuje i co wziąć pod uwagę w pracy

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

ScenariuszZużyciePrzez Gateway
Jednorazowe zadanie: zrozumieć plik, nanieść poprawkędziesiątki tysięcy tokenówułamki centa
Autonomiczne dopracowanie funkcji20-50M tokenówdziesiątki centów
Doba automatyzacji w tle~150M tokenówokoło dolara

Szacunki w prawej kolumnie są oparte na cenach z września 2026; ekonomia agentów została szczegółowo omówiona w artykule o najtańszym API dla AI-agentów.

Limit wydatków. OpenHands zaleca ustawianie limitów wydatków — bramka ma to wbudowane w sam model płatności: saldo jest przedpłacone, a agent nie wyda więcej, niż masz na koncie. Saldo i dzienne zużycie widać w panelu. Dla CI i automatyzacji w tle stwórz osobny klucz, aby ich zużycie nie mieszało się z Twoim; klucze podrzędne z dziennym limitem są opisane w artykule o Management Keys.

Granica zaufania. Agent Canvas, uruchomiony przez npm, działa z uprawnieniami Twojego użytkownika i widzi cały system plików. W przypadku obcego kodu użyj wersji w Dockerze: agent zobaczy tylko zamontowany katalog. Jest to właściwość samego OpenHands i nie zależy od dostawcy modelu.

Korespondencja pozostaje u Ciebie. Historię rozmowy OpenHands przechowuje u siebie, w ~/.openhands, i wysyła ją do modelu z każdym krokiem; bramka nie przechowuje korespondencji — Twoje prompty i kod nie zostają na niej po otrzymaniu odpowiedzi.

Jeśli zadanie zawiera obrazy — zrzuty ekranu interfejsu, schematy — załóż dla niego osobny profil z modelem vision: modele sieci Gonka są tekstowe. Dla kodu, poleceń i plików nie jest to ograniczenie.

OpenHands łączy się z JoinGonka Gateway za pomocą trzech pól: Custom Model openai/deepseek-ai/DeepSeek-V4-Flash-0731, Base URL https://gate.joingonka.ai/v1 oraz klucza jg-…. W Agent Canvas jest to zakładka Advanced w Settings > LLM, w CLI to kreator konfiguracji lub zmienne środowiskowe LLM_MODEL, LLM_BASE_URL i LLM_API_KEY z flagą --override-with-envs; config.toml pozostał w poprzedniej serii. Prefiks openai/ wybiera protokół, a nie dostawcę, sufiks /v1 jest obowiązkowy. Test na żywo potwierdził cykl agenta na wszystkich trzech modelach sieci: domyślnie używaj DeepSeek V4 Flash z kontekstem 380K i odpowiedzią do 32768 tokenów, GLM-5.3 Flash do planowania, MiniMax M2.7 jako profilu zapasowego na godziny szczytu.

Chcesz wiedzieć więcej?

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

Pobierz klucz i darmowe tokeny →