Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 52
Słownik 12

Narzędzia

omp (Oh My Pi) + JoinGonka Gateway: agent z rolami modeli

omp (Oh My Pi) — terminalowy agent codingowy, fork minimalistycznego Pi, do którego dodano wszystko, czego brakowało do poważnej pracy: serwery językowe (LSP) przy każdym zapisie pliku, obsługę prawdziwego debuggera, subagentów w izolowanych kopiach roboczych, stałe komórki Python i JavaScript. Jądro napisane jest w Rust, a ten sam binarny plik działa na macOS, Linux i Windows.

Dostawcy w omp są opisywani deklaratywnie: każdy endpoint obsługujący OpenAI Chat Completions dodaje się za pomocą dziesięciu linii w ~/.omp/agent/models.yml. JoinGonka Gateway jest właśnie taki, więc połączenie sprowadza się do jednej komendy instalatora lub dwóch krótkich plików YAML. Następnie agent pracuje na modelach zdecentralizowanej sieci Gonka — DeepSeek V4 Flash, GLM-5.3 Flash i MiniMax M2.7 — w jednej cenie: $0.0069 za milion tokenów wejściowych.

Główną różnicą omp od oryginału są role modeli: zwykłe ruchy, głęboką analizę, tryb planowania i drobiazgi w tle można powierzyć różnym modelom i zabezpieczyć się łańcuchem zastępców. Poniżej znajduje się szybka ścieżka, ręczna konfiguracja, tabela „jaki model do jakiej roli” oraz analiza błędów. Komendy i komunikaty sprawdzono podczas uruchomienia omp 18.2.8 przez bramkę 21 września 2026 r. Po potwierdzeniu adresu na konto wpłynie 3M darmowych tokenów — wystarczy, aby powtórzyć to wszystko samodzielnie.

Szybki start: instalacja i jedna komenda

Krok 1: zainstalować omp. Oficjalne metody z README projektu:

# macOS and Linux
curl -fsSL https://omp.sh/install | sh

# Homebrew
brew install can1357/tap/omp

# via Bun (requires Bun 1.3.14 or newer)
bun install -g @oh-my-pi/pi-coding-agent

# Windows (PowerShell)
irm https://omp.sh/install.ps1 | iex

Krok 2: zdobyć 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 sieci.

Krok 3: uruchomić instalator.

npx @joingonka/setup --tool omp

Instalator zapyta o klucz — nie jest on przekazywany w argumentach wiersza poleceń, aby nie pozostał w historii powłoki — i zrobi cztery rzeczy:

  • wpisze dostawcę joingonka do ~/.omp/agent/models.yml: adres bramy, protokół openai-completions, klucz jawnym tekstem i trzy modele sieci z prawdziwymi oknami kontekstu i limitami odpowiedzi; plik otrzyma uprawnienia 600;
  • ustawi model domyślny — modelRoles.default w ~/.omp/agent/config.yml — na DeepSeek V4 Flash, ale tylko jeśli rola jest pusta lub wskazuje model, który zniknął z sieci: nie przechwytuje cudzego wyboru, lecz podpowiada, jak go zmienić;
  • przed zapisem zrobi kopię zapasową poprzedniego pliku, a pozostałych dostawców, role i komentarze pozostawi bez zmian;
  • 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ótem 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 omp --model glm --non-interactive

Niestandardowe położenie konfigów instalator uwzględnia samodzielnie: nazwany profil (OMP_PROFILE) i przeniesiony katalog agenta (PI_CODING_AGENT_DIR). Odziedziczony models.json przenosi do models.yml tak samo, jak zrobiłby to sam omp — poprzedni dostawcy nie przepadną. A jeśli obok leży stary settings.json bez config.yml, instalator nie utworzy config.yml, aby omp nie pominął własnej migracji ustawień: poprosi o jednorazowe uruchomienie omp i powtórzenie polecenia.

Ręczna konfiguracja: dwa pliki YAML

Wszystko, co robi instalator, można napisać ręcznie. Pliki są dwa i każdy ma swoje zadanie: models.yml opisuje providerów i modele, config.yml przechowuje ustawienia — w tym to, który model pełni jaką rolę.

# ~/.omp/agent/models.yml
providers:
  joingonka:
    baseUrl: https://gate.joingonka.ai/v1
    api: openai-completions
    apiKey: jg-your-key
    models:
      - id: deepseek-ai/DeepSeek-V4-Flash-0731
        name: DeepSeek V4 Flash (Gonka)
        input: [text]
        contextWindow: 380000
        maxTokens: 32768
        reasoning: true
      - id: zai-org/GLM-5.3-Flash
        name: GLM-5.3 Flash (Gonka)
        input: [text]
        contextWindow: 390000
        maxTokens: 8192
        reasoning: true
      - id: MiniMaxAI/MiniMax-M2.7
        name: MiniMax M2.7 (Gonka)
        input: [text]
        contextWindow: 200000
        maxTokens: 8192
# ~/.omp/agent/config.yml
modelRoles:
  default: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
PoleWartośćCo ważne
baseUrlhttps://gate.joingonka.ai/v1Koniecznie z /v1 na końcu: ścieżkę /chat/completions omp dopisuje sam
apiopenai-completionsTransport Chat Completions — na nim przetestowano całą tę instrukcję
apiKeytwój klucz jg-…omp najpierw szuka zmiennej środowiskowej o tej nazwie, a gdy jej nie znajdzie, traktuje ciąg jako sam klucz. Wartość zaczynająca się od ! to polecenie, którego wynik stanie się kluczem
contextWindow, maxTokenswedług listy modeli powyżejBez nich omp podstawi 128000 i 16384 — co nie odpowiada modelom sieci. Na podstawie okna kontekstu agent oblicza, kiedy pora skompresować historię
input[text]Modele sieci przyjmują tekst
reasoningtrueOznaczenie modelu rozumującego: instalator ustawia je dla DeepSeek V4 Flash i GLM-5.3 Flash, wpis MiniMax M2.7 obywa się bez niego

Klucz jako literał to najbezproblemowsza opcja: omp startuje z dowolnego środowiska, a plik wystarczy zabezpieczyć poleceniem chmod 600 ~/.omp/agent/models.yml. Chcesz trzymać klucz poza plikiem — wpisz w apiKey nazwę zmiennej, na przykład JOINGONKA_API_KEY, i wyeksportuj ją w powłoce, z której uruchamiasz omp: właśnie taki porządek rozwiązywania klucza opisano w dokumentacji projektu.

Opcjonalne pole cost (cena za milion tokenów) jest potrzebne tylko do szacowania kosztu sesji w interfejsie omp. Instalator wpisuje tam aktualną cenę bramy z momentu instalacji; w ręcznej konfiguracji pole można pominąć — to oszacowanie nie ma związku z twoim rachunkiem, rzeczywiste zużycie pokazuje panel.

Selektor modelu zapisuje się jako provider/model-id. Nazwę providera oddziela pierwszy ukośnik, dlatego identyfikatory sieci z własnym ukośnikiem wpisuje się tak, jak są: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731. Zamiast edytować config.yml, rolę można przypisać z interfejsu — poleceniem /model w sesji lub w kreatorze omp setup.

Role modeli: jaki model do jakiej pracy

W omp model nie jest wybierany jeden dla wszystkiego, lecz według ról — jest to główny mechanizm konfiguracji. Wbudowane role dla czatu: default, smol, slow, plan, commit, task, tiny, memory, advisor oraz vision. Nie trzeba przypisywać wszystkich: niezdefiniowane smol i slow początkowo przyjmują model roli default, subagenci bez roli task pracują na modelu bieżącej sesji, a commit i tiny podążają za smol. Konfiguracja z jednej linii default jest w pełni funkcjonalna.

Dzielenie ról między modelami sieci nie powinno odbywać się w celu oszczędności — cena DeepSeek V4 Flash, GLM-5.3 Flash i MiniMax M2.7 jest taka sama — lecz ze względu na zachowanie i wydajność: model wnioskujący lepiej planuje, model z długą odpowiedzią lepiej pisze, a tło nie musi zajmować kolejki głównego zadania.

RolaCo jest na niej wykonywaneModel sieciDlaczego
defaultzwykłe ruchy agenta: czytanie, poprawki, poleceniaDeepSeek V4 FlashKontekst 380K i limit odpowiedzi 32768 — zapas dla długich sesji z narzędziami; ustawiany domyślnie przez instalator
smol, task, commitszybkie podzadania, subagenci, analiza zmian do commitównie ustawiać — poprzez dziedziczenie trafią do DeepSeek V4 FlashWszystkie wywołują narzędzia, a osobny „tani” model przy jednolitej cenie niczego nie oszczędza
slowgłęboka analiza: zawiła logika, szukanie przyczynGLM-5.3 FlashWnioskuje przed odpowiedzią; limit odpowiedzi 8192, a jego część idzie na wnioskowanie — dla długiego tekstu użyj DeepSeek V4 Flash
plantryb planowaniaGLM-5.3 FlashPlan to krótki tekst, w którym tok myślenia jest ważniejszy niż objętość
tinynagłówki sesji i klasyfikacja serwisowa — krótkie zapytania bez narzędziMiniMax M2.7Model ma największą wydajność w sieci, a tło nie rywalizuje o sloty z głównym zadaniem
advisordrugi model, który czyta każdy ruch głównego i wstawia uwagiGLM-5.3 Flash, opcjonalnieDoradcy przydaje się różnić od wykonawcy; włączany komendą /advisor on
visionzadania z obrazkaminie ustawiaćModele sieci są tekstowe: rolę pozostaw dostawcy z modelem typu vision
# ~/.omp/agent/config.yml
modelRoles:
  default: joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
  slow: joingonka/zai-org/GLM-5.3-Flash
  plan: joingonka/zai-org/GLM-5.3-Flash
  tiny: joingonka/MiniMaxAI/MiniMax-M2.7

retry:
  fallbackChains:
    default:
      - joingonka/zai-org/GLM-5.3-Flash

Blok retry.fallbackChains — zabezpieczenie na godziny szczytu: gdy główny model uparcie odpowiada 429, omp przekazuje resztę ruchu kolejnemu wpisowi w łańcuchu, a po pauzie wraca do głównego. Kluczem łańcucha może być rola, konkretny model lub cały dostawca (joingonka/*).

Podczas jednego uruchomienia rolę można nadpisać flagą: omp --model slow uruchamia sesję na modelu roli slow, a --smol, --slow i --plan podmieniają model samej roli. Wewnątrz sesji Ctrl+P przewija modele ról, a /model otwiera menu wyboru; w zakładce Roles można przypisać role i ich zapasowe odpowiedniki.

Do wartości roli można dopisać poziom przemyśleń — :low, :medium, :high. Jest to składnia omp, a to, jak poziom rozumie konkretny model, zależy od niego samego: GLM-5.3 Flash, na przykład, ma przełącznik binarny — szczegóły w przeglądzie modelu. I jeszcze jeden przydatny szczegół: role można nadpisać dla jednego repozytorium plikiem <repo>/.omp/config.yml z tym samym blokiem modelRoles. Dostawcy i klucze pozostają w katalogu domowym, więc klucz nie trafi do repozytorium.

Weryfikacja: co powinno się wydarzyć

Najpierw upewnij się, że omp widzi providera:

omp models joingonka

W odpowiedzi przychodzi tabela z trzech wierszy z oknami kontekstu i limitami odpowiedzi z models.yml, zaokrąglonymi do tysięcy (wynik skrócony: omp ma jeszcze kolumny thinking i images):

joingonka (3)
model                                context  max-out
deepseek-ai/DeepSeek-V4-Flash-0731      380K      33K
MiniMaxAI/MiniMax-M2.7                  200K     8.2K
zai-org/GLM-5.3-Flash                   390K     8.2K

Następnie — jednorazowe uruchomienie bez interfejsu. Wrzuć do pustego katalogu plik z oczywistym błędem i poproś o jego znalezienie:

omp -p "Read calc.py and tell me in one sentence whether it has a bug."

Agent powinien sam wywołać narzędzie do czytania i odpowiedzieć konkretnie — wskazując wyrażenie, w którym jest błąd. W naszym przebiegu 21 września 2026 ten cykl — zapytanie, wywołanie narzędzia, wynik, odpowiedź — czysto przeszły DeepSeek V4 Flash i GLM-5.3 Flash; o MiniMax M2.7 — ostatni wiersz tabeli poniżej.

Trzecia weryfikacja — od strony bramy: w panelu w sekcji „Użycie" zapytanie pojawi się w rozbiciu „Według modeli", a w bloku „Według kluczy" zaktualizuje się czas ostatniego zapytania. Jeśli tam pusto, omp łączy się z innym providerem: sprawdź, co stoi na rolach, komendą omp config get modelRoles.

Jeśli coś poszło nie tak, diagnoza zwykle czyta się wprost z komunikatu:

Co widaćCo to znaczyCo zrobić
Bun runtime must be >= 1.3.14omp zainstalowany przez Bun, a sam Bun jest staryZaktualizuj Bun (bun upgrade) albo zainstaluj gotowy binarny plik: curl -fsSL https://omp.sh/install | sh -s — --binary
401 Invalid API keyBrama nie przyjęła kluczaSprawdź apiKey: klucz w całości, bez spacji i literówek w cudzysłowach. Jeśli jest tam nazwa zmiennej — musi być wyeksportowana w tej powłoce, z której uruchomiono omp
405 Not Allowed i strona HTML nginxW baseUrl zginął sufiksAdres musi kończyć się na /v1
404 Invalid URL (POST /v1/v1/chat/completions)W baseUrl zbędny ogonZostaw dokładnie https://gate.joingonka.ai/v1 — resztę omp dopisze sam
400 Model … not found. Available: …Literówka w id modeluBrama sama wymienia dostępne identyfikatory; pełna lista — GET https://gate.joingonka.ai/v1/models
Warning: models.yml validation failed — custom providers disabled, potem No models matching "joingonka"Plik nie przeszedł walidacji: literówka w nazwie wymaganego pola albo uszkodzony YAML. omp mimo to działa na wbudowanych modelachPrzyczyna jest podana w wierszu poniżej ostrzeżenia; popraw pole i powtórz omp models joingonka
429Klucz wyczerpał minutowy limit zapytań albo modelowi w szczycie skończyła się przepustowośćomp sam powtarza zapytanie z rosnącą pauzą. Jeśli się przeciąga — zmień model przez /model albo ustaw retry.fallbackChains; stan sieci widać na stronie statusu
402Na koncie skończyły się środkiDoładuj konto w sekcji „Rozliczenia"; klucz przy tym działa
Tura się zakończyła, a odpowiedzi nie widać (w trybie -p — pusty wiersz)Zaobserwowano 21 września 2026 na MiniMax M2.7 w turach po wywołaniu narzędzia: odpowiedź przyszła wewnątrz bloku rozumowania i omp pokazał ją jako myślenieUstaw na rolach z narzędziami DeepSeek V4 Flash albo GLM-5.3 Flash, a MiniMax M2.7 zostaw do krótkich zadań bez narzędzi

Ile to kosztuje

Narzędzie agentowe zużywa tokeny inaczej niż czat: do każdego twojego zdania omp dodaje systemowy prompt i opisy narzędzi, a zadanie zazwyczaj zajmuje kilka kroków. W naszym teście nawet z włączonym tylko jednym narzędziem do odczytu, każdy krok generował około 3,5 tysiąca tokenów wejściowych; z pełnym zestawem będzie ich więcej. Dlatego cena za token ma tu kluczowe znaczenie.

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 w sieci i jest pobierana na tej stronie z aktualnego źródła.

ScenariuszZużyciePrzez Gateway
Zadanie jednorazowe: odczyt pliku, znalezienie błęduod 7K tokenówułamki centa
Dzień aktywnej pracy3-7M tokenówpojedyncze centy
Miesiąc aktywnej pracy~150M tokenówokoło dolara

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

MetodaModel płatnościCo ogranicza
Subskrypcja na coding plan (wejście przez /login)stała kwota miesięcznielimity i okna odnawiania limitów po stronie dostawcy
Klucz dostawcy bezpośrednioza tokeny według cennika dostawcyrachunek rośnie wraz z długością sesji; cena zależy od wybranego modelu
JoinGonka Gatewayza tokeny, przedpłacone saldozużycie jest widoczne w panelu; brak subskrypcji i miesięcznych limitów

Pasek stanu omp pokazuje szacunkowy koszt sesji. Jest on obliczany na podstawie pola cost z models.yml: instalator wpisuje tam cenę bramki w momencie instalacji, a dolarowa cena w sieci zmienia się wraz z kursem GNK, więc szacunek jest jedynie orientacyjny. Dokładne zużycie i saldo znajdują się w panelu, w sekcjach „Użycie” i „Billing”. Dlaczego wybór domyślny padł na DeepSeek V4 Flash, zostało szczegółowo wyjaśnione w przeglądzie modelu.

O czym warto pamiętać w pracy

Tryb zatwierdzeń. Domyślnie omp działa w trybie yolo: sam zatwierdza odczyt, zapis i uruchamianie poleceń. We własnym projekcie to wygodne, w cudzym kodzie — powód, by zaostrzyć tryb lub przenieść się do kontenera:

omp config set tools.approvalMode write

W trybie write agent pyta o zgodę tylko na wykonywanie poleceń, w always-ask — także na zapis. Dla pojedynczego uruchomienia to samo ustawia flaga --approval-mode. To właściwość samego omp, nie zależy od providera modelu.

Pi i omp — krewni z różnymi konfiguracjami. Ustawienia jednego narzędzia nie przechodzą na drugie: katalogi, formaty i nazwy pól mają własne.

Piomp
Katalog ustawień~/.pi/agent~/.omp/agent
Providerzymodels.jsonmodels.yml
Model domyślnysettings.json: defaultProvider i defaultModelconfig.yml: modelRoles.default
Wybór modelu do zadania/model w sesjirole modelRoles i łańcuchy retry.fallbackChains
Sprawdzeniepi --list-modelsomp models joingonka
Instalator--tool pi--tool omp

Kilka środowisk. Nazwany profil (omp --profile work lub zmienna OMP_PROFILE) przenosi wszystkie ustawienia do ~/.omp/profiles/<name>/agent — wygodne, by rozdzielić klucze służbowe i prywatne. Bieżący katalog agenta wypisuje omp config path.

Jeśli agent ma działać w edytorze. omp potrafi pracować wewnątrz Zed po protokole ACP — to ten sam agent z tymi samymi ustawieniami, nie trzeba drugi raz wpisywać providera ani ról.

omp łączy się z JoinGonka Gateway jednym poleceniem — npx @joingonka/setup --tool omp — lub dwoma plikami: dostawca joingonka w ~/.omp/agent/models.yml (baseUrl z /v1, api: openai-completions, klucz jg-…, modele z uczciwymi contextWindow i maxTokens) oraz modelRoles.default w config.yml. Dalej działa główna dźwignia omp — role: DeepSeek V4 Flash na zwykłe kroki, GLM-5.3 Flash na analizę i planowanie, MiniMax M2.7 na drobiazgi w tle, łańcuch fallbackChains na godziny szczytu. Weryfikacja — omp models joingonka i sekcja „Użycie” w panelu; cena dla wszystkich modeli sieci jest taka sama, więc role wybiera się według zachowania, a nie budżetu.

Chcesz wiedzieć więcej?

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

Uzyskaj klucz i darmowe tokeny →