Hermes Agent v0.7.0 — La Version Résilience
Aperçu
v0.7.0 — La Version Résilience. Publiée le 3 avril 2026. 168 PRs fusionnées · 46 problèmes résolus · des centaines de fichiers modifiés.
La v0.7.0 poursuit un seul objectif — la résilience. Pas de fonctionnalités tape-à-l’œil. Juste des réponses méthodiques aux questions auxquelles tout déploiement d’agent en conditions réelles doit faire face : Que se passe-t-il quand votre clé API atteint son quota ? Quand le navigateur est détecté ? Quand le backend mémoire n’est pas assez flexible ? Quand le Gateway plante sous la concurrence ? Quand des secrets fuient via les sorties du LLM ?
La réponse est la même à chaque fois : Hermes gère désormais la situation.
Fonctionnalités Majeures
1. Interface de Fournisseur de Mémoire Interchangeable
Le système de mémoire a été refactorisé, passant d’une implémentation unique intégrée à une architecture de plugins extensible. Les backends mémoire tiers — Honcho, bases de données vectorielles, stockage personnalisé — implémentent une interface ABC simple et s’enregistrent via le système de plugins. La mémoire intégrée est le fournisseur par défaut ; Honcho a été restauré à parité fonctionnelle complète en tant que plugin de référence, avec résolution hôte/pair limitée au profil.
Choisissez le backend mémoire adapté à la tâche : intégré pour le dev et les tests, Honcho pour le stockage persistant en production, ou branchez votre propre base vectorielle pour la mémoire sémantique.
2. Pools de Credentials par Fournisseur — Dites Adieu aux Rate Limits
Configurez plusieurs clés API pour le même fournisseur. Le système répartit automatiquement la charge entre les clés en utilisant une stratégie least_used thread-safe. Quand une clé retourne une 401, le système bascule vers le credential suivant du pool — aucune intervention manuelle nécessaire.
# config.yaml
credential_pool:
openai:
- sk-key-1
- sk-key-2
- sk-key-3
Activez via l’assistant de configuration ou en éditant credential_pool directement dans la config. Pour les utilisateurs intensifs, cela élimine pratiquement les interruptions de workflow dues à l’épuisement du quota d’une seule clé.
3. Backend Navigateur Anti-Détection Camofox
Un tout nouveau backend de navigateur local basé sur Camoufox (Camouflage + Firefox) pour la navigation furtive. Pour les scénarios d’automatisation web qui nécessitent de contourner la détection anti-bot — scraping, remplissage de formulaires, tests automatisés — Camofox est nettement plus difficile à détecter pour les sites cibles que le Chromium headless traditionnel.
Capacités clés :
- Sessions persistantes : l’état du navigateur est préservé entre les appels
- Découverte d’URL VNC : expose automatiquement une connexion VNC pour le débogage visuel
- Contournement SSRF des backends locaux : accès configurable aux adresses internes
- Installation en une commande :
hermes tools install camofox
# Installer Camofox
hermes tools install camofox
# Configurer Camofox comme backend navigateur
hermes config set browser.backend camofox
4. Aperçus de Diff en Ligne
Les opérations d’écriture de fichier et de patch affichent désormais des diffs en ligne directement dans le flux d’activité des outils. Avant que l’agent ne passe à l’étape suivante, vous voyez exactement ce qui a changé — ajouts et suppressions surlignés, ligne par ligne.
C’est plus rapide que de lancer manuellement git diff ou de revenir en arrière pour comparer. Tout s’affiche en temps réel dans votre terminal.
5. Continuité de Session du Serveur API & Streaming d’Outils
Le serveur API (utilisé par Open WebUI et d’autres intégrations frontend) reçoit deux améliorations critiques :
- Progression des outils en streaming temps réel : les événements intermédiaires d’exécution d’outils sont diffusés via SSE aux clients
- En-tête
X-Hermes-Session-Id: conserve la même session à travers plusieurs requêtes HTTP, avec les données de session persistées dans la SessionDB partagée
L’expérience Web UI se rapproche désormais de la parité avec le CLI — vous pouvez voir en temps réel quels outils l’agent appelle et où il en est dans le flux d’exécution.
6. ACP : Serveurs MCP Fournis par le Client
Les intégrations d’éditeur (VS Code, Zed, JetBrains) via ACP (Agent Communication Protocol) peuvent désormais enregistrer leurs serveurs MCP directement comme outils de l’agent. L’écosystème MCP de votre éditeur — analyse de code, capacités LSP, indexation de projet — s’intègre de manière transparente aux appels d’outils d’Hermes.
(#4705)
7. Renforcement du Gateway & Blocage de l’Exfiltration de Secrets
Le Gateway (hub de plateformes de messagerie) a reçu une passe de stabilité majeure, accompagnée d’un renforcement systémique de la sécurité.
Correctifs de stabilité du Gateway :
- Correction de race conditions pour la perte de médias photo, le flood control et les sessions bloquées
- Correction du routage d’approbation :
/approveet/denysont désormais correctement routés lorsque l’agent est bloqué en attente d’approbation
Blocage de l’exfiltration de secrets :
- Les URL du navigateur et les réponses du LLM sont automatiquement analysées à la recherche de motifs de secrets (clés API, tokens, mots de passe)
- Bloque l’exfiltration via encodage d’URL, encodage Base64 ou vecteurs de prompt injection
- La sortie du sandbox
execute_codeest automatiquement expurgée - Protection des répertoires de credentials étendue à
.docker,.azure,.config/gh
(#4727, #4750, #4483, #4360, #4305)
Agent Principal & Architecture
Support des Fournisseurs & Modèles
- Pools de credentials par fournisseur — rotation automatique multi-clés
least_used+ basculement sur 401 - Pool de credentials préservé lors du routage intelligent — l’état du pool survit aux basculements de fournisseur, reporte le basculement anticipé sur 429
- Restauration du runtime principal à chaque tour — après un basculement, restaure automatiquement le fournisseur principal au tour suivant avec récupération du transport
- Rôle
developerpour GPT-5 / Codex — utilise le rôle de message système recommandé par OpenAI pour les modèles récents - Guidance opérationnelle pour les modèles Google — Gemini et Gemma reçoivent une guidance de prompting spécifique au fournisseur
- Gestion du 429 sur contexte long d’Anthropic — réduit automatiquement le contexte à 200K en cas de dépassement des limites de tier
- Nouveaux modèles : Claude-sonnet-4.6 (listes de modèles OpenRouter / Nous), Qwen 3.6 Plus Preview, MiniMax M2.7
- Détection automatique de la longueur de contexte Fireworks
- Correction du endpoint international DashScope — le fournisseur Alibaba n’est plus codé en dur vers la mauvaise adresse
context_lengthdes fournisseurs personnalisés respecté lors de la compression- Clés non-sk-ant traitées comme des clés API standard, pas comme des tokens OAuth
- Détection automatique des modèles par sondage du serveur lors de la configuration de endpoints personnalisés
- Config.yaml comme source unique de vérité pour les URL de endpoint — fin des conflits variables d’env vs config.yaml
- L’assistant de configuration n’écrase plus la config de endpoint personnalisé
- Sélection unifiée du fournisseur dans l’assistant avec
hermes model— chemin de code unique
Boucle d’Agent & Conversation
- Préservation des signatures des blocs de réflexion Anthropic à travers les tours d’utilisation d’outils
- Classification des réponses vides think-only avant nouvelle tentative — empêche les boucles infinies sur les modèles qui produisent des blocs de réflexion sans contenu
- Prévention de la spirale mortelle de compression due aux déconnexions API — la boucle où la compression se déclenche, échoue, puis se compresse à nouveau est désormais détectée et stoppée
- Compression en cours d’exécution persistée dans la session gateway
- Messages d’erreur de dépassement de contexte incluent désormais des conseils pratiques
- Suppression des balises
</think>orphelines des réponses destinées à l’utilisateur - Durcissement du preflight des réponses Codex et gestion des erreurs de stream
- Fallbacks déterministes pour call_id — fin des UUID aléatoires, préservant la cohérence du cache de prompts
- Avertissements de pression de contexte intempestifs évités après compression
- AsyncOpenAI créé de manière paresseuse — évite les erreurs de boucle d’événements fermée dans le compresseur de trajectoire
Mémoire & Sessions
- Parité d’intégration complète d’Honcho restaurée en tant que plugin fournisseur de mémoire de référence (par @erosika)
- Honcho avec résolution hôte et pair limitée au profil
- État de vidage mémoire persisté — empêche les re-vidages redondants au redémarrage du gateway
- Outils du fournisseur de mémoire routés via le chemin d’exécution séquentiel
- Config Honcho écrite dans le chemin local à l’instance pour l’isolation des profils
- Sessions du serveur API persistées dans la SessionDB partagée
- Utilisation des tokens persistée pour les sessions non-CLI
- Termes entre guillemets dans les requêtes FTS5 — corrige la recherche de sessions pour les termes contenant des points (ex. numéros de version)
Plateformes de Messagerie (Gateway)
Noyau Gateway
- Correction de race conditions — perte de médias photo, flood control, sessions bloquées, problèmes de config STT résolus en une seule passe de renforcement
- Correction du routage d’approbation —
/approveet/denysont correctement routés lorsque l’agent est bloqué en attente, au lieu d’être avalés comme des interruptions - Reprise de l’agent après
/approve— le résultat de l’outil n’est plus perdu lors de l’exécution de commandes bloquées - Sessions de thread DM amorcées avec la transcription parente pour préserver le contexte
- Commandes slash conscientes des compétences — le gateway enregistre dynamiquement les compétences installées comme commandes slash avec une liste
/commandspaginée - Compétences désactivées par plateforme respectées dans le menu Telegram et le dispatch du gateway
- Suppression des avertissements de compression destinés à l’utilisateur — flux de messages plus propre
- Flags
-v/-qdu service Gateway reliés à la journalisation stderr - HERMES_HOME remappé vers l’utilisateur cible dans l’unité de service systemd
- Valeur par défaut respectée pour les valeurs de config de type booléen invalides
/updateutilise setsid au lieu de systemd-run — évite les problèmes de permissions systemd- « Initializing agent… » affiché au premier message pour une meilleure UX
- Exécution du service gateway en tant que root autorisée — support des environnements LXC/conteneurs
Telegram
- Limite de 32 caractères sur les noms de commande + évitement des collisions
- Ordre de priorité appliqué dans le menu — core > plugins > compétences
- Plafonné à 50 commandes — l’API Telegram rejette au-delà d’environ 60
- Ignorer le texte vide/espaces pour éviter les erreurs 400
- Tests E2E du gateway (par @pefontana)
Discord
- UI d’approbation par boutons — enregistrement de
/approveet/denycomme commandes slash natives avec boutons interactifs - Réactions configurables — option
discord.reactionspour contrôler les réactions de traitement des messages - Ignorer les réactions et l’auto-threading pour les utilisateurs non autorisés
Slack
- Réponse dans le fil — option de config
slack.reply_in_thread, répondant à une demande de la communauté qui datait d’un an
- Application de
require_mentiondans les groupes — ne répond que lorsque explicitement mentionné
Webhook
- Correctifs de support de plateforme — ignorer le prompt du canal d’accueil, désactiver la progression des outils pour les adaptateurs webhook
Matrix
- Durcissement du déchiffrement E2EE — demande des clés manquantes, confiance automatique des appareils, nouvelle tentative des événements mis en mémoire tampon
CLI & Expérience Utilisateur
Nouvelles Commandes Slash
| Commande | Description |
|---|---|
/yolo |
Basculer les approbations de commandes dangereuses — ignorer toutes les confirmations pour la session |
/btw |
Question latérale éphémère (By The Way) — n’affecte pas le contexte de conversation principal |
/profile |
Afficher les infos du profil actif sans quitter la session de chat |
# Mode YOLO : ignorer toutes les demandes d'approbation
/yolo
# Poser une question sans rapport sans polluer le contexte
/btw quel algorithme utilise cette fonction ?
# Vérification rapide du profil
/profile
CLI Interactive
- Aperçus de diff en ligne pour les opérations d’écriture et de patch dans le flux d’activité des outils
- TUI ancré en bas au démarrage — fin des grands espaces vides entre la réponse et la zone de saisie
/historyet/resumeaffichent directement les sessions récentes au lieu de nécessiter une recherche/insightsaffiche les tokens de cache — les totaux sont désormais corrects- Flag CLI
--max-turnspourhermes chatafin de limiter les itérations de l’agent - Détection des chemins de fichiers glissés — ne sont plus traités comme des commandes slash (par @rolme)
config setprend en charge les chaînes vides et les valeurs falsy- Mode vocal dans WSL lorsque le pont PulseAudio est configuré
- Respect de
NO_COLORetTERM=dumbpour l’accessibilité (par @SHL0MS) - Code de sortie correct en mode silencieux — les requêtes
-qréussies retournent 0 au lieu d’une valeur non nulle (par @devorun) - Le hook
on_session_endse déclenche lors des sorties interrompues - La liste des profils lit correctement la clé
model.default
Installation & Configuration
allowed_userspréservé lors de l’installation + avertissements silencieux pour les fournisseurs non configurés (par @kshitijk4poor)- Enregistrement de la clé API dans la config du modèle pour les endpoints personnalisés
- Credentials Claude Code conditionnés à une config Hermes explicite dans le déclencheur de l’assistant
- Écritures atomiques dans save_config_value — empêche la perte de config en cas d’interruption
- Champ scopes écrit dans les credentials Claude Code lors du rafraîchissement du token
Système de Mise à Jour
- Détection de fork et synchronisation upstream dans
hermes update— prend en charge les repos forkés - Préservation des extras optionnels fonctionnels quand un extra échoue pendant la mise à jour
- Gestion de l’index git en conflit — processus de mise à jour plus fiable
- Évitement de la race de redémarrage launchd sur macOS
- Instruction de rechargement du shell correcte pour les utilisateurs macOS/zsh
- Timeouts
subprocess.run()ajoutés aux commandes doctor et status
Système d’Outils
Navigateur
- Backend navigateur anti-détection Camofox — installation en une commande via
hermes tools install camofox - Sessions Camofox persistantes + découverte automatique d’URL VNC
- Contournement du check SSRF pour les backends locaux — Camofox, Chromium headless
- Check SSRF configurable — option
browser.allow_private_urls(par @nils010485) - CAMOFOX_PORT=9377 ajouté aux commandes Docker
Opérations sur Fichiers
- Aperçus de diff en ligne sur les actions d’écriture et de patch — voyez les ajouts et suppressions avec surlignage
- Détection de fichiers obsolètes — avertit quand un fichier a été modifié extérieurement depuis la dernière lecture avant de l’écraser
- Horodatage d’obsolescence rafraîchi après les écritures
read_fileavec garde de taille, déduplication et blocage de périphériques
MCP
- Pack de correctifs de stabilité — timeout de rechargement, nettoyage à l’arrêt, handler de boucle d’événements, démarrage non-bloquant OAuth
Système de Compétences
- Limites de taille pour les écritures de l’agent + fuzzy matching pour le patch de compétences — empêche les écritures surdimensionnées, améliore la fiabilité des modifications
- Validation des chemins des bundles hub avant installation — bloque la traversée de chemin dans les bundles de compétences
- Unification de
hermes-agentethermes-agent-setupen une seule compétence - Vérification du type de métadonnées de compétence dans
extract_skill_conditions
Compétences Nouvelles & Mises à Jour
- research-paper-writing — pipeline de recherche complet de bout en bout, remplaçant
ml-paper-writing(par @SHL0MS) - ascii-video — techniques de lisibilité du texte et oracle de mise en page externe (par @SHL0MS)
- youtube-transcript mis à jour pour
youtube-transcript-apiv1.x (par @el-analista) - Page de navigation et recherche des compétences ajoutée au site de documentation (par @IAvecilla)
Sécurité & Fiabilité
Renforcement de la Sécurité
- Blocage de l’exfiltration de secrets via les URL du navigateur et les réponses du LLM — analyse les motifs de secrets dans l’encodage d’URL, Base64 et les vecteurs de prompt injection
- Expurgation des secrets de la sortie du sandbox
execute_code— les informations sensibles sont automatiquement remplacées - Protection des répertoires de credentials
.docker,.azure,.config/ghcontre la lecture/écriture via les outils de fichiers et le terminal (par @memosr) - Motifs de tokens OAuth GitHub ajoutés à l’expurgation + flag d’expurgation des snapshots
- Rejet des IP privées et loopback dans le fallback DoH Telegram
- Rejet de la traversée de chemin dans l’enregistrement des fichiers de credentials
- Validation des chemins des membres d’archive tar lors de l’import de profil — bloque les attaques zip-slip
- Exclusion de
auth.jsonet.envdes exports de profil
Fiabilité
- Prévention de la spirale mortelle de compression — la boucle de déconnexion API est détectée et stoppée au lieu de tourner indéfiniment
is_closeddu SDK OpenAI en tant que méthode et non propriété — corrige les faux positifs de détection de fermeture du client- Exclusion de Matrix des extras
[all]— python-olm est cassé en amont, empêche les échecs d’installation - Routage des modèles OpenCode réparé
- Image du conteneur Docker optimisée (par @bcross)
Windows & Multi-Plateforme
- Mode vocal dans WSL avec pont PulseAudio
- Préparation du packaging Homebrew
- Conditionnels de fork CI — empêche les échecs de workflow sur les forks
Corrections de Bugs Notables
- L’approbation du Gateway bloquait le thread de l’agent — l’approbation bloque désormais comme le fait le CLI, empêchant la perte de résultats d’outils
- Spirale mortelle de compression due aux déconnexions API — détectée et stoppée au lieu de boucler
- Blocs de réflexion Anthropic perdus à travers les tours d’utilisation d’outils — les signatures sont désormais correctement préservées
- Config de modèle de profil ignorée avec le flag
-p—model.modelcorrectement promu enmodel.default - Espace vide dans le CLI entre la réponse et la zone de saisie — TUI ancré en bas
- Chemins de fichiers glissés traités comme des commandes slash au lieu de références de fichiers — désormais correctement détectés
- Balises
</think>orphelines fuyant dans les réponses destinées à l’utilisateur — désormais supprimées is_closeddu SDK OpenAI est une méthode, pas une propriété — faux positif de fermeture du client corrigé- Le serveur OAuth MCP bloquait le démarrage d’Hermes — se dégrade désormais proprement
- Boucle d’événements MCP fermée à l’arrêt — scénario du serveur HTTP corrigé
- Fournisseur Alibaba codé en dur vers le mauvais endpoint — basculé vers le endpoint international DashScope standard
- Config
reply_in_threadSlack manquante — support complet ajouté - Code de sortie non nul en mode silencieux — les requêtes
-qréussies retournent désormais correctement 0 - Barre latérale mobile affichant uniquement le bouton de fermeture à cause d’un problème de backdrop-filter dans le site de documentation (par @xsmyile)
- Restauration de config annulée par un squash merge de branche obsolète —
_config_versioncorrigé
Tests
- Tests E2E du gateway Telegram — suite complète de tests d’intégration (par @pefontana)
- 11 échecs de tests réels corrigés + empoisonneur de cascade sys.modules résolu
- 7 échecs CI résolus dans les tests de hooks, plugins et compétences
- Tests de rafraîchissement Codex 401 mis à jour pour la compatibilité CI
- Test obsolète OPENAI_BASE_URL corrigé
Documentation
- Audit complet de la documentation — 9 lacunes HIGH et plus de 20 lacunes MEDIUM corrigées dans 21 fichiers
- Navigation du site restructurée — Fonctionnalités et Plateformes promues au niveau supérieur
- Streaming de progression des outils documenté pour le serveur API et Open WebUI
- Mode webhook Telegram documenté
- Guides des fournisseurs LLM locaux — guides de configuration complets avec avertissements sur la longueur de contexte
- Comportement de la liste d’autorisation WhatsApp clarifié avec la documentation
WHATSAPP_ALLOW_ALL_USERS - Options de configuration Slack — nouvelle section de config dans la documentation Slack
- Section des backends de terminal étendue + correctifs de build de la documentation
- Guide d’ajout de fournisseurs mis à jour pour le flux de configuration unifié
- Config ACP Zed corrigée
- Entrées FAQ communautaire pour les workflows courants et le dépannage
- Page de navigation et recherche des compétences en ligne sur le site de documentation
Mise à Niveau
hermes update
Pour les nouvelles installations, consultez le guide d’installation.
Journal des modifications complet sur GitHub
← Hermes Agent Changelog