Skip to main content

Cron vs Heartbeat: Kiedy używać którego

Zarówno heartbeat, jak i zadania cron umożliwiają uruchamianie zadań według harmonogramu. Ten przewodnik pomaga wybrać właściwy mechanizm dla Twojego przypadku użycia.

Szybki przewodnik decyzyjny

Heartbeat: Okresowa świadomość

Heartbeat działa w głównej sesji w regularnych odstępach (domyślnie: co 30 min). Został zaprojektowany tak, aby agent sprawdzał różne rzeczy i sygnalizował wszystko, co istotne.

Kiedy używać heartbeat

  • Wiele okresowych sprawdzeń: Zamiast 5 oddzielnych zadań cron sprawdzających skrzynkę, kalendarz, pogodę, powiadomienia i status projektu, pojedynczy heartbeat może zgrupować je wszystkie.
  • Decyzje świadome kontekstu: Agent ma pełny kontekst głównej sesji, więc potrafi rozsądnie zdecydować, co jest pilne, a co może poczekać.
  • Ciągłość konwersacji: Uruchomienia heartbeat współdzielą tę samą sesję, więc agent pamięta ostatnie rozmowy i może naturalnie nawiązywać.
  • Monitorowanie o niskim narzucie: Jeden heartbeat zastępuje wiele drobnych zadań odpytywania.

Zalety heartbeat

  • Grupuje wiele sprawdzeń: Jedna tura agenta może jednocześnie przejrzeć skrzynkę, kalendarz i powiadomienia.
  • Redukuje wywołania API: Pojedynczy heartbeat jest tańszy niż 5 izolowanych zadań cron.
  • Świadomy kontekstu: Agent wie, nad czym pracowałeś(-aś), i odpowiednio ustala priorytety.
  • Inteligentne tłumienie: Jeśli nic nie wymaga uwagi, agent odpowiada HEARTBEAT_OK i żadna wiadomość nie jest dostarczana.
  • Naturalne wyczucie czasu: Niewielkie dryfowanie w zależności od obciążenia kolejki, co jest akceptowalne dla większości monitoringu.

Przykład heartbeat: lista kontrolna HEARTBEAT.md

Agent odczytuje to przy każdym heartbeat i obsługuje wszystkie elementy w jednej turze.

Konfiguracja heartbeat

Zobacz Heartbeat, aby poznać pełną konfigurację.

Cron: Precyzyjne planowanie

Zadania cron uruchamiają się o dokładnych porach i mogą działać w izolowanych sesjach, nie wpływając na główny kontekst.

Kiedy używać cron

  • Wymagana dokładna godzina: „Wyślij to w każdy poniedziałek o 9:00” (a nie „gdzieś około 9”).
  • Zadania samodzielne: Zadania, które nie wymagają kontekstu konwersacyjnego.
  • Inny model/sposób myślenia: Ciężka analiza, która uzasadnia użycie potężniejszego modelu.
  • Jednorazowe przypomnienia: „Przypomnij za 20 minut” z --at.
  • Głośne/częste zadania: Zadania, które zaśmiecałyby historię głównej sesji.
  • Wyzwalacze zewnętrzne: Zadania, które powinny działać niezależnie od aktywności agenta.

Zalety cron

  • Dokładny czas: 5-polowe wyrażenia cron z obsługą stref czasowych.
  • Izolacja sesji: Uruchamia się w cron:<jobId> bez zanieczyszczania głównej historii.
  • Nadpisywanie modelu: Możliwość użycia tańszego lub potężniejszego modelu dla zadania.
  • Kontrola dostarczania: Zadania izolowane domyślnie używają announce (podsumowanie); w razie potrzeby wybierz none.
  • Natychmiastowe dostarczenie: Tryb announce publikuje bezpośrednio, bez czekania na heartbeat.
  • Brak potrzeby kontekstu agenta: Działa nawet, gdy główna sesja jest bezczynna lub skompaktowana.
  • Obsługa jednorazowa: --at dla precyzyjnych przyszłych znaczników czasu.

Przykład cron: Codzienny poranny briefing

Uruchamia się dokładnie o 7:00 czasu Nowego Jorku, używa Opus dla jakości i bezpośrednio ogłasza podsumowanie na WhatsApp.

Przykład cron: Jednorazowe przypomnienie

Zobacz Cron jobs, aby uzyskać pełne referencje CLI.

Schemat podejmowania decyzji

Łączenie obu

Najbardziej efektywna konfiguracja wykorzystuje oba:
  1. Heartbeat obsługuje rutynowy monitoring (skrzynka, kalendarz, powiadomienia) w jednej zgrupowanej turze co 30 minut.
  2. Cron obsługuje precyzyjne harmonogramy (raporty dzienne, przeglądy tygodniowe) oraz jednorazowe przypomnienia.

Przykład: Efektywna konfiguracja automatyzacji

HEARTBEAT.md (sprawdzany co 30 min):
Zadania cron (precyzyjne czasy):

Lobster: Deterministyczne workflow z zatwierdzeniami

Lobster to środowisko uruchomieniowe workflow dla wielokrokowych potoków narzędzi, które wymagają deterministycznego wykonania i jawnych zatwierdzeń. Użyj go, gdy zadanie to więcej niż pojedyncza tura agenta i chcesz wznawialny workflow z punktami kontrolnymi dla człowieka.

Kiedy Lobster pasuje

  • Automatyzacja wielokrokowa: Potrzebujesz stałego potoku wywołań narzędzi, a nie jednorazowego promptu.
  • Bramki zatwierdzeń: Efekty uboczne powinny się zatrzymać do czasu zatwierdzenia, a następnie wznowić.
  • Wznawialne uruchomienia: Kontynuowanie wstrzymanego workflow bez ponownego wykonywania wcześniejszych kroków.

Jak współpracuje z heartbeat i cron

  • Heartbeat/cron decydują, kiedy następuje uruchomienie.
  • Lobster definiuje, jakie kroki zachodzą po rozpoczęciu uruchomienia.
Dla zaplanowanych workflow użyj cron lub heartbeat, aby wyzwolić turę agenta, która wywoła Lobster. Dla workflow ad-hoc wywołaj Lobster bezpośrednio.

Uwagi operacyjne (z kodu)

  • Lobster działa jako lokalny podproces (CLI lobster) w trybie narzędzia i zwraca kopertę JSON.
  • Jeśli narzędzie zwróci needs_approval, wznawiasz z resumeToken i flagą approve.
  • Narzędzie jest opcjonalną wtyczką; włączaj je addytywnie przez tools.alsoAllow: ["lobster"] (zalecane).
  • Jeśli przekażesz lobsterPath, musi to być ścieżka bezwzględna.
Zobacz Lobster, aby poznać pełne użycie i przykłady.

Główna sesja vs sesja izolowana

Zarówno heartbeat, jak i cron mogą wchodzić w interakcję z główną sesją, ale w różny sposób:

Kiedy używać cron w głównej sesji

Użyj --session main z --system-event, gdy chcesz:
  • Aby przypomnienie/zdarzenie pojawiło się w kontekście głównej sesji
  • Aby agent obsłużył je podczas następnego heartbeat z pełnym kontekstem
  • Brak oddzielnego, izolowanego uruchomienia

Kiedy używać cron izolowanego

Użyj --session isolated, gdy chcesz:
  • Czysty łupek bez wcześniejszego kontekstu
  • Inne ustawienia modelu lub sposobu myślenia
  • Bezpośrednie ogłaszanie podsumowań na kanał
  • Historię, która nie zaśmieca głównej sesji

Kwestie kosztowe

Wskazówki:
  • Utrzymuj HEARTBEAT.md w niewielkim rozmiarze, aby zminimalizować narzut tokenów.
  • Grupuj podobne sprawdzenia w heartbeat zamiast wielu zadań cron.
  • Użyj target: "none" w heartbeat, jeśli chcesz tylko przetwarzania wewnętrznego.
  • Dla rutynowych zadań używaj izolowanego cron z tańszym modelem.

Powiązane

  • Heartbeat – pełna konfiguracja heartbeat
  • Cron jobs – pełne referencje CLI i API dla cron
  • System – zdarzenia systemowe + kontrola heartbeat