Aperçu

Le SDK Claude Code prend en charge deux modes d’entrée distincts pour interagir avec les agents :
  • Mode d’Entrée en Streaming (Par défaut et recommandé) - Une session persistante et interactive
  • Entrée de Message Unique - Requêtes ponctuelles qui utilisent l’état de session et la reprise
Ce guide explique les différences, les avantages et les cas d’usage pour chaque mode afin de vous aider à choisir la bonne approche pour votre application.

Mode d’Entrée en Streaming (Recommandé)

Le mode d’entrée en streaming est la façon préférée d’utiliser le SDK Claude Code. Il fournit un accès complet aux capacités de l’agent et permet des expériences riches et interactives. Il permet à l’agent de fonctionner comme un processus de longue durée qui reçoit les entrées utilisateur, gère les interruptions, fait remonter les demandes de permission et gère la gestion de session.

Comment Ça Marche

Avantages

Téléchargements d'Images

Joindre des images directement aux messages pour l’analyse visuelle et la compréhension

Messages en File

Envoyer plusieurs messages qui se traitent séquentiellement, avec possibilité d’interruption

Intégration d'Outils

Accès complet à tous les outils et serveurs MCP personnalisés pendant la session

Support des Hooks

Utiliser les hooks de cycle de vie pour personnaliser le comportement à divers points

Retour en Temps Réel

Voir les réponses au fur et à mesure qu’elles sont générées, pas seulement les résultats finaux

Persistance du Contexte

Maintenir le contexte de conversation à travers plusieurs tours naturellement

Exemple d’Implémentation

import { query } from "@anthropic-ai/claude-code";
import { readFileSync } from "fs";

async function* generateMessages() {
  // Premier message
  yield {
    type: "user" as const,
    message: {
      role: "user" as const,
      content: "Analyser cette base de code pour les problèmes de sécurité"
    }
  };
  
  // Attendre les conditions ou l'entrée utilisateur
  await new Promise(resolve => setTimeout(resolve, 2000));
  
  // Suivi avec image
  yield {
    type: "user" as const,
    message: {
      role: "user" as const,
      content: [
        {
          type: "text",
          text: "Examiner ce diagramme d'architecture"
        },
        {
          type: "image",
          source: {
            type: "base64",
            media_type: "image/png",
            data: readFileSync("diagram.png", "base64")
          }
        }
      ]
    }
  };
}

// Traiter les réponses en streaming
for await (const message of query({
  prompt: generateMessages(),
  options: {
    maxTurns: 10,
    allowedTools: ["Read", "Grep"]
  }
})) {
  if (message.type === "result") {
    console.log(message.result);
  }
}

Entrée de Message Unique

L’entrée de message unique est plus simple mais plus limitée.

Quand Utiliser l’Entrée de Message Unique

Utilisez l’entrée de message unique quand :
  • Vous avez besoin d’une réponse ponctuelle
  • Vous n’avez pas besoin de pièces jointes d’images, de hooks, etc.
  • Vous devez opérer dans un environnement sans état, comme une fonction lambda

Limitations

Le mode d’entrée de message unique ne prend pas en charge :
  • Les pièces jointes d’images directes dans les messages
  • La mise en file de messages dynamique
  • L’interruption en temps réel
  • L’intégration de hooks
  • Les conversations multi-tours naturelles

Exemple d’Implémentation

import { query } from "@anthropic-ai/claude-code";

// Requête ponctuelle simple
for await (const message of query({
  prompt: "Expliquer le flux d'authentification",
  options: {
    maxTurns: 1,
    allowedTools: ["Read", "Grep"]
  }
})) {
  if (message.type === "result") {
    console.log(message.result);
  }
}

// Continuer la conversation avec gestion de session
for await (const message of query({
  prompt: "Maintenant expliquer le processus d'autorisation",
  options: {
    continue: true,
    maxTurns: 1
  }
})) {
  if (message.type === "result") {
    console.log(message.result);
  }
}