IA / Automatisation 8 mai 2026

2026-05-08 OpenClaw : checkpoints d’état de session et reprise après redémarrage de passerelle sur Mac cloud Apple Silicon loué sans interface (HK / JP / KR / SG / US)

MacXCode Engineering Team 8 mai 2026 Lecture ~23 min

Les équipes viennent de stabiliser les sondes de santé—puis launchctl redémarre la passerelle pendant une montée npm et Slack hurle « le bot a tout oublié ». Le modèle n’a rien oublié : ce sont les frontières de persistance qui ont bougé faute de snapshot de OPENCLAW_STATE_DIR ou à cause d’un nettoyage qui efface du scratch voisin des artefacts CI. Sur des Mac mini M4 loués à Hong Kong, Tokyo, Séoul, Singapour et aux États-Unis, traitez les résidus de session comme un état dataplane aussi sérieusement que vos clés de signature. Ce guide 2026-05-08 montre comment les répertoires checkpoint dialoguent avec les environnements launchd, comment répéter la reprise avec du trafic synthétique, et comment fusionner les signaux de journalisation structurée, du triage KeepAlive, du upgrade et rollback passerelle, et les nouvelles politiques de plugin de transfert de fichiers jusqu’à ce que les redémarrages soient ennuyeux.

Pourquoi un redémarrage de passerelle surprend encore l’astreinte

OpenClaw marie itération rapide et automation durable. Quand npm postinstalle des globaux ou qu’un ingénieur SSH sous le même utilisateur que CI, le process peut redémarrer proprement tout en rechargeant une sémantique d’environnement différente. Sans discipline de checkpoint vous perdez transcripts, caches de déduplication webhook et listes blanches d’outils. Documentez explicitement ce qui doit persister dans le même README que vos labels launchctl.

Règle d’or : jamais de rm -rf sur l’état en incident — snapshot puis diff.

Anatomie de OPENCLAW_STATE_DIR

Pensez en couches :

  • Indices de session — échafaudage conversationnel attendu après reconnexion.
  • Caches d’outils — métadonnées bornées survivant aux pauses courte passerelle.
  • Livres webhooks — clés anti double exécution.

Isolez chaque couche (montage ou ACL) pour empêcher le ménage CI de remonter vers l’état assistant. Calquez les repères du guide lanes CI parallèles quand deux charges partagent un UID.

launchd : ThrottleInterval, codes de sortie, respawns

Avec des KeepAlive agressifs, launchd redémarre plus vite que l’œil humain. Lisez aussi le triage respawn : journaux de codes sortie, vérif que ThrottleInterval évite les boucles serrées, StandardOutPath qui capture stderr. Après édition de plist exécutez toujours la matrice curl des sondes santé avant victoire déclarée.

Playbook checkpoint avant fenêtre maintenance

  1. Geler les pins npm/Mint et exporter l’arbre deps.
  2. Photographier OPENCLAW_STATE_DIR via tar ou snapshot APFS.
  3. Prévenir les fournisseurs webhooks du risque de doubles livraisons pendant replay.
  4. Redémarrer avec launchctl kickstart, pas avec kill -9 improvisé.
  5. Vérifier les clés de dédup sur événements synthétiques entrants.

Exposez les minutes murales par étape pour que la finance compare un nœud témoin supplémentaire à un MTTR incident allongé.

Matrice modes de défaillance

Symptôme Cause probable Atténuation
Emails clients doublonnés après redémarrage Cache de dédup effacé Webhook ids rejouables + grand livre externe
Outils refusés après montée Fichiers stratégiques non migrés Listes versionsnées suivant docs plugin
RSS plus élevé après coup Bundle skills chargé deux fois Comparer npm ls au tarball de secours

Plugins et proximité transfert fichier

Le plugin fichier 2026-05-07 impose une sémantique FS survivant aux redémarrages : si les listes autorisées ne vivent que dans des variables jetables, un bounce rétrécit l’accès en silence. Persistez ces politiques sous l’arborescence état suivie Git ou configurée sous scellés. Associez la discipline chunking pour éviter fetch géants lorsque les sessions reprennent.

Sécurité : les checkpoints peuvent contenir extraits clients—chiffrez les sauvegardes hors-machine si données réglementées.

Logs structurés & corrélations ID

Chaque émission passerelle doit embarquer session id, compteur génération, nonce de redémarrage pour que Grafana segmente fenêtres pré/post rebound. Associez les bords nginx via le guide reverse proxy quand les replays créent pics entrants.

Runbook reprise — huit étapes

  1. Détectez le rebound par heure de démarrage process vs drift heartbeat.
  2. Comparez hash tarball du dossier état au disque vivant.
  3. Lancez conversation CLI synthétique sur canal staging.
  4. Rejouez webhooks exemple avec jetons idempotents.
  5. Confirmez que les politiques plugin refusent toujours les racines indésirables.
  6. Réalignez npm pin avant si corruption plausible.
  7. Documentez ligne du temps avec nonce rebound.
  8. Planifiez rétrospective sur l’utilité d’un nœud témoin pour MTTR.

Tableau SLO

Signal Seuil Action
Échecs reprise session > 0,5 % des reconnexions Gel déploiement ; audit plist env
Collision dédup Tout effet latéral dupliqué Vérif grand livre replay
Âge tarball checkpoint > 36 h périmé Automatiser jobs snapshot nocturnes

FAQ

Question Réponse pratique (2026-05-08)
Snapshots ZFS/APFS ? Selon bail—coordonnez avec fournisseur ; sinon tarball vers stockage objet.
Sync checkpoints entre régions ? Non — sessions régionales ; répliquez les configs, pas un cache vivant conversationnel.

Pourquoi Mac mini M4 convient aux passerelles stateful

Mémoire unifiée et NVMe rapide rendent snapshots et diffs tarball gérables pendant incident — matériel prévisible > voisins bruyants quand vous différenciez des arbres gigaoctets sous contrainte. Budget : tarifs par région ; onboarding : documentation d’aide et VNC facultatif lorsque GUI est incontournable.

Louez des nœuds témoin avant sessions à risque commun

HK / JP / KR / SG / US · SSH · VNC optionnel