Czym jest agent harness w systemach AI?
Agent harness to program otaczający model LLM, zarzadzajacy petla wywolan, narzedziami i stanem sesji. Sprawdz, czym rozni sie od modelu i dlaczego jest kluczowy dla agentow.
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. Środowisko to utrzymuje również stan sesji między kolejnymi turami konwersacji oraz katalog roboczy, w którym wykonywane są zadania. Model wewnątrz tego środowiska jest wymienny.
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 rozumie się przez pojęcie "agenta". Jeśli użyta terminologia jest nadal niejasna, różnica między agentem AI, modelem LLM a asystentem wyjaśnia te pojęcia przed wyborem odpowiedniego narzędzia.
Harness to nie model
Te dwa pojęcia są mylone, ponieważ dostawcy wydają 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 będzie on nadal działał, ponieważ harness wymaga jedynie komponentu, który przyjmuje komunikaty i zwraca wywołania narzędzi.
Claude Code i 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 i Gemini CLI dzielą się w ten sam sposób.
Oto test, który zawsze rozstrzyga tę kwestię. Instalujesz harness. Wywołujesz model. Jeśli dany element posiada wersję na dysku i plik konfiguracyjny w katalogu domowym, jest to harness. Jeśli jest to ciąg znaków wewnątrz tego pliku konfiguracyjnego, taki jak deepseek-chat, jest to model.
Na czym faktycznie polega działanie pętli
Jeden obrót pętli mechanizmu sterującego (harness) wygląda następująco. Należy przeanalizować to powoli, ponieważ niemal każda różnica między poszczególnymi mechanizmami wynika z odmienności w tych pięciu krokach.
- Mechanizm przesyła dotychczasową konwersację wraz z listą definicji narzędzi do modelu.
- Model odpowiada tekstem lub żądaniem wywołania jednego z tych narzędzi.
- Mechanizm weryfikuje żądanie pod kątem reguł uprawnień, a następnie wykonuje je lub przerywa działanie, aby zapytać użytkownika o zgodę.
- Mechanizm uruchamia narzędzie, przechwytuje wyjście oraz kod wyjścia, a w przypadku bardzo długich danych – przycina je.
- Mechanizm dołącza wynik do konwersacji i wraca do kroku 1.
Krok 3 to miejsce, w którym mechanizmy różnią się najbardziej w codziennym użytkowaniu. Mechanizm, który pyta o zgodę przed każdym poleceniem, jest bezpieczny, ale męczący. Mechanizm, który nigdy nie pyta, ostatecznie wykona destrukcyjne polecenie w ścieżce, którą model błędnie zinterpretował. Każdy poważny mechanizm posiada obecnie ustawienie pośrednie: listę dozwolonych poleceń (allowlist), które są wykonywane bez pytania, oraz monit o potwierdzenie dla wszystkich pozostałych.
Krok 1 to miejsce, w którym kryją się pozostałe różnice. Mechanizm zapisuje również prompt systemowy, który jest dołączany do każdego z tych żądań. Claude Code udostępnia bezpośrednią kontrolę nad tym parametrem, ponieważ edycja stylu wyjściowego modyfikuje prompt systemowy, co zmienia każdą otrzymaną odpowiedź. Konwersacja wydłuża się z każdym obrotem, a model posiada ograniczone okno kontekstowe, dlatego mechanizm musi decydować, co usunąć, co podsumować, a co zapisać do pliku i odczytać później. Ta decyzja w głównej mierze odpowiada za to, że dwa różne mechanizmy sterujące tym samym modelem generują pracę o różnej jakości. Jeśli te pięć kroków nadal wydaje się abstrakcyjne, najlepszym sposobem na zrozumienie jest samodzielne napisanie prostej pętli, co jest dokładnie tym, do czego zachęca etapowa ścieżka nauki agentów AI na wczesnym etapie.
Większość mechanizmów łączy obecnie narzędzia zewnętrzne za pośrednictwem 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 opisuje ten aspekt. Wyszukiwanie w sieci jest zazwyczaj pierwszym narzędziem, które użytkownicy integrują, a skierowanie agenta na własną instancję SearXNG pozwala zachować prywatność zapytań, jednocześnie jasno wskazując, że każda strona odczytywana przez agenta stanowi niezaufane dane wejściowe trafiające do pętli.
Harness agenta a framework agenta
To pytanie pojawia się przy każdej premierze nowego narzędzia 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 w kodzie składasz agenta.
Harness to program, który uruchamiasz. Pętla jest już napisana, narzędzia już istnieją, a model uprawnień posiada domyślną konfigurację. Otrzymujesz działającego agenta już po pierwszym poleceniu 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 przedmiotem sporów, a najjaśniejszym dowodem jest dokumentacja samego LangChain. Według stanu na sierpień 2026 opisuje ona Deep Agents jako „opiniotwórczy framework typu batteries-included” zbudowany na bazie LangGraph, podczas gdy repozytorium langchain-ai/deepagents określa się mianem „harness agenta typu batteries-included”. 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 hostowanych agentów 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.
Czym różni się harness od okna czatu
Okno czatu oraz harness wyświetlają dane wyjściowe modelu. Różnica polega na tym, na czyim komputerze wykonywana jest praca. W oknie czatu każdy kod uruchamiany przez model wykonuje się wewnątrz piaskownicy dostawcy, na przesłanych plikach, i znika po zakończeniu sesji. Harness uruchamia narzędzia na maszynie, na której został zainicjowany, z uprawnieniami użytkownika, który go uruchomił, operując na rzeczywistych plikach oraz wykorzystując dostępne w środowisku poświadczenia.
To cała zaleta i całe ryzyko ujęte w dwóch zdaniach. 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 roku. 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 są powiązane z modelami własnymi dostawcy i oferują najbardziej dopracowany system zarządzania uprawnieniami. Porównanie Claude Code, Cursor, Codex i Copilot szczegółowo omawia te rozwiązania.
- DeepSeek Harness (
dsh) jest udostępniony na licencji MIT i opiera się na jednej idei: wszystko jest wtyczką. Modele, narzędzia, sesje, środowiska izolowane (sandbox) oraz interfejs użytkownika to wymienne elementy. Każda zainstalowana wtyczka działa w ramach uprawnień agenta, dlatego sprawdzenie zakresu dostępu wtyczki dsh przed jej dodaniem jest tutaj ważniejsze niż w przypadku harnessów ze stałym zestawem narzędzi. 19 sierpnia 2026 roku, sześć dni po publikacji, projekt posiadał około 166 800 gwiazdek w serwisie GitHub. - Hermes, stworzony przez Nous Research, to ogólny agent autonomiczny, a nie narzędzie stricte programistyczne. Został wydany na licencji MIT w lutym 2026 roku i przechowuje swoje wspomnienia oraz umiejętności w lokalnej bazie danych SQLite na maszynie użytkownika. Samodzielne hostowanie Hermes na VPS zawiera instrukcję krok po kroku.
- 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 środowiskiem izolowanym na poziomie systemu operacyjnego. Omnigent jako harness wieloagentowy wyjaśnia korzyści z tego rozwiązania.
- OneCLI to harness działający w środowisku izolowanym, przeznaczony dla zespołów. Został zbudowany wokół bramy (gateway), która wstrzykuje rzeczywiste poświadczenia do żądań wychodzących, dzięki czemu sam agent widzi jedynie klucze zastępcze.
Trzy z wymienionych narzędzi często trafiają na tę samą krótką listę, dlatego warto przeczytać Zestawienie DeepSeek Harness, Claude Code i Omnigent, które omawia powiązania z modelami, licencje, dojrzałość rozwiązań oraz wymagania serwerowe.
Szybki start dsh sprowadza się do jednego polecenia, a jego jednorazowe uruchomienie to najszybszy sposób na sprawdzenie, czym jest harness. Wymaga on zainstalowanego Node.js na maszynie.
npx @deepseek-ai/dsh webTo polecenie uruchamia interfejs webowy (user interface) pod adresem http://127.0.0.1:3080. Przed rozpoczęciem pracy należy zapoznać się z plikiem README, ponieważ dsh określa się jako wersja poglądowa dla programistów (developer preview) i wyraźnie informuje o planowanych zmianach niekompatybilnych wstecz. Jeśli pierwsze polecenie zakończy się niepowodzeniem lub pobierze nieoczekiwaną wersję kompilacji, zazwyczaj pomaga przypięcie konkretnej wersji dsh i wyczyszczenie pamięci podręcznej npx. Uruchamianie DeepSeek Harness na VPS opisuje instalację serwerową, a dlaczego ten adres zaczyna się od 127.0.0.1 wyjaśnia domyślne ustawienie pętli zwrotnej (loopback).
Routery znajdują się powyżej warstwy integracyjnej
Router modelowy pełni rolę lokalnego proxy między warstwą integracyjną 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 modelu. Warstwa integracyjna nie wykrywa żadnych zmian.
Routery istnieją, ponieważ model można wymieniać, co stanowi potwierdzenie głównej tezy tego artykułu. Koncentrują one również ryzyko, ponieważ proxy widzi każdy prompt i przechowuje wszystkie klucze dostawców. Należy traktować je jak infrastrukturę, a nie jako udogodnienie. Problem przechowywania kluczy API i ustawień modelu przez warstwę integracyjną jest tym samym wyzwaniem, przesuniętym o jedną warstwę niżej.
Co zmienia się, gdy środowisko uruchomieniowe działa na VPS
Cztery elementy 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 rozładowanie baterii. Uruchom je wewnątrz tmux i odłącz się od sesji:
tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agentW przypadku zadań, które mają powrócić po restarcie, usługa użytkownika sprawdza się lepiej niż sesja terminala:
loginctl enable-linger $USER
systemctl --user status my-agent.serviceloginctl enable-linger to element, który często jest 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 przy 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ć między sobą komunikaty, dzięki czemu sesja uruchomiona rano może przekazać zadanie do drugiej bez ręcznej ingerencji.
Przechowuje klucze. Klucz dostawcy znajduje się teraz w pliku konfiguracyjnym na serwerze. Sprawdź uprawnienia do odczytu:
ls -l ~/.configKaż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 urządzenia zapewnia agentowi trasę do nich. Jest to główny cel, ale jednocześnie zwiększa zakres potencjalnego zagrożenia.
Jest dostępny z dowolnego miejsca. Większość środowisk udostępnia interfejs webowy i zazwyczaj wiąże go z adresem loopback. Sprawdź konfigurację:
ss -tlnp | grep 3080127.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 uzyskać dostęp. Uzyskaj dostęp do interfejsu na loopbacku przez tunel SSH zamiast zmieniać adres powiązania:
ssh -N -L 3080:127.0.0.1:3080 you@your-serverNastępnie otwórz http://127.0.0.1:3080 w przeglądarce na laptopie. Ruch jest przesyłany wewnątrz sesji SSH, więc żadne nowe porty 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 odczyta ścieżkę. Przechowuje ono klucze, więc jeden plik konfiguracyjny z uprawnieniami do odczytu oznacza przejęcie całego konta u dostawcy. Może uzyskać dostęp do innych maszyn, więc prompt injection, czyli instrukcje ukryte na stronie internetowej lub w pliku odczytywanym przez agenta, otwiera drogę do hosta z bazą danych. Jest dostępne z dowolnego miejsca, więc interfejs webowy powiązany z 0.0.0.0 bez hasła staje się powłoką dostępną z publicznego Internetu.
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 "" agentInterfejs webowy pozostaw na loopback i łącz się z nim przez SSH. Nadaj agentowi najbardziej ograniczone poświadczenia, które pozwalają na wykonanie zadania, co szczegółowo opisano w utrzymywanie sekretów poza agentami AI. W przypadku wszystkiego, co działa pod Twoją nieobecność, maszyna jednorazowa jest lepsza niż starannie skonfigurowana: uruchamianie agentów programistycznych w tymczasowej maszynie wirtualnej oraz bezpieczne uruchamianie Claude Code na VPS to podejścia, które realizują tę strategię.
Czy potrzebny jest zestaw narzędzi dla agenta?
Jeśli praca polega na zadawaniu pojedynczych pytań, wystarczy okno czatu, a zestaw narzędzi jedynie dodaje pętlę, którą trzeba nadzorować. Zestaw narzędzi 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 rozwijają się na tyle szybko, że plik konfiguracyjny utworzony dzisiaj może wymagać edycji w przyszłym miesiącu. Jest to powód, aby zachować małą i odtwarzalną konfigurację oraz dokumentować wprowadzane zmiany. Ta sama powściągliwość pomaga wewnątrz pętli, gdzie umiejętność kierowania agenta w stronę najmniejszej działającej zmiany pozwala uzyskać diff, który można faktycznie przejrzeć po zakończeniu pracy bez nadzoru. Należy zacząć od jednego zestawu narzędzi 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ń. Agenci z własnym hostingiem, których warto używać dzisiaj to odpowiednie miejsce, aby wybrać pierwsze rozwiązanie.
FAQ
Czym w prostych słowach jest agent harness?
To program otaczający model. Model generuje tekst i żą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, oraz przechowuje stan sesji i pliki pomiędzy kolejnymi turami. Można wymienić model, a harness nadal będzie działać, co stanowi najczytelniejszy dowód 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órej program korzysta domyślnie. Ten sam podział dotyczy DeepSeek Harness (dsh), który jest programem Node instalowanym w systemie, 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 to Ty odpowiadasz za pętlę, ponawianie prób i obsługę kontekstu. Harness to program, który uruchamiasz, więc wszystkie te elementy są dostarczane z domyślnymi ustawieniami, które konfigurujesz, zamiast je pisać. W praktyce granica jest płynna: Deep Agents od LangChain to importowalne SDK, które w swoim własnym repozytorium jest określane jako agent harness typu „wszystko w jednym” (stan na sierpień 2026). Należy zadać sobie pytanie, czy pętla będzie pisana samodzielnie. Odpowiedź na to pytanie decyduje o tym, które określenie pasuje do danej sytuacji.
Czy do uruchomienia agent harness potrzebuję VPS?
Nie. Każdy wymieniony tutaj harness działa na laptopie. Serwer zmienia cztery kwestie: agent działa nadal po zamknięciu klapy, przechowuje klucze na maszynie, która jest stale włączona, ma dostęp do innych serwerów oraz umożliwia powrót do tej samej sesji z dowolnego urządzenia. Każda z tych kwestii wiąże się z bezpieczeństwem, dlatego należy przypisać agentowi osobne konto użytkownika i ograniczyć dostęp do interfejsu webowego do 127.0.0.1.
Czy mogę użyć innego modelu wewnątrz tego samego harness?
Zazwyczaj tak i jest to cecha definiująca harness. Większość z nich przyjmuje w konfiguracji nazwę modelu i bazowy adres URL, więc skierowanie programu do innego dostawcy wymaga jedynie edycji pliku, a nie przepisywania kodu. W przypadkach, gdy harness stawia opór, lokalny router, taki jak Claude Code Router, umieszczony między harness 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.