Sekcje bazy wiedzy ▾

Nawigacja

▸ Zacznij tutaj Według ról

Kategorie

Narzędzia 52
Słownik 12

Narzędzia

DeepSeek Harness: własny dostawca przez JoinGonka Gateway

DeepSeek Harness (komenda dsh) — otwarty agentowy harness od DeepSeek AI: powłoka, w której model czyta i edytuje pliki projektu, uruchamia polecenia, deleguje zadania i prowadzi plan, a użytkownik śledzi to z przeglądarki i zatwierdza ryzykowne kroki. Projekt jest młody: autorzy sami nazywają go developer preview i wprost ostrzegają, że mogą wystąpić niekompatybilne zmiany. Dlatego wszystko poniżej jest powiązane z konkretną wersją — 0.1.5-rc.2, na której przeszliśmy konfigurację od pierwszego ekranu do odpowiedzi agenta.

Przy pierwszym uruchomieniu dsh prosi o klucz oficjalnego API swojego dostawcy, ale warstwa modeli jest otwarta: na stronie Settings → Models można dodać dowolnego dostawcę obsługującego jeden z trzech protokołów — OpenAI Chat Completions, OpenAI Responses lub Anthropic Messages. JoinGonka Gateway obsługuje wszystkie trzy, więc harness łączy się z zdecentralizowaną siecią Gonka standardowymi metodami, bez wtyczek i patchy.

Znamienny szczegół ze strony aplikacji w katalogu OpenRouter: w rankingu modeli, przez które działa tam DeepSeek Harness, w ciągu ostatnich 30 dni drugie miejsce zajmuje DeepSeek V4 Flash 0731, trzecie — GLM 5.3 Flash (dane na 21 września 2026; na pierwszym miejscu — anonimowy model testowy). Oba otwarte modele obsługuje sieć Gonka — wraz z MiniMax M2.7 — więc znany zestaw przenosi się na inny endpoint bez zmiany modelu: zmieniają się tylko adres i cena za token.

Czym jest DeepSeek Harness i jak go uruchomić

Harness to wszystko, co otacza model w pracy agentowej: pętla „zapytanie → wywołanie narzędzia → wynik → następny krok”, narzędzia do plików i terminala, uprawnienia i potwierdzenia, dziennik sesji, kompresja kontekstu. DeepSeek Harness składa to z pluginów: architektura „everything is a plugin” opiera się na frameworku Cordis, a każdy węzeł — od narzędzia po adapter modelu — można wymienić bez dotykania jądra. Kod jest otwarty na licencji MIT.

Instalacja nie jest potrzebna — wystarczy Node.js (linia 22 od 22.19 albo 24 i nowsze):

npx @deepseek-ai/dsh web

Komenda podnosi Web UI na http://127.0.0.1:3080 i otwiera go w przeglądarce; przy uruchomieniu przez SSH adres jest tylko wypisywany w terminalu. Flaga --no-open startuje serwer bez przeglądarki, --port zmienia port. Katalog, z którego uruchomiono dsh, staje się domyślnym katalogiem roboczym, ale sesję interfejs rozpocznie dopiero po wyraźnym wyborze workspace.

TrybKomendaDo czego
Web UIdsh webGłówny interfejs: sesje, ustawienia, potwierdzenia operacji
Zadanie jednorazowedsh --profile headless "task"Skrypty i CI: odpowiedź na stdout, tok rozumowania na stderr
ACPdsh --profile acpEdytory i klienty ze wsparciem Agent Client Protocol
SDKdsh --profile sdkKlienty po JSON-RPC, w tym Python SDK

Warstwa modelowa składa się z dwóch adapterów. Bezpośredni chodzi do oficjalnego API vendora. Wielodostawczy — dsh-llm-pi-ai — opiera się na bibliotece pi-ai, tej samej, na której stoi terminalowy agent Pi; przez niego podłącza się zarówno wbudowanych dostawców z katalogu, jak i dowolne własne endpointy. Dlatego nazwy pól w ustawieniach — api, contextWindow, maxTokens — pokrywają się z tymi znanymi z Pi.

O dojrzałości. README projektu zaczyna się od ostrzeżenia: developer preview, szybkie iteracje, zmiany łamiące kompatybilność. Osobny dokument SAFETY.md doprecyzowuje, że audyt bezpieczeństwa nie był przeprowadzany, a agent wykonuje komendy wygenerowane przez model. Wniosek praktyczny jest prosty: uruchamiaj dsh w kontenerze, maszynie wirtualnej lub na osobnym koncie i trzymaj kopie zapasowe wszystkiego, do czego może dosięgnąć.

Podłączenie przez Web UI: Settings → Models

Krok 1: klucz. Zarejestruj się na gate.joingonka.ai/register: po potwierdzeniu adresu na konto trafi 3M darmowych tokenów. W panelu otwórz sekcję „Klucze API” i utwórz klucz z prefiksem jg-. Warto założyć osobny klucz dla harnessa — wtedy jego ruch będzie widoczny w statystykach w osobnym wierszu.

Krok 2: pierwszy ekran. Po powiadomieniu o statusie testowym (przycisk Continue) dsh poprosi o wpisanie klucza oficjalnego API („Add an API key to get started”). Nie jest obowiązkowy: kliknij Configure later.

Krok 3: dostawca. Otwórz Settings → Models i wybierz Add a custom provider. Pola formularza:

PoleWartośćUwaga
Provider IDjoingonkaMałymi literami łacińskimi, zaczyna się od litery. Identyfikator jest stały: trafia do zapytań, zapisanych sesji i nazwy odwołania do klucza. Nie można go zmienić — pozostaje utworzyć nowego dostawcę i usunąć starego
Display nameJoinGonka GatewayDowolna etykieta dla list
Base URLhttps://gate.joingonka.ai/v1Z sufiksem /v1
API protocolopenai-completionsJak wybrać protokół — w tabeli poniżej
API keyjg-your-keyPole tylko do zapisu: po zapisaniu strona otrzymuje zamaskowany deskryptor, a nie sam klucz

Krok 4: modele. W bloku Models kliknij Fetch available models: dsh zapyta bramę o listę i otworzy okno „Choose models to add”. W naszym przebiegu znalazły się w nim wszystkie trzy modele sieci — MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731 i zai-org/GLM-5.3-Flash — a po Add selected harness sam przypisał każdemu okno kontekstu i limit odpowiedzi — zgodnie z danymi bramy. Zostaje kliknąć Create provider.

Krok 5: wybór modelu. Zamknij ustawienia, kliknij Choose workspace i dodaj katalog projektu. Modele nowego dostawcy pojawią się w selektorze; wybrany staje się modelem domyślnym dla nowych sesji.

dsh przechowuje klucz osobno od ustawień: w pliku ~/.dsh/.credentials.yaml z uprawnieniami tylko dla właściciela. W settings.yaml pozostaje jedynie nazwa odwołania do niego — w naszym przebiegu JOINGONKA_API_KEY, zgodnie z identyfikatorem dostawcy.

Który protokół wybrać. Brama obsługuje wszystkie trzy; różnią się adres bazowy i dodatkowe udogodnienia:

API protocolBase URLKiedy wybrać
openai-completionshttps://gate.joingonka.ai/v1Podstawowy wariant: kanoniczna ścieżka bramy, lista modeli pobiera się przyciskiem, tok rozumowania modeli reasoning przychodzi osobnym strumieniem
openai-responseshttps://gate.joingonka.ai/v1Jeśli Twoje wtyczki lub scenariusze są oparte na Responses API
anthropic-messageshttps://gate.joingonka.aiFormat Anthropic Messages; ścieżkę /v1/messages klient dopisuje sam

Jeden dostawca w dsh obsługuje jeden protokół, więc drugi protokół to drugi dostawca z innym Provider ID. Do codziennej pracy wystarczy pierwszy wariant; w naszym przebiegu pętla agentowa z wywoływaniem narzędzi zadziałała na wszystkich trzech.

Konfiguracja przez plik: settings.yaml

Formularz Models zapisuje dane do zwykłego dokumentu YAML — $DSH_HOME/settings.yaml, domyślnie ~/.dsh/settings.yaml. Można go edytować bezpośrednio: przycisk Open configuration file w nagłówku ustawień otwiera plik, a adaptery odczytują go ponownie przy następnym żądaniu — restart nie jest potrzebny. Pełny wariant dla sieci Gonka:

# ~/.dsh/settings.yaml
llm-pi-ai:
  providers:
    joingonka:
      displayName: JoinGonka Gateway
      apiKeyEnv: JOINGONKA_API_KEY
      api: openai-completions
      baseURL: https://gate.joingonka.ai/v1
      models:
        - id: deepseek-ai/DeepSeek-V4-Flash-0731
          name: DeepSeek V4 Flash
          contextWindow: 380000
          maxTokens: 32768
        - id: zai-org/GLM-5.3-Flash
          name: GLM-5.3 Flash
          contextWindow: 390000
          maxTokens: 8192
          reasoningEfforts:
            off: low
            high: high
        - id: MiniMaxAI/MiniMax-M2.7
          name: MiniMax M2.7
          contextWindow: 200000
          maxTokens: 8192
agent-default-model:
  provider: joingonka
  model: deepseek-ai/DeepSeek-V4-Flash-0731

Co jest tutaj istotne:

  • apiKeyEnv — to nie klucz, a nazwa odwołania do niego. Wartość dsh szuka po kolei: zmienna środowiskowa w momencie uruchomienia, następnie .credentials.yaml (tam zapisuje formularz), potem .env w katalogu uruchomienia, a na końcu ~/.dsh/.env. Jeśli konfigurujesz harness bez przeglądarki, wystarczy wiersz JOINGONKA_API_KEY=jg-your-key w ~/.dsh/.env z uprawnieniami 600. Zmiennej wyeksportowanej po starcie już uruchomiony proces nie zobaczy.
  • contextWindow i maxTokens ustawiaj jawnie. Modelowi, o którym dsh nic nie wie, przypisuje 262 144 i 32 768 tokenów — co nie odpowiada rzeczywistym limitom. Ustawiony maxTokens staje się jednocześnie domyślnym limitem odpowiedzi dla każdego żądania.
  • reasoningEfforts — poziomy rozumowania dla menu Effort. Model wpisany ręcznie nie ma poziomów i menu dla niego się nie pojawia. W GLM-5.3 Flash przełącznik jest dwustanowy: wartość low wyłącza rozumowanie, każda inna pozostawia je w pełni. Dlatego poziomowi off przypisano low, a high przechodzi bez zmian. W naszym przebiegu z off bloków rozumowania nie było wcale, z high wróciły.
  • agent-default-model — model dla nowych agentów, w tym trybu headless. To samo robi wybór modelu w interfejsie; tutaj można też dodać reasoningEffort.

Przełączniki compat, które dokumentacja dsh zaleca dla rygorystycznych bram (supportsDeveloperRole: false, maxTokensField: max_tokens), tutaj nie będą potrzebne: JoinGonka Gateway przyjmuje zarówno rolę developer, jak i pole max_completion_tokens.

Instalator npx @joingonka/setup nie konfiguruje tego harnessu: całe podłączenie sprowadza się do formularza z poprzedniej sekcji lub do powyższego fragmentu YAML.

Weryfikacja i typowe błędy

Najszybciej integrację sprawdzi jednorazowe uruchomienie z katalogu z kodem. Połóż obok niewielki plik z oczywistym błędem i poproś o jego znalezienie:

cd /path/to/project
npx @deepseek-ai/dsh --profile headless "Read calc.py and tell me in one sentence whether it has a bug."

Odpowiedź końcowa trafia na stdout, tok rozumowania na stderr z oznaczeniem dsh: reasoning:. Agent sam powinien wywołać narzędzie do czytania pliku i odpowiedzieć merytorycznie: w naszym uruchomieniu każdy z trzech modeli w sieci wskazał błędną linię. To znaczy, że pełny cykl „zapytanie → wywołanie narzędzia → wynik → odpowiedź” przez bramę składa się poprawnie.

Druga połowa weryfikacji to strona bramy. W panelu otwórz „Użycie”: widać tam zapytania w rozbiciu na godziny i dni, podział według modeli i kluczy. Pojawił się wiersz z kluczem harnessa i świeżym czasem ostatniego zapytania — ruch naprawdę przechodzi przez bramę.

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

Co widaćCo to znaczyCo zrobić
AUTH: 401: … Invalid API keyBrama nie przyjęła kluczaWpisz klucz ponownie na stronie Models albo popraw zmienną, do której odwołuje się apiKeyEnv
MISSING_CREDENTIAL: … no credential for provider route "joingonka"Pod odwołaniem z apiKeyEnv nic się nie znalazłoZapisz klucz w formularzu albo ustaw zmienną przed uruchomieniem dsh: środowisko czytane jest raz, na starcie
UNKNOWN_MODELModelu nie ma na liście models provideraDodaj go do formularza lub pliku albo wybierz już skonfigurowany
400 … Model "…" not found. Available: …Identyfikator wpisany niedokładnie, najczęściej bez prefiksu vendoraSkopiuj id z wykazu, który brama podaje w samym komunikacie
429 … currently overloaded … (rate limit)Modelowi skończyła się właśnie wolna pojemność w sieciNormalna sytuacja pod obciążeniem: dsh sam powtarza zapytanie. Jeśli próby się wyczerpały — przełącz model albo poczekaj minutę; stan widać na stronie statusu
Fetch available models odpowiada 401Lista została pobrana z błędnym kluczemSprawdź klucz w formularzu; modele możesz wpisać też ręcznie — będą działać tak samo
Model rozumujący nie ma menu EffortDla wpisu modelu nie zadeklarowano poziomówDodaj reasoningEfforts w settings.yaml, jak w przykładzie powyżej
Odpowiedź modelu rozumującego urywa się lub jest pustaRozumowanie wchodzi w limit odpowiedzi i zjadło go w całościNie zaniżaj maxTokens; do krótkich zadań wybierz poziom off
W polu wprowadzania napis Select model, wpisywanie zablokowaneModel domyślny wskazuje na usuniętego provideraWybierz inny model w selektorze

Jaki model wybrać

Cena wszystkich modeli w sieci jest taka sama, więc wybór dotyczy zachowania, a nie budżetu. Poniżej przedstawiono limity oraz sposób, w jaki modele zachowywały się w naszym przebiegu dsh dla tego samego zadania: odczytania pliku i znalezienia w nim błędu.

ModelIdentyfikatorKontekst / odpowiedźZachowanie w dsh
DeepSeek V4 Flashdeepseek-ai/DeepSeek-V4-Flash-0731380K / 32768Czysta odpowiedź ze wskazaniem linii. Największy limit odpowiedzi w sieci — długie poprawki i duże pliki za jednym razem
GLM-5.3 Flashzai-org/GLM-5.3-Flash390K / 8192Model reasoning: rozumowanie dsh pokazuje w osobnym strumieniu, odpowiedź pozostaje czysta. Rozumowanie wlicza się do limitu odpowiedzi
MiniMax M2.7MiniMaxAI/MiniMax-M2.7200K / 8192Poprawnie rozwiązuje zadanie; rozumowanie przychodzi w osobnym polu reasoning_content, w tekście odpowiedzi jest tylko sama odpowiedź

Domyślną rekomendacją jest DeepSeek V4 Flash: praca agenta szybko napotyka ograniczenia objętości kontekstu i długości poprawek, a tutaj jest zapas obu parametrów. Gdy zadanie wymaga przemyślenia skomplikowanej logiki, przełącz się na GLM-5.3 Flash i utrzymuj poziom rozumowania high; dla szybkich poprawek ten sam dostawca udostępnia go z poziomem off. MiniMax M2.7 to solidna opcja dla krótkich zadań, gdy widoczny tok rozumowania nie przeszkadza. Model można zmienić w selektorze interfejsu lub ciągiem model w bloku agent-default-model.

Skład sieci jest określany przez głosowanie uczestników i z czasem ulega zmianie; aktualną listę wraz z limitami zawsze zwraca GET https://gate.joingonka.ai/v1/models — z tego samego korzysta przycisk Fetch available models.

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

Narzędzia agentowe zużywają tokeny inaczej niż czat: do każdej Twojej frazy harness dodaje prompt systemowy i opisy wszystkich narzędzi, a następnie prowadzi wieloetapowy dialog z modelem. W naszym teście zadanie „przeczytaj plik i znajdź błąd” zajęło dwie-trzy tury i od 14 do 22 tysięcy tokenów, przy czym prawie wszystko to wejście: około siedmiu tysięcy tokenów jest zużywanych przy każdej turze jeszcze przed Twoim pytaniem. To normalna opłata za autonomię — i właśnie dlatego cena za token ma znaczenie.

Przez 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 aktualnego źródła. Rzędy wielkości cen na wrzesień 2026:

ScenariuszZużyciePrzez Gateway
Pojedyncze zadanie (przeczytać plik, znaleźć błąd)14-22K tokenówsetne części centa
Dzień aktywnej pracy3-7M tokenówkilka centów
Miesiąc aktywnego programowania~150M tokenówrzędu dolara

Płatność następuje za faktyczne zużycie, bez subskrypcji i limitów liczby zapytań; pozostały budżet i dzienne zużycie są widoczne w panelu użytkownika.

Wersja. Dopóki projekt jest w statusie developer preview, po każdej aktualizacji sprawdzaj, czy dostawca działa, a dla odtwarzalności blokuj wersję bezpośrednio w komendzie: npx @deepseek-ai/[email protected] web.

Uprawnienia. Nowe sesje domyślnie działają w trybie Workspace Write — zapis w obrębie katalogu roboczego; operacje wykraczające poza politykę wymagają potwierdzenia w interfejsie. Tryb zmienia się w Settings → General.

Powtórzenia. W przypadku pojedynczego błędu sieciowego dsh sam powtarza zapytanie — według dokumentacji do pięciu razy — więc krótkotrwały skok obciążenia sieci zazwyczaj pozostaje niezauważony.

Prywatność. Bramka nie przechowuje treści promptów i odpowiedzi: w statystykach pozostają tylko agregaty zużycia. Pliki projektu agent czyta lokalnie, na Twoim komputerze.

Jeśli potrzebna jest praca z obrazami — zrzut ekranu interfejsu, schemat na zdjęciu — uruchom obok drugiego dostawcę z modelem posiadającym funkcję wzroku: dsh obsługuje kilku dostawców jednocześnie, a modele sieci Gonka są tekstowe.

DeepSeek Harness — to nie jedyny agent wydany przez samo laboratorium tworzące modele: Z.ai, autorzy GLM, mają środowisko ZCode, a MiniMax — terminalowy MiniMax Code. Oba łączą się z tą samą bramką przy użyciu tego samego klucza.

DeepSeek Harness — to otwartoźródłowy agentowy harness od DeepSeek AI w statusie developer preview: Web UI, pojedyncze przebiegi, ACP i SDK oparte na architekturze wtyczek. Własny endpoint dodaje się standardowo: Settings → Models → Add a custom provider, adres https://gate.joingonka.ai/v1, protokół openai-completions, klucz jg-…; przycisk Fetch available models automatycznie pobiera DeepSeek V4 Flash, GLM-5.3 Flash oraz MiniMax M2.7 wraz z limitami. To samo zapisuje się jako jeden blok llm-pi-ai w pliku ~/.dsh/settings.yaml. Dla GLM-5.3 Flash zadeklaruj poziomy off: low oraz high: high — rozumowanie stanie się przełączalne. Uruchamiaj harness w odizolowanym środowisku i blokuj wersję, dopóki format się nie ustabilizuje.

Chcesz wiedzieć więcej?

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

Uzyskaj klucz i darmowe tokeny →