KURSE / CLAUDE-CODE / MODUL 12

Agents sur mesure avec le SDK — et savoir quand s'en passer

⚠ Diese Seite ist noch nicht uebersetzt. Anzeige auf Englisch.
← Claude Code: vom Einsteiger zum Experten
Modul 12/12 Experte 18 min

Agents sur mesure avec le SDK — et savoir quand s'en passer

Construire son propre agent avec l'Agent SDK, reconnaître les besoins qui se règlent avec une skill ou un hook, et les pratiques senior. Conclusion de la formation. Module 12.

Ziele dieses Moduls
  • Décider si un besoin justifie un agent sur mesure, une skill ou un simple hook
  • Écrire un agent avec query() et lui brancher un outil sur vos propres données
  • Appliquer les pratiques senior : contexte, coût, vérification, garde-fous, journalisation

Dernier module. Vous savez faire travailler Claude Code dans une conversation, puis sans aucune interface. Reste une marche : appeler l’agent depuis votre propre programme, avec vos données et votre logique. Mais avant de coder — en avez-vous vraiment besoin ?

Ce que vous allez apprendre

  • Trancher entre CLAUDE.md, skill, hook, sous-agent, script et agent sur mesure
  • Écrire un agent avec query() et lui brancher un outil sur vos données
  • Automatiser le fil rouge de la formation de bout en bout, avec vérification et journal
  • Les pratiques qui distinguent un automate fiable d’un bricolage

Avez-vous besoin d’un agent sur mesure ?

La plupart des besoins qui ressemblent à « il me faudrait un agent » se règlent avec ce que vous connaissez déjà, sans code à maintenir.

Le besoinLa bonne réponsePourquoi pas le SDK
Rappeler une règle à chaque sessionCLAUDE.md (module 6)Un fichier texte, zéro ligne de code
Rejouer une procédure écrite noir sur blancUne skill (module 10)Chargée à la demande, partageable
Empêcher une action, formater après coupUn hook (module 9)S’exécute à coup sûr, sans dépendre du modèle
Explorer un gros volume sans encombrer la sessionUn sous-agent (module 10)Déjà intégré, contexte séparé
Faire tourner une tâche sans surveillanceclaude -p dans un script (module 11)Une ligne suffit
Appeler l’agent depuis votre programme, avec vos donnéesL’Agent SDKC’est le seul cas où il s’impose

💡 Astuce — Parcourez ce tableau de haut en bas : le premier « oui » est votre réponse. Beaucoup d’agents sur mesure remplacent un fichier de dix lignes.

Le SDK, en pratique

L’Agent SDK d’Anthropic — anciennement Claude Code SDK, aujourd’hui Claude Agent SDK — expose le moteur de Claude Code : la boucle « lire, choisir un outil, agir, observer, recommencer », plus les permissions et le contexte.

npm install @anthropic-ai/claude-agent-sdk   # TypeScript
pip install claude-agent-sdk                 # Python

Une fonction porte l’essentiel : query(). Vous lui passez une demande et des options ; elle rend un itérateur asynchrone de messages — messages système, appels d’outils, réponses, puis un dernier message de type result qui clôt l’exécution. L’authentification passe par ANTHROPIC_API_KEY, comme au module 11.

Côté Python, mêmes concepts : les options passent par ClaudeAgentOptions, les noms s’écrivent allowed_tools et max_turns, et ClaudeSDKClient garde la session ouverte entre plusieurs questions.

Six options font l’essentiel du travail — et racontent toute la formation :

OptionRôleCe que vous connaissez déjà
cwdLe dossier de travail de l’agentLe dossier ouvert dans l’application
allowedToolsListe blanche des outils approuvésLes permissions (module 4)
permissionModedefault, acceptEdits, plan, bypassPermissionsLe sélecteur de mode (module 4)
systemPromptLes consignes de fond de l’agentCLAUDE.md (module 6)
mcpServersLes serveurs MCP, déclarés en codeclaude mcp add (module 8)
maxTurnsPlafond d’allers-retoursLe coupe-circuit (module 11)

Rien de nouveau : une autre façon de l’exprimer.

Des outils à vous

L’intérêt du SDK, c’est de brancher vos données. Deux fonctions suffisent : tool() décrit un outil — nom, description, paramètres, code exécuté — et createSdkMcpServer() les regroupe en serveur MCP in-process, c’est-à-dire dans votre programme même : contrairement aux serveurs du module 8, rien à lancer à côté. En Python, un décorateur @tool et create_sdk_mcp_server.

La description de l’outil est ce que l’agent lit pour décider quand l’appeler : soignez-la.

⚠️ Piège courant — Dans allowedTools, un outil MCP porte son nom complet : mcp__serveur__outil, avec des doubles tirets bas. Écrivez seulement recherche_client et la liste blanche ne correspond à rien : l’outil ne sera jamais approuvé.

Cas pratique : l’agent qui classe les documents entrants

La situation. Le script du module 11 atteint sa limite : les règles de la famille se sont étoffées — un dossier par personne, une convention de nommage, des exceptions. Une réponse en un mot ne suffit plus ; il faut une décision structurée, vérifiée et tracée.

Le principe. Les règles vivent dans votre code, exposées par un outil. L’agent lit le document, consulte les règles, rend une décision en JSON. Le programme déplace et journalise. Comme au module précédent : le modèle décide, le programme exécute.

// classeur.ts — un agent par document, les regles restent dans le code
import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";

const regles = tool(
  "regles_de_classement",
  "Renvoie les dossiers autorises et la convention de nommage de la famille",
  {},
  async () => ({ content: [{ type: "text", text: JSON.stringify(REGLES) }] })
);

const serveur = createSdkMcpServer({
  name: "classement", version: "1.0.0", tools: [regles]
});

for (const fichier of aClasser) {
  for await (const message of query({
    prompt: `Lis ${fichier}, appelle regles_de_classement, puis reponds uniquement par un objet JSON {dossier, nom, confiance}.`,
    options: {
      cwd: RACINE,
      mcpServers: { classement: serveur },
      allowedTools: ["Read", "mcp__classement__regles_de_classement"],
      maxTurns: 6
    }
  })) {
    if (message.type === "result") deciderEtJournaliser(fichier, message);
  }
}

La vérification et le journal. Tout se joue dans deciderEtJournaliser, qui est à vous : valider le JSON, refuser un dossier hors liste, mettre en quarantaine une décision peu sûre, déplacer le fichier, puis écrire une ligne — date, origine, destination, confiance, coût. Un comptage des fichiers avant et après signale la moindre disparition. Un mois plus tard, le journal explique pourquoi tel document se trouve là.

Les pièges rencontrés :

  • L’agent a d’abord répondu du texte autour du JSON. La consigne « réponds uniquement par un objet JSON » et une validation stricte côté programme règlent le cas.
  • Write n’apparaît jamais dans la liste blanche. Un agent qui ne peut pas écrire ne peut pas se tromper de façon irréversible.
  • La confiance annoncée n’est pas une garantie. Elle sert à trier ce qui mérite un œil humain, pas à décider toute seule.

Les pratiques qui font la différence

PratiqueConcrètement
Contexte bornéUn appel, une unité de travail. En interactif, /compact puis /clear
Coût mesurémaxTurns fixé, coût journalisé, modèle choisi selon la difficulté
VérificationUn contrôle après coup — comptage, tests, échantillon relu — plutôt que la confiance dans la sortie
Garde-fousListe blanche courte, actions irréversibles côté programme, règles deny sur les secrets, hooks bloquants
ReproductibilitéRègles versionnées, demande figée, journal conservé : une exécution se rejoue et s’explique
Relecture humaineL’agent propose, vous tranchez les cas douteux. Aucune automatisation ne remplace ce geste

💡 Astuce — Avant d’écrire deux cents lignes de SDK, prototypez la même tâche avec claude -p et --output-format json. Si le prototype tient, le portage est mécanique ; sinon, vous venez d’économiser une journée.

Le chemin parcouru

NiveauModulesCe que vous savez faire
Débutant1 à 3Installer l’application, ouvrir un dossier, demander et relire
Intermédiaire4 à 7Permissions, retour en arrière, mémoire du projet, réglages
Avancé8 à 10Outils externes, garde-fous automatiques, sous-agents et skills
Expert11 à 12Faire tourner une tâche sans surveillance, construire un agent sur mesure

Deux compagnons pour la suite : l’aide-mémoire des commandes, à garder ouvert, et le glossaire. Et si votre quotidien tourne autour de Word, Excel et Outlook, la formation Microsoft Copilot prend le relais.

À vous de jouer

  1. Tranchez avant de coder. Placez les trois corvées notées au module 1 dans le tableau de décision : la plupart ne demanderont pas de SDK.
  2. Écrivez un agent en lecture seule : npm install @anthropic-ai/claude-agent-sdk, la clé dans ANTHROPIC_API_KEY, cwd sur un vrai dossier, allowedTools limité à Read, Glob, Grep, maxTurns à 10, une demande de résumé.
  3. Lisez les messages qui défilent : la boucle des douze modules, vue de l’intérieur.
  4. Cassez volontairement. Retirez Glob de la liste blanche et relancez : observez comment l’agent se débrouille — ou renonce.
  5. Ajoutez un outil à vous avec tool() et createSdkMcpServer(), même s’il renvoie une valeur en dur. N’oubliez pas le nom complet mcp__serveur__outil.

En résumé

  • Le SDK ne se justifie que si l’agent doit vivre dans votre programme : sinon, CLAUDE.md, une skill ou un hook suffisent.
  • query() prend une demande et des options, et rend un itérateur de messages qui se termine par un message result — en TypeScript comme en Python.
  • Six options font l’essentiel : cwd, allowedTools, permissionMode, systemPrompt, mcpServers, maxTurns. Les chapitres de cette formation, exprimés en code.
  • tool() et createSdkMcpServer() branchent vos données sans processus externe ; dans la liste blanche, l’outil s’écrit mcp__serveur__outil.
  • Le modèle décide, le programme exécute, le journal explique. Jamais de bypassPermissions hors conteneur jetable.
  • Six pratiques à retenir : contexte borné, coût mesuré, vérification, garde-fous, reproductibilité, relecture humaine.

Douze modules plus tôt, vous ouvriez une application pour ranger un dossier de scans mal nommés. Vous savez aujourd’hui encadrer, automatiser et construire — et décider ce qui mérite de l’être. L’outil n’a pas changé de nature en chemin : votre rôle, si. Moins d’exécution, plus d’arbitrage. Le reste s’apprend en forgeant : un vrai besoin, cette semaine, en petit.

Testen Sie Ihr Wissen

0 / 5
  1. Vous voulez que Claude respecte toujours la même convention de nommage dans vos sessions. Faut-il construire un agent avec le SDK ?

  2. Votre agent est lancé avec allowedTools limité à Read et Grep. En cours de route, il veut modifier un fichier avec Edit. Que se passe-t-il ?

  3. Vous exposez un outil recherche_client dans un serveur in-process nommé support. Qu'écrivez-vous dans allowedTools ?

  4. Dans le cas pratique, l'agent classe les documents entrants. Qu'est-ce qui rend une erreur de sa part rattrapable ?

  5. Avant d'écrire deux cents lignes de SDK, quel réflexe peut vous économiser une journée ?