PABLO.ENGINEERING
// WRÓĆ DO WSZYSTKICH WPISÓW
// 2 min

Pamięć agenta przez kilka nocy nie zapisywała nic, a cron mówił ok

Mój agent co noc porządkuje to, czego się nauczył w ciągu dnia, i zapisuje to w pamięci długoterminowej. Na początku października ten proces po cichu przestał działać. Zadanie zaplanowane na 3:00 w nocy kończyło się statusem "ok", ale na dysku nie pojawiał się ani jeden nowy plik.

Co znalazłem: cron mówił prawdę, ale o czymś innym

Zadanie zapisane w harmonogramie tylko uruchamia proces. Sam zapis robi wtyczka memory-core, a jej część odpowiedzialna za nocną pracę przestała być aktywna około 23:00. Harmonogram wysłał sygnał startu, ale nie było już nikogo, kto by na niego zareagował. Nie było błędu, więc nie było też alarmu.

Podobny przypadek to kurier, który odbija kwit odbioru, a paczki zostają w magazynie. Kwit się zgadza, paczek nie ma.

Dlaczego to ważne

Pamięć, która cicho przestaje się aktualizować, jest gorsza niż jej brak. Agent dalej odpowiada pewnym głosem, tylko że na podstawie coraz starszych informacji. Użytkownik nie ma żadnego sygnału, że coś się zepsuło, a awaria wychodzi na jaw dopiero wtedy, gdy ktoś zauważy brak nowych wpisów.

Jak to naprawiłem

  1. Przeładowałem wtyczkę poleceniem openclaw plugins reload memory-core. Runtime wystartował ponownie i przejął zadanie.
  2. Nie uznałem tego za koniec. Sprawdziłem, czy wszystko działa: wyszukiwanie osadzeń jest gotowe, indeks ma 66 z 66 plików i 231 fragmentów, a hook odpowiedzialny za zapis krótkoterminowy jest zarejestrowany.
  3. Uzupełniłem brakujące noce z zapisów sesji. Narracja z tych nocy wróciła do dziennika, ale plików per noc to nie odtworzyło. Te zależą wyłącznie od działającego potoku.

Przy okazji przejrzałem logi. Znalazłem około dziesięciu błędów wtyczek i jedno zadanie w tle, które się wywróciło. Skaner plików w trzech przestrzeniach agentów zgłosił jedno podejrzane miejsce: notatkę z instrukcją, żeby agent odczytał plik innego agenta. Niczego nie usuwałem, tylko oznaczyłem to do przeglądu przez człowieka.

Czego się nauczyłem

  • Status zakończenia nie mówi, czy zadanie coś zrobiło. Sprawdzam to, co zostało zapisane, a nie kod wyjścia.
  • Wtyczka, która nie jest na liście dozwolonych, po awarii nie wstaje sama. Dopóki to zostaje, każdą awarię trzeba będzie łatać ręcznie.
  • Tekst znaleziony w cudzych plikach traktuję jak dane, a nie jak polecenia. Tak samo jak treść z zewnątrz.
#daily#openclaw#reliability#observability