Kompaktowanie kontekstu — jak agent nie gubi wątku przy długich przebiegach

przez Łukasz | cze 5, 2026

Retrieval pobierzesz na nowo.

Historię własnych kroków agent ma tylko raz.

W poprzednim wpisie ustaliliśmy, że wiedzę z zewnątrz najlepiej pobierać na żądanie — bo zawsze możesz sięgnąć po nią ponownie. Ale jest część kontekstu, która tej własności nie ma. To historia własnych kroków agenta: co zaplanował, co wywołał, co zwróciły narzędzia, co z tego wywnioskował. Tego nie pobierzesz z bazy. To istnieje tylko wtedy, gdy to zachowasz — i znika, gdy wypadnie z okna.

Przy krótkim zadaniu to nieproblem. Przy długim przebiegu — gdy pętla agenta obraca się kilkadziesiąt razy — ta historia puchnie, aż zaczyna rozsadzać okno. Ten wpis jest o tym, jak ją utrzymać w ryzach, nie tracąc wątku.

Dlaczego długi przebieg to osobny problem

Przypomnijmy mechanikę. Agent działa w pętli: percepcja → planowanie → akcja → ocena → i z powrotem. Przy każdym obrocie do okna dochodzi nowa warstwa — kolejny krok, kolejny wynik narzędzia, kolejny fragment rozumowania.

Dziesięć iteracji to jeszcze nic. Ale agent, który realizuje złożone zadanie — przeszukuje, porównuje, koryguje się, próbuje ponownie — potrafi zrobić ich pięćdziesiąt albo sto. I jeśli przy każdym obrocie wleczesz całą dotychczasową historię, okno rośnie liniowo z liczbą kroków. W końcu trafiasz w dwie ściany naraz, które znasz już z wpisu o budżecie okna: context rot (model gubi się w narastającym szumie własnej historii) i koszt (każdy obrót to coraz dłuższe, coraz droższe wejście).

To jest moment, w którym naiwne „trzymaj wszystko, na wszelki wypadek” przestaje działać. Trzeba zacząć kompresować.

Czym jest kompakcja

Kompakcja to zwięzłe zastępowanie starszej historii jej streszczeniem — tak, żeby agent zachował to, co istotne z przeszłości, nie nosząc ze sobą każdego słowa, które kiedykolwiek wyprodukował.

W praktyce okno historii zamienia się w dwa odcinki:

Świeże kroki — w pełnej formie. Ostatnie kilka iteracji agent widzi w całości, z detalem. Bo to na nich opiera następną decyzję.

Starsze kroki — skompresowane do streszczenia. Wszystko, co było wcześniej, zwija się w zwięzły zapis: co ustalono, co zrobiono, jaki jest stan. Bez pełnych przebiegów rozumowania, bez surowych dumpów z narzędzi.

Efekt: zamiast historii, która rośnie bez końca, masz przesuwane okno detalu (ostatnie kroki) na tle rosnącego wolno streszczenia (cała reszta). Agent dalej „wie, co się działo” — tylko nie nosi tego ze sobą dosłownie.

Co zachować, a co zwinąć

Kompakcja jest użyteczna dokładnie w tym stopniu, w jakim trafnie rozróżnia istotne od jednorazowego. Z grubsza:

Zachowaj w streszczeniu: decyzje i ich powody (co agent wybrał i dlaczego), ustalone fakty (czego się dowiedział), stan zadania (co zrobione, co zostało), błędy i ślepe ułki (żeby nie próbował drugi raz tego, co już nie wyszło).

Zwiń albo odetnij: pełne przebiegi rozumowania ze starych kroków (wniosek wystarczy, droga do niego już nie), surowe wyniki narzędzi (istotny był wynik, nie pięćdziesiąt pól JSON-a), powtórzenia (jeśli coś ustalono trzy razy, raz wystarczy).

Zasada jest taka sama jak w heurystyce z C2, tylko zastosowana w czasie: nie „co wpuścić do okna teraz”, ale „co z tego, co już było, jest dalej potrzebne”.

Kiedy kompaktować

Dwa podejścia, najczęściej łączone.

Po progu. Pilnujesz, ile budżetu okna zajmuje historia, i gdy zbliża się do ustalonego limitu — uruchamiasz kompakcję starszych kroków. Reaktywne, ale celne: kompresujesz dopiero, gdy realnie trzeba.

Co N kroków. Co ustaloną liczbę iteracji agent zwija najstarszy odcinek historii do streszczenia. Prostsze do wpięcia w przepływ, przewidywalne.

W obu wypadkach kluczowa jest jedna decyzja, którą znasz z wpisu o budżecie: ile detalu chcesz utrzymać „pod ręką” zanim zaczniesz kompresować. Za agresywna kompakcja gubi rzeczy, których agent jeszcze potrzebował. Za leniwa — wraca do context rot. To strojenie, nie ustawienie raz na zawsze.

Kompakcja a pamięć

Łatwo pomylić kompakcję z pamięcią agenta — bo obie dotyczą „tego, co agent wie z przeszłości”. Różnica jest czysta.

Pamięć to architektura: jakie typy informacji agent przechowuje, gdzie i jak długo — temat, który rozkładają cztery typy pamięci. Kompakcja to technika utrzymywania jednej z tych warstw — bieżącej, roboczej historii — w skończonym rozmiarze. Innymi słowy: pamięć mówi, co i gdzie agent trzyma; kompakcja mówi, jak nie pozwolić, by warstwa robocza urosła ponad budżet okna. Działają razem.

Jak to wygląda w n8n

Przy prostym przepływie z jednym wywołaniem modelu kompakcja Cię nie dotyczy — nie ma czego kompresować. Pojawia się, gdy budujesz przepływ z pętlą albo agenta, który iteruje, dopóki nie skończy.

Wtedy zamiast podpinać pod model całą narastającą historię z każdej rundy, wstawiasz krok pośredni, który streszczastarsze rundy do zwięzłego stanu — i to streszczenie, plus ostatnie pełne kroki, idzie do modelu w następnej iteracji. Trochę pracy więcej, ale przepływ przestaje puchnąć z każdą rundą i przestaje gubić wątek po kilkunastu obrotach.

Moment, w którym dodajesz ten krok streszczający, to moment, w którym przestajesz „przekazywać dane między węzłami”, a zaczynasz zarządzać tym, co agent pamięta o samym sobie.

Co z tego wynika

Retrieval rozwiązuje problem wiedzy z zewnątrz — pobierzesz ją, kiedy trzeba. Kompakcja rozwiązuje problem wiedzy od wewnątrz — historii, którą agent sam wytworzył i której nikt mu nie odda, jeśli ją zgubisz. W długim przebiegu to ona decyduje, czy po pięćdziesięciu krokach agent wciąż wie, co robi, czy tonie we własnym śladzie.

Zasada do zabrania: nie noś każdego kroku — noś jego wnioski. Mamy już dwie z trzech dynamicznych warstw okna obsłużone: skąd brać wiedzę (retrieval) i jak nie utonąć we własnej historii (kompakcja). Została trzecia, której dotknęliśmy mimochodem kilka razy: surowe wyniki narzędzi, które wracają do okna w formie nie do użytku. O tym, jak je formatować, żeby były kontekstem, a nie materiałem do przekopania — następny wpis tej kategorii.


Pojęcia ze słownika: Kompakcja kontekstu · Okno kontekstu · Context rot · Budżet tokenów · Just-in-time retrieval

Agent kończy, ale zadania nie wykonał

Agent kończy, ale zadania nie wykonał

Objawy Agent odpowiada: „Przygotowałem i wysłałem potwierdzenie do klienta." Potwierdzenie nie zostało wysłane. Albo: „Zaktualizowałem wszystkie rekordy" — zaktualizował trzy z dwunastu. Albo: „Nie znalazłem żadnych zamówień" — bo narzędzie zwróciło błąd, którego nikt...

Agent zrobił coś, o co nikt nie prosił

Agent zrobił coś, o co nikt nie prosił

Objawy Operacja, której nikt nie zlecił. Dane wysłane pod adres, którego nie ma w żadnej konfiguracji. Rekord zmieniony poza zakresem zadania. Odpowiedź, z której wynika, że agent dostał instrukcje od kogoś innego niż ty. Cecha wspólna: technicznie wszystko zadziałało...

Agent zrobił to samo dwa razy

Agent zrobił to samo dwa razy

Objawy Ten syndrom różni się od pozostałych jedną rzeczą: objaw widzi klient, nie ty. Trzy identyczne wiadomości w skrzynce. Dwa zamówienia zamiast jednego. Podwójne obciążenie. Duplikaty rekordów, które ktoś zauważa tydzień później. W twoim dzienniku wszystko wygląda...

Agent gubi wątek w długim zadaniu

Agent gubi wątek w długim zadaniu

Objawy Pierwsze kroki idą wzorowo. Po kilkunastu agent zaczyna się rozjeżdżać. Przestaje przestrzegać reguły z promptu systemowego, której trzymał się na początku. Zmienia format odpowiedzi w połowie zadania. Wraca do czegoś, co już ustalił, i ustala to inaczej....

Agent podaje dane, których nie ma

Agent podaje dane, których nie ma

Objawy Numer zamówienia w idealnym formacie, którego nie ma w bazie. Kwota, której w dokumencie nie ma. Nazwa pola API, które nigdy nie istniało. Cytat z regulaminu, brzmiący dokładnie jak reszta regulaminu i w nim nieobecny. Cecha wspólna wszystkich tych przypadków:...

Działał wczoraj, dziś nie działa

Działał wczoraj, dziś nie działa

Objawy Nic się nie wywala. Nie ma wyjątków, nie ma timeoutów, dziennik wygląda tak samo jak zawsze. Po prostu odpowiedzi są gorsze. Postacie, w jakich to się objawia: Jakość. Agent zaczyna pomijać kroki, które wcześniej wykonywał, albo odpowiada ogólniej. Format....

Agent wybiera złe narzędzie

Agent wybiera złe narzędzie

Objawy Agent odpowiada nie na to pytanie. Pobiera listę zamówień, gdy pytano o jedno konkretne. Odpowiada z pamięci, choć miał sprawdzić w bazie. Albo sięga po właściwe narzędzie i wpisuje w argumenty coś, czego nie da się użyć. Sygnał, który odróżnia ten syndrom od...

Agent kręci się w kółko

Agent kręci się w kółko

Objawy Agent wykonuje kolejne obroty pętli, nie zbliżając się do zakończenia zadania. W dzienniku widać jedną z trzech postaci. Powtórzenie. To samo narzędzie, te same argumenty, raz za razem — czasem dziesiątki razy pod rząd. Oscylacja. Agent wywołuje na przemian dwa...