TypeScript
Créez des agents IA personnalisés avec le SDK TypeScript Claude Code
Prérequis
- Node.js 18+
Installation
Installez @anthropic-ai/claude-code
depuis NPM :
Pour voir le code source du SDK TypeScript, visitez la page @anthropic-ai/claude-code
sur NPM.
Utilisation de base
L’interface principale via le SDK TypeScript est la fonction query
, qui retourne un itérateur asynchrone qui diffuse les messages au fur et à mesure qu’ils arrivent :
Options de configuration
Argument | Type | Description | Défaut |
---|---|---|---|
abortController | AbortController | Contrôleur d’abandon pour annuler les opérations | new AbortController() |
additionalDirectories | string[] | Répertoires supplémentaires à inclure dans la session | undefined |
allowedTools | string[] | Liste des outils que Claude est autorisé à utiliser | Tous les outils activés par défaut |
appendSystemPrompt | string | Texte à ajouter à l’invite système par défaut | undefined |
canUseTool | (toolName: string, input: any) => Promise<ToolPermissionResult> | Fonction de permission personnalisée pour l’utilisation d’outils | undefined |
continue | boolean | Continuer la session la plus récente | false |
customSystemPrompt | string | Remplacer entièrement l’invite système par défaut | undefined |
cwd | string | Répertoire de travail actuel | process.cwd() |
disallowedTools | string[] | Liste des outils que Claude n’est pas autorisé à utiliser | undefined |
env | Dict<string> | Variables d’environnement à définir | undefined |
executable | 'bun' | 'deno' | 'node' | Quel runtime JavaScript utiliser | node lors de l’exécution avec Node.js, bun lors de l’exécution avec Bun |
executableArgs | string[] | Arguments à passer à l’exécutable | [] |
fallbackModel | string | Modèle à utiliser si le modèle principal échoue | undefined |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | Hooks de cycle de vie pour la personnalisation | undefined |
includePartialMessages | boolean | Inclure les événements de diffusion partielle dans le flux de messages | false |
maxThinkingTokens | number | Jetons maximum pour le processus de réflexion de Claude | undefined |
maxTurns | number | Nombre maximum de tours de conversation | undefined |
mcpServers | Record<string, McpServerConfig> | Configurations de serveur MCP | undefined |
model | string | Modèle Claude à utiliser | Utilise la valeur par défaut de la configuration CLI |
pathToClaudeCodeExecutable | string | Chemin vers l’exécutable Claude Code | Exécutable fourni avec @anthropic-ai/claude-code |
permissionMode | PermissionMode | Mode de permission pour la session | "default" (options : "default" , "acceptEdits" , "bypassPermissions" , "plan" ) |
resume | string | ID de session à reprendre | undefined |
stderr | (data: string) => void | Callback pour la sortie stderr | undefined |
strictMcpConfig | boolean | Appliquer une validation stricte de la configuration MCP | undefined |
Diffusion de messages partiels
Lorsque includePartialMessages
est activé, le SDK émettra des messages stream_event
qui contiennent des événements de diffusion bruts de l’API Claude. Cela vous permet d’accéder au contenu partiel au fur et à mesure qu’il est généré, utile pour implémenter des mises à jour d’interface utilisateur en temps réel ou des indicateurs de progression.
Chaque message stream_event
inclut :
event
: L’événement de diffusion brut de l’APIsession_id
: L’identifiant de session actuelparent_tool_use_id
: L’ID de l’outil en cours d’exécution (le cas échéant)uuid
: Un identifiant unique pour cet événement
La diffusion de messages partiels est principalement utile pour les cas d’utilisation avancés où vous avez besoin d’un contrôle granulaire sur la réponse en streaming. Pour la plupart des applications, le comportement par défaut (attendre les messages complets) est suffisant.
Conversations multi-tours
Pour les conversations multi-tours, vous avez deux options.
Vous pouvez générer des réponses et les reprendre, ou vous pouvez utiliser le mode d’entrée en streaming qui accepte un async/générateur pour un tableau de messages. Pour l’instant, le mode d’entrée en streaming est le seul moyen d’attacher des images via des messages.
Reprendre avec la gestion de session
Mode d’entrée en streaming
Le mode d’entrée en streaming vous permet de fournir des messages comme un itérable asynchrone au lieu d’une seule chaîne. Cela permet les conversations multi-tours, les pièces jointes d’images et la génération de messages dynamiques :
Entrée en streaming avec images
Le mode d’entrée en streaming est le seul moyen d’attacher des images via des messages :
Invites système personnalisées
Les invites système définissent le rôle, l’expertise et le comportement de votre agent :
Intégration de serveur MCP
Le Model Context Protocol (MCP) vous permet de donner à vos agents des outils et capacités personnalisés :
Outils personnalisés avec serveurs MCP en processus
Les serveurs MCP SDK vous permettent de créer des outils personnalisés qui s’exécutent directement dans le processus de votre application, fournissant une exécution d’outils type-safe sans la surcharge de processus séparés ou de communication réseau.
Créer des outils personnalisés
Utilisez les fonctions d’aide createSdkMcpServer
et tool
pour définir des outils personnalisés type-safe :
Sécurité de type avec Zod
L’aide tool
fournit une inférence de type TypeScript complète à partir de vos schémas Zod :
Hooks
Les hooks vous permettent de personnaliser et d’étendre le comportement de Claude Code en exécutant des callbacks personnalisés à divers points du cycle de vie de l’agent. Contrairement aux hooks CLI qui exécutent des commandes bash, les hooks SDK sont des fonctions JavaScript/TypeScript qui s’exécutent en processus.
Définir des hooks
Les hooks sont organisés par type d’événement, avec des matchers optionnels pour filtrer quand ils s’exécutent :
Événements de hook disponibles
- PreToolUse : S’exécute avant l’exécution de l’outil. Peut bloquer les outils ou fournir des commentaires.
- PostToolUse : S’exécute après l’exécution réussie de l’outil.
- UserPromptSubmit : S’exécute quand l’utilisateur soumet une invite.
- SessionStart : S’exécute quand une session démarre.
- SessionEnd : S’exécute quand une session se termine.
- Stop : S’exécute quand Claude est sur le point d’arrêter de répondre.
- SubagentStop : S’exécute quand un sous-agent est sur le point de s’arrêter.
- PreCompact : S’exécute avant la compaction de conversation.
- Notification : S’exécute quand des notifications sont envoyées.
Types d’entrée de hook
Chaque hook reçoit une entrée typée basée sur l’événement :
Sortie de hook
Les hooks retournent une sortie qui contrôle le flux d’exécution :
Exemples pratiques
Journalisation et surveillance
Validation des opérations de fichier
Formatage automatique du code
Amélioration d’invite
Instructions de compaction personnalisées
Comportement d’exécution des hooks
- Parallélisation : Tous les hooks correspondants s’exécutent en parallèle
- Timeout : Les hooks respectent le signal d’abandon des options
- Gestion d’erreur : Les erreurs de hook sont journalisées mais n’arrêtent pas l’exécution
- Matchers : Supportent les motifs regex (par ex.
"Write|Edit"
)
Combiner les hooks avec canUseTool
Alors que canUseTool
fournit un contrôle de permission, les hooks offrent une intégration de cycle de vie plus large :
Contrôle de permission avec canUseTool
Le callback canUseTool
fournit un contrôle fin sur l’exécution des outils. Il est appelé avant chaque utilisation d’outil et peut autoriser, refuser ou modifier les entrées d’outil :
Cas d’utilisation pour canUseTool
- Gestion de permissions : Vérifier les permissions utilisateur avant d’autoriser l’exécution d’outil
- Validation d’entrée : Valider ou assainir les entrées d’outil avant l’exécution
- Limitation de taux : Implémenter des limites de taux pour les opérations coûteuses
- Journalisation d’audit : Journaliser l’utilisation d’outil pour la conformité ou le débogage
- Permissions dynamiques : Activer/désactiver les outils basé sur les conditions d’exécution
Formats de sortie
Sortie texte (par défaut)
Sortie JSON
Formats d’entrée
Exemples d’intégration d’agent
Agent de réponse aux incidents SRE
Révision de sécurité automatisée
Assistant juridique multi-tours
Schéma de message
Les messages retournés par l’API JSON sont strictement typés selon le schéma suivant :
Types de support supplémentaires :
Les types Message
, MessageParam
et Usage
sont disponibles dans le SDK TypeScript Anthropic.
Ressources connexes
- Utilisation et contrôles CLI - Documentation CLI complète
- Intégration GitHub Actions - Automatisez votre workflow GitHub avec Claude
- Workflows courants - Guides étape par étape pour les cas d’utilisation courants