Hermes v0.20.1 : 18 plateformes et 13 gains d'efficacité cachés que vous avez probablement manqués

Hier, vous avez lancé hermes update, le terminal a affiché « Updated to v0.20.1 », et c’était tout. Logique : v0.20.1 est une version de correctifs discrète : les notes officielles tiennent en quelques lignes et annoncent que la documentation complète « arrivera avec v0.21.0 ».
Mais derrière ce silence se cachent 656 PR fusionnées, 1 444 commits et 481 issues clôturées. Dissimulés là-dedans, 13 gains d’efficacité que les notes de version ne mentionnent jamais — des choses qui vous font gagner du temps et de l’argent chaque jour. Passons-les tous en revue.
Le changement phare : la liste des plateformes passe à 18
Au cours de la fenêtre v0.20.x, la documentation officielle des messageries couvre désormais 18 plateformes, toutes servies par un seul processus gateway :
Telegram, Discord, Slack, WhatsApp (API personnelle + Cloud), Signal, Email, Matrix, IRC, QQ, Yuanbao, Feishu, Weixin, iMessage (BlueBubbles), LINE, DingTalk, Google Chat et SMS.
Quelle que soit la plateforme utilisée, hermes gateway exécute un seul processus et les conversations passent naturellement d’une plateforme à l’autre.
Les 13 gains d’efficacité cachés
A. Des installations plus rapides et plus fiables (2)
1. L’installation Windows ne bloque plus indéfiniment (#85529 / #85539 / #81390)
L’étape « Installing Node.js dependencies » de l’installateur Windows pouvait rester bloquée indéfiniment — npm install et le téléchargement de Chromium n’avaient aucune limite de durée, et un utilisateur l’avait laissé tourner toute la nuit (un minuteur d’étape affichant 744:38). Désormais : chaque étape a un délai maximal, les échecs s’affichent clairement au lieu de prétendre réussir, « Already up to date » ne saute plus la réparation des dépendances cassées, et l’installateur peut se rétablir après un plantage.
2. L’actualisation du catalogue de modèles ne bloque plus les chemins critiques (#85555)
Le rafraîchissement de models.dev utilise désormais des GET conditionnels ETag : il ne re-télécharge que lorsque le contenu a réellement changé, et un chemin sans réseau garantit que le démarrage et le changement de modèle n’attendent plus le réseau.
B. Économisez des tokens, économisez de l’argent (2)
3. La mise en cache des prompts d’Anthropic est discrètement revenue (#85554)
Si vous utilisez un endpoint personnalisé compatible Anthropic (api_mode: anthropic_messages), la mise en cache des prompts (prompt caching) a pu être silencieusement perdue pendant la fenêtre v0.20.0 — désormais chaque modèle peut déclarer prompt_caching: true|false, et même les alias nus (ex. fable → claude-fable-5) retrouvent leurs points de rupture cache_control. Les conversations longues font des économies de tokens immédiates.
4. Le cache context_length ne peut plus être « empoisonné » (#85507 / #85509 / #85506)
Une entrée de cache corrompue (context_length: 0) empoisonnait toute la chaîne de résolution, infligeant un 0 permanent au compresseur et à tous les affichages. Désormais : les valeurs non positives sont refusées à l’écriture, le cache est écrit de manière atomique, et les sous-estimations obsolètes de 32K (la classe MiniMax/Kimi) sont supprimées puis re-résolues. Vos chiffres de fenêtre de contexte redeviennent fiables.
C. Reprise de session (1)
5. Reprendre une session restaure le modèle que vous utilisiez vraiment (#85261 / #85558)
hermes --resume ou /resume retombait silencieusement sur le modèle par défaut de la configuration — vous pouviez être sur Grok hier soir et reprendre sur autre chose sans vous en rendre compte. Désormais, le modèle, le provider et l’endpoint réels de la session sont restaurés, et les bascules /model enregistrent leur itinéraire complet dans la ligne de session.
D. Expérience de saisie CLI / bureau (3)
6. La saisie CLI gelée s’auto-répare (#85630)
Quand le terminal repassait en mode cooked, la CLI « cessait d’accepter la saisie » — auparavant, seul un stty externe pouvait sauver la situation. Désormais, la CLI détecte la dérive et s’auto-répare.
7. Les suggestion pills, trois correctifs en profondeur (#85661 / #85698 / #85091)
- Les pills attendent désormais la fin de votre mot avant de se déclencher (fini le « use skill: hermes-agent » qui surgissait juste parce que vous aviez mentionné un dépôt) ;
- Le répertoire de connexion MCP a plus que doublé (il ne couvrait auparavant que 8 fournisseurs) ;
- Le fantôme du « bouton cliqué une fois puis mort » a disparu.
8. La saisie pendant les prompts bloquants n’est plus perdue (#85045 / #84971)
Sur le bureau, les messages tapés pendant qu’une boîte de confirmation est affichée s’exécutent désormais au tour suivant, et les prompts en file d’attente fusionnent dans le tour en cours — fini le « j’ai pourtant bien tapé, pourquoi rien ne s’est passé ? »
E. Gateway / plateformes (3)
9. Les alertes cron disent enfin la vérité (#85536 / #85508)
Les échecs de tâches de script étaient signalés comme des « erreurs de provider » (et des 429 épars étaient mal appariés). Désormais, les échecs no_agent et script, les délais expirés, les chaînes de repli et les dérives sont tous rapportés honnêtement ; les alertes de dérive se déclenchent une fois par tâche au lieu d’une fois par tick.
10. La voix et le réveil ne bloquent plus tout le gateway (#85438)
voice.toggle / record / tts et wake.start / status sont désormais routés via un pool — une installation paresseuse synchrone de STT (faster-whisper, ~50 Mo, délai de 300 s) ne peut plus bloquer les envois WebSocket. Les commandes vocales et les réponses du modèle ne se disputent plus le même thread.
11. Des cartes live natives sur Slack (#85476)
Les réponses Slack diffusent désormais en messages live-typing natifs, avec des cartes de progression de plan/tâche en option — vous voyez ce que l’agent pense et où il en est, directement dans Slack.
F. Outils et sécurité des données (2)
12. La génération d’images ne contourne plus votre provider (#85520)
Le gestionnaire WebSocket image.generate appelait directement la feuille FAL intégrée, contournant silencieusement les providers d’images enregistrés par plugin et le routage Krea — un utilisateur de plugin a obtenu de mauvais résultats à cause de cela. Il passe désormais par le répartiteur de providers : c’est bien celui que vous avez configuré qui est utilisé.
13. state.db s’auto-répare : il survit même à un fichier de base de données remplacé (#84885 / #84886 / #84881)
- Si le fichier de base sous-jacent est remplacé sous une connexion active, une reconnexion auto-réparatrice limitée à un essai prend le relais au lieu de bloquer jusqu’au redémarrage ;
- Les erreurs EIO transitoires sont réessayées 4 fois ;
hermes sessions recover --allow-partialrécupère désormais les lignes de fin qui étaient silencieusement abandonnées, avec une voie lost_and_found en dernier recours ;- Les checkpoints WAL sont uniformément PASSIVE, jamais TRUNCATE.
(Cela prolonge le durcissement initié lors de l’incident d’amnésie des 798 messages — une couche de défense supplémentaire au niveau de la base de données.)
Comment mettre à jour
hermes update
Après la mise à jour, lancez hermes doctor pour confirmer que tout est sain, puis redémarrez le gateway (hermes gateway) afin que les changements de plateformes prennent effet.
Pour conclure
v0.20.1, c’est la version « cheval de trait discret » : pas de fanfare, mais 656 PR contenant exactement les correctifs dont vous aurez besoin un jour. Dix-huit plateformes, plus ces 13 gains d’efficacité — c’est une version que tout utilisateur de longue date devrait adopter.
Vous voulez aller plus loin ? Consultez les références des commandes hermes update, hermes sessions, hermes cron et hermes model ; la version majeure précédente est couverte par les notes de version v0.20.0.