Cron vs Heartbeat : quand utiliser chacun
Les heartbeats et les tâches cron vous permettent tous deux d’exécuter des tâches selon un planning. Ce guide vous aide à choisir le mécanisme adapté à votre cas d’usage.Guide de décision rapide
| Cas d’usage | Recommandé | Pourquoi |
|---|---|---|
| Vérifier la boîte de réception toutes les 30 min | Heartbeat | Regroupé avec d’autres vérifications, conscient du contexte |
| Envoyer un rapport quotidien à 9h précises | Cron (isolé) | Timing exact requis |
| Surveiller le calendrier pour les événements à venir | Heartbeat | Adapté naturellement à une vigilance périodique |
| Exécuter une analyse approfondie hebdomadaire | Cron (isolé) | Tâche autonome, peut utiliser un autre modèle |
| Me rappeler dans 20 minutes | Cron (principal, --at) | Exécution unique avec timing précis |
| Vérification de l’état d’un projet en arrière-plan | Heartbeat | S’appuie sur un cycle existant |
Heartbeat : vigilance périodique
Les heartbeats s’exécutent dans la session principale à intervalle régulier (par défaut : 30 min). Ils sont conçus pour permettre à l’agent de vérifier l’état des choses et de faire remonter ce qui est important.Quand utiliser heartbeat
- Plusieurs vérifications périodiques : au lieu de 5 tâches cron distinctes vérifiant la boîte de réception, le calendrier, la météo, les notifications et l’état des projets, un seul heartbeat peut tout regrouper.
- Décisions conscientes du contexte : l’agent dispose de tout le contexte de la session principale et peut décider intelligemment de ce qui est urgent ou non.
- Continuité conversationnelle : les exécutions heartbeat partagent la même session, l’agent se souvient donc des conversations récentes et peut faire un suivi naturel.
- Surveillance à faible surcoût : un heartbeat remplace de nombreuses petites tâches de polling.
Avantages de heartbeat
- Regroupe plusieurs vérifications : un seul tour d’agent peut examiner la boîte de réception, le calendrier et les notifications ensemble.
- Réduit les appels API : un heartbeat unique coûte moins que 5 tâches cron isolées.
- Conscient du contexte : l’agent sait sur quoi vous avez travaillé et peut prioriser en conséquence.
- Suppression intelligente : si rien ne nécessite d’attention, l’agent répond
HEARTBEAT_OKet aucun message n’est délivré. - Timing naturel : dérive légèrement selon la charge de la file, ce qui convient à la plupart des surveillances.
Exemple de heartbeat : checklist HEARTBEAT.md
Configuration de heartbeat
Cron : planification précise
Les tâches cron s’exécutent à des horaires exacts et peuvent fonctionner dans des sessions isolées sans affecter le contexte principal.Quand utiliser cron
- Timing exact requis : « Envoyer ceci à 9h00 tous les lundis » (pas « vers 9h »).
- Tâches autonomes : tâches qui n’ont pas besoin de contexte conversationnel.
- Modèle/réflexion différente : analyses lourdes justifiant un modèle plus puissant.
- Rappels uniques : « Rappelle‑moi dans 20 minutes » avec
--at. - Tâches bruyantes/fréquentes : tâches qui encombreraient l’historique de la session principale.
- Déclencheurs externes : tâches devant s’exécuter indépendamment de l’activité de l’agent.
Avantages de cron
- Timing exact : expressions cron à 5 champs avec prise en charge des fuseaux horaires.
- Isolation de session : s’exécute dans
cron:<jobId>sans polluer l’historique principal. - Override de modèle : utiliser un modèle moins cher ou plus puissant par tâche.
- Contrôle de livraison : les tâches isolées utilisent par défaut
announce(résumé) ; choisisseznonesi nécessaire. - Livraison immédiate : le mode annonce publie directement sans attendre le heartbeat.
- Aucun contexte d’agent requis : s’exécute même si la session principale est inactive ou compactée.
- Support des tâches uniques :
--atpour des horodatages futurs précis.
Exemple de cron : briefing matinal quotidien
Exemple de cron : rappel unique
Diagramme de décision
Combiner les deux
La configuration la plus efficace utilise les deux :- Heartbeat gère la surveillance de routine (boîte de réception, calendrier, notifications) en un seul tour groupé toutes les 30 minutes.
- Cron gère les plannings précis (rapports quotidiens, revues hebdomadaires) et les rappels uniques.
Exemple : configuration d’automatisation efficace
HEARTBEAT.md (vérifié toutes les 30 min) :Lobster : workflows déterministes avec validations
Lobster est le moteur de workflow pour des pipelines d’outils multi‑étapes nécessitant une exécution déterministe et des validations explicites. Utilisez‑le lorsque la tâche dépasse un seul tour d’agent et que vous souhaitez un workflow reprenable avec des points de contrôle humains.Quand Lobster est adapté
- Automatisation multi‑étapes : vous avez besoin d’un pipeline fixe d’appels d’outils, pas d’un prompt ponctuel.
- Portes de validation : les effets de bord doivent s’interrompre jusqu’à votre approbation, puis reprendre.
- Exécutions reprenables : continuer un workflow en pause sans réexécuter les étapes précédentes.
Comment il se combine avec heartbeat et cron
- Heartbeat/cron décident quand une exécution a lieu.
- Lobster définit quelles étapes se produisent une fois l’exécution lancée.
Notes opérationnelles (issues du code)
- Lobster s’exécute comme un sous‑processus local (
lobsterCLI) en mode outil et renvoie une enveloppe JSON. - Si l’outil renvoie
needs_approval, vous reprenez avecresumeTokenet l’optionapprove. - L’outil est un plugin optionnel ; activez‑le de manière additive via
tools.alsoAllow: ["lobster"](recommandé). - Si vous passez
lobsterPath, il doit s’agir d’un chemin absolu.
Session principale vs session isolée
Heartbeat et cron peuvent tous deux interagir avec la session principale, mais de manière différente :| Heartbeat | Cron (principal) | Cron (isolé) | |
|---|---|---|---|
| Session | Principale | Principale (via événement système) | cron:<jobId> |
| Historique | Partagé | Partagé | Nouveau à chaque exécution |
| Contexte | Complet | Complet | Aucun (démarre à zéro) |
| Modèle | Modèle de la session principale | Modèle de la session principale | Peut être remplacé |
| Sortie | Livrée si non HEARTBEAT_OK | Prompt heartbeat + événement | Annonce du résumé (par défaut) |
Quand utiliser un cron en session principale
Utilisez--session main avec --system-event lorsque vous souhaitez :
- Que le rappel/l’événement apparaisse dans le contexte de la session principale
- Que l’agent le traite lors du prochain heartbeat avec tout le contexte
- Aucune exécution isolée séparée
Quand utiliser un cron isolé
Utilisez--session isolated lorsque vous souhaitez :
- Une ardoise propre sans contexte préalable
- Des paramètres de modèle ou de réflexion différents
- Annoncer directement des résumés dans un canal
- Un historique qui n’encombre pas la session principale
Considérations de coût
| Mécanisme | Profil de coût |
|---|---|
| Heartbeat | Un tour toutes les N minutes ; évolue avec la taille de HEARTBEAT.md |
| Cron (principal) | Ajoute un événement au prochain heartbeat (pas de tour isolé) |
| Cron (isolé) | Tour d’agent complet par tâche ; peut utiliser un modèle moins cher |
- Gardez
HEARTBEAT.mdpetit pour minimiser la surcharge de tokens. - Regroupez des vérifications similaires dans heartbeat plutôt que plusieurs tâches cron.
- Utilisez
target: "none"sur heartbeat si vous voulez uniquement un traitement interne. - Utilisez un cron isolé avec un modèle moins cher pour les tâches de routine.