Agent AI w n8n: pamięć, narzędzia i human-in-the-loop, żeby nie wpaść w koszty
Damian GębalaAutorAgent AI w n8n to nie jest jedno kliknięcie i gotowy asystent. Pod nodą AI Agent są cztery sloty: model, pamięć, narzędzia i parser wyjścia, a koszt pojawia się wtedy, gdy pamięć wysyła całą historię rozmowy przy każdym wywołaniu, a agent wykonuje kilka narzędzi pod rząd. Dlatego zanim odpalisz pierwszy przebieg, ustaw świadomie pamięć z małym oknem kontekstu i wstaw zatwierdzanie przez człowieka przed każdym krokiem, którego nie da się cofnąć.
Czym jest agent w n8n: cztery sloty, nie magia
Noda AI Agent jest sterownikiem, a nie modelem. Z definicji dokumentacji: „The AI Agent node lets you build an AI agent in n8n. Connect a chat model and one or more tools, and the agent decides which tools to call to complete a task.” Pod agenta podłącza się cztery rzeczy, z czego dwie są obowiązkowe w praktyce:
- Model (wymagany) - np. OpenAI Chat Model, Anthropic Chat Model, OpenRouter Chat Model. To on jest „mózgiem” i w nim ustawia się parametry generowania.
- Memory (opcjonalne) - historia rozmowy, dzięki której agent pamięta wcześniejsze tury.
- Tools (opcjonalne, ale sens całej zabawy) - działania, które agent może wykonać.
- Output Parser (opcjonalne) - wymusza wynik w formie strukturalnego JSON-a.
Jest jedno ograniczenie, o którym warto wiedzieć od razu: „You must connect at least one tool sub-node to an AI Agent node”. Agent bez żadnego narzędzia to zwykły generator tekstu, który nie ma czego wykonywać.
Ustawienie „agent type” jest przestarzałe od n8n 1.82.0, wszystkie nody AI Agent działają teraz jako Tools Agent, a wersja v1 z tym ustawieniem zniknie w n8n 3.0. Instrukcje z tutoriali, w których wybiera się typ agenta ręcznie, są już nieaktualne.
Pamięć: bez niej agent zapomina po każdym pytaniu
Bez podłączonej pamięci dzieje się coś, co na pierwszy rzut oka wygląda na błąd. „Without a memory node connected, the agent treats every message as a brand new conversation.” Każde wywołanie API modelu jest z założenia niezależne, więc druga wiadomość wątku nie wie nic o pierwszej, a klient musi powtarzać kontekst.
Najprobsze rozwiązanie to Simple Memory. Noda wchodzi między wyzwalacz czatu a agenta i „solves this by keeping a rolling of log of recent conversation exchanges”. Przed każdą nową wiadomością n8n wstrzykuje historię do zapytania, więc model wreszcie ma kontekst. Dwa pola do ustawienia:
- Session Key - identyfikator, który grupuje wiadomości w jedną rozmowę. Przy wyzwalaczu On Chat Message n8n wypełnia go sam ze
sessionIdprzekazanego w żądaniu. - Context Window Length - ile ostatnich wymian trzymać. „The default is 5”.
Uwaga na jednostkę. Licznik nie oznacza wiadomości, tylko wymiany: „Context Window Length counts exchanges, not individual messages. One exchange = one message from you + one reply from the AI.” Ustawienie 5 to 5 wymian, czyli 10 wiadomości w pamięci. Ustawienie 10 to 20 wiadomości.
Okno kontekstu to najczęstsza przyczyna zaskakującego rachunku
Mechanizm kosztowy jest prosty i dotyczy nie tylko n8n: „Because every message in the context window gets sent to the LLM on each new request. A window of 10 means 20 messages worth of tokens on every call. At scale, that adds up fast in both cost and response latency.” Płacisz więc nie za jedną wiadomość, tylko za okno w całości, i to przy każdym wywołaniu, a agent w jednym przebiegu woła model kilka razy.
Okno dobieraj do długości rozmowy, a nie „na zapas”. Przy krótkich, zadaniowych rozmowach, czyli rezerwacji terminu albo pytaniu o produkt, źródła zalecają zejście z 5 do 3. Przy rozmowach, w których użytkownik wraca do tematu sprzed wielu tur, można podnieść do 8 lub 10, ale wtedy świadomie zamieniasz głębokość kontekstu na koszt tokenów.
Druga dźwignia to model: „A stronger model reasons better about which tool to call and handles messy input, while a cheaper model is fine for narrow, well-scoped agents.” Koszty przy około tysiącu zadań automatyzacji zestawiłem w tekście o tym, jaki model do n8n wybrać: Claude vs GPT vs Gemini.
Kiedy Simple Memory przestaje wystarczać
Simple Memory ma dwie granice, o których dowiesz się dopiero na produkcji. Pierwsza to trwałość: „This memory lives inside your n8n instance’s process. It’s not saved to a database. If your n8n instance restarts, all conversation history clears.” Aktualizacja, restart po awarii i wdrożenie nowej wersji kasują historię wszystkich aktywnych rozmów.
Druga granica jest poważniejsza: „Simple Memory does not work if your n8n instance runs in queue mode.” Dane leżą w pamięci procesu workera, więc „if two consecutive messages from the same user land on different workers, the second worker has no idea what the first one stored”. Najgorsze, że to nie jest błąd - „The agent just loses memory mid-conversation, silently with no warning.” Jeśli prowadzisz samodzielny n8n z Redisem i wieloma workerami, to właśnie Twoja konfiguracja. Osobno omawiam temat samodzielnego hostowania AI i tego, co z tego wynika dla prywatności.
Wyjście jest jedno: „Switch to the Postgres Chat Memory node. It stores conversation history in a database that every worker can access.” Przy realnych użytkownikach migruj przed startem, nie po pierwszych zgłoszeniach. Redis Chat Memory jest alternatywą, gdy liczy się bardzo szybki odczyt i zapis, ale przy typowym zespole Postgres jest prostszy i trwalszy.
Pułapka z Session Key: rozmowy mieszają się między użytkownikami
Problemy z pamięcią rzadko wynikają z ustawień modelu, a częściej z klucza sesji. Typowy błąd brzmi „No sessionId” i pojawia się wtedy, gdy agenta odpalasz z czegoś innego niż On Chat Message, Webhook, trigger albo test ręczny. Rozwiązanie na czas testów: wpisz w Session Key jakąś statyczną wartość, np. my_test_session.
Przy Webhooku klucz przekazujesz sam. Dla bota Telegrama to chat.id, dla bota wsparcia e-mail albo numer konta, a przykładowe wyrażenie z bloga n8n wygląda tak: chat_with_{{ $('Listen for incoming events').first().json.message.chat.id }}. Inny wariant pułapki: dwa nody Simple Memory w jednym workflow bez zmienionych kluczy „both read from and write to the exact same memory”. Każda noda pamięci potrzebuje własnego klucza.
Narzędzia: model czyta nazwy i opisy jak dokumentację API
Agent nie zna Twojego systemu. To, co wie o narzędziu, to jego nazwa i opis - „The model reads each tool's name and description to decide what to call, so treat them like API design, not afterthoughts.” Stąd najczęstsza przyczyna „nie działającego” agenta: „Vague tool names/descriptions - the number-one cause of an agent 'not working.' Be specific: Search customer database, not query.” Narzędzie nazwałe doStuff z opisem „handles data” agent po cichu pominie albo wywoła je źle.
Typów narzędzi jest cztery i warto wybrać najlżejszy: natywne nody, HTTP Request Tool do zewnętrznego API, sub-workflow jako narzędzie oraz MCP do funkcji z innego opublikowanego workflow lub serwera MCP - ten ostatni podłącza się w kilku krokach. Instrukcję, jak wywołać narzędzie, dajesz w jego opisie, a nie w system promptcie.
Zanim zaczniesz dokładać kolejne integracje, zajrzyj do gotowych wzorców architektury agentowej, gdzie wyraźnie widać, w które miejsce wstawia się człowieka w pętli. Najwięcej szkód wyrządza właśnie agent puszczony bez limitów i nadzoru.
Human-in-the-loop: zatwierdzanie przed nieodwracalnym krokiem
Dokumentacja n8n daje prostą regułę: „You can require human approval before an AI Agent executes a specific tool.” Workflow zatrzymuje się i czeka na jedną z dwóch decyzji: zatwierdzenie narzędzia z parametrami wybranymi przez model albo odmowę, po której akcja nie zostaje wykonana, a agent dowiaduje się o odrzuceniu.
Zakres zatwierdzania możesz ustawić globalnie albo wybiórczo dla pojedynczych narzędzi, co daje „more precise control than general output gating”. Praktyczna reguła: czego nie da się cofnąć, tego nie zostawiaj bez człowieka. Dokumentacja wymienia kasowanie danych, wysyłkę komunikacji na zewnątrz i zakupy, a do tego dochodzą regulacje branżowe.
Konfiguracja zajmuje trzy kroki: otwierasz panel Tools na nodzie agenta, w sekcji Human review wybierasz kanał zatwierdzania i podłączasz do niego narzędzia wymagające review. Kanałów jest dziewięć, od wbudowanego czatu i Slacka po Gmail, WhatsApp Business Cloud i Outlook. Kanał zatwierdzania nie musi być tym samym, przez który rozmawia użytkownik: „you could have users interact with an AI agent through the n8n Chat interface, but route approval requests to a specific person in Slack.”
Żeby zatwierdzenie było użyteczne, komunikat musi pokazywać, co agent chce zrobić. Służą do tego $tool.name i $tool.parameters.
The AI wants to use {{ $tool.name }} with the following parameters:
{{ JSON.stringify($tool.parameters, null, 2) }}
I jedna rzecz, o której łatwo zapomnieć: jeśli agent dostanie odmowę, musi wiedzieć, co z tym zrobić. „Make sure you include the tool setup and human review steps in your system prompt”, razem z informacją, które narzędzia wymagają zatwierdzenia i jak agent ma reagować na odrzucenie. Bez tego agent potraktuje odmowę jak awarię i zacznie od nowa.
Ile kosztuje sam n8n
Tu są dobre wieści: n8n rozlicza się za wykonane workflow, a nie za kroki czy użytkowników. „All plans include unlimited users & workflows and every integration” oraz „Pricing based on monthly workflow executions, regardless of complexity.” Nie płacisz za to, że agent wywołał pięć narzędzi zamiast jednego, płacisz za przebieg od początku do końca.
Ceny z cennika n8n, w wariancie rocznym, czyli „billed annually”:
| Plan | Cena | Wykonania miesięcznie | Co dostajesz |
|---|---|---|---|
| Starter | 20 EUR / mies. | 2,5 tys. | 1 projekt, 5 równoległych wykonań, 1600 kredytów Assistant |
| Pro | 50 EUR / mies. | 10 tys. | 3 projekty, 20 równoległych wykonań, 9600 kredytów Assistant, historia wykonań |
| Business | 667 EUR / mies. | 40 tys. | 6 projektów, SSO/SAML/LDAP, 30 dni insights, wersjonowanie w Git, tylko self-hosted |
| Enterprise | wycena indywidualna | ustalane | 200+ równoległych wykonań, 365 dni insights, dedykowane wsparcie z SLA |
Kwoty powyżej są cenami przy płatności rocznej. Wariantu miesięcznego cennik nie podaje liczbowo, więc tę kwotę trzeba sprawdzić na stronie. Firma z poniżej 20 pracowników może dostać 50% rabatu na plan Business.
Jeśli nie masz jeszcze własnej instalacji, start na ręcznie postawionym Community Edition jest bezpłatny: „A standard, self-hosted version of n8n is available on GitHub.” Opisałem to przy pierwszym uruchomieniu n8n i kosztach, od czego zacząć.
Gdzie naprawdę uciekają pieniądze
Cennik mówi o wykonaniach, ale przy agentach koszt rośnie od strony modelu. Rachunek tworzą cztery rzeczy:
- Okno kontekstu - płacisz za całe okno przy każdym wywołaniu.
- Rozrzut modeli - „By delegating to specialized agents, the system can use less powerful (and often less expensive) models for specific tasks while reserving more powerful models for complex decision-making.”
- Brak zatwierdzania - agent wykonujący pięć narzędzi bez pytania kogokolwiek zużywa budżet, zanim zareagujesz na zły pomysł.
- Brak limitów - n8n wymienia rate limiting, limity pamięci i ręczne zatwierdzanie jako mechanizmy mitygujące ryzyko.
Kolejność, która się sprawdza: zacznij od agenta z jednym narzędziem, obejrzyj kilka realnych przebiegów, a dopiero potem dokładaj możliwości. Przy wariancie multi-agent rozdziel agentów na „gatekeeper” i specjalistów, a routing prowadź nodami Filter, IF, Loop i Merge.
Pamięć to też powierzchnia ataku
Trwała pamięć agenta to nie tylko koszt, ale i odpowiedzialność. „AI memory transforms an AI system from a stateless tool into a learning collaborator. That unlocks powerful experiences, but it also increases the attack surface of the AI system.” Przy pamięci atakujący „can shape behavior gradually over time or plant memories that influence agent reasoning after the original context is gone and user awareness is lower.”
Do tego dochodzi problem z zatwierdzaniem: „Memory governance is also challenging since memory events usually happen asynchronously from user interactions, changing traditional human in the loop patterns.” Czyli zatwierdzasz działanie, a nie to, co agent zapamięta na jego podstawie. Dla firm, które spinają agenta z danymi klientów, to wybór między wygodą a RODO i obowiązkami z AI Actu.
Checklista przed wypuszczeniem agenta na produkcję
- Session Key wypełnia się poprawnie przy każdym wyzwalaczu, a każda noda pamięci ma własny klucz.
- Okno kontekstu ustawione świadomie, a nie na defaultcie.
- Każde narzędzie ma konkretną nazwę i konkretny opis.
- Zatwierdzanie przez człowieka włączone dla wszystkiego, czego nie da się cofnąć, a system prompt mówi agentowi, jak reagować na odmowę.
- Jeśli instancja ma więcej niż jednego workera, pamięć leży w Postgresie, a nie w procesie workera.
- Dane klientów są w pamięci, a nie w prywatnej historii czatu, i masz ścieżkę ich usunięcia.
Jeśli któryś z tych punktów brzmi jak Ty, to dobry moment, żeby to ogarnąć, zanim pójdzie do klienta. Napisz do mnie - zwykle odpowiadam tego samego dnia - i pogadamy, co da się u Ciebie zautomatyzować, gdzie są pieniądze, a gdzie lepiej zostać przy obecnym procesie.