Travailler avec les agents IA de programmation — Guide pratique (2026)
Configuration des agents, couches d'application et standards de logging qui rendent le code généré par LLM déboguable — basé sur ce qui fonctionne réellement début 2026.
01
Que sont les agents IA de programmation ?
Un agent IA de programmation est un outil propulsé par un LLM qui peut lire votre base de code, écrire du code, exécuter des commandes shell et prendre des décisions en plusieurs étapes pour accomplir une tâche. Contrairement à l'autocomplétion (qui prédit votre prochaine ligne), les agents opèrent de manière autonome sur plusieurs fichiers et exécutent des séquences d'actions.
La distinction clé : l'autocomplétion réagit à votre curseur ; les agents poursuivent des objectifs.
| Outil | Type | Fonctionnement |
|---|---|---|
| Claude Code | CLI | Basé sur le terminal ; accès au système de fichiers, commandes shell, hooks, sous-agents, skills |
| Cursor | IDE | Fork de VS Code avec mode agent ; lit la base de code, édite les fichiers, exécute le terminal |
| GitHub Copilot | Ext. IDE | Autocomplétion + mode agent pour les éditions multi-fichiers et la création de PR |
| OpenAI Codex | Cloud | Sandboxé ; opère sur des branches de manière asynchrone |
| Windsurf | IDE | L'agent Cascade indexe l'ensemble de la base de code ; focus entreprise |
| Zed + Aider | Éditeur / CLI | Agents légers avec support AGENTS.md |
POINT CLÉ POUR LES DÉBUTANTS
Ces agents sont sans état entre les sessions. Chaque nouvelle conversation repart de zéro. L'agent ne se souvient pas de la discussion d'hier, de vos préférences ou de vos décisions passées. C'est pourquoi les fichiers de configuration existent — ils injectent un contexte persistant qui survit entre les sessions.
02
Pourquoi les agents ont besoin de règles (et pourquoi les règles ne suffisent pas)
Sans règles explicites, un agent devinera votre stack technique (souvent à tort), choisira son propre style de code, générera un logging minimal, explorera votre base de code de zéro à chaque fois et prendra des décisions architecturales qui contredisent les patterns établis.
Les règles pour agents résolvent ce problème en injectant le contexte de votre projet au début de chaque session. Considérez-les comme de la documentation d'onboarding pour une IA.
Mais voici ce que la plupart des guides omettent : même avec des règles, l'agent peut quand même ignorer votre standard de logging. Les règles dans les fichiers de configuration sont consultatives — le LLM les lit mais peut encore les ignorer sous pression de contexte. Pour les standards critiques, vous avez besoin d'un mécanisme d'application au-delà des fichiers de configuration. C'est ce que couvre la Section 8.
LE MODE D'ÉCHEC RÉEL
Un agent génère un script Python qui traite des demandes de crédit. Sans règles, il produit du code avec print("done") à la fin. Six mois plus tard, quand quelque chose échoue à 2h du matin, la personne qui débogue n'a aucune idée de ce que le code a fait, quelle demande a échoué, ni pourquoi.
03
Le paysage des configurations
Chaque outil a inventé son propre format de fichier de configuration. La bonne nouvelle : cette fragmentation se résout rapidement. Depuis fin 2025, la plupart des outils majeurs lisent AGENTS.md nativement ou via des liens symboliques.
| Outil | Fichier de configuration | Support AGENTS.md |
|---|---|---|
| Claude Code | CLAUDE.md | Lit s'il est présent (lien symbolique recommandé) |
| Cursor | .cursor/rules/*.mdc | Natif depuis fin 2025 |
| GitHub Copilot | .github/copilot-instructions.md | Natif |
| OpenAI Codex | AGENTS.md | Natif (initiateur du standard) |
| Windsurf | .windsurfrules | Lien symbolique |
| Zed/Aider/OpenCode | Divers | Natif |
CONCLUSION PRATIQUE
Utilisez AGENTS.md comme source unique de vérité et créez des liens symboliques vers les fichiers spécifiques à chaque outil. Mais sachez que : l'activation automatique par glob de Cursor dans .cursor/rules/ et les hooks et skills de Claude Code offrent des capacités qu'AGENTS.md seul ne peut pas reproduire. Vous aurez peut-être encore besoin de fichiers spécifiques pour les fonctionnalités avancées.
04
AGENTS.md — Le standard émergent
AGENTS.md est un standard ouvert géré par l'Agentic AI Foundation sous la Linux Foundation. Il a été publié par OpenAI en août 2025 et adopté par plus de 60 000 projets open source. L'AAIF a été cofondée en décembre 2025 par OpenAI, Anthropic, Block, AWS, Google, Microsoft, Bloomberg et Cloudflare.
Comment ça fonctionne : placez un AGENTS.md à la racine de votre projet — du Markdown simple, sans schéma spécial. Les agents lisent le AGENTS.md le plus proche dans l'arborescence de répertoires (pour le support monorepo, imbriquez-les). Les prompts utilisateur ont toujours la priorité sur le contenu du fichier.
05
Que mettre dans un fichier de configuration
Toutes les règles ne se valent pas. La recherche et l'expérience des praticiens montrent constamment que les instructions concrètes et vérifiables surpassent les recommandations abstraites. L'ordre ci-dessous reflète l'impact mesuré.
AVERTISSEMENT BUDGET DE CONTEXTE
La recherche de HumanLayer montre que le system prompt de Claude Code contient à lui seul ~50 instructions individuelles. Les modèles de raisonnement de pointe peuvent suivre environ 150 à 200 instructions avant que la dégradation ne devienne significative. À mesure que le nombre d'instructions augmente, la conformité se dégrade uniformément — le modèle n'oublie pas seulement les derniers éléments, il commence à tout ignorer davantage. Gardez votre fichier de configuration sous 150 lignes.
Niveau 1 (Impact élevé — Toujours inclure)
- Présentation du projet — stack technique, versions, objectif
- Commandes — build, test, lint, deploy (exactes, prêtes à copier-coller)
- Style de code et conventions — formatage, nommage, patterns
- Standards de logging — niveaux, format, ce qui doit être logué
Niveau 2 (Impact moyen)
- Repères d'architecture — structure des dossiers, responsabilités des modules
- Règles « À faire » et « À ne pas faire » — les erreurs les plus fréquentes de l'agent
- Exigences de test — framework, couverture minimale, conventions
Niveau 3 (Rendements décroissants)
- Guide PR/Commit — format, conventions de messages
- Notes de sécurité — informations sensibles, pratiques à éviter
- Instructions de persona — ton, niveau de détail
06
La pyramide d'application
C'est le concept que la plupart des guides existants manquent complètement. Toutes les règles ne doivent pas être appliquées de la même manière. Pensez à l'application comme une pyramide à trois niveaux :
L'IMPLICATION PRATIQUE
Si une règle doit être respectée à chaque fois (comme exécuter prettier après les modifications, ou ne jamais écrire dans .env), mettez-la dans un hook. Si une règle devrait être respectée mais qu'une déviation occasionnelle est acceptable (comme les patterns de logging), mettez-la dans votre fichier de configuration. Si elle ne s'applique qu'à cette tâche, mettez-la dans votre prompt.
Couche Enforce — Hooks et portes CI
Déterministes. Des commandes shell qui s'exécutent à des points spécifiques du cycle de vie. L'agent ne peut pas les contourner. Code de sortie 2 = bloqué, sans négociation.
- À utiliser pour : formatage, linting, exécution de tests, analyse de sécurité, blocage des écritures dans les fichiers sensibles
Couche Advise — Fichiers de configuration (AGENTS.md / CLAUDE.md)
Consultatifs. L'agent les lit et les suit la plupart du temps, mais sous pression de contexte ou signaux conflictuels, il peut dévier.
- À utiliser pour : style de code, guide d'architecture, patterns de logging, conventions de nommage
Couche Suggest — Instructions dans le prompt
Éphémères. Des instructions contextuelles dans votre prompt. Priorité maximale pour la tâche en cours, mais disparaissent à la session suivante.
- À utiliser pour : exigences ponctuelles, contraintes spécifiques à la tâche
07
Standards de logging — La règle au meilleur ROI
Le logging est le standard le plus impactant que vous puissiez appliquer via les règles d'agent, pour plusieurs raisons cumulatives :
- Les LLM loguent naturellement de façon insuffisante. Ils optimisent pour « ça marche », pas pour « c'est observable ». Sans règles, vous obtenez print("processing...") et rien d'autre.
- La majorité du code est désormais généré par des LLM. La personne qui débogue à 2h du matin n'a probablement pas écrit le code. Les logs sont leur seule fenêtre.
- Cela s'applique universellement, quel que soit le langage, le framework ou le type de projet.
- C'est vérifiable. Contrairement à « écrire du code propre », les patterns de logging sont concrets et peuvent être recherchés avec grep.
Le pattern de logging en cinq parties
Chaque opération significative devrait produire une trace structurée de logs suivant ces cinq composantes :
# 1. EN-TÊTE DE RUN — Ce qui démarre, avec quels paramètres
logger.info("=== Début du traitement des demandes ===")
logger.info(f" Environnement : {env}")
logger.info(f" Fichier d'entrée : {input_file}")
logger.info(f" Total enregistrements : {total}")
# 2. PROGRESSION PAR LOT — Visibilité au niveau du lot
for i, batch in enumerate(batches):
logger.info(f" Lot {i+1}/{len(batches)} : traitement de {len(batch)} éléments...")
# 3. DÉLIMITEURS D'ÉLÉMENT — Chaque élément significatif est logué
for item in batch:
logger.info(f" [{item.id}] Traitement : {item.name}")
# ... logique
logger.info(f" [{item.id}] Terminé : status={result.status}")
# 4. SORTIE CONSOLE — Résumé lisible par un humain
print(f"\n✓ Traités {success}/{total} demandes ({elapsed:.1f}s)")
# 5. RÉSUMÉ DE RUN — Totaux finaux structurés
logger.info("=== Résumé du run ===")
logger.info(f" Réussis : {success}")
logger.info(f" Échoués : {failed}")
logger.info(f" Durée : {elapsed:.1f}s")Qualité des messages de log
Les messages de log opaques sont aussi inutiles que l'absence totale de logs. Comparez :
| Mauvais (opaque) | Bon (auto-explicatif) |
|---|---|
| logger.error("Failed") | logger.error(f"Échec traitement demande {id} : {e}", exc_info=True) |
| logger.info("Done") | logger.info(f"Terminé : {count} enregistrements en {elapsed:.1f}s") |
| logger.info("Sending...") | logger.info(f"Envoi email à {recipient} (modèle={template})") |
Quand utiliser le logging JSON structuré
Le logging JSON structuré est le plus adapté lorsque les logs sont consommés par des machines (agrégateurs, alertes, tableaux de bord). Pour les scripts et outils CLI, les logs textuels lisibles par un humain sont généralement plus pratiques. Utilisez le logging JSON structuré quand : vous exploitez des microservices avec une agrégation centralisée des logs, vous avez besoin de champs de recherche cohérents entre plusieurs services, ou les exigences de conformité imposent des formats de log auditables.
Commandes utiles pour l'analyse des logs
# Trouver tous les échecs dans un run
grep "ÉCHEC\|ERROR\|Échoués" app.log
# Compter les éléments traités
grep -c "Traitement :" app.log
# Extraire les résumés de run
grep -A 5 "Résumé du run" app.log
# Suivre la progression en temps réel
tail -f app.log | grep "Lot"08
Hooks : Quand les règles doivent être des garanties
Cette section aborde la plus grande lacune de la plupart des guides sur l'IA coding. Les règles dans les fichiers de configuration sont consultatives — le LLM les lit, les comprend et peut quand même les ignorer. Comme l'a documenté un praticien : « Vous pouvez écrire NE JAMAIS MODIFIER les fichiers .env dans votre CLAUDE.md. Claude le lira. Claude le comprendra. Et Claude pourrait quand même modifier votre fichier .env. »
Les hooks sont des commandes shell qui s'exécutent à des points spécifiques du cycle de vie de Claude Code. Ils sont déterministes — ils s'exécutent à chaque fois que l'événement correspondant se déclenche, indépendamment de ce que le modèle pense devoir faire.
Code de sortie 2 = action bloquée. L'agent ne peut pas négocier pour passer outre.
| Événement Hook | Quand il se déclenche | Exemples d'utilisation |
|---|---|---|
| PostToolUse | Après l'édition/écriture d'un fichier | Auto-formatage avec prettier/gofmt, exécution du linter |
| PreToolUse | Avant l'exécution d'un outil | Bloquer les écritures dans .env, empêcher les rm -rf risqués |
| Stop | Quand l'agent termine | Exécuter la suite de tests, vérification des types, scan de sécurité |
| SessionStart | Au début de la session | Injecter du contexte dynamique |
| PermissionRequest | L'agent demande des permissions | Auto-approuver les opérations sûres, bloquer les destructives |
LA STRATÉGIE COMBINÉE
Les fichiers de configuration enseignent à l'agent à quoi ressemble du bon code. Les hooks garantissent que les règles critiques sont appliquées. Les linters et le CI attrapent tout le reste. Utilisez les trois couches — ne vous fiez à aucune d'entre elles seule.
Exemple : Auto-formatage après chaque édition
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "write|edit",
"command": "npx prettier --write $CLAUDE_FILE_PATH"
}
]
}
}Exemple : Bloquer les écritures dans les fichiers sensibles
// .claude/settings.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "write|edit",
"command": "echo $CLAUDE_FILE_PATH | grep -qE '\\.(env|pem|key)$' && exit 2 || exit 0"
}
]
}
}09
Évaluation honnête : Ce qui marche, ce qui est du hype
LA RÈGLE 80/20
La majeure partie de la valeur provient d'un petit ensemble de règles concrètes : patterns de logging, commandes exactes de build/test, 5 à 10 règles « à faire »/« à ne pas faire » et des hooks pour les garde-fous critiques. Tout au-delà a des rendements décroissants et un coût de maintenance croissant. Le plus grand risque n'est pas trop peu de règles — ce sont les règles obsolètes qui induisent activement en erreur.
Fonctionne vraiment
| Pratique | Pourquoi ça marche |
|---|---|
| Commandes exactes dans des blocs de code | Les agents copient-collent au lieu de deviner |
| Fichiers réels comme exemples | Les exemples concrets battent les descriptions abstraites |
| Fichiers de configuration courts, moins de 150 lignes | Le suivi des instructions se dégrade uniformément à mesure que le nombre augmente |
| Règles de logging | Les LLM loguent systématiquement de façon insuffisante sans elles |
| Hooks pour les règles critiques | Déterministes, impossibles à ignorer |
| Délégation aux linters | Source unique de vérité |
Avec des nuances
| Pratique | Nuance |
|---|---|
| Chemins de fichiers détaillés | Les chemins deviennent obsolètes rapidement, décrivez les capacités à la place |
| Labels de persona simples | Impact mesurable minimal, mais le contexte de cadrage du domaine peut façonner significativement le résultat |
| Règles complexes sur plusieurs fichiers | Le coût de maintenance croît rapidement |
| AGENTS.md comme standard « universel » | Les liens symboliques fonctionnent, mais l'activation par glob de Cursor et les hooks/skills de Claude Code offrent des capacités qu'il ne peut pas reproduire |
Surestimé
| Affirmation | Réalité |
|---|---|
| « Les plateformes d'observabilité des agents sont essentielles » | Pour les agents de programmation, le logging structuré dans le code généré a plus de valeur |
| « Les agents IA remplaceront les développeurs » | Chaque output nécessite une revue humaine. La revue n'est jamais nulle. |
| « Des jeux de règles différents pour chaque langage » | Les règles de logging, d'architecture et de test sont agnostiques du langage. Les spécificités du langage sont mieux gérées par de vrais linters |
10
Guide de mise en œuvre
Étape 1 : Créer votre AGENTS.md (30 min)
Commencez avec un template minimal et ajoutez au fur et à mesure que vous découvrez ce qui manque. Un fichier de 40 lignes qui couvre les commandes, le style de code et le logging vaut plus qu'un manifeste de 300 lignes que l'agent ignore à moitié.
# AGENTS.md
## Présentation du projet
- Stack : Next.js 16, TypeScript, Tailwind CSS v4, Sanity CMS
- Gestionnaire de paquets : pnpm
- Node : >=20
## Commandes
```bash
pnpm dev # Serveur de développement
pnpm build # Build de production
pnpm lint # ESLint
pnpm test # Vitest
```
## Style de code
- Formatage : prettier (appliqué à la sauvegarde)
- Imports : absolus avec alias @/
- Composants : fonctionnels, avec TypeScript strict
- Nommage : camelCase pour les variables, PascalCase pour les composants, kebab-case pour les fichiers
## Standards de logging
- Utiliser console.error() pour les échecs avec contexte
- Chaque fonction async a un try/catch avec des messages d'erreur descriptifs
- En-tête de run à l'entrée des opérations batch
- Toujours inclure : quel élément, quelle opération, quel résultat
## Règles
- NE PAS modifier .env, .env.local ou les fichiers .pem
- NE PAS utiliser `any` en TypeScript
- NE PAS ajouter de dépendances sans approbation explicite
- TOUJOURS exécuter pnpm lint avant de considérer une tâche comme terminéeÉtape 2 : Configurer les liens symboliques (5 min)
Créez des liens symboliques depuis AGENTS.md vers les fichiers spécifiques à chaque outil :
# Depuis la racine du projet
ln -sf AGENTS.md CLAUDE.md
ln -sf AGENTS.md .windsurfrules
mkdir -p .github
ln -sf ../AGENTS.md .github/copilot-instructions.md
# Ajouter au .gitignore si vous ne voulez pas les symlinks dans le repo
echo "CLAUDE.md" >> .gitignore
echo ".windsurfrules" >> .gitignoreÉtape 3 : Ajouter des hooks pour les règles critiques (15 min)
Configurez des hooks dans Claude Code pour garantir les règles qui ne peuvent pas être enfreintes :
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "write|edit",
"command": "npx prettier --write $CLAUDE_FILE_PATH 2>/dev/null || true"
}
],
"PreToolUse": [
{
"matcher": "write|edit",
"command": "echo $CLAUDE_FILE_PATH | grep -qE '\\.(env|pem|key)$' && exit 2 || exit 0"
}
],
"Stop": [
{
"command": "pnpm lint --quiet 2>&1 | tail -20"
}
]
}
}Étape 4 : Ajouter des règles glob Cursor (optionnel, 15 min)
Cursor supporte l'activation automatique basée sur des globs, où les règles ne s'appliquent qu'aux fichiers correspondant à un pattern :
---
globs: ["**/*.ts", "**/*.tsx"]
alwaysApply: false
---
# Règles TypeScript
- Mode strict activé, pas de `any`
- Exporter les types explicitement
- Utiliser les patterns zod pour la validationÉtape 5 : Traiter comme du code (continu)
AGENTS.md a les mêmes problèmes de maintenance que n'importe quelle documentation. Sans entretien actif, les règles deviennent obsolètes et trompeuses.
- Versionner AGENTS.md dans Git
- Revoir les modifications en code review
- Nettoyer trimestriellement : supprimer les règles obsolètes
- Tester : après des modifications, lancer une session agent et vérifier si elle suit les nouvelles règles
- Rester sous 150 lignes — si ça dépasse, prioriser
11
Observabilité des agents — Clarifier la confusion
Il y a deux préoccupations distinctes que de nombreux guides confondent :
RECOMMANDATION
Pour la plupart des équipes utilisant Cursor ou Claude Code pour écrire du code applicatif, concentrez-vous sur la première catégorie. Si vous construisez des applications basées sur des LLM en production, alors l'observabilité des agents devient pertinente — l'industrie converge vers les conventions sémantiques OpenTelemetry pour la GenAI.
Observabilité du code généré
Un logging adéquat, une gestion des erreurs, des métriques — exactement ce que couvre la Section 7. C'est la priorité pour la plupart des équipes qui utilisent des agents de programmation pour écrire du code applicatif.
Observabilité de l'agent lui-même
Tracer le raisonnement, suivre la consommation de tokens, évaluer la qualité des outputs — des outils comme LangSmith, Langfuse, etc. Cela ne devient pertinent que si vous construisez des applications basées sur des LLM (chatbots, pipelines RAG, workflows autonomes).
12
Recommandations
FAITES CES SIX CHOSES
- Créez un AGENTS.md à la racine de chaque projet actif (moins de 150 lignes, concentrez-vous sur les commandes, le style de code, le logging).
- Configurez des liens symboliques vers CLAUDE.md, .windsurfrules, etc.
- Ajoutez les standards de logging de la Section 7.
- Ajoutez des hooks pour tout ce qui doit être déterministe.
- Déléguez aux outils existants — linters, formateurs, vérificateurs de types sont des sources uniques de vérité.
- Traitez AGENTS.md comme du code : versionnez-le, revoyez-le, nettoyez-le trimestriellement.
À REPORTER POUR L'INSTANT
- Hiérarchies complexes de règles sur plusieurs fichiers
- Plateformes d'observabilité des agents (sauf si vous construisez des systèmes de production basés sur des LLM)
- Labels de persona simples
- Documentation détaillée des chemins de fichiers
Prêt à mettre en œuvre ?
Obtenez le guide complet en PDF pour une consultation hors ligne et un partage en équipe.
Télécharger le PDF