Public visé et interface concrète
Ce guide connecte Hermes Agent à la mémoire persistante de XMemo. Hermes s'intègre via le paquet de plugin de mémoire natif maintenu hermes-xmemo (version 1.1.3) sur PyPI, rattaché au référentiel actif yonro/hermes-xmemo-plugin @ 30fe1bc20a (https://github.com/yonro/hermes-xmemo-plugin/blob/30fe1bc20a/README.md). Notez que le référentiel archivé yonro/xmemo-hermes-plugin @ eb47797a08 est uniquement une référence de migration héritée ; toutes les nouvelles installations utilisent hermes-xmemo.
Prérequis
Vérifiez la présence des dépendances d'exécution et des outils suivants avant de vous connecter :
- CLI et environnement d'exécution Hermes Agent installés (Python 3.10+).
- Installateur de paquets Python (pip).
- Compte XMemo valide sur https://xmemo.dev.
- Accès réseau à https://xmemo.dev/mcp via HTTPS.
Installation
Installez le fournisseur XMemo pour Hermes depuis le marché officiel des plugins Hermes. Si votre version de Hermes ne propose pas la commande du marché de plugins, utilisez la solution de repli PyPI épinglée.
hermes plugins install xmemo
# Fallback for older Hermes versions
pip install hermes-xmemo
hermes memory setup xmemoAutorisation et configuration des identifiants
Configurez l'authentification à l'aide d'une variable d'environnement ou de la configuration Hermes. Ne validez jamais de jetons porteurs bruts dans le contrôle de version :
- Variable d'environnement (recommandé) : Définissez XMEMO_KEY dans le shell ou l'environnement lançant Hermes (export XMEMO_KEY='<your-xmemo-token>').
- Assistant de configuration Hermes : L'exécution de hermes memory setup xmemo demande les identifiants et configure ~/.hermes/config.yaml.
- Vérification de la configuration : Vérifiez que ~/.hermes/config.yaml contient memory.provider défini sur xmemo.
Comportement de chargement et de redémarrage
Les procédures de redémarrage du démon ou de rechargement de session ne sont pas explicitement documentées dans le README du plugin hermes-xmemo (https://github.com/yonro/hermes-xmemo-plugin/blob/30fe1bc20a/README.md) ; consultez la documentation de l'hôte Hermes Agent ou redémarrez votre session active de terminal Hermes.
Vérification de la connexion (lecture seule)
Vérifiez la connectivité avec une requête de rappel (recall) en lecture seule avant d'écrire des données durables. Cette vérification ne modifie pas l'état de la mémoire :
- Vérification : Démarrez une session de test Hermes et lancez une requête active de rappel en lecture seule pour le contexte de projet existant.
- Indicateur de succès : Hermes renvoie des résultats de mémoire structurés comportant des champs Reference et Location valides issus de l'espace de travail autorisé.
Première tâche utile : Cycle de vie d'une mémoire synthétique
Vérifiez la persistance de la mémoire, la transition de session sans état, le rappel avec attribution de la source et la correction :
- 1. Enregistrer un fait synthétique : Stockez une convention de projet ("Hermes demo conventions: UTC logging with ISO 8601 timestamps.") dans "projects/demo-hermes/conventions".
- 2. Transition sans état : Terminez la conversation Hermes actuelle et commencez une nouvelle session.
- 3. Rappel avec attribution de la source : Interrogez "demo conventions timestamp format". Confirmez les valeurs renvoyées pour Reference et Location.
- 4. Corriger la mémoire : Mettez à jour la convention mémorisée à l'aide de update_memory avec les règles de mise en forme actualisées.
- 5. Nettoyage optionnel : Supprimez de manière réversible (forget) la convention de démonstration une fois la vérification d'intégration achevée.
Capture automatique et prévention des doublons
Hermes Agent assure une capture automatique du contexte à travers les frontières d'exécution :
- Points de contrôle de session : Lorsqu'il est activé dans ~/.hermes/config.yaml, Hermes capture les résumés de session et les décisions clés aux étapes charnières de la session.
- Prévention des doublons : La déduplication intégrée par hachage du contenu garantit que les faits et décisions identiques ne sont pas réécrits de façon répétée au cours des boucles d'exécution itératives.
- Frontière de portée : Chaque mémoire capturée est strictement isolée dans l'espace de travail de l'utilisateur authentifié et dans le périmètre du projet actif.
Conflits de fournisseurs et limites de stockage
Comprenez l'isolation à l'exécution et la propriété du stockage :
- Conflits de fournisseurs : N'activez pas plusieurs fournisseurs de mémoire simultanément dans ~/.hermes/config.yaml. L'utilisation conjointe de fournisseurs se chevauchant entraîne des incohérences de rappel (split-brain).
- Propriété du stockage : Toutes les mémoires durables résident dans le backend cloud XMemo appartenant à l'utilisateur. Hermes ne conserve qu'un cache local éphémère pour la réactivité de la session.
- Limites hors ligne et de rejeu : Les interruptions passagères du réseau sont gérées par un tampon d'écriture local limité ; les écritures hors ligne échouent lorsque le tampon sature ou que le jeton expire, et les actions non validées ne sont pas répliquées vers d'autres agents avant la reconnexion.
Récupération, mise à jour et suppression
Procédures de dépannage, de mise à jour et de suppression pour Hermes :
- Récupération (401 invalid_token) : Vérifiez que XMEMO_KEY est définie dans l'environnement de shell actuel ou la configuration de Hermes.
- Mise à jour : Les commandes de mise à jour du plugin ne sont pas documentées dans le README du plugin hermes-xmemo (https://github.com/yonro/hermes-xmemo-plugin/blob/30fe1bc20a/README.md) ; exécutez pip install --upgrade hermes-xmemo ou consultez la documentation de l'hôte Hermes.
- Suppression (README ligne 292) : Pour désactiver le fournisseur de mémoire dans Hermes, exécutez la commande de suppression documentée : hermes config set memory.provider "".
- Suppression locale vs suppression à distance : La désactivation du fournisseur local ne supprime pas les mémoires distantes stockées et ne révoque pas les identifiants API ; supprimez les mémoires ou révoquez les clés sur https://xmemo.dev/me.
hermes config set memory.provider ""Source : Intégration Hermes