Aller au contenu

Tâches d'arrière-plan

Cron vs Heartbeat vs Tâches ? Consultez Cron vs Heartbeat pour choisir le bon mécanisme de planification. Cette page couvre le suivi du travail d’arrière-plan, et non sa planification.

Les tâches d’arrière-plan assurent le suivi du travail qui s’exécute en dehors de votre session de conversation principale : exécutions ACP, lancements de sous-agents, exécutions de tâches cron isolées et opérations initiées par la CLI.

Les tâches ne remplacent pas les sessions, les tâches cron ou les heartbeats — elles constituent le registre d’activité qui enregistre le travail détaché effectué, quand il l’a été, et s’il a réussi.

  • Les tâches sont des enregistrements, pas des planificateurs — cron et heartbeat décident quand le travail s’exécute, les tâches suivent ce qui s’est passé.
  • ACP, sous-agents, toutes les tâches cron et opérations CLI créent des tâches. Les tours d’heartbeat n’en créent pas.
  • Chaque tâche passe par queued → running → terminal (succeeded, failed, timed_out, cancelled ou lost).
  • Les notifications de complétion sont envoyées directement à un channel ou mises en file d’attente pour le prochain heartbeat.
  • openclaw tasks list affiche toutes les tâches ; openclaw tasks audit signale les problèmes.
  • Les enregistrements terminaux sont conservés pendant 7 jours, puis automatiquement supprimés.
Fenêtre de terminal
# List all tasks (newest first)
openclaw tasks list
# Filter by runtime or status
openclaw tasks list --runtime acp
openclaw tasks list --status running
# Show details for a specific task (by ID, run ID, or session key)
openclaw tasks show <lookup>
# Cancel a running task (kills the child session)
openclaw tasks cancel <lookup>
# Change notification policy for a task
openclaw tasks notify <lookup> state_changes
# Run a health audit
openclaw tasks audit
SourceType d’exécutionQuand un enregistrement de tâche est crééPolitique de notification par défaut
Exécutions d’arrière-plan ACPacpLancement d’une session ACP enfantdone_only
Orchestration de sous-agentssubagentLancement d’un sous-agent via sessions_spawndone_only
Tâches cron (tous types)cronChaque exécution cron (session principale et isolée)silent
Opérations CLIcliCommandes openclaw agent qui s’exécutent via la passerelledone_only

Les tâches cron de session principale utilisent la stratégie de notification silent par défaut — elles créent des enregistrements pour le suivi mais ne génèrent pas de notifications. Les tâches cron isolées utilisent également par défaut silent mais sont plus visibles car elles s’exécutent dans leur propre session.

Ce qui ne crée pas de tâches :

  • Tours Heartbeat — session principale ; voir Heartbeat
  • Tours de conversation interactive normaux
  • Réponses /command directes
stateDiagram-v2
[*] --> queued
queued --> running : agent starts
running --> succeeded : completes ok
running --> failed : error
running --> timed_out : timeout exceeded
running --> cancelled : operator cancels
queued --> lost : session gone > 5 min
running --> lost : session gone > 5 min
StatutSignification
queuedCréé, en attente du démarrage de l’agent
runningLe tour de l’agent est en cours d’exécution
succeededTerminé avec succès
failedTerminé avec une erreur
timed_outDépassement du délai configuré
cancelledArrêté par l’opérateur via openclaw tasks cancel
lostLa session enfant de support a disparu (détecté après une période de grâce de 5 minutes)

Les transitions se produisent automatiquement — lorsque l’exécution de l’agent associée se termine, le statut de la tâche est mis à jour en conséquence.

Lorsqu’une tâche atteint un état terminal, OpenClaw vous notifie. Il existe deux chemins de livraison :

Livraison directe — si la tâche a une cible de channel (le requesterOrigin), le message d’achèvement va directement à ce channel (Telegram, Discord, Slack, etc.).

Livraison en file d’attente de session — si la livraison directe échoue ou si aucune origine n’est définie, la mise à jour est mise en file d’attente en tant qu’événement système dans la session du demandeur et apparaît lors du prochain heartbeat.

Contrôlez ce que vous entendez concernant chaque tâche :

StratégieCe qui est livré
done_only (par défaut)Uniquement l’état terminal (réussi, échoué, etc.) — il s’agit de la valeur par défaut
state_changesChaque transition d’état et mise à jour de progression
silentRien du tout

Modifier la stratégie pendant qu’une tâche est en cours d’exécution :

Fenêtre de terminal
openclaw tasks notify <lookup> state_changes
Fenêtre de terminal
openclaw tasks list [--runtime <acp|subagent|cron|cli>] [--status <status>] [--json]

Colonnes de sortie : Task ID, Kind, Status, Delivery, Run ID, Child Session, Summary.

Fenêtre de terminal
openclaw tasks show <lookup>

Le jeton de recherche accepte un ID de tâche, un ID d’exécution ou une clé de session. Affiche l’enregistrement complet incluant le timing, l’état de livraison, l’erreur et le résumé terminal.

Fenêtre de terminal
openclaw tasks cancel <lookup>

Pour les tâches ACP et de sous-agent, cela tue la session enfant. Le statut passe à cancelled et une notification de livraison est envoyée.

Fenêtre de terminal
openclaw tasks notify <lookup> <done_only|state_changes|silent>
Fenêtre de terminal
openclaw tasks audit [--json]

Met en évidence les problèmes opérationnels. Les résultats apparaissent également dans openclaw status lorsque des problèmes sont détectés.

FindingSeverityTrigger
stale_queuedwarnEn file d’attente depuis plus de 10 minutes
stale_runningerrorEn cours d’exécution depuis plus de 30 minutes
losterrorLa session de support a disparu
delivery_failedwarnLa livraison a échoué et la politique de notification n’est pas silent
missing_cleanupwarnTâche terminale sans horodatage de nettoyage
inconsistent_timestampswarnViolation de la chronologie (par exemple, terminé avant d’avoir commencé)

Utilisez /tasks dans n’importe quelle session de chat pour voir les tâches d’arrière-plan liées à cette session. Le tableau affiche les tâches actives et récemment terminées avec leur durée d’exécution, leur statut, leur timing, ainsi que les détails de progression ou d’erreur.

Lorsque la session actuelle n’a aucune tâche liée visible, /tasks revient aux comptes de tâches locales de l’agent afin que vous ayez toujours une vue d’ensemble sans divulguer les détails d’autres sessions.

Pour le grand livre complet de l’opérateur, utilisez le CLI : openclaw tasks list.

openclaw status inclut un résumé des tâches d’un coup d’œil :

Tasks: 3 queued · 2 running · 1 issues

Le résumé indique :

  • active — nombre de queued + running
  • échecs — nombre de failed + timed_out + lost
  • byRuntime — répartition par acp, subagent, cron, cli

Both /status and the session_status tool use a cleanup-aware task snapshot: active tasks are preferred, stale completed rows are hidden, and recent failures only surface when no active work remains. This keeps the status card focused on what matters right now.

Les enregistrements de tâches sont conservés dans SQLite à l’emplacement suivant :

$OPENCLAW_STATE_DIR/tasks/runs.sqlite

Le registre est chargé en mémoire au démarrage de la passerelle et synchronise les écritures dans SQLite pour assurer la persistance entre les redémarrages.

Un nettoyeur s’exécute toutes les 60 secondes et gère trois éléments :

  1. Réconciliation — vérifie si les sessions sous-jacentes des tâches actives existent toujours. Si une session fille est absente depuis plus de 5 minutes, la tâche est marquée lost.
  2. Estampillage de nettoyage — définit un horodatage cleanupAfter sur les tâches terminales (endedAt + 7 jours).
  3. Élagage — supprime les enregistrements dépassant leur date cleanupAfter.

Rétention : les enregistrements de tâches terminales sont conservés pendant 7 jours, puis automatiquement élagués. Aucune configuration n’est nécessaire.

Comment les tâches se rapportent aux autres systèmes

Section intitulée « Comment les tâches se rapportent aux autres systèmes »

Certaines anciennes notes de version et documentation d’OpenClaw faisaient référence à la gestion des tâches sous le nom ClawFlow et documentaient une surface de commande openclaw flows.

Dans la base de code actuelle, la surface de l’opérateur prise en charge est openclaw tasks. Consultez ClawFlow et CLI : flux pour les notes de compatibilité qui font correspondre ces anciennes références aux commandes de tâches actuelles.

Une définition de tâche cron réside dans ~/.openclaw/cron/jobs.json. Chaque exécution cron crée un enregistrement de tâche, à la fois en session principale et isolée. Les tâches cron en session principale utilisent par défaut la stratégie de notification silent afin qu’elles suivent le processus sans générer de notifications.

Voir Tâches cron.

Les exécutions Heartbeat sont des tours de session principale — elles ne créent pas d’enregistrements de tâches. Lorsqu’une tâche se termine, elle peut déclencher un réveil heartbeat afin que vous voyiez le résultat rapidement.

Voir Heartbeat.

Une tâche peut faire référence à une childSessionKey (où le travail s’exécute) et une requesterSessionKey (qui l’a démarrée). Les sessions sont le contexte de conversation ; les tâches assurent le suivi de l’activité par-dessus cela.

Le runId d’une tâche renvoie à l’exécution de l’agent effectuant le travail. Les événements du cycle de vie de l’agent (démarrage, fin, erreur) mettent automatiquement à jour le statut de la tâche — vous n’avez pas besoin de gérer le cycle de vie manuellement.