O czym jest ten film
- Dyrektorka ds. alignmetu w Metej musiała fizycznie rzucić się do komputera, żeby zatrzymać własnego agenta OpenClaw, który masowo kasował maile.
- Przyczyna wypadku: polecenie „nic nie rób bez mojej zgody” padło w rozmowie, a kompakcja — automatyczne streszczanie historii przy zapełniającym się oknie kontekstu — wymazała je ze streszczenia.
- Główna teza: polecenia z czatu nie przeżywają długich sesji; wszystko, co ważne, musi trafić do plików.
- Pamięć agenta to cztery warstwy: pliki startowe, transkrypt sesji, okno kontekstu i indeks wyszukiwania — każda psuje się inaczej.
- Trzy tryby zapominania: informacja nigdy nie zapisana (najczęstszy), stratne streszczenie po kompakcji, ucięte wyniki narzędzi.
- Kompakcja i przycinanie to różne mechanizmy: pierwsza zmienia to, co model widzi; drugie ścina tylko wyniki narzędzi w pamięci i pomaga cache’owi.
- Diagnoza zaczyna się od komendy /context list — pokazuje, które pliki naprawdę są w kontekście, a co ucięły limity znaków (20 tys. na plik, 150 tys. łącznie).
- System autora: flush pamięci przed kompakcją (reserveTokensFloor ok. 40 tys. tokenów), ręczne zapisy oraz kompakcja komendą /compact przeprowadzana na własnych warunkach.
- Architektura plików: SOUL.md (osobowość agenta), AGENTS.md (proces i reguły), USER.md (użytkownik), MEMORY.md (do 100 linii trwałej wiedzy) i dzienne logi — plus backup w gicie i cotygodniowy porządek.
- Wyszukiwanie w trzech wariantach: A (wbudowane, hybrydowe), A+ (dodatkowe katalogi) i B (backend QMD dla tysięcy plików, np. vaultu Obsidiana). Każda zbędna kompakcja psuje przy okazji cache promptów.
10 najważniejszych takeaways — z kontekstem zastosowania
1.Trwałe polecenia lądują w plikach, nie w rozmowie
Na czym polega: Kompakcja streszcza historię rozmowy i polecenia zadane na czacie z niej wypadają — dokładnie tak „oszalał” agent badaczki z Mety. Pliki przestrzeni roboczej (AGENTS.md, MEMORY.md) są wczytywane z dysku przy każdej turze, więc kompakcja im nie szkodzi.
Jak stosować: Każdą zasadę, która ma obowiązywać dłużej niż jedną sesję, od razu przenoś do AGENTS.md (reguły pracy) albo MEMORY.md (wiedza między sesjami). W rozmowie możesz zadawać polecenia „na teraz”, ale kluczowe nakazy i zakazy — wyłącznie plikowo.
Na co uważać: Plik to wciąż tylko prompt, nie zabezpieczenie. Prawdziwą ochronę dają uprawnienia narzędzi, izolacja przestrzeni roboczej i listy dozwolonych — ryzykownych operacji nie wierz żadnemu plikowi.
2.Włącz i skonfiguruj flush pamięci przed kompakcją
Na czym polega: Wbudowany mechanizm tuż przed kompakcją po cichu zapisuje ważny kontekst na dysk — ale musi mieć zapas miejsca w oknie, żeby zdążyć. Domyślne progi bywają za ciasne i flush po prostu nie odpala.
Jak stosować: Ustaw reserveTokensFloor na ok. 40 tys. tokenów i memoryFlushEnabled na true; softThresholdTokens zostaw na 4 tys. Przy oknie 200 tys. tokenów flush wyzwala się w okolicach 156 tys. Konfigurację weryfikuj po każdej większej aktualizacji.
Na co uważać: To siatka bezpieczeństwa, nie gwarancja — model może nie zapisać wszystkiego, co ważne. I nie traktuj żadnej liczby z dokumentacji jak wyroczni: jeśli regularnie wczytujesz duże pliki albo snapshoty stron, zwiększ rezerwę.
3.Reguła „najpierw przeszukaj pamięć” idzie do AGENTS.md
Na czym polega: Agent sam z siebie nie zagląda do pamięci — odpowiada z tego, co akurat jest w kontekście. Bez reguły zgaduje, z regułą sprawdza notatki.
Jak stosować: Dopisz do AGENTS.md regułę: przed każdą mniej oczywistą czynnością wywołaj memory_search. Przydaje się też podagentom, bo one właśnie AGENTS.md dostają wstrzyknięty.
Na co uważać: Wyszukiwanie znajdzie tylko to, co wcześniej zapisano do plików — reguła nie uratuje informacji, które nigdy nie opuściły rozmowy.
4.Diagnozę zaczynaj od /context list
Na czym polega: Komenda pokazuje, które pliki realnie są w kontekście i czy coś ucięły limity: 20 tys. znaków na plik, 150 tys. łącznie. Fragment, który nie trafił do kontekstu, ma dla agenta wpływ zerowy.
Jak stosować: Zanim cokolwiek zmienisz, porównaj rozmiar plików na dysku z liczbą faktycznie wstrzykniętych znaków — powinny się zgadzać. Jeśli nie, podnieś limity w konfiguracji albo odchudź pliki.
Na co uważać: Limity liczone są w znakach, nie tokenach (150 tys. znaków to ok. 37–38 tys. tokenów) — łatwo pomylić skalę i „na oko” przekroczyć budżet kontekstu.
5.Odróżniaj kompakcję od przycinania
Na czym polega: Kompakcja streszcza całą rozmowę i zmienia to, co model widzi — to ona gubi szczegóły. Przycinanie docina w pamięci stare wyniki narzędzi, zostawiając wiadomości nietkniętymi i oszczędzając cache.
Jak stosować: Przy zapominaniu sprawdź, co dokładnie zginęło: preferencja — nigdy nie zapisana; wynik narzędzia — przycinanie; cały wątek rozmowy — kompakcja lub reset sesji. Każdy przypadek leczy się inaczej.
Na co uważać: W konfiguracjach z Claude przycinanie przez cache TTL (domyślnie pięć minut) zwykle włącza się automatycznie — nie zakładaj, że jest wyłączone, bo „tak jest domyślnie”.
6.Kompaktuj proaktywnie komendą /compact
Na czym polega: Ręczna kompakcja w dobrze wybranym momencie czyści kontekst na twoich warunkach (w demonstracji: ze 123 tys. do 21 tys. tokenów) i daje długiemu zadaniu drugi żywot.
Jak stosować: W środku sesji, po domknięciu etapu pracy, wpisz /compact — opcjonalnie z ukierunkowaniem: „skompaktuj, koncentrując się na decyzjach i otwartych pytaniach”. Kolejne instrukcje lądują w świeżym oknie.
Na co uważać: Jeśli zaczekasz do granicy przepełnienia, może zawieść nawet /compact — zostaje tylko nowa sesja. Pamiętaj też, że każda kompakcja unieważnia cache promptów, więc rób ją wtedy, gdy faktycznie się opłaca.
7.Rozdzielaj pliki według roli: charakter, proces, użytkownik, pamięć
Na czym polega: SOUL.md to osobowość i granice agenta, AGENTS.md — reguły pracy, USER.md — twoje projekty i preferencje, MEMORY.md — decyzje i zasady prawdziwe w każdej sesji, a dzienne logi — bieżący kontekst.
Jak stosować: Prosta reguła rozdziału: charakter do SOUL.md, proces do AGENTS.md. Po każdym incydencie dopisuj regułę negatywną („nigdy więcej tak”) — zdaniem autora to najcenniejsze instrukcje. MEMORY.md trzymaj poniżej 100 linii: to ściąga, nie dziennik.
Na co uważać: Podagenci dostają tylko AGENTS.md — reszta plików startowych jest odfiltrowywana, więc nie zdziw się, że nie znają twojej osobowości. I nie składuj w pamięci kluczy API ani sekretów — pliki są czytane jawnym tekstem.
8.Automat uzupełniaj ręcznymi zapisami
Na czym polega: Flush odpala się od progu tokenów — jest wyzwalany ilością, nie treścią. Ręczny zapis łapie to, o czym ty wiesz, że jest ważne właśnie teraz.
Jak stosować: Po ważnej decyzji, przed nową złożoną instrukcją i przed przejściem do innego zadania powiedz: „zapisz to do MEMORY.md” albo „zapisz dzisiejsze kluczowe decyzje do pamięci”. Dopiero potem zaczynaj nowy wątek albo sesję.
Na co uważać: To nawyk, nie mechanizm — bez wprawy łatwo o nim zapomnieć. Warto go związać ze stałymi punktami sesji: domknięcie zadania, decyzja, zmiana tematu.
9.Pamięć trzymaj w gicie i porządkuj co tydzień
Na czym polega: Logi dzienne rosną z każdym dniem, a przepasiony MEMORY.md rozdmuchuje kontekst i psuje cache. Historia w gicie pozwala cofnąć każdą zmianę.
Jak stosować: Zrób git init w katalogu przestrzeni roboczej i ustaw auto-commit — dziennym cronem albo przez heartbeat. Raz w tygodniu wynoś z logów do MEMORY.md to, co okazało się trwałe, a przestarzałe wyrzucaj; da się to zautomatyzować cotygodniowym cronem analizującym ostatnie siedem dni.
Na co uważać: Do repo nie może trafić katalog z poświadczeniami ani plik JSON OpenClaw — zawierają klucze API.
10.Dobierz ścieżkę wyszukiwania do skali swojej wiedzy
Na czym polega: Ścieżka A to wbudowane, hybrydowe wyszukiwanie (słowa kluczowe plus embeddingi) w pamięci agenta; A+ indeksuje dodatkowe katalogi z notatkami; B to eksperymentalny backend QMD do tysięcy plików, np. vaultu Obsidiana.
Jak stosować: Zacznij od A. Jeśli agent „nie widzi” twojej bazy wiedzy, dodaj ścieżki (A+), a przy tysiącach plików przejdź na QMD. W trybie hybrydowym słowa kluczowe łapią dosłowne trafienia, embeddingi — znaczeniowe: „decyzja cenowa” znajdzie „wybraliśmy plan za 29 dolarów”.
Na co uważać: QMD domyślnie działa tylko w rozmowach bezpośrednich z agentem — na grupowych kanałach Discorda czy Slacka wyszukiwanie może wydawać się zepsute; to kwestia zakresu w konfiguracji, nie awaria.
Redakcyjne tłumaczenie
Historia, od której wszystko się zaczyna
Dyrektorka ds. alignmetu w Metej musiała fizycznie rzucić się do komputera, żeby zatrzymać własnego agenta AI — ten właśnie masowo kasował setki maili. Summer Yue, szefowa alignmetu w Meta Superintelligence Labs, kazała swojemu agentowi OpenClaw przejrzeć skrzynkę i zaproponować, co zarchiwizować lub usunąć, z zastrzeżeniem: „Nic nie rób, dopóki ci nie powiem”. Na testowej skrzynce agent działał bez zarzutu od tygodni. Kłopot pojawił się, gdy skierowała go na prawdziwą, z tysiącami wiadomości: okno kontekstu się zapełniło, agent skrócił historię rozmowy do streszczenia — a polecenie „nic nie rób”, które padło w rozmowie i nigdy nie trafiło do pliku, ze streszczenia wypadło. Agent wrócił do trybu autonomicznego i zaczął usuwać maile, ignorując kolejne polecenia stopu.
(Informacja dodatkowa: „alignment” to w badaniach nad AI dążenie do pełnej zgodności zachowań modelu z intencjami człowieka.)
(Informacja dodatkowa: OpenClaw to otwartoźródłowy framework do osobistych agentów AI — działają one na komputerze użytkownika i mogą obsługiwać m.in. jego pocztę, pliki i różne narzędzia.)
Sama określiła to później jako klasyczny błąd nowicjusza — i trudno o lepszą puentę: okazało się, że zawodowe zajmowanie się alignmetem nie chroni przed jego utratą. Niezależnie od tego, czy kompakcja była jedynym winowajcą, wniosek brzmi tak samo: zasady bezpieczeństwa zadane w rozmowie nie przeżywają długich sesji. Skoro dyrektor ds. alignmetu w Metej straciła kontrolę nad agentem, bo polecenie z czatu nie przetrwało kompakcji, to samo może spotkać każdego — chyba że rozumie się, jak pamięć agenta działa naprawdę. I właśnie o tym jest ten materiał.
Dwa zastrzeżenia na dobry początek. Po pierwsze: kompakcja sama w sobie jest zjawiskiem normalnym — problemem jest poleganie na poleceniach z rozmowy podczas długich sesji. Po drugie: prompt to nie egzekwowanie. O realnym bezpieczeństwie decydują bramki uprawnień i ograniczenia narzędzi. Dla jasności dodam, że jestem jednym z opiekunów kodu OpenClaw, więc zejdę głębiej niż typowe poradniki — ale wszystko, co mówię, opiera się na publicznej dokumentacji, otwartym kodzie na GitHubie, zgłoszeniach w issues i na ponad dwóch miesiącach codziennego użytkowania tego systemu.
Trzy zmiany, które stawiają cię przed 95% użytkowników
Zanim wejdziemy w szczegóły — trzy rzeczy najważniejsze. Zrób tylko je i wyprzedzisz chyba 95% użytkowników OpenClaw.
Po pierwsze: trwałe zasady lądują w plikach, nie w rozmowie. MEMORY.md, AGENTS.md — te pliki kompakcja omija. Poleceniom wpisanym w rozmowie nie ufałbym natomiast ani trochę.
Po drugie: sprawdź, czy zapis pamięci przed kompakcją (tzw. memory flush) jest włączony i czy ma dość bufora, żeby w ogóle zdążyć zadziałać. OpenClaw ma wbudowaną siatkę bezpieczeństwa, która zapisuje kontekst przed kompakcją — ale większość ludzi nigdy nie weryfikuje, czy działa, ani nie daje jej miejsca, by odpaliła.
Po trzecie: uczyń wyszukiwanie obowiązkowym. Dopisz do AGENTS.md regułę „przeszukaj pamięć, zanim zadziałasz”. Bez niej agent zgaduje, zamiast zaglądać do notatek.
Teraz wyjaśnię, dlaczego te trzy rzeczy działają — i pokażę pełny system, który na nich zbudowałem.
Pamięć agenta to cztery warstwy, nie jedna
Większość ludzi myśli o pamięci jak o jednej rzeczy. Tymczasem to cztery osobne systemy, psujące się na cztery różne sposoby. Rozpoznanie, która warstwa pękła, to 90% naprawy.
Warstwa pierwsza: pliki startowe. To pliki twojej przestrzeni roboczej — SOUL.md, AGENTS.md, USER.md, MEMORY.md, TOOLS.md. Są wczytywane z dysku na początku sesji i kompakcja im nie grozi, bo przy każdej turze dociąga je dysk, a nie historia rozmowy. To najtrwalsza warstwa.
Warstwa druga: transkrypt sesji. Każda rozmowa zapisuje się na dysk jako plik. Gdy wznawiasz sesję, transkrypt jest odbudowywany w kontekście — ale gdy okno się zapełnia, podlega kompakcji: szczegółową historię zastępuje streszczenie. Od tego momentu model nie widzi oryginalnych wiadomości, choć surowy plik wciąż leży na dysku.
Warstwa trzecia: okno kontekstu LLM. Pojemnik o stałej pojemności, w którym wszystko konkuruje o miejsce: prompt systemowy, pliki robocze, historia rozmowy, wywołania narzędzi i ich wyniki — wszystko w jednym „wiadrze” na 200 tys. tokenów. Gdy się zapełnia, odpala kompakcja.
Warstwa czwarta: indeks wyszukiwania. Przeszukiwalna warstwa sąsiadująca z plikami pamięci. Agent odpytuje ją narzędziem memory_search o kontekst z dawnych sesji — ale działa wyłącznie wtedy, gdy informacje wcześniej trafiły do plików.
Trzy sposoby zapominania — i jak je rozpoznać
Gdy agent coś zapomina, to zawsze jedna z trzech przyczyn. Traktuj to jak listę kontrolną.
Tryb A: informacja nigdy nie została zapisana. Polecenie, preferencja albo decyzja istniały tylko w rozmowie. Kompakcja albo nowa sesja — i już ich nie ma. Dokładnie to przydarzyło się Summer Yue i to zdecydowanie najczęstsza przyczyna.
Tryb B: kompakcja zmieniła zawartość kontekstu. Gdy długa sesja dobija do limitu tokenów, stare wiadomości zostają streszczone. Streszczenie bywa stratne — potrafi zgubić istotne szczegóły, niuanse, konkretne ograniczenia. Agent działa dalej na skrócie, a nie na twoich oryginalnych słowach.
Tryb C: przycinanie sesji ucina wyniki narzędzi. Odczyty plików, wyniki z przeglądarki, odpowiedzi API są docinane w pamięci, żeby zoptymalizować cache.
Szybkie ćwiczenie na utrwalenie tej listy: jeśli agent zapomniał preferencję, prawie na pewno nigdy nie trafiła do MEMORY.md — tryb A. Jeśli zapomniał, co zwróciło narzędzie — to przycinanie, tryb C. Jeśli wyleciał mu z głowy cały wątek rozmowy — kompakcja albo reset sesji, tryb B. Na każdy z tych trybów jest naprawa i za chwilę pokażę dokładnie jaka.
Kompakcja i przycinanie to dwie różne rzeczy
Większość poradników — i użytkowników — myli kompakcję z przycinaniem. A to zupełnie różne mechanizmy.
Kompakcja streszcza całą historię rozmowy i od tego momentu zmienia to, co model widzi. Odpala się, gdy okno kontekstu się zapełnia. Obejmuje wszystko: wiadomości użytkownika, wiadomości asystenta, wywołania narzędzi. I uruchamia się dopiero wtedy, gdy przepełnienie wisi na włosku.
Przycinanie działa inaczej: docina w pamięci stare wyniki narzędzi. Plik historii sesji na dysku pozostaje nietknięty, a modyfikowane są wyłącznie wiadomości z wynikami narzędzi — wiadomości użytkownika i asystenta nigdy. I najważniejsze: przycinanie jest po twojej stronie, bo zdejmuje balast, nie ruszając treści rozmowy. Groźna jest kompakcja — to ona przepisuje to, co model widzi.
Formalnie przycinanie jest domyślnie wyłączone, ale konfiguracje oparte na Claude zwykle włączają automatycznie cache TTL (czas życia, domyślnie pięć minut). Jeśli więc używasz Claude, przycinanie prawdopodobnie już u ciebie działa — możesz to sprawdzić albo dostroić TTL w konfiguracji.
Diagnoza: /context list, zanim tkniesz cokolwiek innego
Zanim zaczniesz cokolwiek zmieniać, uruchom w sesji OpenClaw komendę /context list. To najszybszy sposób, by ustalić, dlaczego pamięć „nie chce się trzymać”. Na co patrzeć w wynikach?
Czy MEMORY.md w ogóle się ładuje? Jeśli go brak albo nie ma go na liście — nie ma go też w kontekście.
Czy coś jest ucięte? Limit to 20 tys. znaków na plik; wszystko ponad zostaje przycięte. W przykładowym wydruku ponad połowa TOOLS.md była niewidoczna dla agenta.
W moim wydruku widać oba limity: 20 tys. znaków na pojedynczy plik i 150 tys. łącznie. Kluczowa rzecz: liczba znaków w pliku na dysku powinna być równa liczbie znaków faktycznie wstrzykniętych do kontekstu. Jeśli się zgadza — cała zawartość jest w kontekście i agent naprawdę widzi, co siedzi w plikach.
Gdy pliki są ucinane, limity podniesiesz w konfiguracji — osobno dla pojedynczego pliku i łącznie. Domyślne wartości to wspomniane 20 tys. i 150 tys. Pamiętaj tylko, że to znaki, nie tokeny: 150 tys. znaków to około 37–38 tys. tokenów. A fragment pliku, który nie trafił do kontekstu, ma dla agenta wpływ zerowy. Dlatego przy problemach z pamięcią zawsze zaczynaj od analizy /context list.
Dobra i zła ścieżka kompakcji
Prześledźmy krok po kroku, co się dzieje, gdy rusza kompakcja. Najpierw kontekst zapełnia się wiadomościami i wynikami narzędzi. Gdy zbliża się do progu, odpala się wstępny zapis pamięci — flush. Agent, bez twojej wiedzy i zanim zacznie się kompakcja, zapisuje ważny kontekst na dysk. Potem uruchamia się auto-kompakcja: model streszcza całą rozmowę, a kolejne zapytania idą już na streszczeniu plus ostatnich wiadomościach, nie na pełnej, surowej historii. W praktyce model traci dostęp do oryginalnych, szczegółowych wiadomości.
Kompakcja może pójść dwiema drogami. Dobra to kompakcja serwisowa: kontekst zbliża się do limitu, flush zdąża zapisać ważne rzeczy na dysk, dopiero potem historia zostaje streszczona i agent działa dalej na skrócie. Właśnie pod tę ścieżkę optymalizuje nasza konfiguracja.
Zła droga to kompakcja ratunkowa po przepełnieniu: kontekstu jest za dużo i API odrzuca zapytanie. Na flush jest już wtedy za późno. OpenClaw wchodzi w tryb awaryjny i ściska wszystko naraz, byle system ruszył z powrotem — bez zapisu czegokolwiek na dysk. I właśnie wtedy traci się najwięcej. Cały sens konfiguracji zapasu, którą pokażę za chwilę, sprowadza się do jednego: trzymać się dobrej ścieżki i omijać złą.
Co przetrwa kompakcję, a co przepadnie
Możesz śmiało założyć, że kompakcja pochłania: polecenia zadane wyłącznie w rozmowie; preferencje i decyzje wtrącone w trakcie sesji; starsze obrazy; wszystkie wyniki narzędzi; dokładne brzmienie i niuans wcześniejszych wiadomości.
Przetrwają natomiast: wszystkie pliki przestrzeni roboczej — SOUL.md, AGENTS.md, USER.md, MEMORY.md, TOOLS.md; dzienne logi pamięci, doczytywane przez wyszukiwanie; i wszystko, co agent zdążył zapisać na dysk przed kompakcją, czyli efekt flushu. Warto też wiedzieć, że kompakcja nie rusza najświeższych wiadomości: mniej więcej ostatnie 20 tys. tokenów zostaje nietkniętych.
I jedyna najważniejsza zasada pamięci w OpenClaw: czego nie zapisano do pliku, to nie istnieje.
Warstwa pierwsza: flush pamięci — najważniejsza zmiana w konfiguracji
Nikt jeszcze w pełni nie rozwiązał pamięci w agentach AI. Pokazuję system szlifowany przez ponad dwa miesiące codziennego użytku: konfigurujesz go raz, a korzyści kumulują się same. Wszystko opiera się na zasadach, nie na sztywnym przepisie — OpenClaw będzie się zmieniać, ale logika stojąca za każdą warstwą nie. I żadna z warstw samodzielnie nie wystarczy: muszą działać razem, w trójkę.
Flush jest wbudowany: tuż przed kompakcją wyzwala cichą, agentową turę, w której model przypomina sobie, by zapisywać ważne rzeczy na dysk. Zła wiadomość jest taka, że większość ludzi nie wie o jego istnieniu, nie weryfikuje, czy działa, a spora część konfiguracji mimowolnie go wyłącza — zbyt ciasnymi progami domyślnymi.
Nie kopiuj poniższych wartości z pamięci — użyj najnowszej wersji z opisu filmu. Liczy się zrozumienie, po co te ustawienia są.
reserveTokensFloor: 40 000. Kluczowa jest tu idea zapasu: potrzebujesz tyle zarezerwowanego miejsca, żeby flush i streszczenie kompakcyjne zmieściły się, zanim dojdzie do przepełnienia. Flush odpala przy wartości: okno kontekstu minus rezerwa minus próg miękki. Przy oknie 200 tys. tokenów i tej konfiguracji wychodzi 200 000 − 40 000 − 4 000 = 156 tys. tokenów. Dokumentacja podaje obecnie różne wartości przykładowe — tu 20 tys., tam 24 tys. — więc żadnej liczby nie traktuj jak wyroczni. Czterdzieści tysięcy to mój praktyczny punkt startowy po kilku tygodniach testów. Rzadko używasz dużych narzędzi — możesz zejść niżej; regularnie wczytujesz duże pliki albo snapshoty stron — podnieś. Dokładna wartość znaczy mniej niż zasada: flush musi mieć miejsce, by zdążyć przed przepełnieniem.
memoryFlushEnabled: true. W nowszych wersjach powinno być włączone domyślnie, ale sprawdź w swojej konfiguracji.
softThresholdTokens: 4 000. To, jak wcześnie przed rezerwą odpala flush. Domyślne 4 tys. sprawdza się w większości przypadków.
I od razu kalibracja oczekiwań: automatyczny flush to siatka bezpieczeństwa, nie gwarancja — agent może nie zapisać wszystkiego, co ważne. Dlatego potrzebne są dwie kolejne warstwy.
Warstwa druga: ręczne zapisy i /compact na własnych warunkach
Flush działa automatycznie, ale doświadczeni użytkownicy uzupełniają go ręcznymi zapisami. To prosty nawyk, który łapie to, co automatyzacja pomija.
Kiedy zapisywać ręcznie? Na przykład kończąc duże zadanie, zanim przejdziesz do następnego; przed wydaniem nowej, złożonej instrukcji; po podjęciu ważnej decyzji. Po prostu mówisz agentowi: „zapisz to do MEMORY.md” albo „zapisz dzisiejsze kluczowe decyzje do pamięci” — i dopiero potem otwierasz nowy wątek albo sesję.
Jest jeszcze jeden trik, po który warto sięgać od czasu do czasu: komenda /compact. Większość traktuje kompakcję jako zło konieczne, ale kompakcja przeprowadzona na twoich warunkach to co innego. Zobacz, jak to wygląda w praktyce. W trakcie sesji mam zużyte 123 tys. tokenów z 206 tys. — 62%. Chcę kontynuować to zadanie w tym kontekście, więc kompaktuję sam, z własnej woli. Chwilę to trwa, ale kontekst spada ze 123 tys. do 21 tys. — i mogę wydawać kolejne instrukcje w świeżym, pokompakcyjnym oknie. Zadanie dostaje nowy żywot.
Da się to jeszcze doprecyzować i podpowiedzieć kompakcji, co ma zachować. Na przykład: „skompaktuj, koncentrując się na decyzjach i otwartych pytaniach” — i streszczający model zatrzyma właśnie to, co najistotniejsze.
Jest jednak pułapka. Jeśli zaczekasz do samej granicy przepełnienia, może zawieść nawet /compact — a wtedy zostaje ci wyłącznie nowa sesja.
Po co jedno i drugie? Flush odpala od progu tokenów — wyzwala go ilość, nie treść. Ręczne zapisy wyzwala treść: to ty wiesz, że właśnie stało się coś ważnego, i masz nad tym kontrolę. Razem pokrywają oba przypadki.
Warstwa trzecia: architektura plików
Tu wszystko się spina. W przestrzeni roboczej mamy dwie kategorie. Pierwsza to pliki startowe: SOUL.md, AGENTS.md, USER.md, MEMORY.md, TOOLS.md czy HEARTBEAT.md — ładowane do kontekstu na początku każdej sesji. Kompakcję przetrwają, bo przy każdej turze są wczytywane z dysku na nowo. Druga to katalog pamięci z logami dziennymi. Te nie są wstrzykiwane automatycznie: system zwykle czyta bieżący dzień i wczorajszy, a resztę dobiera na żądanie, przez memory_search albo memory_get.
Warto wiedzieć, że sesje podagentów — gdy agent oddelegowuje zadania podrzędnym — wstrzykują tylko AGENTS.md. TOOLS.md i pozostałe pliki startowe są odfiltrowywane. Jeśli więc podagenty nie mają twojej osobowości ani twoich preferencji, to właśnie dlatego.
Co gdzie powinno trafiać?
SOUL.md — kim agent jest: ton, osobowość, szerokie granice.
AGENTS.md — jak agent działa: reguły przepływu pracy, konwencje narzędziowe, konkretne nakazy i zakazy, na przykład „przeszukaj pamięć, zanim zadziałasz” albo „nigdy nie wysyłaj maila bez zatwierdzenia szkicu”. Prosta reguła rozdziału: charakter do SOUL.md, proces do AGENTS.md.
Praktyczna obserwacja po wielu testach: najbardziej wartościowe bywają instrukcje negatywne. Gdy agent zrobi coś irytującego albo złego, dopisz regułę, żeby się nie powtórzyło. To się opłaca podwójnie — jakościowo i dla twojego spokoju ducha. I kalibracja rzeczywistości: te pliki to prompty, nie zabezpieczenia. Prawdziwa ochrona to systemowe mechanizmy kontroli: uprawnienia narzędzi, izolacja przestrzeni roboczej i listy dozwolonych.
USER.md — kim jesteś ty: projekty, klienci, bieżące priorytety, preferencje komunikacyjne, kluczowe osoby i relacje, szczegóły środowiska technicznego.
MEMORY.md — to, co ma być prawdziwe w każdej sesji: ważne decyzje wraz z uzasadnieniem; preferencje, których agent nauczył się o tobie; reguły wyciągnięte z błędów — choćby „zawsze sprawdź dzień tygodnia, zanim go podasz”. Trzymaj ten plik krótko, tylko z najważniejszymi rzeczami, do stu linii. To nie dziennik, to ściąga. Jest zawsze ładowany, więc zawsze zajmuje kontekst — a zatem kosztuje i tokeny, i uwagę.
Logi dzienne to roboczy kontekst dnia: co się wydarzyło, jakie decyzje zapadły w rozmowach, aktywne zadania i ich statusy. Tu, automatycznie, ląduje też efekt flushu. Co zapisywać: decyzje, zasady, stany projektów, preferencje użytkownika. Czego nie: kluczy API, tokenów, sekretów — niczego, czego nie chcesz mieć zapisanego jawnym tekstem.
Protokół pamięci, kopie w gicie i cotygodniowy porządek
Element, który scala całość, nazwijmy protokołem pamięci — i dopiszmy go do AGENTS.md. Po co? Bo agent sam z siebie nie sprawdza pamięci, chyba że mu to nakażesz. Bez tej reguły odpowiada z tego, co akurat jest w kontekście. Z regułą — najpierw zagląda do notatek, potem odpowiada.
Skoro pliki pamięci są tak ważne, warto je archiwizować. Zrób git init w katalogu przestrzeni roboczej, ustaw auto-commit — dziennym cronem albo przez heartbeat — i masz pełną historię: wszystkie diffy i cofanie się wstecz, jak daleko chcesz. Tylko upewnij się, że do repo nie trafia katalog z poświadczeniami ani plik JSON OpenClaw: zawierają klucze API i nie mają czego szukać na GitHubie.
Ostatnia rzecz: higiena pamięci w perspektywie miesięcy. Logi dzienne narastają, a MEMORY.md potrafi spuchnąć — a przecież obowiązują limity ucinania plików startowych. Rozwiązanie jest proste. Codziennie dopisujemy do logu dziennego — to dzieje się samo. Raz w tygodniu wynosimy z logów to, co okazało się trwałe: sprawdzone reguły i decyzje trafiają do MEMORY.md. Da się to zautomatyzować cotygodniowym cronem, który analizuje ostatnie siedem dni pamięci. I przy tej okazji dbamy o zwięzłość: wszystko, co nie musi być obecne w każdej sesji, jest nieaktualne albo przestało być ważne, wylatuje z MEMORY.md. Reszta niech zostaje w logach — agent znajdzie ją wyszukiwaniem, gdy będzie potrzebował. W pliku trzymamy wyłącznie to, co zawsze musi siedzieć w oknie kontekstu.
Wyszukiwanie: ścieżki A, A+ i B (QMD)
Mamy więc zapis i trwałość. Ale pliki pamięci nic nie znaczą, jeśli agent nie potrafi w nich znaleźć informacji — dochodzimy do wyszukiwania.
OpenClaw daje dwa narzędzia. memory_search przeszukuje wszystkie twoje pliki pamięci: MEMORY.md, logi dzienne, cały katalog pamięci. Można włączyć wyszukiwanie hybrydowe, łączące trafienia po słowach kluczowych i po znaczeniu — dzięki temu znajdzie decyzję cenową, nawet jeśli zapisałeś „wybraliśmy plan za 29 dolarów”. Jest też alternatywny backend, QMD — o nim za chwilę; to samo narzędzie, inny silnik pod maską. Drugie narzędzie, memory_get, czyta konkretny plik pamięci bezpośrednio.
Reguła, którą chcesz mieć w AGENTS.md: „przed każdą niebanalną czynnością przeszukaj pamięć”. Przełącza agenta z trybu „zgadnę z tego, co mam w kontekście” na „sprawdzę notatki, zanim zacznę”.
Sposobów na wyszukiwanie jest kilka, ale przedstawię je jako drzewo decyzyjne, nie stertę opcji: wybierz jedną ścieżkę i ruszaj.
Ścieżka A to wbudowane wyszukiwanie pamięci — domyślne i najprostsze w ustawieniu. Zacznij tutaj. System sam indeksuje MEMORY.md i cały katalog pamięci, pilnuje zmian w plikach i przebudowuje indeks; niczego nie trzeba instalować, a lokalny model embeddingowy pobiera się przy pierwszym użyciu.
Co właściwie znaczy „hybrydowe”? Przy przeszukiwaniu notatek są dwa sposoby trafiania. Wyszukiwanie po słowach kluczowych znajduje dokładne wyrazy: szukasz „cennik”, dostajesz pliki ze słowem „cennik”. Ale jeśli zapisałeś „wybraliśmy plan za 29 dolarów”, a szukasz „decyzja cenowa”, słowa kluczowe chybiają. I tu wchodzą embeddingi: model zamienia tekst na liczby, które oddają, o czym zdania są, a nie tylko jakich używają słów. „Decyzja cenowa” i „wybraliśmy plan za 29 dolarów” lądują blisko siebie pod względem znaczenia — i oba wracają w wynikach. Dla większości użytkowników to wszystko, czego potrzeba.
Wariant A+ indeksuje dodatkowe pliki Markdown spoza przestrzeni roboczej. Dodajesz w konfiguracji kolejne ścieżki — folder projektu, katalog z notatkami, cokolwiek masz — i agent sięga także do tej wiedzy.
Kiedy awansować na ścieżkę B? Gdy trzeba przeszukiwać duże zbiory: tysiące plików, tysiące transkryptów dawnych sesji albo kilka niezależnych kolekcji. Ścieżka B to backend QMD — Query Markdown Documents. To eksperymentalny backend pamięci, który zastępuje wbudowany indeksator OpenClaw i służy przeszukiwaniu poza przestrzenią roboczą. U mnie: spory vault Obsidiana z kilkoma tysiącami notatek, dokumentacja projektów, notatki ze spotkań, transkpty sesji. Konceptualnie różnica jest taka: ścieżka A to agent zaglądający do własnego pamiętnika; ścieżka B to agent przeszukujący cały twój zbiór wiedzy — cały komputer — lokalnie i bez opłat.
Jak to wygląda w praktyce: po wpisaniu openclaw memory status w terminalu widzę 3 009 plików. Cały vault Obsidiana, dzienne logi pamięci, transkrypty dawnych sesji — wszystko zindeksowane i przeszukiwalne. Gdy agent woła memory_search, przebiega przez to wszystko w milisekundach. QMD domyślnie zaczyna od szybkiego wyszukiwania po słowach kluczowych; jeśli gubi wyniki, bo słownictwo się różni, przełącz na tryb semantyczny.
Dwie uwagi. Po pierwsze, QMD domyślnie działa tylko w rozmowach bezpośrednich z agentem — nie na kanałach grupowych. Jeśli wyszukiwanie pamięci wygląda na zepsute na grupowym kanale na Discordzie albo Slacku, sprawdź zakres w konfiguracji. Po drugie, QMD pomaga też z kompakcją: zwraca małe, istotne fragmenty zamiast całych plików, więc kontekst mniej puchnie.
Ukryty koszt kompakcji: cache promptów
Rzecz, o której mało kto myśli. Każda wiadomość wysłana do agenta niesie ze sobą cały prompt systemowy i całą historię rozmowy. Dzięki cache’owaniu promptów za te powtarzane tokeny płacisz około 90% mniej. Tyle że kompakcja unieważnia cache: pierwsze zapytanie po kompakcji płaci pełną cenę za ponowne zbudowanie bufora. Każda niepotrzebna kompakcja to więc naraz problem niezawodności i problem kosztowy.
Dwie rzeczy potrafią rozbić cache. Pierwsza: kompakcja, bo przepisuje historię rozmowy — kolejne zapytanie musi budować cache od zera. Druga: zmienność wejść promptu. Jeśli części promptu zmieniają się z każdym ruchem, cache przestaje pasować. Kiedy więc co turę przepisujesz MEMORY.md (który zawsze siedzi w kontekście), wstrzykujesz ciągle zmieniający się blok statusu albo dokładasz dynamiczne instrukcje — trafień w cache jest mniej. Dlatego pliki przestrzeni roboczej trzymaj stabilne, a MEMORY.md krótki, zamiast go nieustannie przerabiać.
Cały system na jednym ekranie
Dwie szybkie konfiguracje — dla ścieżki A i dla B — żeby zobaczyć, co się w nich różni. Ścieżka A, wbudowane wyszukiwanie pamięci: zero dodatkowych instalacji; w środku kompakcja skonfigurowana na 40 tys., włączony flush, lokalne wyszukiwanie hybrydowe z modelem embeddingowym i przycinanie przez cache TTL. Kopiuj w całości albo wybieraj sekcje — jest dobrze zoptymalizowana. Ścieżka B, QMD: ta sama konfiguracja kompakcji i przycinania co w A, a do tego wskazujesz QMD-owi vault Obsidiana albo dowolny inny katalog z bazą wiedzy i włączasz indeksowanie sesji.
I cały system w pigułce: pliki przestrzeni roboczej jako instrukcje odporne na kompakcję; flush przed kompakcją jako automatyczna siatka bezpieczeństwa; ręczne zapisy dla tego, co istotne; strategiczny /compact do czyszczenia stołu w trakcie zadania; przycinanie sesji, które odwlecza kompakcję i oszczędza cache; wyszukiwanie hybrydowe, dzięki któremu agent znajduje rzeczy mimo innego słownictwa; dodatkowe ścieżki lub QMD do sięgania poza przestrzeń roboczą. Do tego git jako kopia zapasowa i możliwość cofnięcia, gdy coś pójdzie nie tak, oraz cotygodniowa higiena pamięci w obronie przed spuchnięciem.
Niezbędne komendy: /context list — sprawdzasz, co się ładuje; /compact, opcjonalnie z ukierunkowaniem; /status — weryfikacja modelu, okna kontekstu i poziomu rozumowania, używam jej bez przerwy; /new — czyste okno kontekstu, bardzo częsty u mnie przypadek: kończę jedno zadanie, zaczynam drugie i chcę ruszyć od zera; /verbose — debugowanie wyszukiwania pamięci. Obie konfiguracje, wszystkie komendy i praktyczna ściąga są podlinkowane w opisie filmu.
Jeśli dopiero zaczynasz z OpenClaw, ruszaj od ścieżki A; na B awansuj, kiedy zajdzie potrzeba przeszukiwania vaultu Obsidiana albo narastających transkryptów dawnych sesji. Tak czy inaczej, będziesz korzystać z tej samej architektury pamięci, której ja używam na co dzień od ponad dwóch miesięcy — i u mnie działa świetnie. Mam nadzieję, że u ciebie też.
Pięć rzeczy, które warto zapamiętać
- Pliki to pamięć. Czego nie zapisano na dysk, nie istnieje.
- Zweryfikuj i dostroń flush. ReserveTokensFloor na 40 tys. tokenów powinno dać ci komfort.
- Kompaktuj z wyprzedzeniem. W środku sesji, gdy chcesz działać dalej — /compact to przyjaciel.
- Szukaj, zanim zadziałasz. Ta reguła w AGENTS.md sprawi, że agent zawsze o tym pamięta.
- Przycinanie jest po twojej stronie. Ścina balast z narzędzi i pomaga cache’owi. To kompakcja boli, nie przycinanie.
Kręcę więcej materiałów o niezawodnej, codziennej pracy z OpenClaw — jeśli to twoja działka, subskrybuj kanał. A teraz idź i zapisz ten film do pliku. Wiesz przecież, co się stanie, jeśli tego nie zrobisz.