Aide-mémoire

Aide-mémoire harnais d'agent : composants, fichiers, problèmes et liste de contrôle au lancement

Mis à jour: · Skillaria.Top

Le harnais d'un agent se compose de cinq sous-systèmes : instructions, outils, environnement, état et retour d'information. L'ensemble minimal de fichiers comprend un AGENTS.md faisant office de routeur court, un script de vérification (make check, verify.sh), un fichier d'avancement et une liste de fonctionnalités avec leur statut ; le statut d'achèvement est attribué par un script, et non par l'agent.

Les cinq sous-systèmes du harnais

Sous-systèmeCe que c'estArtefactsSigne de panne
InstructionsCe que l'agent doit savoir sur le projetAGENTS.md / CLAUDE.md, skills, docs/, ADREnfreint les conventions connues
OutilsCe que l'agent peut faireshell, tests, linter, navigateur, serveurs MCP« Veut mais ne peut pas »
EnvironnementOù l'agent travaillefichiers de verrouillage, Docker/devcontainer, git worktree, bac à sable, init.shLa session commence par la réparation de l'environnement
ÉtatCe qui survit à un redémarragePROGRESS.md, DECISIONS.md, feature_list.json, commitsUne nouvelle session ne sait pas où les choses en étaient
Retour d'informationComment l'agent apprend son erreurmake check, E2E, hooks, arch-check, évaluateur« Terminé », mais ça ne marche pas

Ordre de construction à partir de zéro : retour d'information → instructions → état → environnement → outils.

Fichiers du harnais

FichierRôleRègle
AGENTS.md / CLAUDE.mdPoint d'entrée : de quoi il s'agit, comment lancer le projet, comment le vérifierUn routeur court (environ 80 lignes) avec des renvois vers les documents assortis de la condition « quand le lire »
docs/*.mdDétails par thèmeLus au besoin, pas en entier
.claude/skills/*/SKILL.mdProcédures répétitives (déploiement, revue)Chargés lorsque la tâche correspond à leur description
PROGRESS.mdÉtat, travail accompli, blocages, prochaines étapesMis à jour à la fin de chaque session
DECISIONS.mdDécision, raison, options écartéesConsigner le chemin suivi, pas seulement la conclusion
feature_list.jsonFonctionnalités : comportement, vérification, étatExactement une fonctionnalité active (WIP=1)
scripts/verify.shVérifie une fonctionnalité et la fait passer à passingSeul habilité à attribuer passing, avec le SHA du commit
scripts/arch-check.shFrontières d'architectureCode de sortie 1 + POURQUOI et CORRECTION dans la sortie
scripts/init.shVérification de l'environnement avant le travailEnvironnement, git propre, make check vert, une fonctionnalité active
contrat de sprintContrat sur une fonctionnalité avant le codeDans le périmètre / hors périmètre / questions ouvertes
.claude/settings.jsonPermissions et hooks de Claude CodeVérifications sur événements, non dans la mémoire de l'agent

Squelette d'AGENTS.md

# Projet : backend de paiement (FastAPI, PostgreSQL)

## Lancer
docker compose up -d && ./scripts/init.sh

## Vérifier
make check   # lint, types, unitaires, arch-check
make e2e     # scénarios de bout en bout

## Definition of Done
- make check et make e2e — code 0
- fonctionnalité passée à passing par le script scripts/verify.sh
- PROGRESS.md mis à jour

## MUST
- requêtes vers la base uniquement via les repositories
- secrets uniquement depuis les variables d'environnement

## Documents
- docs/payments.md — lorsque la tâche touche aux paiements et aux remboursements
- docs/migrations.md — lorsque le schéma de la base change

États d'une fonctionnalité

ÉtatSignificationQui le modifie
pendingEn file d'attentePlanificateur
activeEn cours (une seule à la fois)Agent au démarrage
passingVérification réussieSeul verify.sh
blockedNécessite une décision humaineAgent, avec la description de la raison

Niveaux de vérification

NiveauQuoiQuand
1Lint, typesToujours
2Tests unitaires et d'intégrationToujours
3E2EModification touchant plus d'une couche ; avant « terminé »
4arch-checkNouveaux imports entre couches

Le droit de dire « terminé » n'existe qu'après le niveau le plus élevé. Des tests unitaires verts ne valent pas achèvement.

Rendre les règles mécaniques

NiveauOutilCoût
Garde-fou grepScript qui cherche un motif et affiche POURQUOI/CORRECTIONQuelques minutes
Règle de linterimport-linter (Python), dependency-cruiser, eslint-plugin-boundaries (JS/TS)Une heure
Test d'architectureTest en CI qui échoue si les couches sont violéesPlus lourd, mais visible dans make check
#!/usr/bin/env bash
fail=0
if grep -rn "from app.db" app/services/; then
  echo "POURQUOI : les services n'accèdent pas directement à la base"
  echo "CORRECTION : utilisez un repository de app/repositories/"
  fail=1
fi
exit $fail

Problèmes courants et solutions

ProblèmeSous-systèmeSolution
Une règle de CLAUDE.md n'est pas respectéeInstructionsRaccourcir le fichier, transformer la règle en vérification ou en hook
L'agent ne peut pas lancer les testsOutilsAutoriser la commande, installer les dépendances dans l'image
Comportements différents selon les machinesEnvironnementFichiers de verrouillage, Docker/devcontainer, versions d'exécution figées
Amnésie entre les sessionsÉtatPROGRESS.md, passation de session, lecture au démarrage
Trois fonctionnalités commencées, aucune terminéeÉtatWIP=1 dans feature_list.json
« Terminé », mais ça ne marche pasRetour d'informationDoD, E2E, verify.sh, évaluateur indépendant
Les tests sont verts, la fonctionnalité est casséeRetour d'informationE2E avec vraie base et vraie configuration
L'agent reprend de mauvais motifsRetour d'informationarch-check dès le premier jour
On ne sait pas ce que l'agent a faitÉtatPetits commits, compte rendu dans PROGRESS.md, DECISIONS.md
L'agent a cassé l'environnement pendant la nuitEnvironnementBac à sable, git worktree, points de contrôle, retour arrière via init.sh
Le même commentaire de revue deux foisHarnais en généralLe transformer en vérification dans make check, retirer le texte des instructions

Rôles pour les tâches longues

RôleFaitNe fait pas
PlanificateurFonctionnalités avec critères d'acceptationN'écrit pas de code
GénérateurImplémente une fonctionnalité, lance les testsNe décide pas si elle est terminée
ÉvaluateurVerdict selon une grille, avec renvoi à un fichier, une ligne ou un journalNe voit pas les raisonnements du générateur
FusionCommit lorsque review == passC'est du code, pas un agent

Budget du travail autonome

  • L'objectif tient en une phrase (par exemple : faire passer toutes les fonctionnalités en passing).
  • WIP=1, une limite de temps et de tentatives par fonctionnalité.
  • La métrique croît de façon monotone ; une régression entraîne un retour arrière immédiat.
  • Migrations, infrastructure, argent : escalade vers un humain.
  • Après plusieurs revues échouées, reprendre la fonctionnalité avec un contexte propre.

Liste de contrôle au lancement de l'agent

  1. Un AGENTS.md existe : pile technique, démarrage, commande de vérification, DoD.
  2. make check réussit sur un clone propre.
  3. L'environnement est reproductible : fichiers de verrouillage, Docker ou devcontainer.
  4. L'agent dispose des commandes nécessaires ; les commandes dangereuses sont interdites ou placées dans un bac à sable.
  5. Il existe un test E2E au moins pour le scénario principal.
  6. Il existe un PROGRESS.md et une règle imposant de le lire au début de la session.
  7. Les fonctionnalités figurent dans une liste avec leur statut, une seule est active.
  8. Le statut passing est attribué par un script.
  9. Les messages de vérification contiennent POURQUOI et CORRECTION.
  10. La tâche est formulée avec des critères d'acceptation et des limites de périmètre.
  11. Ce qui exige une décision humaine est défini.
  12. L'écart de vérification a été mesuré avant les modifications, pour servir de référence.

Métriques du harnais

MétriqueMode de calcul
Écart de vérificationPart des « terminé » non confirmés par une vérification, sur 10 tâches
MTTRTemps entre la panne et le rétablissement d'un état de travail
Démarrage à froidLa nouvelle session répond-elle à « où en sommes-nous, quelle est la suite » sans deviner
AblationChute lorsqu'un sous-système est désactivé sur un ensemble fixe de tâches

En bref

Le harnais est une boucle, non un fichier : instructions, outils, environnement, état et retour d'information. Commencez par les vérifications, gardez AGENTS.md court, confiez le statut d'achèvement à un script et révisez le harnais régulièrement. Tout cela est assemblé dans son ensemble sur un projet de bout en bout dans le cours sur le harness engineering.

Questions fréquentes

En quoi AGENTS.md diffère-t-il de CLAUDE.md ?

Par leur fonction, ce sont la même chose : un fichier d'instructions pour l'agent. CLAUDE.md est lu par Claude Code, AGENTS.md est un format commun à plusieurs agents ; dans CLAUDE.md, il suffit de faire référence à AGENTS.md.

Combien de lignes doit comporter AGENTS.md ?

Il n'y a pas de limite stricte, mais le fichier d'entrée doit rester court — une centaine de lignes environ, comme une table des matières. Les détails sont déplacés dans des documents séparés.

Ai-je besoin de feature_list.json pour un petit projet ?

Pas pour de simples corrections ponctuelles. Il devient utile lorsque l'agent enchaîne plusieurs fonctionnalités ou travaille sur plusieurs sessions.

Où conserver les secrets auxquels l'agent doit accéder ?

Dans les variables d'environnement ou un gestionnaire de secrets, pas dans les fichiers d'instructions ni dans le code. On donne à l'agent accès à l'environnement, non aux valeurs écrites dans le texte.