Hermes Agent Lab

Blog Hermes Agent — Guides Pratiques et Analyses

Derniers articles et perspectives.

Pourquoi un skill tout neuf renvoie zéro résultat dans une recherche

Une recherche de skills sans filtre est servie par un index central reconstruit périodiquement, si bien qu’un skill publié il y a quelques minutes peut manquer alors même qu’il existe. Les changements du 16 au 18 septembre comblent l’écart : un échec de l’index interroge désormais à nouveau skills.sh, ClawHub, LobeHub et des endpoints bien connus dans un budget de 8 secondes, et la construction de l’index ne laisse plus tomber silencieusement des skills quand un shard expire.

Lire la suite

Piloter son agent depuis un train : guide de terrain du WebUI communautaire

Hermes WebUI est un projet communautaire d’environ 18K étoiles qui transpose les capacités de la CLI dans un navigateur : du Python et du JavaScript vanilla, aucune étape de build, un service lié à localhost par défaut, avec tunnel SSH ou Tailscale pour l’accès depuis un téléphone et, en option, une connexion par mot de passe, passkey ou OIDC. Voici comment l’installer, l’exposer sans risque, et où se situent ses limites.

Lire la suite

Pourquoi l'ouverture d'une liste déroulante vous coûte trois secondes

Un spinner dans le sélecteur de modèle, un `hermes plugins list` qui reste figé, un panneau Profiles qui perd des frames — trois blocages d'apparence indépendants avec une seule cause : le chemin de lecture faisait discrètement des sondages réseau et des parcours du système de fichiers. Les PR #114994, #114811 et #114879 ont sorti le cache, la mémoire des échecs et les refresh de ce chemin.

Lire la suite

Hermes ne récupère plus n'importe quelle URL qu'on lui tend

Des URL d'images renvoyées par un provider de génération, des images de référence fournies par un modèle, les manifests et spritesheets du pet store, des entrées de sitemap skills.sh — aucune de ces URL ne vient de vous. La PR #114887 fait passer sept points de récupération par le garde-fou SSRF déjà présent dans le dépôt : contrôle avant la requête, recontrôle à la connexion TCP (ce qui ferme la fenêtre de DNS rebinding), recontrôle à chaque saut de redirection, et échec en mode fermé sur un 3xx sans en-tête Location.

Lire la suite

La clé API que vous avez affichée une seule fois ne doit pas finir dans un journal de conversation

Deux correctifs ont atterri le même jour pour fermer deux fuites de secrets : la PR #114839 masque intégralement les clés sk- contenant des points et les clés id.secret sans préfixe de Zhipu dans la sortie des outils, et la PR #114789 impose le masquage sur chaque voie de livraison des cron — chat, miroir de session, nom de job, chat de bot — en échouant en mode fermé plutôt qu'en expédiant le texte brut.

Lire la suite

Votre provider de mémoire a quitté le core — la mise à jour le remet en place

Les providers de mémoire intégrés migrent vers les dépôts de leurs mainteneurs et vers le catalogue de plugins. La PR #114569 ajoute deux hooks : hermes update et l'init de l'agent repèrent chacun un provider configuré dont le code a disparu et le réinstallent au pin revu du catalogue. Le nom, la config memory.<name>, le répertoire de données et les noms d'outils ne changent pas.

Lire la suite

1,393 subagents, 19 heures, un seul ordinateur : comment Nous a refactorisé un million de lignes avec Hermes

Un /goal, 19 heures et 1,393 subagents ont retiré 34.4% des lignes de source du propre dépôt de Hermes. Voici les mesures officielles, les neuf choses qui cassent à cette échelle, et la marche à suivre pour reproduire l'opération dans votre propre base de code.

Lire la suite

Un script de 16 KB a gelé un gateway pendant 23 secondes : l'autopsie du scan de commandes

Confiez à Hermes un heredoc de quelques centaines de lignes et votre bot Telegram cesse de répondre — une regex synchrone retient la boucle d'événements. L'issue #113535 et la PR #114208 expliquent le chemin O(n³) et pourquoi la version corrigée aboutit à des verdicts identiques.

Lire la suite

Cessez de laisser les images dévorer votre quota : les deux réglages de vision qui valent la peine

Les images intégrées nativement sont renvoyées à chaque appel API ultérieur, et l'ancienne politique de retrait pouvait réécrire 120 000 tokens d'historique juste pour écarter une image. Les PR #113953 et #113817 ont corrigé les deux et ajouté vision.embed_target_bytes et max_calls_per_image.

Lire la suite

Le second modèle que vous n'avez jamais configuré : la voie d'appel auxiliaire de Hermes

Des titres de session qui deviennent des fragments JSON, des approbations qui cessent d'être intelligentes, une compression interminable avec un modèle local — le coupable n'est souvent pas votre modèle principal, mais l'une des 13 tâches auxiliaires nommées. Voici la forme de la config, les réglages globaux et les correctifs de défaillances silencieuses fusionnés le 17 septembre.

Lire la suite

Votre agent peut réduire en bouillie binaire une base SQLite en service — désormais Hermes refuse l'écriture

write_file et patch lisaient un fichier annexe .db-wal comme du texte ordinaire et réécrivaient la bouillie ainsi obtenue, détruisant en silence une base SQLite en service. La PR #114220 ajoute un garde-fou sur l'écriture des fichiers annexes, au niveau de l'outil. Voici comment les dégâts se sont produits, ce qui a changé, et si votre version dispose du correctif.

Lire la suite

hermes doctor et un gros WAL : un avertissement enfin honnête

hermes doctor vous envoyait vers --fix pour un WAL de plus de 50 MB sans vérifier qui détenait la base. Le PR #113055 rend cet avertissement honnête.

Lire la suite

Pourquoi la mémoire Honcho d'Hermes atterrit ailleurs

Les titres automatiques neutralisaient sessionStrategy et la mémoire se résolvait depuis le dossier de lancement du backend. PR #112602 corrige les deux.

Lire la suite

Renommer un profile Hermes laissait un fantôme

Renommer un profile laissait la state DB sur l'ancien nom. PR #112653 migre l'identité, ajoute une commande de reprise et bloque les profiles supprimés.

Lire la suite

Multiplexage des profils : le gateway activé par défaut

gateway.multiplex_profiles est activé par défaut, mais une garde au démarrage tranche les valeurs non définies : un gateway sert alors tous les profils.

Lire la suite

Pourquoi state.db se corrompt dans les montages Docker Desktop, OrbStack et WSL2

Montez votre répertoire de données en bind mount dans un container et virtiofs ou 9p ne peut plus donner à SQLite WAL le verrou partagé dont il a besoin : deux écrivains corrompent alors state.db en silence, pendant que tous les contrôles d'intégrité passent. Depuis la PR #111433, Hermes le dit au démarrage et dans hermes doctor, avec deux correctifs concrets.

Lire la suite