Mon agent IA plantait chaque nuit — voici comment j'ai réglé ça

March 4, 2026

Depuis quelques semaines, je construis un système d'agents IA autonomes avec OpenClaw pour gérer ma vie de dev : morning brief, monitoring Sentry, auto-amélioration nocturne…

Et chaque nuit, mon cron le plus important — celui qui extrait mes notes et améliore le système — plantait avec un timeout.

Le problème

Mon cron nightly-memory-extraction faisait 4 choses en une seule session :

  • Extraire les faits importants de la journée → daily note
  • Mettre à jour les apprentissages Sinaps (mon travail en alternance)
  • Détecter les patterns d'erreurs → patterns-learned.md
  • Consolider MEMORY.md (la mémoire long-terme de l'agent)

Timeout configuré : 900 secondes. Résultat : le job mourait à ~16 minutes systématiquement.

"error": "cron: job execution timed out", "durationMs": 981008

La recherche

Avant de corriger, j'ai cherché si d'autres avaient le même problème. Reddit, Twitter, Substack — le consensus était clair.

@ZachHighley sur X :

"I had 50+ crons, 100+ scripts, ridiculous heartbeat bloat → audited and reduced to 15 crons → added a weekly audit to watch for bloat"

r/LocalLLaMA — "3 weeks with OpenClaw as daily driver" :

"Cron jobs can silently fail if prompts are too long or context gets compacted mid-task. The key insight: spawning isolated sessions for complex tasks works way better than cramming everything into one context."

Nate's Newsletter :

"Watch any agent work on a complex task. For the first ten minutes, it's sharp. Around minute twenty or thirty — the agent starts repeating itself. It forgets."

Ce n'est pas un bug OpenClaw. C'est structurel : au-delà de ~20 minutes, n'importe quel LLM dégrade.

La solution : Single Responsibility pour les crons

Inspiré du principe SOLID appliqué aux agents : 1 cron = 1 responsabilité = 1 prompt court.

J'ai découpé mon monstre en 3 crons indépendants :

  • 23h00 — nightly-1-extract : créer la daily note du jour → 39 secondes
  • 23h20 — nightly-2-improve : patterns d'erreurs + MEMORY.md → 68 secondes
  • 23h40 — nightly-3-sinaps : learning log → ~2 minutes

Résultat : 0 timeout. Chaque job fait une seule chose, en moins de 5 minutes.

Les règles que j'ai retenues

  • Prompt court = pas de context compaction mid-task. Un prompt de 50 lignes avec 4 phases = risque élevé. Un prompt de 10 lignes avec 1 tâche = fiable.
  • Haiku pour le mécanique, Sonnet pour le raisonnement. Lire/écrire des fichiers ne nécessite pas Claude Sonnet. 10x moins cher, plus rapide.
  • Isolation = résilience. Avec 3 crons séparés, si l'un plante, les 2 autres tournent quand même.
  • Toujours tester manuellement avant la nuit. openclaw cron run <job-id> puis openclaw cron runs <job-id> pour vérifier le résultat.

Ressources

GitHub
LinkedIn
X