Aller au contenu
Le JournalAgents IA

Agents IA · Hermes Agent · Retour d’expérience

Hermes Agent au travail : les réglages à vérifier avant de s’en servir

Hermes Agent fonctionne dès l’installation. Mais il est réglé pour un usage perso, et quelques réglages ne font rien du tout. Voici ce que nous avons appris en l’installant chez des clients.

Thomas Van Dorsselaere ~10 min
Un tiroir ouvert rempli d’interrupteurs et de molettes, dont un seul basculé en orange, à côté d’un cadenas et d’une clé
Les bons réglages sont dans le tiroir — encore faut-il l’ouvrir

Hermes Agent est un assistant IA qu’on installe sur son propre serveur. On le relie à un modèle d’IA, on lui écrit ses consignes, et il se met au travail : répondre aux messages, lancer des tâches, chercher des informations.

Pour un usage perso, les réglages d’usine suffisent. Pour un usage pro, il faut aller voir ce qu’il y a dans le tiroir : beaucoup de réglages sont laissés ouverts, et certains ne sont même pas lus par le logiciel. Nous y avons passé pas mal d’heures. Voici ce que nous vérifions à chaque installation, regroupé par thème. Un tableau récapitulatif vous attend à la fin.

Version étudiée

Hermes Agent 0.21.4. Les réglages d’usine cités ici viennent du code de cette version. Ils peuvent changer à la suivante : vérifiez chez vous avant de vous y fier.

01Ce dont l’agent se souvient

À chaque message, l’agent relit quatre fichiers : ses consignes (SOUL.md), sa mémoire (MEMORY.md), ce qu’il sait de vous (USER.md) et les notes du dossier où il travaille. Si l’agent répond à côté, le problème vient souvent de l’un des quatre. Regardez-les tous.

La fiche qu’il tient sur vous

memory.user_profile_enabledd’usine true

L’agent remplit tout seul une fiche sur la personne avec qui il parle. Avec le temps, elle se périme et finit par contredire ses consignes. Nous la coupons, et nous écrivons nous-mêmes l’essentiel dans un court texte que nous relisons.

Une conversation garde ses consignes de départ

Quand une conversation commence, l’agent lit ses consignes une fois pour toutes. Si vous les modifiez ensuite, la conversation en cours ne le voit pas. Et les réglages session_reset, censés clore les vieilles conversations au bout d’un moment, ne sont plus lus en 0.21.4 : une conversation ne s’arrête jamais d’elle-même. Nous fermons donc les vieilles conversations depuis l’outil qui pilote l’agent, et nous comptons sur sa recherche dans l’historique pour retrouver le passé.

Brancher une mémoire en plus

memory.providerd’usine vide

La mémoire de base est toujours active. On peut y ajouter un outil de mémoire externe (un seul à la fois). Il rappelle à l’agent, à chaque message, ce qu’il juge utile. Pratique, mais une information fausse y est rappelée tout aussi fidèlement. Avant d’en brancher un, décidez qui relira ce qu’il contient.

Quand la conversation devient trop longue

compressiond’usine résumé à 50 % du maximum, ou 256 000 tokens

Passé un certain volume, Hermes résume le début de la conversation pour faire de la place. Ce résumé a un coût : le message suivant revient plus cher et plus lent. Il a aussi un bon côté : c’est l’un des seuls moments où l’agent relit ses consignes à jour. Si vous touchez à ces réglages, réglez la section entière d’un coup : certaines combinaisons bloquent le résumé sans rien signaler.

02Retrouver une ancienne conversation

La recherche est rangée dans un placard

tools.tool_search.deferd’usine la recherche dans l’historique fait partie des outils cachés

Pour alléger ce qu’il envoie au modèle, Hermes cache une partie de ses outils, dont la recherche dans les anciennes conversations. Résultat : l’agent y pense moins, et il repose des questions auxquelles vous avez déjà répondu. Nous la rendons visible. Chez nous, cela coûte un peu plus à chaque message, mais c’est largement compensé. À revérifier à chaque mise à jour.

La recherche veut tous les mots

Pour trouver une conversation, tous les mots cherchés doivent y figurer. Une question posée en phrase entière ne trouve donc souvent rien. Le pluriel n’est pas reconnu non plus : écrivez relance* pour trouver « relance » et « relances ». Nous demandons à nos agents, dans leurs consignes, de chercher avec un à trois mots-clés.

Ce que la recherche ne voit pas

Le travail fait en arrière-plan (tâches de fond, sous-agents) n’est pas indexé : le lendemain, l’agent ne le retrouve pas. À l’inverse, une conversation masquée ou archivée reste trouvable ; seule la suppression l’efface. Vos conversations de test restent donc dans la mémoire de l’agent. Supprimez-les, et notez dans un fichier ce qui doit être retenu du travail de fond.

03Ce que l’agent a le droit de faire

Qui valide les actions sensibles

approvalsd’usine « smart » quand quelqu’un peut répondre, refus sinon

Avant une action risquée, l’agent demande une validation. Mais ça ne marche que là où quelqu’un peut répondre : sur une messagerie ou dans un terminal. Pour les tâches automatiques ou lancées par un programme, d’autres réglages décident, et par défaut la demande est refusée. Regardez les quatre réglages ensemble pour savoir qui valide quoi, et où.

Le bouton « toujours autoriser »

command_allowlistd’usine vide

Quand vous répondez « toujours » à une demande, la commande est autorisée pour de bon, partout, y compris dans les tâches automatiques. Une suppression de dossier ou un redémarrage de service ne sera plus jamais redemandé. Nous gardons cette liste vide, et nous écrivons plutôt ce qui est interdit dans approvals.deny : ces interdits tiennent même quand tout le reste est permis.

Les outils dont il n’a pas besoin

agent.disabled_toolsetsd’usine tout est activé

Hermes arrive avec beaucoup d’outils : domotique, musique, vidéo, pilotage d’ordinateur… Chaque outil actif alourdit les échanges avec le modèle et élargit ce que l’agent peut faire. Retirez ce que le métier n’utilise pas : un agent qui n’a pas l’outil ne peut pas s’en servir par erreur.

Les mots de passe restent à l’abri

terminal.env_passthroughd’usine vide

Quand l’agent lance un programme, celui-ci ne reçoit pas vos clés et mots de passe, sauf ceux que vous listez ici. C’est une très bonne protection, mais elle surprend : un script qui marchait ne trouve plus sa configuration. Listez seulement ce qui est nécessaire, profil par profil. Les clés propres à Hermes (modèles d’IA, messageries) ne passent jamais, même listées.

Un nombre d’étapes sans limite

agent.max_turnsd’usine sans limite

Sans limite, un agent coincé sur une tâche impossible peut tourner longtemps, et chaque étape coûte. Fixez un maximum. Petit détail vu chez nous : quand la limite est atteinte, la dernière réponse n’arrive pas en direct, et certaines applications affichent alors une réponse vide alors qu’elle existe bien.

Masquer les numéros de téléphone

privacy.redact_piid’usine false

Activé, ce réglage cache au modèle d’IA les numéros de téléphone et les identifiants des personnes. Mais seulement sur WhatsApp, Signal, Telegram et iMessage. Ailleurs, il ne fait rien. C’est un plus, pas une protection complète des données.

04Ce que l’agent change tout seul

Il complète sa mémoire sans demander

auxiliary.background_review, memory.nudge_intervald’usine actif, rappel tous les 10 messages

Après les échanges, l’agent relit la conversation et met à jour sa mémoire, sa fiche sur vous et ses procédures, sans que personne ne vérifie. Si vous voulez valider ce qu’il retient, deux options : tout couper, ou activer memory.write_approval pour que chaque ajout attende votre accord. Revérifiez après chaque mise à jour : ce réglage peut se réactiver discrètement.

Il écrit ses propres procédures

skills.write_approvald’usine false

L’agent peut écrire ou modifier ses « skills », des fiches qui décrivent comment faire une tâche. En pro, demandez à relire avant (true). Attention aussi aux doublons : deux skills du même nom et l’agent ne peut plus en charger aucune. Si vous en copiez une pour l’adapter, renommez-la.

Il range les procédures qui ne servent plus

curator.enabledd’usine actif : mise de côté après 14 jours, archivage après 30

Un outil de rangement met de côté les skills que l’agent a créées et qui ne servent plus, puis les archive (sans les supprimer). Celles utilisées par une tâche planifiée sont protégées. Celles utilisées autrement, par un script extérieur par exemple, ne le sont pas : épinglez-les, ou coupez le rangement.

05Tâches planifiées et sous-agents

Quel modèle d’IA fait tourner vos tâches planifiées

cron.modeld’usine vide : le modèle principal

Le modèle est choisi au moment où la tâche se lance, pas quand vous la créez. D’abord celui fixé sur la tâche, sinon cron.model, sinon le modèle principal. Si vous changez de modèle principal, les tâches qui avaient le leur continuent avec l’ancien. Au passage, cron.wrap_response: false retire un en-tête technique des messages envoyés. Et vu chez nous : après un redémarrage du serveur, les tâches planifiées peuvent échouer sans bruit. Vérifiez la première après chaque redémarrage.

Quand l’agent confie du travail à d’autres agents

delegationd’usine jusqu’à 10 en même temps, sans limite de durée

L’agent peut lancer des sous-agents pour se faire aider. Ils ont ses outils, mais ni ses consignes ni sa mémoire. S’ils ont un modèle qui leur est propre, ils n’ont pas de modèle de secours : si le fournisseur refuse, ils échouent. Et en 0.21.4, quand plusieurs agents partagent le même serveur, un résultat peut se perdre. Fixez un nombre maximum, une durée maximum, et laissez-les sans droit de valider eux-mêmes une action risquée.

06Pannes, mises à jour et pièges

Des réglages qui ne font rien

Hermes accepte n’importe quel réglage sans broncher, même s’il ne le lit pas. En 0.21.4, model.reasoning_effort ne fait rien (le bon est agent.reasoning_effort), pas plus que model.max_tokens, language ou session_reset. Avant de compter sur un réglage, vérifiez qu’il est vraiment pris en compte.

Ne rien régler, c’est déjà choisir

Un réglage absent prend la valeur d’usine : validation « smart », nombre d’étapes sans limite, dictée vocale en anglais… Ça peut passer inaperçu des mois, puisque tout « marche ». Ce qui nous a aidés : un fichier de référence avec la valeur voulue pour chaque réglage important, appliqué à tous les agents, et une vérification automatique des écarts.

Messageries : le bon emplacement

Écrire gateway.platforms.telegram.enabled enregistre en fait platforms.telegram.enabled. Écrivez donc directement la seconde forme, sinon vos vérifications croiront à un écart qui n’existe pas. Et désactivez explicitement les messageries que vous n’utilisez pas : elles resteront éteintes même si leurs clés traînent sur le serveur.

Prévoir un modèle de secours

fallback_providersd’usine aucun

Si le modèle principal ne répond plus (quota atteint, panne, connexion bloquée), Hermes peut passer sur un modèle de secours, puis revient au principal au message suivant. Encore faut-il en déclarer un : il n’y en a aucun d’office. Le passage de l’un à l’autre rend le message suivant un peu plus cher.

Le délai avant d’abandonner une réponse

stale_timeout_seconds

C’est le temps que Hermes attend sans rien recevoir avant de couper la connexion. Chez nous, le réglage posé pour tout un fournisseur n’était pas toujours appliqué : réglez-le modèle par modèle. Et pensez au modèle de secours : s’il réfléchit plus longtemps que ce délai, il sera coupé à chaque fois.

La recherche web de secours

web.keyless_fallback, web.keyless_rescued’usine actifs

Si votre moteur de recherche web échoue, Hermes réessaie via des services gratuits (Exa, Parallel, Firecrawl, Keenable), sans contrat. La liste est figée, vous ne pouvez pas y mettre le vôtre. Si vos recherches ne doivent pas partir chez un prestataire que vous n’avez pas choisi, coupez ces deux réglages.

Les mises à jour

Une mise à jour remplace les fichiers du logiciel : sauvegardez avant vos éventuelles retouches. Elle peut aussi changer les valeurs d’usine, réveiller un réglage qui ne faisait rien, et activer de nouvelles skills. Le bon réflexe : comparer avant de mettre à jour, pas après.

07Le récapitulatif

Les valeurs d’usine de la version 0.21.4, et ce que nous mettons chez nos clients. À adapter à votre usage.

memory.user_profile_enabledD’usinetrueChez nousfalse
memory.nudge_intervalD’usine10Chez nous0
memory.write_approvalD’usinefalseChez noustrue
auxiliary.background_review.enabledD’usinetrueChez nousfalse
skills.write_approvalD’usinefalseChez noustrue
curator.enabledD’usinetrue (14 j / 30 j)Chez nousépingler ou couper
compression.thresholdD’usine0,50Chez nousà régler avec le reste de la section
compression.threshold_tokensD’usine256 000Chez nousidem
tools.tool_search.deferD’usinecontient session_searchChez nousle retirer
approvals.modeD’usinesmartChez nousmanual
approvals.cron_mode, unattended_mode, single_query_modeD’usinedenyChez nousdeny
approvals.denyD’usinevideChez nousvos interdits
command_allowlistD’usinevideChez nousvide
agent.max_turnsD’usinesans limiteChez nousune limite
terminal.env_passthroughD’usinevideChez nousle strict nécessaire
privacy.redact_piiD’usinefalseChez noustrue
delegation.max_concurrent_childrenD’usine10Chez nousmoins
delegation.child_timeout_secondsD’usine0 (sans limite)Chez nousune limite
delegation.max_spawn_depthD’usine1Chez nous1
delegation.subagent_auto_approveD’usinefalseChez nousfalse
cron.modelD’usinevideChez nousà fixer
cron.wrap_responseD’usinetrueChez nousfalse
fallback_providersD’usinevideChez nousun modèle de secours
web.keyless_fallback, web.keyless_rescueD’usinetrueChez nousfalse
stt.languageD’usineenChez nousfr

08En résumé

Trois habitudes suffisent. Faire la liste des réglages qui comptent pour vous, en vérifiant qu’ils sont bien lus. Les écrire noir sur blanc dans un fichier de référence, appliqué à tous vos agents : un réglage oublié prend toujours la valeur d’usine. Revérifier après chaque mise à jour.

Hermes Agent est une très bonne base. C’est ce petit travail de réglage, un peu ingrat, qui en fait un outil sur lequel on peut compter au quotidien.

Vous installez un agent et vous voulez un deuxième avis ?

On regarde volontiers vos réglages avec vous, simplement, en partant de votre usage.

Nous contacter

État des informations : 27 septembre 2026, Hermes Agent 0.21.4. Les valeurs d’usine sont relevées dans le code de cette version ; ce qui est marqué « chez nous » vient de nos propres installations. Si une nouvelle version les change, l’article sera mis à jour.