Hermes Agent v0.20.5
Aperçu
v0.20.5 — The Housekeeping Release. Sortie le 19 août 2026. ~323 PR fusionnées · ~746 commits · ~1 250 fichiers modifiés (+111 500 / −20 701) depuis v0.20.4.
Cette fenêtre n’a pas de fonctionnalité phare unique — elle boucle une pile de choses longtemps attendues. L’essentiel : les discussions de groupe en Bot Mode acceptent enfin les fichiers — PDF, images et pièces jointes arbitraires via glisser-déposer, visibles par chaque bot qui répond au tour ; les conversations plus anciennes se replient en résumés d’une ligne pour que les salons cessent de défiler à l’infini ; et les avatars deviennent des visages blob déterministes dessinés à partir du nom de l’agent, avec quatre nouvelles silhouettes. Pour le développement quotidien, hermes worktree list/prune offre aux workflows multi-agents un canal sûr et supervisé pour récupérer les worktrees accumulés et les branches fusionnées ; hermes update --plan et les reçus de mise à jour structurés rendent enfin auditable ce qui s’est réellement passé pendant la mise à jour ; les tâches cron disposent d’une mémoire persistante comme tout autre agent et d’un effort de raisonnement par tâche ; et opencode-free devient un véritable modèle gratuit sans clé — aucune variable d’environnement, aucun compte, apparaissant directement dans /model et le sélecteur du desktop.
C’est une release corrective, les notes officielles sont donc brèves et la documentation complète suit avec v0.21.0. Cette page couvre les parties les plus utiles de cette fenêtre.
Points forts
1. Discussions de groupe en Bot Mode : les fichiers entrent, les anciens messages se replient
Les discussions de groupe étaient uniquement textuelles ; désormais les fichiers sont des citoyens de première classe : les salons acceptent les PDF, les fichiers et le glisser-déposer, et chaque bot répondant au tour voit les pièces jointes (#97b41f8cf, #b359db72e). Les longs salons cessent de défiler à l’infini — les conversations plus anciennes se replient automatiquement en résumés d’une ligne (« ▸ API design … 14 réponses · il y a 2 h ») tandis que la conversation la plus récente reste entièrement ouverte (#8505559fa).
Les avatars changent aussi de look : les avatars Bot Mode utilisent par défaut des visages blob déterministes dessinés à partir du nom de l’agent (même nom, même visage, à chaque fois), avec quatre nouvelles silhouettes issues de blobatar 2.0.0 (#a77ee88ce, #cb0fd836a).
2. hermes worktree list/prune — une récupération sûre des worktrees accumulés
Les workflows multi-agents (hermes -w / /worktree new) accumulent au fil du temps des dizaines d’arbres et des centaines de branches fusionnées sous .worktrees/. Le nettoyeur silencieux au démarrage ne touche que les arbres propres et entièrement fusionnés ; tout le reste traîne indéfiniment. Il existe désormais une récupération explicite, en mode dry-run d’abord :
hermes worktree list # audit : une ligne par arbre — âge, taille, verdict, raison
hermes worktree prune --dry-run # affiche le plan, ne change rien
hermes worktree prune # récupère les arbres sûrs + branches fusionnées
Les invariants de sécurité sont identiques à ceux du nettoyeur de démarrage : les modifications suivies ne sont jamais supprimées, quel que soit leur âge, les commits uniques non poussés ne sont jamais supprimés (l’équivalence de patch de git cherry décide de ce qui est « unique »), les arbres verrouillés en direct sont laissés intacts, une branche n’est supprimée qu’après la suppression réussie de son worktree, et les brouillons sans fichiers suivis sont archivés dans ~/.hermes/archive/worktree-prune/ avant que l’arbre ne soit récolté — les déchets disparaissent, le travail vivant reste (#f309f92d3).
3. hermes update --plan + reçus structurés — des mises à jour auditées
Le programme de mise à jour prouve désormais son résultat au lieu de le supposer (#0aecadc17, #1d74833d8) :
hermes update --plan: lecture seule. Liste le type d’installation (git/docker/nix), chaque service Hermes en cours d’exécution sur tous les profils avec son superviseur et la version de code en cours, et la manière dont chacun sera redémarré. Sans risque à exécuter sur une flotte en production.- Reçus structurés : chaque
hermes updateécrit un enregistrement JSON lisible par machine — ce qui a été découvert, fait, ignoré (et pourquoi) — dans<HERMES_HOME>/logs/update_receipts/. Après la phase de redémarrage, il lit legateway_state.jsonde chaque profil, compare lecode_shade chaque gateway actif avec le HEAD du checkout fraîchement mis à jour, et affiche une matrice des versions de la flotte — les flottes à versions mixtes (la classe #88654) deviennent un rapport clair et actionnable au lieu d’un état latent.
4. Les tâches cron ont de la mémoire — et un effort de raisonnement par tâche
Les tâches cron étaient construites avec skip_memory=True et un refus dur de la memory toolset, si bien que MEMORY.md/USER.md n’étaient jamais chargés et que l’outil de mémoire était retiré même des enabled_toolsets de la tâche. Les agents cron tournent désormais avec la mémoire persistante activée comme tout autre agent (#ef04d846e) : les tâches peuvent lire — et mettre à jour — votre mémoire persistante.
Chaque tâche peut aussi épingler son propre effort de raisonnement, indépendamment de agent.reasoning_effort global et des reasoning_overrides par modèle (#4e1dd1a74) :
# analyse planifiée lourde en high, tâche récurrente bon marché en minimal — la valeur globale reste inchangée
hermes cron create "0 7 * * *" --reasoning-effort high --prompt "Deep weekly repo-trend analysis"
hermes cron create "every 5m" --reasoning-effort minimal --prompt "Health check and report"
Niveaux : none/minimal/low/medium/high/xhigh/max/ultra. Les niveaux non pris en charge par un modèle sont plafonnés par le provider au moment de la requête (épingler xhigh sur un modèle plafonné à high s’exécute à high). Passez une chaîne vide à la modification pour effacer l’épinglage.
5. opencode-free : un modèle gratuit vraiment sans clé
opencode-free est désormais entièrement sans clé — aucune variable d’environnement, aucun compte, une liaison anonyme (#ca06b8768) — et la synchronisation anti-dérive du catalogue récupère les modèles gratuits OpenRouter en direct dans la liste tout en retirant les slugs morts (#624723130). Les providers sans clé comptent comme authentifiés partout : opencode-free apparaît dans /model et les sélecteurs du desktop sans aucune configuration (#2a2307e68).
hermes model # sélectionnez opencode-free — aucune clé requise
6. Discipline d’exécution et garde-fous contre les blocages
Une salve de durcissement « discipline d’exécution » issue des résultats de l’évaluation Composio : l’annulation de la review en arrière-plan est synchronisée avec la bonne priorité au premier plan (#37da0d4d5, #b883756b7), l’effort de raisonnement Ox Alpha arrive sur le fil plafonné sur les providers zen et free (#d4d04098a), et la décoration cache-control du prompt-caching est idempotente (#0fc52b055). Rien de spectaculaire à démontrer — mais les tâches de longue durée bloquent moins et consomment des tokens de manière plus prévisible.
Améliorations
- Performance du desktop : hydration Bot Mode en paint-first, spinners du compositeur, React Compiler dans les deux renderers — le desktop semble plus rapide et plus réactif.
- La modification de messages d’anciennes sessions ne plante plus (DB du profile + ordinal relatif à la fenêtre, #02e270a47).
- Les brouillons Telegram DM conservent leur mise en forme riche après le streaming (également pour les envois persistants frais, #790c85014, #216c98aae).
- Le bootstrap
API_SERVER_KEYdu stage2 Docker ne dépend plus de l’existence de.env(#7a17a1b8a). - Bot Mode : les tours longs des membres d’une discussion de groupe ne sont plus perdus (suivis #88885), le routage des groupes entre machines survit aux changements de connexion (#88921), un bot peut participer à plusieurs discussions de groupe à la fois (#88980).
Corrections
- La compaction native préserve les messages de résumé de compression lors de l’élagage avant checkpoint (#fb27614ad).
- Les tâches cron planifiées n’injectent plus MEMORY.md dans le prompt de la tâche (sémantique finale : les tâches peuvent lire/écrire la mémoire persistante, mais le planificateur ne fait aucune injection supplémentaire ; #fc9cbc872).
- Synchronisation anti-dérive du catalogue : les slugs gratuits morts sont retirés, les modèles gratuits OpenRouter en direct sont récupérés (#624723130).
- Gateway : l’exclusion du service orphan-reaper élargie à toute la flotte launchd ; indicateurs ps compatibles BSD + découverte des pid launchd sur tous les profils (#42bd567a8, #d8047c303).
- L’adaptateur OpenAI tolère les objets de réponse épars ; le relay déplie les flux paresseux terminés et utilise des noms d’opérations managées canoniques (#85581, #85579, #85582).
Mise à jour
hermes update
Après la mise à jour, lancez hermes doctor pour vérifier l’installation et redémarrez la gateway (hermes gateway) afin que les changements de plateforme prennent effet. Pour voir ce que la prochaine mise à jour touchera avant de l’exécuter : hermes update --plan.