SÉRIE HERMES AGENT ÉTAPE 3 12/24

Hermes Agent : mettre à jour sans casser ce qui marche

Prépare une mise à jour Hermes, sauvegarde tes données et rejoue les mêmes essais avant de reprendre ton travail. Un parcours concret pour une installation source Linux ou WSL.

DANS CE TUTORIELAller à une étape

Une mise à jour d’Hermes est terminée quand ton usage fonctionne encore, pas seulement quand l’installation affiche un message de réussite. Pour le vérifier, il faut avoir un point de comparaison : la même demande, le même fichier et le même modèle avant et après.

Nous allons préparer ce repère, sauvegarder les données, examiner la mise à jour proposée, puis rejouer un essai court. Le parcours concerne une installation source gérée sur Linux ou WSL, sans modifications personnelles du code d’Hermes. Il ne demande pas de changer de modèle, de serveur MCP ou de canal de mise à jour en même temps.

Ce que tu auras à la fin
Une version installée identifiée, une sauvegarde repérée et un essai comparé avant/après. Tu pourras décider de reprendre ton travail ou de t’arrêter sur un problème précis, avec une note courte pour garder la trace du changement.

1. Identifier l’installation à mettre à jour

Il te faut un accès au terminal de la machine, une installation Hermes déjà utilisable, un accès au modèle habituel et assez d’espace libre pour une sauvegarde. Les petits blocs de préparation utilisent Bash et Python 3, sur Linux ou WSL. Si Hermes ne fonctionne déjà plus, commence par comprendre cette panne : tu n’aurais pas de référence fiable pour comparer.

Nous prendrons default comme profil d’essai. Remplace ce nom si ton usage habituel passe par un autre profil. Vérifie d’abord ce qui est installé :

Terminal · repérer la version et les options
command -v hermes
hermes --version
hermes update --help
hermes backup --help
python3 --version

Note la version affichée et, si disponible, la référence de code. L’aide de mise à jour doit proposer --plan et --check ; celle de sauvegarde, --output et --keep. Si ces options manquent, consulte la procédure correspondant à ta version avant de continuer.

La méthode dépend de l’installation :

InstallationVoie de mise à jour
Source géréeLe parcours ci-dessous avec hermes update.
Application empaquetéeSon mécanisme de mise à jour : application, App Installer ou Store selon le paquet.
Image DockerNouvelle image et recréation du conteneur en conservant les volumes de données.
Nix ou Termux APTLe gestionnaire qui a installé Hermes.

Le plan permet de vérifier le type d’installation et les services concernés, sans appliquer la mise à jour :

Terminal · lire le périmètre de la mise à jour
hermes -p default update --plan

Repère le chemin de l’installation, les processus actifs et leur mode de redémarrage. Si le plan indique une installation empaquetée ou gérée par un autre système, suis la méthode annoncée. Ne force pas la commande du parcours source.

Le profil ne limite pas la portée de la mise à jour
-p default désigne le contexte utilisé par la commande. Le code installé peut servir à plusieurs profils, gateways ou interfaces. Leur activité et leurs données font aussi partie de la préparation ; un second profil n’est pas une installation de test isolée.

2. Préparer un cas de référence

Choisis une raison précise de mettre à jour : une correction attendue, une fonction utile ou une recommandation de maintenance. Note-la en une phrase. Nous vérifierons ensuite un usage très simple : lire un fichier local sans le modifier.

Pour cet essai, le profil doit utiliser le backend local et disposer d’un outil de lecture. Si tu dois d’abord clarifier où les outils travaillent, consulte le parcours local, Docker et SSH.

Crée un dossier neuf hors de l’installation et du dossier de données Hermes. Le bloc suivant le place dans ton dossier personnel avec un nom libre :

Terminal · créer le repère de lecture
essai_update=$(mktemp -d "$HOME/essai-hermes-update.XXXXXX") &&
cd "$essai_update" &&
printf 'Projet : Silex\nRepère : cuivre-52\n' > repere.txt &&
pwd &&
cat repere.txt

Note le chemin affiché et garde ce terminal ouvert pendant le parcours. Lance une nouvelle conversation depuis ce dossier :

Terminal · ouvrir le profil d’essai
hermes -p default chat

Note le modèle et le fournisseur réellement utilisés. Donne ensuite cette consigne :

À demander à Hermes · essai avant et après
Lis repere.txt dans le dossier de travail avec un outil de lecture, puis recopie ses deux lignes. Ne modifie aucun fichier et n’utilise aucun service externe pour cette tâche. Si le fichier manque ou si la lecture échoue, indique-le sans inventer son contenu.

L’expression « service externe » vise ici les outils ; un modèle cloud reçoit toujours le contenu nécessaire à la réponse. Le fichier d’essai ne contient aucune donnée privée.

Vérifie l’appel de lecture et les deux lignes retournées. Conserve le résultat dans ta note. Si cet essai échoue déjà, règle le problème avant de l’utiliser comme référence. Termine le tour puis quitte la conversation avec /exit pour revenir au terminal.

Ce petit contrôle ne couvre pas tout ton usage. Si la mise à jour doit corriger un problème précis, ajoute un cas court qui le reproduit. Si tu utilises un outil important ou une messagerie, prévois aussi son contrôle après la mise à jour, dans un espace d’essai adapté.

3. Sauvegarder les données avant de changer le code

Attends la fin des tâches en cours et prévois une période sans nouveau travail. Un gateway peut encore être actif après la fermeture du chat. Vérifie les services repérés dans le plan ; les tâches planifiées et les autres interfaces ne doivent pas produire de nouveaux résultats pendant ta comparaison.

La sauvegarde complète d’Hermes couvre des données et réglages sélectionnés, avec des exclusions. Elle ne contient pas le code de l’application, ni tous les fichiers de travail présents ailleurs sur la machine. Garde donc la référence de version et sauvegarde séparément les projets ou services externes dont tu dépends.

Dans le même terminal, crée un dossier privé pour l’archive. Le nom choisi évite d’écraser une ancienne sauvegarde et --keep 0 désactive la suppression des anciennes archives par cette commande :

Terminal · créer une sauvegarde distincte
sauvegarde_update=$(mktemp -d "$HOME/sauvegarde-hermes.XXXXXX") &&
hermes -p default backup --keep 0 --output "$sauvegarde_update/donnees-avant-update.zip"

Attends la fin. Le compte rendu doit annoncer une sauvegarde complète, pas une archive partielle ni « aucun fichier à sauvegarder ». Relis le périmètre et les exclusions indiqués. Si plusieurs profils ou dossiers de données personnalisés sont concernés, vérifie leur présence au lieu de supposer qu’une commande couvre tout.

Contrôle ensuite que l’archive est lisible :

Terminal · vérifier l’archive
python3 -m zipfile -t "$sauvegarde_update/donnees-avant-update.zip"

Le contrôle ne doit signaler aucun fichier corrompu. Ouvre aussi la liste des fichiers dans ton gestionnaire d’archives et vérifie que les réglages, sessions et mémoires que tu veux conserver sont présents. Ce test de lecture ne vaut pas un essai complet de restauration.

Conserve le chemin dans ta note et une copie sur ton support de sauvegarde habituel. L’archive peut contenir des identifiants et des conversations : garde-la privée, sans l’envoyer dans un chat ni la déposer dans un dépôt Git public.

Les sauvegardes automatiques réalisées pendant une mise à jour constituent une protection supplémentaire, mais peuvent être partielles ou échouer sans bloquer la suite. Elles ne remplacent pas cette préparation. De même, le rollback de fichiers ne remet pas à lui seul toute l’installation Hermes dans son état précédent.

4. Examiner ce qui sera proposé

Avant de lancer l’installation :

Terminal · vérifier la mise à jour disponible
hermes -p default update --check

Cette commande compare la version avec la cible du canal choisi, sans installer le nouveau code ni redémarrer les gateways. Elle peut récupérer des métadonnées Git : « vérifier » ne signifie donc pas « aucune écriture sur le disque ».

Note la cible annoncée et lis les notes de version correspondantes. Repère notamment les migrations de données, changements de configuration et incompatibilités avec tes plugins. Si tu es déjà à jour, il n’y a rien à appliquer : conserve ta référence et termine ici. Une erreur de vérification ne signifie pas que l’installation est à jour.

Dans le fonctionnement actuel, une installation source officielle suit normalement les versions stables, sauf choix antérieur ou situation particulière. Garde le canal observé pendant cet essai. Passer de main à stable peut revenir à un code plus ancien ; ce changement mérite sa propre préparation.

Une mise à jour, puis les mêmes essais

Installation terminée ≠ usage vérifié.

Avant la mise à jour, note la version et le canal, vérifie la sauvegarde et exécute un cas de référence. Après la mise à jour, conserve le même modèle et les mêmes outils pour rejouer les essais et relire les avertissements. Des essais concluants permettent de conserver la mise à jour et de noter le résultat. Un échec ou un doute conduit à suspendre la reprise pour comprendre le problème. Un retour à l’ancien code peut exiger un état de données compatible.

Le schéma relie la décision aux mêmes essais avant et après. Un message d’installation réussie ne suffit pas : il faut aussi retrouver le comportement attendu et comprendre les avertissements.

5. Appliquer une seule mise à jour

Tu peux poursuivre si la cible est comprise, la sauvegarde vérifiée et les activités en cours terminées. Ferme les autres conversations et interfaces qui utilisent cette installation. Si tu travailles par SSH, utilise ta session persistante habituelle et prévois de rester disponible pendant l’opération.

Terminal · appliquer la mise à jour examinée
hermes -p default update

Lis les questions et les messages au fil de l’opération. Nous n’utilisons ni acceptation automatique ni option de forçage. La cible peut avoir évolué depuis la vérification ; si la commande annonce autre chose, réévalue ce changement avant de continuer.

Le programme peut préparer ses dépendances, proposer des réglages et redémarrer des services. Attends leur résultat. Si un changement local du code, un conflit ou une incompatibilité apparaît, arrête ce parcours générique pour traiter ce cas précis. N’ajoute pas en même temps une mise à jour Python, un nouveau modèle ou une réinstallation de MCP pour essayer de faire disparaître l’erreur.

6. Rejouer les contrôles avec la nouvelle version

Depuis le terminal, relève la version et l’état annoncé des services :

Terminal · vérifier la version et les services
hermes --version
hermes -p default update --plan

Compare avec ta note initiale et le compte rendu de mise à jour. Un service peut encore fonctionner avec l’ancien code ou demander un redémarrage manuel. Un plugin peut aussi avoir été désactivé pendant la préparation des dépendances. Résous les avertissements concernant ton usage avant de le reprendre.

Retourne explicitement dans le dossier d’essai puis ouvre une nouvelle conversation :

Terminal · rejouer le même essai
cd "$essai_update" &&
cat repere.txt &&
hermes -p default chat

La variable essai_update existe dans le terminal conservé depuis l’étape 2. Si tu l’as fermé, utilise à la place le chemin exact que tu avais noté. Vérifie que le modèle et le fournisseur sont les mêmes, puis recopie la consigne de lecture de l’étape 2.

Le résultat attendu
Hermes démarre avec le contexte attendu, l’outil lit le même fichier et la réponse restitue « Projet : Silex » puis « Repère : cuivre-52 ». Le fichier reste inchangé. Compare aussi le cas qui motivait la mise à jour et les usages importants que tu avais retenus.

Une petite variation de formulation ne suffit pas à conclure à une régression. En revanche, un outil indisponible, une lecture inventée, une erreur nouvelle ou un service resté sur l’ancien code demandent une explication.

7. Consigner la décision avant de reprendre

Quelques lignes suffisent. Voici une trame à remplir avec tes résultats réels :

Note de maintenance · à compléter
  • Date, installation et profil d’essai.
  • Version avant → version après ; canal conservé.
  • Motif du changement et emplacement de la sauvegarde.
  • Essais rejoués, résultats et avertissements restants.
  • Décision : reprise du travail, ou arrêt sur un problème nommé.

Si les essais retenus passent et que les avertissements sont compris, reprends ton usage. Si un point important reste douteux, conserve les messages d’erreur et suspends cette reprise. Cherche d’abord quelle étape a échoué : installation, démarrage, accès au modèle, outil ou service.

Si un retour arrière devient nécessaire

Revenir au code précédent et restaurer des données sont deux opérations différentes. Une nouvelle version peut avoir modifié le format des sessions ; l’ancienne ne sait pas forcément le relire. Certaines rétrogradations sont donc refusées. Ne contourne pas ce refus avec un changement de version forcé.

Avant toute restauration, vérifie la procédure correspondant aux deux versions et conserve séparément les données nouvelles que tu souhaites garder. Restaurer une sauvegarde antérieure ne récupère pas les messages ni les résultats créés depuis. Le guide officiel de mise à jour détaille les migrations concernées et les limites des retours arrière.

Pour les installations avec plusieurs profils, gateways ou interfaces, prépare aussi la reprise de chaque service. Le tuto gateway aide à distinguer un processus lancé au premier plan d’un service installé.

Les options du parcours ont été recoupées avec les commandes update et backup, ainsi que le mécanisme de sauvegarde. Leurs détails peuvent différer sur une ancienne installation : l’aide de ta version et ses notes de mise à jour restent les premiers repères.

↑ Revenir au sommaire