SÉRIE HERMES AGENT BRANCHE AVANCÉE 19/24

Hermes Agent : quand automatiser dans le temps avec cron

Planifie un premier essai cron dans Hermes Agent : vérifie le planificateur, observe l’exécution, retrouve le résultat local et distingue pause et suppression.

DANS CE TUTORIELAller à une étape

Tu sais déjà demander une tâche à Hermes. Avec cron, son planificateur, tu peux aussi choisir quand elle démarrera : une seule fois dans quelques minutes, ou selon un rythme régulier.

Nous allons commencer par un essai ponctuel. Hermes devra produire une courte phrase, enregistrée localement. Pas de recherche web ni de notification Telegram : tu pourras d’abord vérifier le trajet complet, de l’échéance au fichier, avant d’y ajouter une vraie routine.

Ce que tu auras à la fin
Une tâche créée dans le bon profil, une exécution observée et un résultat relu. Tu sauras distinguer « la tâche existe », « elle a été exécutée » et « son résultat répond au besoin ».

1. Préparer un essai que tu peux observer

Le parcours suppose Linux ou WSL, Hermes installé et un modèle qui répond déjà. Prévois deux terminaux sur la machine qui héberge Hermes, ainsi que quelques minutes pendant lesquelles elle restera allumée et connectée. Un modèle local doit rester disponible lui aussi.

Nous utilisons le profil default. Si tu en utilises un autre, remplace ce nom dans toutes les commandes. Pour comprendre cette séparation, consulte le tuto sur les profils.

Dans le premier terminal, ouvre une conversation :

Terminal · vérifier le modèle
hermes -p default chat

À demander à Hermes
Réponds uniquement par « Repère safran-27 reçu ». N’utilise aucun outil, ne consulte aucun fichier et ne crée aucune tâche.

Vérifie que la réponse contient le repère, puis quitte cette conversation. Si elle échoue, règle d’abord le problème avec le guide d’installation ou le tuto llama.cpp.

La consigne « sans outil » ne désactive pas techniquement les outils. Avant une tâche autonome, vérifie ceux du contexte cron dans hermes -p default tools, comme pour les premiers tools utiles. Notre essai ne nécessite aucun accès web ou fichier par l’agent : Hermes enregistrera lui-même sa réponse.

2. Comprendre ce qui déclenche la tâche

Une tâche planifiée, aussi appelée job, contient notamment une consigne, un horaire et une destination. Dans le parcours local présenté ici, le planificateur du gateway détecte les échéances et lance les tâches dues. Créer le job ne suffit donc pas : ce planificateur doit fonctionner.

Du rendez-vous au résultat

Premier essai · sortie locale

Planifiée ≠ exécutée ≠ résultat validé

Quand la tâche est active et que la machine, le gateway et son planificateur sont disponibles, une échéance détectée déclenche une tentative. Hermes vérifie la configuration avant de lancer la session de tâche. Si un résultat est enregistré, ouvre le fichier local et compare son contenu à ce qui était attendu. Si un échec est détecté, consulte l’état et l’erreur avant de relancer. Un fichier produit reste à relire. Cet exemple ne comprend pas de livraison en messagerie, qui demanderait un contrôle supplémentaire.

L’exécution démarre dans une nouvelle session de tâche. Elle ne reprend pas automatiquement le dialogue que tu viens de quitter. Donne une consigne autonome, même si les réglages du profil, sa mémoire ou des options de continuité peuvent fournir d’autres éléments de contexte. « Reprends ce dont on parlait » serait trop vague.

Le gateway peut assurer cette planification sans que tu configures une livraison Telegram. Ici, local signifie que la réponse est enregistrée sur la machine qui héberge Hermes.

3. Vérifier que le planificateur tourne

Dans le premier terminal :

Terminal · consulter le planificateur
hermes -p default cron status

Cherche un planificateur actif et un signal récent de son activité, parfois nommé ticker ou heartbeat. Si un gateway fonctionne déjà pour ce profil, conserve-le : ne lance pas un deuxième exemplaire.

Si aucun gateway ne tourne, lance-le au premier plan :

Terminal 1 · laisser ouvert pendant l’essai
hermes -p default gateway

Dans le second terminal, relance hermes -p default cron status après le démarrage. La documentation indique un passage du planificateur environ toutes les 60 secondes : la tâche ne démarrera pas forcément à la seconde exacte.

Ne poursuis pas si le processus quitte immédiatement ou si aucun signal d’activité n’apparaît. Lis l’erreur et vérifie le profil concerné. Le tutoriel gateway distingue lancement au premier plan et service installé ; un bot de messagerie n’est pas un prérequis à notre sortie locale.

4. Créer une seule tâche dans cinq minutes

Exécute cette commande une seule fois, dans le second terminal. Elle crée un essai nommé « Essai safran-27 », prévu dans cinq minutes, avec une sortie locale :

Terminal 2 · créer l’essai ponctuel
hermes -p default cron create "in 5m" \
  "Réponds uniquement par : Repère safran-27 reçu. N’utilise aucun outil, ne consulte aucun fichier et ne crée aucune tâche." \
  --name "Essai safran-27" --deliver local --repeat 1

in 5m signifie une fois dans cinq minutes. Ne le remplace pas par 5m : une durée seule correspond à une répétition dans la syntaxe actuelle. --repeat 1 rend également la limite explicite.

Note l’identifiant renvoyé après Created job, puis vérifie l’enregistrement :

Terminal 2 · relire la tâche
hermes -p default cron list --all

Repère le nom, l’identifiant, l’échéance, la destination local et la limite d’une exécution. Vérifie l’heure et le décalage de fuseau affichés. Si plusieurs essais portent le même nom, utilise leur identifiant pour les distinguer et mets les doublons en pause avant l’échéance.

Une tâche enregistrée n’est pas une tâche terminée
Le message de création confirme l’enregistrement. Il ne prouve ni le déclenchement futur ni la qualité de la réponse. Ne recrée pas le job simplement parce qu’aucun résultat n’apparaît immédiatement.

5. Observer l’exécution et ouvrir son résultat

Laisse passer l’échéance et le passage suivant du planificateur. Garde la machine, le gateway et le modèle disponibles.

Dans la commande ci-dessous, remplace IDENTIFIANT_DU_JOB par l’identifiant réellement obtenu à l’étape 4 :

Terminal 2 · à adapter avec ton identifiant
hermes -p default cron runs IDENTIFIANT_DU_JOB --limit 5
hermes -p default cron list --all

L’historique distingue notamment une tentative en cours (running), terminée (completed), échouée (failed) ou dont l’issue n’est pas établie (unknown). Lis aussi l’état et l’erreur éventuelle de la tâche. L’absence de tentative ne signifie pas que le modèle a échoué : le déclenchement lui-même peut manquer.

Retrouve ensuite le dossier du profil :

Terminal 2 · retrouver le dossier du profil
hermes profile show default

Dans ce dossier, ouvre cron/output/, puis le sous-dossier portant l’identifiant du job. Le résultat est un fichier Markdown daté. Avec le profil par défaut et sans chemin personnalisé, le chemin habituel est ~/.hermes/cron/output/. Utilise un éditeur ou ton explorateur de fichiers pour lire le fichier correspondant à cet essai.

Exemple de contenu attendu · réponse de Hermes
Repère safran-27 reçu.

Le fichier peut aussi contenir des informations d’exécution. Vérifie la phrase produite, l’identifiant et la date : un ancien fichier ou un document contenant une erreur ne valide pas l’essai. L’exemple ci-dessus illustre la réponse attendue, pas une exécution réalisée pour cet article.

Les trois observations à réunir
L’échéance a été suivie d’une tentative, cette tentative est terminée sans erreur et son fichier contient le repère demandé. Tu as alors vérifié la planification et la sortie locale de cet essai. Tu n’as pas encore vérifié une recherche web, une action sur des fichiers ou une livraison en messagerie.

6. Terminer l’essai sans perdre ce que tu veux garder

Avec une seule exécution prévue, cet essai n’a pas vocation à se répéter. Confirme son état dans cron list --all.

Pour suspendre un job encore actif ou un doublon, remplace d’abord l’identifiant :

Terminal · mettre en pause la tâche choisie
hermes -p default cron pause IDENTIFIANT_DU_JOB

La pause empêche les prochains départs automatiques. Pour arrêter une exécution déjà en cours, la commande distincte est hermes -p default cron cancel IDENTIFIANT_DU_JOB ; elle ne supprime pas sa planification. Vérifie l’état obtenu au lieu de supposer que la pause a arrêté le travail.

Avant de supprimer le job, copie ailleurs son résultat si tu veux le conserver. Dans le code actuel, la suppression retire aussi son dossier de sorties locales. Une fois l’essai relu et la copie éventuelle faite :

Terminal · supprimer uniquement le job d’essai
hermes -p default cron remove IDENTIFIANT_DU_JOB
hermes -p default cron list --all

Vérifie que cet identifiant n’apparaît plus. Si tu avais lancé le gateway au premier plan uniquement pour cet essai, retourne au premier terminal et presse Ctrl+C, puis attends le retour de l’invite. Conserve un service déjà utilisé pour d’autres tâches ou conversations.

7. Choisir une répétition qui rend vraiment service

Une fois ce trajet compris, remplace le repère par une tâche utile, déjà essayée à la main : un état de service, une veille sur une source précise ou une synthèse de fichiers connus. Définis les accès nécessaires, le format attendu et le moment où tu liras le résultat.

Ton besoinHoraire à comprendre
Un seul essai dans cinq minutesin 5m
Un passage toutes les six heuresevery 6h
Un passage à 9 h chaque jour0 9 * * *

Les deux dernières formes sont récurrentes par défaut. Pour un horaire civil, vérifie le fuseau du profil ou fixe celui du job avec --timezone Europe/Paris si c’est bien ton besoin. Commence avec un nombre limité de passages et relis les premières sorties avant de laisser une routine durable.

Une tâche planifiée peut utiliser un autre modèle que ta conversation si des réglages cron ou propres au job le prévoient. Vérifie aussi les outils du contexte cron, les accès et le coût des appels. La complexité d’une tâche n’interdit pas la planification ; elle demande un résultat et des points de contrôle mieux définis.

Pour une livraison Telegram, ajoute ensuite une destination explicite à une messagerie déjà vérifiée. Un résultat produit et un message livré sont deux observations différentes : une erreur de livraison peut laisser un résultat local valide. Le marqueur [SILENT] permet de supprimer une livraison lorsqu’il n’y a rien à signaler ; il n’empêche pas l’enregistrement local.

Retrouver la cause d’un blocage

Ce que tu observesCe que tu vérifies d’abord
Le job existe, aucune tentative n’apparaîtBon profil, échéance, gateway disponible et activité récente du planificateur
Le job ponctuel n’a pas démarré après une veille prolongéeUne échéance manquée n’est pas forcément rattrapée ; consulte l’état avant de recréer l’essai
L’état indique blocked_configConfiguration du modèle, accès et outils signalés dans l’erreur
La tentative est failed ou unknownErreur exacte et éventuels effets déjà produits avant toute relance
Un fichier existe, mais son contenu est incorrectConsigne, modèle et contenu réel du fichier ; le statut technique ne juge pas la réponse
Le job ne figure plus dans la liste habituelleAjoute --all pour inclure les tâches désactivées ou terminées
Le fichier existe, mais aucun message n’arriveDestination choisie ; local ne demande aucune livraison Telegram

Un déclenchement manuel avec hermes -p default cron run IDENTIFIANT_DU_JOB peut aider à vérifier la tâche, mais ne valide pas le passage automatique à l’échéance. Une demande de lancement n’est pas non plus un verdict final : consulte l’historique et la sortie. Notre premier parcours attend donc le véritable rendez-vous.

La suite logique

Tu sais maintenant où regarder entre « prévu » et « terminé ». Pour une routine durable, garde un nom reconnaissable, une consigne complète, une fréquence justifiée et un résultat que tu consulteras réellement.

Si plusieurs usages commencent à se mélanger, poursuis avec les profils Hermes. Pour des dépendances entre tâches et des décisions à suivre, le tutoriel Kanban apporte d’autres repères.

Parcours à reproduire ; aucun job ni scénario Hermes n’a été exécuté pour cet article. Documentation et commandes vérifiées le 8 novembre 2026 : cron officiel, commandes CLI et gestion des tâches et de leurs sorties.

↑ Revenir au sommaire