Migrer des agents IA sans interruption de service

J'utilisais deux agents IA : OpenClaw et Hermes.

OpenClaw fonctionnait bien pour les tâches planifiées. Hermes était plus performant pour le raisonnement complexe. Cependant, OpenClaw présentait un défaut majeur. Lorsque les tâches devenaient lourdes, il subissait un timeout et abandonnait le travail. Hermes ne faisait jamais cela. Il maintenait la tâche et menait le travail à bien.

J'ai décidé de tout transférer vers Hermes. Je ne voulais pas d'une transition brutale. Un changement soudain est risqué. Si le nouveau système échoue, je perds mes notifications.

J'ai choisi une stratégie de migration parallèle.

J'ai laissé OpenClaw tourner. J'ai ajouté Hermes en tant que système miroir. Cela m'a permis de comparer les deux agents côte à côte.

Mon système de notification était désordonné. Il utilisait quatre méthodes différentes :

  • Scripts Shell
  • Moniteurs Node
  • Assistants Bash
  • Scripts Python

Je n'ai pas réécrit le code. J'ai rendu le nouveau mode de livraison additif. J'ai créé un script nommé hermes_mirror.sh. J'ai ajouté une ligne à chaque tâche existante pour appeler ce script en arrière-plan.

Cette approche a apporté trois avantages :

  • Sécurité : si le miroir échoue, le message original est tout de même envoyé.
  • Simplicité : un seul script gère tout le mirroring.
  • Contrôle : je peux arrêter tout le mirroring en modifiant une seule variable.

Ensuite, j'ai commis une erreur de timing.

Je ne voulais pas que les deux messages arrivent à la même seconde exacte. Je pensais que cela ferait trop de bruit. J'ai configuré un délai de trois minutes pour les messages Hermes.

J'ai effectué un test. Le message OpenClaw est arrivé. Le message Hermes n'est pas arrivé. J'ai cru que le système était en panne.

Le système n'était pas en panne. Il attendait simplement le compte à rebours de trois minutes. Lors d'une migration, le « retard » ressemble à un « échec ».

J'ai réduit le délai à 20 secondes. C'était suffisant pour séparer les messages sans qu'ils ne semblent perdus.

J'ai également appris le danger des modifications de code automatisées. J'ai utilisé un script pour injecter la nouvelle ligne dans mes fichiers Python. Cela a fonctionné pour presque tout, sauf pour un fichier. Ce fichier avait une structure d'importation différente. Cela a provoqué un plantage. Vérifiez toujours chaque fichier, même ceux que vous pensez être sans risque.

La migration n'est pas terminée. Je déplace les tâches une par une. Je ne retire une tâche OpenClaw que lorsque je vois Hermes la livrer avec succès.

Une migration ne devrait pas être un instant unique. Elle devrait être une marche constante vers un nouveau système.

Source: https://dev.to/henry_dan_81513dd35a2f540/migrating-off-openclaw-without-downtime-and-the-offset-that-made-hermes-look-dead-2gic

Communauté d'apprentissage optionnelle : https://t.me/GyaanSetuAi