Skip to main content
Voir en Markdown

Planification et limites

Un agent qui ne répond que lorsqu'on lui parle n'a besoin d'aucun de ces deux blocs. Celui qui se réveille tout seul a besoin des deux : schedule pour décider quand, et limits pour décider combien il peut consommer une fois que personne ne regarde.

Exécution planifiée

app.yaml
schedule:
  cron: '0 9 * * MON'
  timezone: Europe/Paris
  taskPrompt: Summarize last week's new tickets and post the digest.
Propriété Description
schedule.cron Expression cron standard à 5 champs (*/15 * * * *, 0 9 * * MON).
schedule.timezone Identifiant IANA. Vaut UTC par défaut.
schedule.taskPrompt Obligatoire. Envoyé au modèle comme message utilisateur à chaque exécution.

cron et timezone sont tous deux validés au décodage de la configuration, avec le même analyseur que les déclencheurs cron d'automatisation. Une expression malformée ou un fuseau inconnu fait échouer sovrium validate hors ligne — vous l'apprenez à votre bureau, pas par une tâche qui ne s'est jamais déclenchée.

taskPrompt fait la différence entre une planification et un réveille-matin. Le prompt système dit qui est l'agent ; le prompt de tâche dit à quoi sert cette exécution-ci. Rédigez-le comme une instruction avec un état final défini — « résume les nouveaux tickets de la semaine et publie le condensé » — plutôt qu'un mandat ouvert comme « vérifie les tickets », qui ne donne au modèle aucun point d'arrêt.

Les planifications sont armées une fois le serveur démarré et prêt à accepter des requêtes, et démontées à l'extinction — un redémarrage ne laisse donc aucune minuterie déclencher un agent que la nouvelle configuration ne planifie plus.

Ce que traverse une exécution cron

Une exécution cron a lieu à l'intérieur du serveur, sur la minuterie que vous avez écrite, plutôt que d'arriver comme une requête venue de l'extérieur. Cet emplacement décide lesquels des garde-fous de l'agent s'appliquent.

Garde-fou Sur une exécution cron
permissions.trigger Non appliqué. Une minuterie n'est pas un appelant externe : un agent restreint à trigger: [admin] tourne quand même sur sa propre planification.
enabled: false Sauté. Un agent désactivé n'est jamais armé et ne réveille donc jamais l'ordonnanceur — la façon propre d'en suspendre un sans supprimer sa config.
Aucun fournisseur d'IA configuré Sauté. Un agent déclaré est inerte sans modèle, et une exécution qui n'a atteint aucun fournisseur n'est pas consignée comme un travail accompli.
limits.maxConcurrentTasks Sauté quand aucun emplacement n'est libre. C'est ce qui empêche un cron rapide d'empiler les exécutions derrière un fournisseur lent.
limits.maxActionsPerMinute Non appliqué. L'expression cron est la cadence.
limits.maxTokensPerDay Décompté. Les jetons de l'exécution comptent sur le budget quotidien et apparaissent dans la consommation de l'agent.
approval Appliqué. Un mode: all sur un cron nocturne met une demande en file à 3 h du matin au lieu de s'exécuter, et celle-ci expire si timeout passe avant.

Déclencher la tâche à la main

POST /api/agents/{name}/schedule/trigger exécute le même taskPrompt à la demande. Celui-là, en revanche, est un appelant externe : il traverse tous les garde-fous que traverse POST /api/agents/{name}/execute — le grant permissions.trigger de l'agent, dont un refus répond 404 ; un 503 quand le déploiement n'a aucun fournisseur d'IA ; un 202 au statut queued quand maxActionsPerMinute ou maxConcurrentTasks est épuisé ; et un 429 avec un en-tête Retry-After quand la limite de cadence d'actions se déclenche. Ses jetons sont décomptés de maxTokensPerDay comme ceux de n'importe quelle autre exécution.

Limites opérationnelles

limits plafonne la consommation. Chaque champ est facultatif et retombe sur une valeur système.

Propriété Défaut Plafonne
limits.maxActionsPerMinute 30 Les actions de base de données et de courriel par minute.
limits.maxTokensPerDay 200000 Les jetons de modèle par 24 heures. Remise à zéro à minuit UTC.
limits.maxConcurrentTasks 5 Les exécutions de tâches simultanées.

Chacun répond à une défaillance différente, et la distinction compte au moment de choisir les valeurs :

  • maxActionsPerMinute borne une boucle. Un agent qui relit mal sa propre sortie et réessaie peut marteler une table des centaines de fois par minute ; c'est le plafond qui transforme cela en anomalie lente plutôt qu'en panne.
  • maxTokensPerDay borne la facture. C'est la seule limite de cette page qui a un coût direct en monnaie, et la seule que vous pouvez estimer à l'avance — évaluez les jetons d'une exécution, multipliez par le nombre d'exécutions quotidiennes, ajoutez de la marge.
  • maxConcurrentTasks borne la contention. Il compte surtout pour les agents déclenchés par des utilisateurs plutôt que par cron, où dix personnes peuvent invoquer le même agent en même temps.
app.yaml
limits:
  maxActionsPerMinute: 20
  maxTokensPerDay: 150000
  maxConcurrentTasks: 3

Le budget de jetons se réinitialise à minuit UTC, indépendamment du timezone de l'agent. Un agent planifié à 23 h à Auckland dépense sur une fenêtre qui bascule en milieu d'après-midi locale — bon à savoir avant qu'une exécution ne s'interrompe mystérieusement à mi-parcours.

Dimensionner un agent planifié

Raisonnez à rebours depuis le cron. Un agent quotidien qui lit cent enregistrements et écrit un résumé consomme peut-être vingt mille jetons et trente actions ; maxTokensPerDay: 100000 laisse alors de la marge pour un mauvais jour sans en laisser pour un emballement. Un agent en */15 * * * * s'exécute quatre-vingt-seize fois par jour : le même coût unitaire exige donc un budget supérieur de deux ordres de grandeur — et c'est en général le signe qu'il faut reconsidérer la planification, pas le budget.

Pages associées

Dernière mise à jour 1 septembre 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.

Construit avec Sovrium