OrchestrationMis à jour 2026-06-24 · Version 1.1

Priorisation des tâches

Ordonner les tâches candidates d'un agent par valeur, urgence, dépendances et coût plutôt que de les traiter selon le principe du premier entré, premier sorti (FIFO). Une fonction de score et une file d'attente prioritaire déterminent l'exécution suivante, afin d'allouer les ressources de calcul, le budget et le temps limités aux travaux les plus importants. Réévaluer les scores à chaque changement d'état et limiter la taille de la file d'attente pour éviter une croissance infinie.

Preuve: ProductionConfiance: FaibleSource: Système de productionSource: Expérience personnelleSource: Observation du secteur

Problème

Un agent qui décompose un objectif se retrouve souvent avec de nombreuses tâches candidates simultanées : recherches à effectuer, fichiers à lire, outils à appeler, sous-objectifs à poursuivre. Les traiter par ordre d'arrivée revient à accorder la même importance à une étape de nettoyage triviale qu'à une tâche bloquante soumise à une échéance. Les travaux importants attendent derrière des bruits de fond mineurs, les dépendances ne sont pas respectées et le budget est gaspillé pour des tâches devenues inutiles suite à l'évolution de la situation.

Quand l'utiliser

À utiliser lorsqu'un agent ou un orchestrateur gère un backlog de tâches indépendantes ou faiblement couplées et ne peut pas toutes les exécuter immédiatement en raison de contraintes de calcul, de limites de débit, de coût ou de temps réel. Ce modèle convient aux architectures de planification et de supervision où un composant choisit la prochaine exécution. Il suppose que vous pouvez associer des signaux — impact, échéance, dépendance, coût — à chaque tâche, et que les priorités peuvent évoluer à mesure que de nouvelles observations apparaissent.

Solution

Associer des signaux explicites à chaque tâche : impact attendu sur l'objectif, urgence ou échéance, relations de dépendance (ce qui doit se terminer en premier) et coût estimé en jetons, en argent ou en latence. Combiner ces éléments en un score unique à l'aide d'une fonction transparente et auditable plutôt que d'un jugement de modèle opaque. Injecter les tâches évaluées dans une file d'attente prioritaire afin d'exécuter la tâche prête ayant la plus haute valeur. Respecter systématiquement les dépendances en premier : une tâche dont les prérequis ne sont pas satisfaits n'est pas considérée comme « prête », quel que soit son score, ce qui garantit un ordonnancement correct et évite les tentatives infructueuses.

Rendre la priorisation dynamique. Après chaque étape, réévaluer le score des tâches concernées car les nouveaux résultats modifient l'impact, les échéances approchent et certaines tâches deviennent obsolètes et peuvent être abandonnées. Se prémunir contre la famine par le vieillissement (aging) — en augmentant progressivement la priorité des tâches en attente depuis longtemps — ou en réservant de la capacité pour les niveaux inférieurs. Limiter le backlog par un plafond explicite et une politique d'admission : lorsque la file d'attente est pleine, rejeter, fusionner ou évincer les tâches les moins prioritaires au lieu de la laisser croître indéfiniment. Conserver des poids de notation configurables et consigner les raisons du choix de chaque tâche afin de garantir l'explicabilité du comportement.

Composants

Extracteur de signauxFonction de notationFile d'attente prioritaireRésolveur de dépendancesBoucle de repriorisationContrôleur d'admission et de vieillissement

Avantages

  • Les ressources de calcul, le budget et le temps limités sont consacrés aux travaux à forte valeur ajoutée et urgents, plutôt qu'à ce qui est arrivé en premier.
  • Le respect des prérequis évite les tentatives infructueuses et les retouches inutiles causées par l'exécution de tâches avant que leurs entrées ne soient disponibles.
  • La réévaluation des scores permet à l'agent d'abandonner les tâches devenues inutiles et de promouvoir celles nouvellement urgentes à mesure que la situation évolue.
  • Une notation sensible aux coûts et une file d'attente limitée permettent de maîtriser les budgets de jetons et de latence plutôt que de les laisser illimités.

Risques

  • Une mauvaise pondération ou une estimation erronée des coûts peut systématiquement priver de ressources les travaux importants ou privilégier des tâches de faible valeur ; la formule nécessite un examen et un étalonnage.
  • Sans vieillissement ni capacité réservée, les tâches à faible priorité risquent de ne jamais être exécutées, laissant les travaux de nettoyage ou de fond nécessaires définitivement inachevés.
  • Une réévaluation trop fréquente des scores peut amener l'agent à changer constamment de focus, subissant ainsi le coût des changements de contexte sans jamais rien terminer.
  • Si la décomposition ajoute des tâches plus rapidement qu'elles ne sont accomplies, un backlog non limité gonfle la mémoire, les coûts et la latence de planification.

Quand ne pas l'utiliser

  • Lorsqu'il n'y a qu'une poignée de tâches similaires, le FIFO ou un parallélisme simple est plus aisé et le surcoût lié à la notation n'en vaut pas la peine.
  • Si les tâches doivent s'exécuter selon une séquence fixe dictée par le domaine, un flux de travail statique ou un DAG est plus clair qu'une file d'attente prioritaire dynamique.
  • Lorsque vous pouvez tout exécuter immédiatement dans le respect du budget et des limites, il n'y a rien à prioriser et l'ordonnancement ajoute une complexité inutile.

Technologies

Task queuesPlanner agentsScheduling / priority queuesCost-aware routing

Exemples

  • Un agent chargé de rassembler des preuves priorise les recherches les plus susceptibles de résoudre les questions en suspens et ignore les requêtes redondantes une fois qu'une affirmation est confirmée.
  • Un agent d'exploitation ordonne les étapes de remédiation selon le rayon d'impact et l'échéance, traitant l'interruption de service côté client avant les avertissements à faible impact.
  • Un agent de pipeline planifie en priorité les documents à forte valeur ou proches de leur échéance et diffère les éléments de traitement par lots peu coûteux, tandis que le vieillissement empêche la file d'attente de traitement par lots de stagner indéfiniment.

Preuves de production

Contexte
Déploiement OpenClaw mono-opérateur, local-first, observé sur 57 jours (161 sessions / 2 776 tours), agrégé à partir des traces de trajectoire propres à l'agent.
Scénario
Un agent autonome est activé selon un calendrier (heartbeat + cron), avec un décalage en début d'heure et un délai de récupération (cooldown) du heartbeat fournissant une contre-pression pour éviter l'accumulation des tâches.
Technologie
Planificateur CronService, heartbeat-runner, décalage de 5 minutes en début d'heure, logique de report par heartbeat-cooldown, et champ de priorité faible/normale/haute sur les résultats du heartbeat.
Charge
2 801 tours de heartbeat + 57 tours de cron + 106 tours d'utilisateur sur 57 jours (le heartbeat représentant environ 94 % des déclenchements).
Résultats
Le planificateur a maintenu environ cinquante réveils autonomes par jour, le décalage et le délai de récupération empêchant l'accumulation des tâches ; aucun mode de défaillance lié à la planification n'est apparu. Déploiement mono-opérateur local-first.

KPI

Valeur pondérée des tâches accomplies par unité de coût
Indique si l'effort se concentre sur les travaux à fort impact ; un bon résultat correspond à une valeur plus pertinente par rapport à l'objectif fournie par jeton ou par dollar par rapport à une référence FIFO.
Respect des échéances / SLA pour les tâches critiques
Montre que les signaux d'urgence fonctionnent ; un bon résultat correspond à des tâches urgentes se terminant avant leur échéance la plupart du temps.
Indicateur de famine (temps d'attente maximal et de traîne pour les tâches à faible priorité)
Révèle si le vieillissement est efficace ; un bon résultat correspond à des attentes maximales limitées, sans qu'aucune tâche ne reste bloquée indéfiniment.
Profondeur de la file d'attente par rapport au plafond et taux d'admission/éviction
Confirme que le backlog reste limité ; un bon résultat correspond à une profondeur maintenue sous le plafond, l'éviction étant réservée aux tâches de valeur réellement faible.

Modes de défaillance observés

  • Une tâche hautement prioritaire attend un prérequis de faible priorité qui n'est jamais planifié ; le résolveur doit propager l'urgence aux éléments bloquants.
  • Des priorités calculées une seule fois et jamais actualisées entraînent des décisions basées sur des informations d'impact ou d'échéance obsolètes ; la réévaluation des scores doit donc être déclenchée lors des changements d'état pertinents.
  • Sous-estimer le coût d'une tâche lui permet de monopoliser le budget ; les estimations ont besoin des retours de la consommation réelle mesurée.
  • Une politique d'admission agressive abandonne une tâche qui s'avère ultérieurement nécessaire, imposant une redécouverte coûteuse ; l'éviction devrait privilégier les éléments véritablement redondants.

Leçons apprises

  • Une formule auditable et configurable est plus facile à déboguer et à ajuster qu'un jugement de modèle opaque sur l'action suivante à mener.
  • Traiter la finalisation des prérequis comme une vérification de disponibilité distincte afin qu'un score élevé ne permette jamais à une tâche de devancer ses entrées.
  • Ajouter du vieillissement ou de la capacité réservée dès le départ ; les travaux de fond à faible priorité qui ne s'exécutent jamais deviennent un écart de conformité silencieux.
  • Une limite stricte assortie d'une politique d'admission claire constitue la défense la plus simple contre une décomposition incontrôlée qui gonflerait les coûts et la latence.

FAQ

En quoi cela diffère-t-il de la décomposition des objectifs ?
La décomposition produit les tâches ; la priorisation détermine l'ordre dans lequel les tâches résultantes sont exécutées. Elles sont complémentaires : la décomposition remplit le backlog, la priorisation le vide de manière sensée.
Le LLM doit-il lui-même évaluer les priorités ?
Il peut proposer des signaux tels que l'impact estimé, mais il convient de les combiner avec une fonction transparente et auditable. Une formule déterministe basée sur des signaux nommés est plus facile à calibrer, à journaliser et à faire confiance qu'un unique appel de classement opaque.
Comment éviter que les tâches de faible priorité ne s'exécutent jamais ?
Utilisez le vieillissement pour augmenter progressivement la priorité des tâches en attente depuis longtemps, ou réservez une fraction de la capacité aux niveaux inférieurs, et surveillez le temps d'attente de queue pour confirmer que rien n'est laissé de côté.

Références