Cours · La boucle agentique · D'après la doc Anthropic

La boucle

Un agent, ce n'est pas une réponse en un coup. C'est un modèle qui raisonne, des outils qui agissent, et un cycle qui recommence jusqu'à ce que la tâche soit faite.

Vérifié sur la doc Claude Code, l'Agent SDK et « Building Effective Agents » — juin 2026
CONTEXTE rassembler AGIR appeler un outil VÉRIFIER le résultat réel RÉPÉTER jusqu'à fini
Écouter cet article (12 min)

Version audio générée localement (Pocket TTS, Kyutai, voix Estelle). Les exemples de code et tableaux sont à retrouver sur cette page.

Le principe

Trois phases, en cycle

Quand vous confiez une tâche à un agent, il la traite en trois phases qui se mélangent — puis il recommence. La boucle est entraînée par deux choses : un modèle qui raisonne, et des outils qui agissent.

Phase 1

Rassembler le contexte

L'agent va chercher ce dont il a besoin : votre demande, les fichiers concernés, les résultats des outils précédents. Il se construit une vue du terrain avant d'agir.

Phase 2

Agir

Il appelle un outil pour faire une seule chose concrète : éditer un fichier, lancer une commande, chercher dans le code, interroger le web. Une action, pas dix.

Phase 3

Vérifier

Il observe le résultat réel — sortie de commande, tests, diff — pour savoir s'il avance ou s'il s'est trompé. C'est la « vérité de terrain » qui guide le tour suivant.

Puis il recommence. La boucle s'adapte à la demande : une simple question peut s'arrêter à la phase contexte ; un correctif de bug peut enchaîner des dizaines de tours. Et surtout, vous êtes dans la boucle : vous pouvez l'interrompre, ajouter du contexte ou la réorienter à tout moment.

Niveau 1

Débutant

Objectif : comprendre la boucle avec des mots simples, et lancer votre première boucle sans écrire de code.

01

Décrire le but, pas les étapes

// vous dites OÙ aller — l'agent trouve COMMENT y aller

Imaginez un artisan soigneux. Il regarde autour de lui, fait une chose, vérifie que c'est bon, puis passe à la suite. Il ne devine pas tout d'un coup : il avance pas à pas en se servant de ce qu'il vient d'apprendre.

Un agent fonctionne pareil. La grande différence avec un simple chatbot : vous ne lui dictez pas la marche à suivre. Vous décrivez le résultat voulu, et il enchaîne tout seul contexte → action → vérification jusqu'à y arriver.

Exemple complet — une première session

vous ›Ajoute un bouton « Exporter en CSV » sur ma page de rapport.
Tour 1 · Contexte
L'agent cherche et lit les fichiers de la page pour comprendre comment elle est construite. Glob Grep Read
Tour 2 · Action
Il modifie le composant : il ajoute le bouton et la fonction qui transforme les données en CSV. Edit
Tour 3 · Vérif.
Il lance l'appli (ou les tests) et clique pour confirmer que le fichier se télécharge bien. Bash
Fin
« C'est fait : le bouton est en place et l'export CSV fonctionne. »

Vous n'avez écrit aucune ligne : vous avez décrit le but. L'agent a bouclé jusqu'au résultat — et vous auriez pu l'arrêter à n'importe quel tour pour préciser.

À retenir

  1. Décrivez le but (« exporte en CSV »), pas la procédure technique étape par étape.
  2. Demandez-lui de vérifier son travail (lancer l'appli, tester) — la vérification fait partie de la boucle.
  3. Vous gardez la main : interrompez et réorientez dès que ça part dans la mauvaise direction.

Niveau 2

Intermédiaire

Objectif : comprendre les rouages — tours, messages, outils, permissions — et piloter la boucle par code avec le Claude Agent SDK.

02

Un « tour » = un aller-retour

// le modèle propose des appels d'outils, le SDK les exécute, les résultats reviennent — et ça boucle

Dans le SDK, un tour est un aller-retour : le modèle répond avec un ou plusieurs appels d'outils, le SDK les exécute, et il renvoie automatiquement les résultats au modèle. Les tours s'enchaînent sans rendre la main à votre code tant que le modèle continue d'appeler des outils. La boucle s'arrête quand il répond sans aucun appel d'outil.

Les messages qui défilent

Pendant la boucle, le SDK émet un flux de messages. Les principaux : SystemMessage (sous-type init, métadonnées de session), AssistantMessage (texte + appels d'outils d'un tour), UserMessage (le résultat d'un outil renvoyé au modèle), et ResultMessage qui clôt la boucle avec le texte final, le coût, l'usage de tokens et l'session_id.

Exemple complet — Python (Claude Agent SDK)

# Corriger des tests qui échouent — l'agent boucle tout seul
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage

async def corrige_les_tests():
    async for message in query(
        prompt="Trouve et corrige le bug qui fait échouer les tests du module d'authentification",
        options=ClaudeAgentOptions(
            allowed_tools=["Read", "Edit", "Bash", "Glob", "Grep"],  # outils auto-approuvés
            setting_sources=["project"],   # charge CLAUDE.md, skills et hooks du projet
            max_turns=30,                  # garde-fou : stoppe avant l'emballement
            effort="high",                 # raisonnement poussé pour du debug
        ),
    ):
        if isinstance(message, ResultMessage):
            if message.subtype == "success":
                print("Terminé :", message.result)
            elif message.subtype == "error_max_turns":
                print("Limite de tours atteinte — reprendre la session pour continuer.")
            else:
                print("Arrêt :", message.subtype)
            if message.total_cost_usd is not None:
                print(f"Coût : ${message.total_cost_usd:.4f}")

asyncio.run(corrige_les_tests())

Vous décrivez la tâche et les outils permis ; c'est le SDK qui tient la boucle. Vous lisez le ResultMessage pour savoir ce qui s'est passé.

Les manettes de la boucle

max_turns plafonne le nombre d'allers-retours d'outils, max_budget_usd plafonne le coût, effort règle la profondeur de raisonnement (lowmax), et model choisit le modèle (ex. claude-sonnet-4-6). Les outils en lecture seule (Read, Glob, Grep) peuvent tourner en parallèle ; ceux qui modifient l'état (Edit, Write, Bash) s'exécutent en série.

À retenir

  1. Bornez la boucle en production : max_turns et/ou max_budget_usd évitent les runs qui s'emballent.
  2. Lisez le subtype du ResultMessage avant de lire result — il n'est garanti que sur success.
  3. Réglez l'effort selon la difficulté : low pour lister des fichiers, high/max pour debugger ou refactorer.

En détail

La boucle, tour par tour

Le cycle exact que le SDK exécute à chaque session — c'est le même moteur qui anime Claude Code.

01

Recevoir le prompt

Le modèle reçoit votre demande, le system prompt, la définition des outils et l'historique de conversation.

→ SystemMessage · init
02

Évaluer et répondre

Il évalue l'état courant et décide : du texte, un ou plusieurs appels d'outils, ou les deux.

→ AssistantMessage
03

Exécuter les outils

Le SDK lance chaque outil demandé et collecte les résultats, qui repartent vers le modèle pour la décision suivante.

→ UserMessage (résultats)
04

Répéter

Les étapes 2 et 3 se répètent. Chaque cycle complet est un tour. Ça continue jusqu'à une réponse sans aucun appel d'outil.

boucle ⟳
05

Renvoyer le résultat

Réponse finale en texte, puis un récapitulatif : texte, tokens, coût, identifiant de session.

→ ResultMessage

Niveau 3

Expert

Objectif : garder la boucle saine sur des runs longs et autonomes. Ici, l'ennemi numéro un est le contexte qui se remplit — la performance se dégrade à mesure qu'il sature.

03

Concevoir pour le contexte et la durée

// la compaction ne suffit pas — il faut une architecture qui laisse des traces

Dans une session, le contexte s'accumule et ne se réinitialise pas entre les tours : system prompt, définition des outils, historique, entrées et sorties d'outils. De grosses sorties (un gros fichier lu, une commande verbeuse) peuvent engloutir des milliers de tokens d'un coup. Quand la limite approche, le SDK compacte automatiquement : il résume l'historique ancien et garde l'essentiel récent (un message compact_boundary le signale).

Conséquence directe : les instructions placées tout en début de conversation peuvent disparaître au résumé. Les règles durables vont dans le CLAUDE.md (réinjecté à chaque requête), pas dans le premier prompt.

Exemple complet — guider la compaction via CLAUDE.md

# Instructions de résumé

Lors du résumé de cette conversation, conserve toujours :
- l'objectif courant et les critères d'acceptation
- les chemins des fichiers lus ou modifiés
- les résultats de tests et les messages d'erreur
- les décisions prises et leur justification

Le piège des runs longs (et la parade d'Anthropic)

La compaction seule ne suffit pas. Même un modèle de pointe lancé en boucle sur plusieurs fenêtres de contexte échoue à livrer une appli de qualité production s'il ne reçoit qu'un prompt vague (« clone claude.ai »). Deux travers reviennent : tenter de tout faire d'un coup, et tomber à court de contexte en plein milieu en laissant un travail partiel et non documenté.

La parade repose sur deux rôles complémentaires : un agent initialiseur qui prépare l'environnement, écrit la liste des fonctionnalités, crée les scripts de test et documente l'état ; puis un agent de production chargé de progresser par incréments à chaque session, en laissant des artefacts clairs pour la suivante. Variante recommandée pour le très long : une architecture à trois agents planificateur / générateur / évaluateur.

Garder le contexte léger

Déléguez les sous-tâches à des sous-agents : chacun démarre sur un contexte neuf et ne renvoie au parent que sa réponse finale — le contexte principal ne grossit que de ce résumé, pas de tout le détail. Un sous-agent « relecteur » peut ainsi pointer les manques sans polluer la session principale. Soyez aussi sélectif sur les outils (chaque définition coûte du contexte) et baissez l'effort sur les tâches routinières.

Les hooks : surveiller la boucle de l'extérieur

Les hooks se déclenchent à des points précis du cycle, hors du contexte du modèle : PreToolUse (valider/bloquer une commande dangereuse), PostToolUse (auditer), Stop (valider le résultat), PreCompact (archiver le transcript avant résumé). Un PreToolUse qui refuse un appel empêche son exécution et le modèle reçoit le refus.

À retenir

  1. Concevez pour le contexte : compaction guidée, règles dans le CLAUDE.md, sous-agents pour isoler le détail.
  2. Rendez le travail vérifiable et laissez des artefacts (liste de tâches, tests, PROGRESS.md) — c'est ce qui sauve les runs longs.
  3. Échouez en sécurité : plafond de tours + liste blanche d'outils, et jamais de bypassPermissions hors environnement isolé.

Démarrer

3 prompts pour bien lancer la boucle

Trois entrées en matière qui reflètent les bonnes pratiques d'Anthropic : explorer avant d'agir, cadrer avec des critères vérifiables, et avancer par petits pas en laissant des traces. Copiez, adaptez ce qui est entre crochets, lancez.

01

Explorer avant d'agir

Pousse la phase « contexte » à fond et vous garde dans la boucle avant toute modification.

Avant d'écrire le moindre code : explore le dépôt et explique-moi, en clair, comment fonctionne [la fonctionnalité X]. Ne modifie aucun fichier pour l'instant. Termine par un plan en étapes numérotées que je validerai avant que tu commences.
02

Cadrer avec une vérification intégrée

Donne un but précis + des critères de réussite, et rend la phase « vérifier » explicite (approche guidée par les tests).

Objectif : [résultat précis attendu]. Critères de réussite : [comportement observable / tests qui doivent passer]. Procède ainsi : écris d'abord un test qui échoue, puis le code minimal pour le faire passer, puis lance toute la suite de tests et corrige jusqu'au vert. Montre-moi le diff final.
03

Avancer par incréments, avec artefacts

La parade aux runs longs : progression incrémentale et traces écrites, pour éviter le « tout d'un coup » et la saturation du contexte.

Découpe ce travail en petites étapes. À chaque étape : fais une seule chose, lance les tests, puis consigne l'avancement dans PROGRESS.md (Fait / À faire / Décisions). Ne tente pas de tout faire d'un seul coup. Arrête-toi après chaque étape et résume où tu en es.

Pour aller plus loin

Construisez vos propres agents

Ce cours fait partie des ressources ExploDev pour passer de la théorie à la pratique sur les agents, le Claude Agent SDK et l'ingénierie de contexte.

Explorer sur explodev.fr →