Faire une pause quand un quota est atteint
Enregistrez un workflow après une erreur de quota définitive et reprenez quand l’accès est disponible.
Mettre en pause au lieu d’échouer
Section intitulée « Mettre en pause au lieu d’échouer »Définissez onQuota dans la méthode start() du workflow pour conserver la progression après une erreur de quota définitive. Avec un checkpoint configuré, la tâche concernée se met en pause afin de reprendre plus tard.
Le script affiche reviewed : la limite simulée se réinitialise après une seconde, dans la fenêtre maxWaitMs, donc le workflow attend puis relance la tâche.
onQuota exige un checkpoint pour conserver la pause. Avec la valeur par défaut de maxWaitMs, 0, rien n’attend dans le processus : chaque pause est durable.
Reconnaître une erreur de quota
Section intitulée « Reconnaître une erreur de quota »Les agents et les fournisseurs de modèles rejettent avec une OutpostError de code quota :
| Source | Signal | Réinitialisation |
|---|---|---|
| Claude Code | rate_limit_event refusé, rate_limit ou billing_error, texte de limite | Depuis resetsAt |
| Codex | usageLimitExceeded ou rateLimitExceeded, texte de limite d’usage | Inconnue |
| Copilot CLI | session.error de type quota ou rate_limit, texte de limite | Inconnue |
| Kimi Code | Texte de quota, de solde ou de limite de débit | Inconnue |
| Antigravity | RESOURCE_EXHAUSTED ou texte de quota | Inconnue |
| Fournisseurs de modèles | HTTP 429, erreur de flux de limite de débit ou insufficient_quota | Depuis Retry-After |
Un signal d’agent CLI ne compte que si le processus de l’agent échoue. Les avis de nouvelle tentative ne sont pas des quotas. quotaFault(error) lit le message et le resetAt d’une erreur de quota interceptée, même imbriquée.
Un agent de secours change d’agent au lieu d’attendre : la tâche ne se met en pause que lorsque tous les candidats ont atteint une limite.
Ce qui se passe après une erreur de quota
Section intitulée « Ce qui se passe après une erreur de quota »L’enregistrement en pause dans result.tasks contient quota.resetAt : planifiez le start() suivant à partir de cette heure. onQuota autorise la relance, sans resume: "retry-incomplete". Une tâche en boucle reprend la phase du tour qui a atteint la limite.
Poursuivre la conversation interrompue
Section intitulée « Poursuivre la conversation interrompue »La première tentative après une pause reçoit context.quota : la conversation capturée et la branche de travail conservée.
| Tâche ou appel | Tentative suivante |
|---|---|
defineAgentTask() | Poursuit la conversation dans votre sandbox et votre workspace. |
defineIsolatedTask() | La poursuit dans une nouvelle sandbox, sur la même branche ; un workspace intégré part de la branche interrompue. |
defineInteractiveAgentTask() | Poursuit la conversation du tour interrompu. |
defineQueuedTask() | Publie un nouveau job, <key>:quota:<attempt>, avec l’idempotencyKey d’origine. |
speculate() | Dans une course durable, relance les candidats arrêtés par une limite, dans de nouvelles conversations. |
Un tour poursuivi envoie une courte consigne de reprise au lieu du brief. Passez quotaResume: "restart" à une tâche d’agent ou isolée pour renvoyer la requête d’origine.
Claude Code, Codex, Copilot CLI et Kimi Code peuvent poursuivre. Un agent de secours repart de son premier candidat avec le brief d’origine.
Transmettre la conversation à un traitement en file
Section intitulée « Transmettre la conversation à un traitement en file »Un worker enregistre l’erreur de quota d’un traitement dans QueueResult.quota, et defineQueuedTask() rejette avec le code quota. Transmettez la conversation par l’entrée de la tâche :
Le traitement lance ensuite son dispatch avec continuation: { id: input.continueFrom }. Files de jobs présente les workers et les clés d’idempotence.
Suspendre une course après une erreur de quota
Section intitulée « Suspendre une course après une erreur de quota »Quand des limites arrêtent des candidats et qu’aucun ne gagne, speculate() renvoie le statut quota avec la réinitialisation connue la plus proche. Levez-la depuis une tâche pour mettre le workflow en pause :
Une course durable relance ensuite seulement ces candidats, avec des budgets cumulés. Sans durabilité, tous les candidats sont relancés.
start()refuseonQuotasans checkpoint.- Chaque relance compte dans
budget.attempts. LetimeoutMsdu workflow interrompt aussi les attentes, et une attente annulée laisse la tâche en pause. - Les heures de réinitialisation écrites dans le texte de l’agent ne sont pas analysées ; elles restent dans le message.
- Les autres agents, la capture désactivée, une requête avec sa propre
continuationou plusieurspassesrepartent du brief. - Les changements non commités d’une tentative intégrée interrompue restent dans son worktree conservé.
- Les workers ne transmettent que les conversations capturées par le dispatch du traitement.
API : WorkflowQuotaPolicy · WorkflowQuotaPause · QuotaResumePolicy · quotaFault · TaskContext · QueueResult · WorkflowOptions