Większość agentów działa na żądanie: dostają zadanie, wykonują je, kończą. Agent długo żyjący nie kończy — działa w tle i sam decyduje, kiedy się obudzić.
Czym jest
Agent długo żyjący to proces działający nieprzerwanie, wyzwalany nie pytaniem użytkownika, lecz upływem czasu lub zdarzeniem. W regularnych odstępach sprawdza, czy jest coś do zrobienia, i albo działa, albo czeka na kolejny cykl. Ten rytm nazywa się biciem serca.
Co się zmienia względem agenta wyzwalanego
Warunek zakończenia przestaje dotyczyć całego agenta, a zaczyna dotyczyć pojedynczego cyklu — sam proces ma trwać. Budżet trzeba liczyć w jednostce czasu, nie na zadanie, bo agent budzący się co kilka minut generuje koszt także wtedy, gdy nie ma nic do zrobienia. Stan musi przetrwać restart, więc nie może istnieć wyłącznie w kontekście.
Zmienia się też charakter nadzoru: nikt nie patrzy na ekran w momencie działania, więc potwierdzenie przy operacjach nieodwracalnych musi być asynchroniczne, a nie modalne.
Ryzyko
Agent działający bez obserwatora może wykonać wiele kroków, zanim ktokolwiek zauważy, że poszedł w złą stronę. Do tego dochodzi szersza powierzchnia ataku: agent nasłuchujący na kanałach zewnętrznych przyjmuje treści, których nikt nie zainicjował, więc każda z nich jest potencjalnym wektorem wstrzyknięcia instrukcji.
Uprawnienia agenta długo żyjącego powinny być węższe niż agenta wyzwalanego, a nie szersze — mimo że pokusa jest odwrotna.
Kiedy ma sens
Monitorowanie, przetwarzanie napływających zdarzeń, zadania cykliczne, obsługa kanałów asynchronicznych. Wszędzie tam, gdzie sensowne działanie polega na reagowaniu, a nie na odpowiadaniu.