OpenClaw retry-safe: jak projektować crony AI odporne na ponowienia
Jeśli cron OpenClaw może uruchomić się ponownie, zaprojektuj go tak, aby drugie wykonanie nie dublowało wiadomości ani zmian. Wzorzec retry-safe oznacza stabilny identyfikator, sprawdzenie stanu przed zapisem i potwierdzenie efektu.
Podziel cron na trzy fazy
1. Pobierz dane
Wybierz tylko elementy jeszcze nieobsłużone i zachowaj ich identyfikator źródłowy. Nie opieraj deduplikacji wyłącznie na czasie uruchomienia.
2. Przygotuj decyzję
Dla każdej operacji utwórz deterministyczny klucz, np. newsletter:2026-09-20:abc123. Ten sam element musi dostać ten sam klucz po każdym retry.
3. Wykonaj i potwierdź
Przed skutkiem ubocznym sprawdź, czy klucz ma już status done. Po sukcesie zapisz rezultat. Przy timeout oznacz operację jako unknown i najpierw sprawdź system docelowy.
Minimalny kontrakt stanu
- planned — działanie przygotowane;
- running — działanie wykonywane;
- done — efekt potwierdzony;
- failed — można ponowić po analizie;
- unknown — efekt wymaga weryfikacji.
Checklista wdrożenia
- Czy każde działanie ma stabilny klucz idempotencji?
- Czy retry odczytuje stan przed wysłaniem lub zapisem?
- Czy po timeout można sprawdzić efekt po stronie odbiorcy?
- Czy log zawiera run ID, klucz działania i wynik?
- Czy cron ma limit prób oraz ścieżkę ręcznej kontroli?
Ograniczenia
Retry-safe nie naprawi usługi, która nie pozwala sprawdzać efektu. Przy e-mailach, płatnościach i publikacji użyj kolejki lub własnej tabeli operacji. Dla zadań tylko odczytowych prostszy checkpoint może wystarczyć.
FAQ
Czy wystarczy ostatni czas uruchomienia?
Nie. Dwa elementy mogą mieć ten sam czas, a proces może zakończyć się częściowo. Użyj klucza per element i jawnego statusu.
Co zrobić po przerwaniu w połowie?
Wznów od odczytu stanu, zweryfikuj działania niepewne i dopiero potem ponów te bez potwierdzonego efektu.
Czy agent AI powinien wymyślać klucze?
Nie. Agent może przygotować plan, ale format klucza powinien wynikać z deterministycznej reguły workflowu.
Zacznij od jednego crona OpenClaw: dodaj klucz idempotencji, status i test ponowienia.