hermes chat -c : reprenez votre propre session par terminal, ou créez-la à la volée

Vous gardez deux panneaux tmux ouverts : celui de gauche débugge un incident Redis en production, celui de droite esquisse une nouvelle conception d’API. Vous vous éloignez en plein travail, vous revenez, et vous tapez hermes chat -c pour reprendre là où vous vous étiez arrêté — sauf que les deux panneaux se retrouvent entraînés dans la même conversation : les erreurs Redis d’un côté, les signatures d’interface de l’autre. Le chaos total.
C’était le comportement de -c avant v0.20.2 : il reprenait toujours la session la plus récente à l’échelle globale, sans savoir dans quel terminal vous vous trouviez réellement. Cela vient de changer — Hermes tient désormais un petit registre pour chaque terminal.
Breadcrumbs de terminal : chaque panneau a sa propre mémoire de session
v0.20.2 introduit les breadcrumbs de terminal (PR #87346) : la CLI enregistre « dans quelle session ai-je discuté en dernier, dans CE terminal » pour chaque terminal — tty réel, panneau tmux, fenêtre kitty, panneau wezterm, panneau Zellij ou session Windows Terminal.
Les breadcrumbs vivent dans $HERMES_HOME/terminal-sessions/, un fichier JSON par terminal contenant l’ID de session, le répertoire de travail et l’horodatage. Les écritures sont atomiques (fichier temporaire + os.replace), au mieux-effort, ne lèvent jamais d’exception ; les enregistrements de plus de 30 jours sont ignorés à la lecture et purgés de manière opportuniste à l’écriture. L’identité du terminal est dérivée par ordre de priorité : chemin du tty réel → ZELLIJ_PANE_ID → TMUX_PANE → KITTY_WINDOW_ID → WEZTERM_PANE → TERM_SESSION_ID → WT_SESSION — et si rien n’est disponible, les breadcrumbs sont tout simplement ignorés.
Ainsi, désormais :
# in pane 1
hermes chat -c # resumes pane 1's own last session (the Redis one)
# in pane 2
hermes chat -c # resumes pane 2's own last session (the API one)
Chaque panneau retourne à sa propre conversation. Pour reprendre par nom, il suffit de le nommer :
hermes chat -c "redis debug"
La recherche par nom échoue désormais bruyamment
Avec un nom, -c effectue une correspondance par titre ou par ID de session. Avant v0.20.2, un échec était un no-op silencieux — dans un script, cela ressemblait à une reprise réussie, mais vous vous retrouviez en réalité dans une conversation vierge, sans aucun de votre contexte.
Désormais (PR #87706), un échec de correspondance affiche immédiatement une erreur sur stderr et se termine avec le code 1, plus une indication :
No session found matching 'redis debug'.
Use 'hermes sessions list' to see available sessions, or pass
--create-if-missing to start a new session with that title.
Pour les auteurs de scripts, c’est énorme : l’échec silencieux devient un échec détectable. Les jobs CI et les tâches cron obtiennent enfin un retour explicite lorsque la session cible n’existe pas.
–create-if-missing : créez-la si elle manque
Avec le nouveau flag --create-if-missing, « reprendre par nom » devient « reprendre par nom, en créant si nécessaire » :
hermes chat -c "redis debug" --create-if-missing
Quand rien ne correspond, la CLI crée une toute nouvelle session intitulée « redis debug » et vous y dépose. L’ID de session utilise le format standard timestamp_UUID-short, et le titre est enregistré avec la provenance utilisateur — l’auto-titreur n’écrasera pas le nom que vous avez choisi manuellement.
Cette combinaison est particulièrement précieuse pour les appelants programmatiques : un plugin ou un script qui veut « envoyer vers ce fil nommé, en le créant si besoin » dispose enfin d’une primitive déterministe en une seule ligne. À noter : --create-if-missing n’a de sens qu’avec un -c nommé ; un -c nu n’a rien à créer, et la CLI vous demande de fournir un nom.
Depuis le bureau aussi
Le menu des sessions de l’application de bureau v0.20.2 permet aussi de « reprendre dans votre propre terminal » — choisissez n’importe quelle session et ramenez-la dans un vrai terminal (#86338, fusionné le 14/08). Combiné à hermes sessions list, le flux de travail est fluide :
hermes sessions list # find the target session
hermes chat -c "target title" # resume it
hermes chat -c "new title" --create-if-missing # or just create one
Résumé
- Breadcrumbs : chaque terminal se souvient de sa propre dernière session ;
-cne mélange plus les panneaux dans une même conversation ; - Échec bruyant : les recherches par nom sans résultat affichent sur stderr et se terminent avec le code 1 — détectable par les scripts ;
- Création automatique :
--create-if-missingfait de « envoyer vers un fil nommé, en le créant si besoin » une simple ligne ; - Faites équipe : le bureau peut rendre une session à votre terminal, et
hermes sessions listest le point d’entrée pour en trouver une.
Pour tirer le meilleur de vos sessions, consultez le guide d’export de session /save et multi-profile multi-instance ; le tableau complet des flags de -c se trouve dans la référence de la commande hermes chat. Tout cela est disponible par défaut après hermes update vers v0.20.2.