Hermes Agent : chaîne de répertoires des fichiers de contexte — tous les AGENTS.md de la racine git au CWD, fusionnés automatiquement


Vous travaillez dans un monorepo, vous ouvrez une session dans packages/webapp/, et l’agent ne voit que le AGENTS.md du répertoire courant — le fichier de la racine avec les conventions d’équipe reste invisible. Résultat : soit vous répétez les règles partout, soit vous regardez l’agent les enfreindre. Cette semaine, Hermes fusionne automatiquement toute la chaîne.

Au fond d’un monorepo, Hermes ne voyait qu’une seule couche

AGENTS.md est le fichier de contexte de projet principal de Hermes Agent : il indique à l’agent comment votre projet est structuré, quelles conventions suivre et à quoi faire attention. Mais auparavant, si vous démarriez une session dans monorepo/packages/webapp/, Hermes ne chargeait que le AGENTS.md du répertoire courant — le fichier de la racine du dépôt avec les conventions « tout le dépôt » (politique de commit, stratégie de branche, flux CI) était invisible, sauf à le dupliquer dans chaque répertoire profond.

La duplication apporte ses propres problèmes : dérive, mises à jour non synchronisées, budget de contexte gaspillé.

La chaîne de répertoires fusionnée dans main de Hermes Agent le 2026-08-08 corrige cela : dès que votre répertoire de travail se trouve dans un dépôt git, le démarrage de la session charge une chaîne fusionnée de fichiers AGENTS.md — racine git d’abord, chaque répertoire intermédiaire, puis cwd — dans le prompt système. Le mécanisme est un portage du directoryChain de grok-cli.

Comment fonctionne la chaîne

monorepo/                       (racine git, cwd = packages/webapp/)
├── AGENTS.md                  ← chargé en premier (conventions de tout le dépôt)
└── packages/
    ├── AGENTS.md              ← chargé en deuxième
    └── webapp/
        └── AGENTS.md          ← chargé en dernier (le plus spécifique, prioritaire)

Comportements clés :

  • Labels de provenance : chaque fichier est injecté sous un en-tête de chemin relatif tel que ## ../../AGENTS.md ou ## AGENTS.md, afin que l’agent sache de quel répertoire provient chaque règle ;
  • Le plus profond gagne : les fichiers plus profonds apparaissent plus tard dans le prompt, donc les instructions plus spécifiques priment sur les instructions de tout le dépôt ;
  • Déduplication du contenu : un contenu identique rencontré à nouveau le long de la chaîne (fichiers copiés ou symlinkés) n’est conservé qu’une seule fois — pas de contexte gaspillé ;
  • Plafonds de budget : chaque fichier passe par son propre budget de troncature, et la chaîne fusionnée dispose d’un plafond total supplémentaire — un monorepo profond ne peut pas multiplier sans borne la dépense en fichiers de contexte ;
  • Scan de sécurité : chaque fichier passe le scan de menace des fichiers de contexte existant (_scan_context_content) avant de pouvoir entrer dans le prompt système ; le contenu malveillant est bloqué.

Hors d’un dépôt git : les parents ne fuient jamais

La chaîne a une frontière de sécurité délibérée : si le répertoire de travail n’est pas dans un dépôt git, la chaîne se réduit à [cwd] — les répertoires parents ne sont jamais consultés. Un AGENTS.md placé dans /tmp ou $HOME ne peut donc jamais fuir dans des sessions sans rapport, en écho à la logique de sécurité existante de .hermes.md.

Le système de priorité : un type de fichier de contexte par session

Notez que la chaîne de répertoires ne s’applique qu’à AGENTS.md. Les types de fichiers de contexte de projet de Hermes sont résolus par priorité :

.hermes.md / HERMES.md  →  AGENTS.md  →  CLAUDE.md  →  .cursorrules

(Seul le premier type correspondant est chargé par session ; SOUL.md se charge indépendamment comme persona global.) Donc si la racine de votre dépôt utilise CLAUDE.md (style Claude Code), la chaîne ne s’applique pas — CLAUDE.md reste lu uniquement depuis cwd. Vous voulez la chaîne ? Utilisez AGENTS.md.

En quoi cela diffère de la découverte progressive de sous-répertoires

Les lecteurs réguliers connaissent peut-être déjà l’autre mécanisme de Hermes : lorsque l’agent lit des fichiers dans un sous-répertoire en cours de session, il découvre progressivement et injecte le AGENTS.md de ce répertoire à la demande (chaque sous-répertoire est vérifié au plus une fois par session). La chaîne de répertoires le complète :

Mécanisme Moment Couverture
Chaîne de répertoires (nouveau) Au démarrage de la session La chaîne verticale racine git → cwd, dans le prompt système
Découverte progressive de sous-répertoires Pendant la session Les sous-répertoires horizontaux que l’agent visite réellement, injectés à la demande

Les deux sont protégés par le même scan de sécurité, et aucun ne perturbe la stabilité en octets du prompt système (compatible cache de prompt).

Playbook monorepo : découper AGENTS.md en trois couches

L’utilisation naturelle de la chaîne est le découpage par granularité :

# AGENTS.md racine du dépôt (niveau monorepo)
## Conventions partagées
- Chaque PR doit passer CI et lint
- Les messages de commit suivent Conventional Commits
- Les entrées de changelog vont dans CHANGELOG.md

# packages/AGENTS.md (niveau package)
## Règles de package
- Les nouveaux packages doivent être enregistrés dans le registre
- Les dépendances inter-packages passent uniquement par les API publiques

# packages/webapp/AGENTS.md (niveau répertoire, le plus spécifique)
## Spécifique frontend
- Les composants utilisent le mode strict de TypeScript
- Le style utilise uniquement des design tokens — pas de couleurs en dur
- Les tests vivent dans __tests__/, exécutés avec Vitest

Une session démarrée dans packages/webapp/ reçoit les trois couches : les conventions du dépôt en base, les règles de package par-dessus, les spécificités frontend en dernier. En touchant au code frontend, l’agent n’écrira pas de commits qui violent la politique du dépôt, et n’alignera pas de couleurs qui cassent le design system.

Conseils de mise à niveau

  1. Descendez les conventions de tout le dépôt (branche/commit/CI) dans un AGENTS.md racine ; les répertoires profonds ne doivent contenir que les règles qui appartiennent réellement à cette couche — pas de copie ;
  2. Ne copiez pas le même contenu dans plusieurs répertoires — la chaîne déduplique, mais « stocker une fois » reste la bonne réponse ;
  3. Vous migrez depuis Claude Code / Cursor ? Renommez le CLAUDE.md racine en AGENTS.md (ou ajoutez un AGENTS.md) et vous obtenez toute la chaîne.

Pour pousser plus loin la fiabilité des tâches longues, consultez notre guide de configuration des tâches longues et des timeouts ; les fichiers de contexte s’associent bien aux astuces de productivité. Nouveau sur Hermes Agent ? Commencez par le guide d’installation avant d’expérimenter.

En résumé : organisez AGENTS.md en trois couches — dépôt, package, répertoire — et Hermes assemble automatiquement le contexte complet du projet au démarrage de la session : les conventions génériques ne se perdent jamais, les règles spécifiques arrivent naturellement en dernier, et tout cela se fait sans le moindre effort.