SSD Nodes Learn 🎉 VPS od $5.50/mies.
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-21

Czym jest agent harness i jak działa w systemach AI

Wyjaśnienie roli agent harness jako warstwy sterującej modelem LLM. Dowiedz się, jak pętla wykonawcza, narzędzia oraz stan sesji przekształcają statyczny model w autonomicznego agenta.

Czym jest środowisko uruchomieniowe agenta

Środowisko uruchomieniowe agenta (ang. agent harness) to program, który otacza model językowy i przekształca go w agenta. Zarządza on pętlą, która wielokrotnie wywołuje model, przechowuje definicje narzędzi, z których model może korzystać, oraz zasady uprawnień decydujące o tym, które z tych wywołań zostaną faktycznie wykonane. Utrzymuje również stan sesji między kolejnymi turami konwersacji oraz katalog roboczy, w którym wykonywane są zadania. Model wewnątrz tego środowiska można wymieniać.

To ostatnie zdanie jest kluczowe. Samodzielny model odpowiada na pytanie i zapomina o użytkowniku. Środowisko uruchomieniowe pyta model o następny krok, wykonuje polecenie wskazane przez model, przekazuje wynik z powrotem i ponawia zapytanie. Ta powtarzalność jest tym, co określa się mianem „agenta”. Jeśli używana terminologia jest nadal niejasna, różnica między agentem AI, modelem LLM a asystentem wyjaśnia te pojęcia przed wyborem narzędzia.

Harness to nie model

Te dwa pojęcia są często mylone, ponieważ dostawcy oferują je pod jedną nazwą handlową.

dsh oraz DeepSeek to różne produkty. DeepSeek Harness, opublikowany pod adresem github.com/deepseek-ai/deepseek-harness w dniu 13 sierpnia 2026 roku na licencji MIT, jest programem Node instalowanym na maszynie. Modele DeepSeek to wagi udostępniane za pośrednictwem API (application programming interface). Skieruj dsh na model innego dostawcy, a narzędzie nadal będzie działać, ponieważ harness wymaga jedynie komponentu, który przyjmuje komunikaty i zwraca wywołania narzędzi.

Claude Code oraz Claude tworzą taką samą parę. Claude Code to harness: program terminalowy z pętlą, systemem uprawnień oraz narzędziami do obsługi plików i powłoki. Claude to rodzina modeli, z której korzysta domyślnie. Codex oraz Gemini CLI dzielą się w ten sam sposób.

Oto test, który zawsze pozwala to rozstrzygnąć. Instalujesz harness. Wywołujesz model. Jeśli dany element posiada wersję na dysku oraz plik konfiguracyjny w katalogu domowym, jest to harness. Jeśli jest to ciąg znaków wewnątrz tego pliku konfiguracyjnego, na przykład deepseek-chat, jest to model.

Na czym faktycznie polega pętla działania

Pojedynczy obieg pętli sterującej wygląda następująco. Należy przeanalizować go uważnie, ponieważ niemal każda różnica między implementacjami wynika z przebiegu tych pięciu kroków.

  1. Mechanizm sterujący przesyła dotychczasową konwersację wraz z listą definicji narzędzi do modelu.
  2. Model odpowiada tekstem lub żądaniem wywołania jednego z narzędzi.
  3. Mechanizm sterujący weryfikuje żądanie pod kątem reguł uprawnień, a następnie wykonuje je lub przerywa działanie, aby zapytać użytkownika o zgodę.
  4. Mechanizm sterujący uruchamia narzędzie, przechwytuje wyjście oraz kod wyjścia, a w przypadku bardzo długich komunikatów – skraca je.
  5. Mechanizm sterujący dołącza wynik do konwersacji i wraca do kroku 1.

Krok 3 to miejsce, w którym mechanizmy sterujące najczęściej różnią się w codziennym użytkowaniu. Mechanizm wymagający potwierdzenia przed każdym poleceniem jest bezpieczny, ale męczący. Mechanizm, który nigdy nie pyta, w końcu wykona destrukcyjne polecenie w ścieżce błędnie zinterpretowanej przez model. Każde profesjonalne rozwiązanie posiada obecnie ustawienie pośrednie: listę dozwolonych poleceń wykonywanych bez pytania oraz monit o potwierdzenie dla wszystkich pozostałych operacji.

Krok 1 stanowi źródło pozostałych różnic. Konwersacja wydłuża się z każdym obiegiem, a model posiada ograniczone okno kontekstowe. Mechanizm sterujący musi zatem decydować, co usunąć, co podsumować, a co zapisać do pliku, aby odczytać to później. Ta decyzja w głównej mierze odpowiada za to, dlaczego dwa różne mechanizmy sterujące korzystające z tego samego modelu generują pracę o różnej jakości.

Większość mechanizmów sterujących integruje obecnie narzędzia zewnętrzne poprzez MCP (model context protocol). Jest to standardowy sposób udostępniania narzędzia dowolnemu mechanizmowi, który go obsługuje, dzięki czemu jedna integracja działa z wieloma rozwiązaniami. Uruchamianie serwerów MCP na VPS omawia ten aspekt zagadnienia.

Harness agenta a framework agenta

To pytanie pojawia się przy każdym nowym narzędziu typu harness, a odpowiedzi są rozbieżne, częściowo dlatego, że sami dostawcy nie są zgodni. Oto wersja, która jest najbardziej trafna.

Framework to biblioteka, którą importujesz. Sam piszesz pętlę, decydujesz, kiedy wywołać model i samodzielnie obsługujesz wyniki narzędzi. LangChain jest znanym przykładem: otrzymujesz klocki, z których składasz agenta w kodzie.

Harness to program, który uruchamiasz. Pętla jest już napisana, narzędzia już istnieją, a model uprawnień ma domyślne ustawienia. Otrzymujesz działającego agenta po wydaniu pierwszego polecenia i od tego momentu go konfigurujesz.

Test instalacji zazwyczaj rozstrzyga tę kwestię. Jeśli instalujesz narzędzie, a następnie piszesz kod, jest to framework. Jeśli instalujesz narzędzie, a następnie zaczynasz z nim rozmawiać, jest to harness.

Granica ta jest autentycznie sporna, a najjaśniejszym dowodem jest dokumentacja samego LangChain. Według stanu na sierpień 2026 opisuje ona Deep Agents jako framework typu "opinionated, batteries-included" zbudowany na bazie LangGraph, podczas gdy repozytorium langchain-ai/deepagents określa się mianem "the batteries-included agent harness". Oba opisy są poprawne. Deep Agents to Python SDK (software development kit), który importujesz, więc test instalacji klasyfikuje go jako bibliotekę, ale dostarcza on na tyle dużo domyślnych zachowań, że użytkownicy traktują go jak harness. Microsoft udostępnił harness i hostowane agenty w wersji ogólnodostępnej w sierpniu 2026, co pokazuje, że termin ten stał się kategorią produktu, a nie tylko żargonem.

Zadaj więc pytanie, które pozwoli przewidzieć Twój nakład pracy. Jeśli piszesz pętlę, odpowiadasz za nią: za ponowne próby, przycinanie kontekstu, monity o uprawnienia i rejestr zdarzeń. Jeśli pętla jest dostarczona w gotowym produkcie, przejmujesz cudze rozwiązania tych problemów, co pozwala znacznie szybciej rozpocząć pracę, ale utrudnia późniejsze wprowadzanie zmian.

Różnica między środowiskiem uruchomieniowym a oknem czatu

Okno czatu oraz środowisko uruchomieniowe (harness) prezentują dane wyjściowe modelu. Różnica polega na tym, na czyim komputerze wykonywane są operacje. W oknie czatu kod uruchamiany przez model wykonuje się wewnątrz piaskownicy dostawcy, na przesłanych plikach, a po zakończeniu sesji dane te znikają. Środowisko uruchomieniowe wykonuje narzędzia na maszynie, na której zostało zainicjowane, z uprawnieniami użytkownika, który je uruchomił, operując na rzeczywistych plikach i wykorzystując dostępne w środowisku poświadczenia.

To zdanie podsumowuje zarówno główną zaletę, jak i pełne ryzyko tego rozwiązania. Agent może wreszcie wykonać pracę. Agent może również tę pracę usunąć.

Harnessy faktycznie używane przez użytkowników

Ta lista jest celowo datowana na 19 sierpnia 2026. Kategoria ta zmienia się co tydzień, więc każde zestawienie szybko się dezaktualizuje.

  • Claude Code oraz Codex to harnessy dostawców. Działają w trybie terminalowym, domyślnie powiązane z modelami własnymi dostawcy, z najbardziej dopracowaną obsługą uprawnień. Porównanie Claude Code, Cursor, Codex i Copilot omawia je szczegółowo.
  • DeepSeek Harness (dsh) jest na licencji MIT i opiera się na jednej idei: wszystko jest wtyczką, więc modele, narzędzia, sesje, piaskownice i interfejs użytkownika to wymienne elementy. 19 sierpnia 2026, sześć dni po publikacji, projekt posiadał około 166 800 gwiazdek w serwisie GitHub.
  • Hermes, od Nous Research, to ogólny agent autonomiczny, a nie narzędzie stricte programistyczne. Został wydany na licencji MIT w lutym 2026 i przechowuje swoje wspomnienia oraz umiejętności w lokalnej bazie danych SQLite na maszynie użytkownika. Samodzielne hostowanie Hermes na VPS przeprowadza przez ten proces.
  • Omnigent to meta-harness: steruje innymi harnessami, w tym Claude Code i Codex, za pośrednictwem jednego API ze współdzielonymi sesjami, limitami wydatków i piaskownicą na poziomie systemu operacyjnego. Omnigent jako harness wieloagentowy wyjaśnia płynące z tego korzyści.
  • OneCLI to harness działający w piaskownicy, przeznaczony dla zespołów. Został zbudowany wokół bramy, która wstrzykuje rzeczywiste poświadczenia do wychodzących żądań, dzięki czemu sam agent widzi jedynie klucze zastępcze.

Szybki start dsh to pojedyncze polecenie, a jego jednorazowe uruchomienie jest najszybszym sposobem na zrozumienie, czym jest harness. Wymaga zainstalowanego Node.js na maszynie.

npx @deepseek-ai/dsh web

Uruchamia to interfejs webowy (user interface) pod adresem http://127.0.0.1:3080. Przed rozpoczęciem pracy należy przeczytać plik README, ponieważ dsh określa się jako wersja poglądowa dla programistów (developer preview) i wprost informuje o planowanych zmianach naruszających kompatybilność. Uruchamianie DeepSeek Harness na VPS omawia instalację serwerową, a dlaczego ten adres zaczyna się od 127.0.0.1 wyjaśnia domyślne użycie interfejsu loopback.

Routery znajdują się powyżej warstwy harness

Router modelu pełni rolę lokalnego proxy pomiędzy warstwą harness a API dostawcy. Claude Code Router jest typowym przykładem: domyślnie wiąże się z 127.0.0.1:3456, przyjmuje żądania, które Claude Code wysłałby do swojego dostawcy, i przekazuje je do skonfigurowanego serwisu. Warstwa harness nie wykrywa żadnych zmian.

Routery istnieją, ponieważ model można wymieniać, co stanowi potwierdzenie głównej tezy tego wpisu. Koncentrują one również ryzyko, ponieważ proxy widzi każdy prompt i przechowuje klucze wszystkich dostawców. Należy traktować je jak infrastrukturę, a nie jako udogodnienie. Miejsce przechowywania kluczy API i ustawień modelu przez harness stanowi ten sam problem przesunięty o jedną warstwę niżej.

Co zmienia się, gdy środowisko uruchomieniowe działa na VPS

Cztery aspekty ulegają zmianie, gdy środowisko przenosi się z laptopa na wynajęty serwer.

Działa nadal po zamknięciu pokrywy. Długotrwałe zadanie przetrwa podróż i wyczerpanie baterii. Uruchom je wewnątrz tmux i odłącz się:

tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agent

W przypadku zadań, które mają powrócić po restarcie, usługa użytkownika jest lepszym rozwiązaniem niż sesja terminala:

loginctl enable-linger $USER
systemctl --user status my-agent.service

loginctl enable-linger to element, który jest często pomijany. Bez niego systemd zatrzymuje usługi użytkownika natychmiast po zamknięciu ostatniej sesji SSH (secure shell), więc agent kończy działanie po wylogowaniu, nie generując żadnego błędu. Uruchamianie dsh w trybie bezgłowym pod systemd zawiera plik jednostki. Gdy jedna sesja działa na serwerze, druga nie generuje dodatkowych kosztów, a dwie sesje Claude Code na tej samej maszynie mogą przesyłać sobie wiadomości, dzięki czemu sesja uruchomiona rano może przekazać zadanie drugiej bez ręcznego pośrednictwa.

Przechowuje klucze. Klucz dostawcy znajduje się teraz w pliku konfiguracyjnym na serwerze. Sprawdź, kto ma uprawnienia do jego odczytu:

ls -l ~/.config

Każdy proces działający na koncie użytkownika może odczytać ten plik, co obejmuje agenta oraz wszystko, co agent uruchomi.

Ma dostęp do innych maszyn. VPS w tej samej sieci prywatnej co pozostałe jednostki zapewnia agentowi trasę do nich. Jest to główny cel, ale również zakres potencjalnego zagrożenia.

Jest dostępny z dowolnego miejsca. Większość środowisk udostępnia interfejs WWW i z określonego powodu większość wiąże go z interfejsem loopback. Sprawdź swoje ustawienia:

ss -tlnp | grep 3080

127.0.0.1:3080 oznacza, że tylko sam serwer może nawiązać połączenie. 0.0.0.0:3080 oznacza, że każdy, kto zna adres, może to zrobić. Uzyskaj dostęp do interfejsu na loopback poprzez tunel SSH, zamiast zmieniać adres powiązania:

ssh -N -L 3080:127.0.0.1:3080 you@your-server

Następnie otwórz http://127.0.0.1:3080 w przeglądarce na laptopie. Ruch odbywa się wewnątrz sesji SSH, więc żadne nowe zasoby nie są wystawiane na działanie Internetu.

Każdy z tych punktów stanowi również argument dotyczący bezpieczeństwa

Przeanalizuj ponownie te cztery właściwości z perspektywy atakującego.

Narzędzie działa bez nadzoru, więc nikt nie monitoruje momentu, w którym model błędnie zinterpretuje ścieżkę. Przechowuje ono Twoje klucze, więc jeden odczytywalny plik konfiguracyjny oznacza przejęcie całego konta u dostawcy. Może ono uzyskać dostęp do Twoich pozostałych maszyn, więc prompt injection, czyli instrukcje ukryte na stronie internetowej lub w pliku odczytywanym przez agenta, staje się drogą do hosta z bazą danych. Usługa jest dostępna z dowolnego miejsca, więc interfejs webowy powiązany z 0.0.0.0 bez hasła jest równoznaczny z powłoką wystawioną na publiczny internet.

Rozwiązanie w każdym z tych przypadków jest proste i za każdym razem takie samo. Przypisz agentowi własne konto z ograniczonymi uprawnieniami zamiast używać własnego:

sudo adduser --disabled-password --gecos "" agent

Utrzymuj interfejs webowy na interfejsie loopback i łącz się z nim przez SSH. Nadaj agentowi najbardziej ograniczone poświadczenia, które nadal pozwalają mu wykonać zadanie, co szczegółowo opisano w utrzymywanie sekretów poza agentami AI. W przypadku wszystkiego, co działa pod Twoją nieobecność, maszyna jednorazowa jest lepsza od starannie skonfigurowanej: uruchamianie agentów programistycznych w tymczasowej maszynie wirtualnej oraz bezpieczne uruchamianie Claude Code na VPS to podejścia, które wykorzystują tę metodę.

Czy potrzebny jest agent harness?

Jeśli praca polega na zadawaniu pojedynczych pytań, wystarczy okno czatu, a harness jedynie dodaje pętlę, którą trzeba nadzorować. Harness staje się opłacalny, gdy zadanie wymaga wielu kroków wykonywanych na rzeczywistych plikach lub gdy musi być kontynuowane podczas nieobecności użytkownika.

Większość rozwiązań w tej kategorii jest na wczesnym etapie rozwoju. dsh w swoim pliku README z sierpnia 2026 roku wskazuje na status developer preview, a pozostałe narzędzia zmieniają się na tyle szybko, że plik konfiguracyjny utworzony dzisiaj może wymagać edycji w przyszłym miesiącu. Jest to powód, aby utrzymać konfigurację w małej i odtwarzalnej skali oraz dokumentować wprowadzone zmiany. Ta sama powściągliwość pomaga wewnątrz pętli, gdzie umiejętność kierowania agenta ku najmniejszej działającej zmianie pozwala uzyskać diff, który można faktycznie przeanalizować po zakończeniu pracy bez nadzoru. Należy rozpocząć od jednego harnessa na jednym serwerze, przydzielić mu jedno zadanie i jeden klucz o ograniczonych uprawnieniach, a dostęp rozszerzać dopiero wtedy, gdy pierwsze zadanie będzie przebiegać bezproblemowo przez tydzień. Wartościowe agenty self-hosted do uruchomienia dzisiaj to odpowiednie miejsce, aby wybrać pierwsze rozwiązanie.

FAQ

Czym w uproszczeniu jest agent harness?

To program otaczający model. Model generuje tekst oraz żądania użycia narzędzi. Harness obsługuje pętlę, która ponawia zapytania, wykonuje żądane przez model narzędzia, egzekwuje zasady dotyczące tego, które narzędzia mogą działać bez pozwolenia, a także przechowuje stan sesji i pliki pomiędzy kolejnymi krokami. Możliwość wymiany modelu przy zachowaniu działania harnessu jest najczytelniejszym dowodem na to, że są to odrębne elementy.

Czy Claude Code to model, czy harness?

Claude Code to harness. Jest to program terminalowy z pętlą, systemem uprawnień oraz wbudowanymi narzędziami do obsługi plików i powłoki. Claude to rodzina modeli, z których program korzysta domyślnie. Ten sam podział dotyczy DeepSeek Harness (dsh), który jest instalowanym programem Node, oraz modeli DeepSeek, udostępnianych przez API. Harness instaluje się na maszynie. Model wywołuje się przez sieć.

Jaka jest różnica między agent harness a agent framework?

Framework to biblioteka, którą importujesz i w oparciu o którą piszesz kod, więc samodzielnie zarządzasz pętlą, ponawianiem prób i obsługą kontekstu. Harness to program, który uruchamiasz, więc wszystkie te mechanizmy są dostarczane z domyślnymi ustawieniami, które konfigurujesz zamiast pisać od zera. W praktyce granica jest płynna: Deep Agents od LangChain to importowalne SDK, które w swoim własnym repozytorium (stan na sierpień 2026) określane jest jako agent harness typu "batteries-included". Zadaj sobie pytanie, czy będziesz samodzielnie pisać pętlę. Odpowiedź na to pytanie rozstrzyga, które określenie pasuje do Twojej sytuacji.

Czy potrzebuję VPS, aby uruchomić agent harness?

Nie. Każdy wymieniony tutaj harness działa na laptopie. Serwer zmienia cztery kwestie: agent działa nadal po zamknięciu klapy, przechowuje Twoje klucze na maszynie, która jest zawsze włączona, ma dostęp do Twoich pozostałych serwerów oraz pozwala wrócić do tej samej sesji z dowolnego urządzenia. Każda z tych kwestii wiąże się z bezpieczeństwem, dlatego nadaj agentowi własne konto użytkownika i ogranicz dostęp do interfejsu webowego poprzez powiązanie go z 127.0.0.1.

Czy mogę użyć innego modelu wewnątrz tego samego harnessu?

Zazwyczaj tak i jest to cecha definiująca harness. Większość z nich przyjmuje w konfiguracji nazwę modelu oraz bazowy URL, więc skierowanie programu na innego dostawcę wymaga edycji, a nie przepisywania kodu. Tam, gdzie harness stawia opór, lokalny router, taki jak Claude Code Router, umieszczony między harnessem a dostawcą, tłumaczy żądania, domyślnie wiążąc się z 127.0.0.1:3456. Należy zachować ostrożność przy korzystaniu z takiego proxy, ponieważ widzi ono każdy prompt i przechowuje każdy klucz.