Disponibilité des modèles
Les outils suivants sont disponibles par défaut uniquement sur Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5 et les modèles antérieurs. Sur tous les autres modèles, y compris les identifiants de modèle que Claude Code ne reconnaît pas, ils ne sont pas disponibles sauf si vous les activez :
TodoWriteTaskCreateTaskGetTaskUpdateTaskList
TodoWrite à la place lorsque vous définissez CLAUDE_CODE_ENABLE_TASKS=0.Cet ensemble par défaut s’applique dans Claude Code v2.1.268 et versions ultérieures, que le SDK TypeScript Agent regroupe à partir de v0.3.268.tool_use pour eux dans le flux de messages. Le SDK Agent applique ces paramètres par défaut via le binaire Claude Code qu’il regroupe. Si vous pointez pathToClaudeCodeExecutable (TypeScript) ou cli_path (Python) vers votre propre installation de Claude Code, vous obtenez les outils que cette installation fournit, selon ses propres paramètres par défaut. Pour voir l’ensemble exact dans une session en cours d’exécution, vérifiez quels outils sont disponibles. Pour opter pour une session, faites l’une des choses suivantes :
- Nommez l’un des outils dans l’option
allowedTools(TypeScript) ouallowed_tools(Python) - Listez les outils dans l’option
tools, qui restreint les outils intégrés de la session à ceux qu’elle nomme. Incluez les outils que vous souhaitez aux côtés des autres outils intégrés que vous utilisez - Définissez
CLAUDE_CODE_ENABLE_TODO_TOOLS=1dans l’optionenv, comme le font les exemples sur cette page. En TypeScript,envremplace l’environnement du sous-processus, donc propagez...process.envpour conserver les variables héritées. En Python,envest fusionné au-dessus de l’environnement hérité
Cycle de vie des tâches
Claude déplace chaque tâche à travers un cycle de vie prévisible :- Créée : Claude ajoute la tâche en tant que
pendinglorsqu’il identifie une tâche - Activée : Claude définit la tâche à
in_progresslorsqu’il commence le travail - Complétée : Claude la marque comme complétée lorsque la tâche se termine avec succès
- Supprimée : Claude supprime une tâche dont il n’a plus besoin en définissant
status: "deleted"dans un appelTaskUpdate
Quand Claude crée des tâches
Dans une session qui dispose des outils de suivi des tâches, Claude crée des tâches pour la plupart des travaux multi-étapes, tels que :- Les tâches complexes multi-étapes nécessitant trois actions distinctes ou plus
- Les listes de tâches fournies par l’utilisateur lorsque plusieurs éléments sont mentionnés
- Les opérations plus longues qui bénéficient du suivi de la progression
- Les demandes explicites lorsque les utilisateurs demandent une organisation des tâches
Exemples
Avant d’exécuter ces exemples, installez le SDK Claude Agent en suivant le démarrage rapide. Chaque exemple sur cette page partage la même configuration de permissions et le même comportement de sortie :- Mode de permission : les exemples de prompt demandent à Claude de faire un vrai travail sur un projet, donc chaque exemple définit
permissionMode: "acceptEdits"(TypeScript) oupermission_mode="acceptEdits"(Python) pour approuver automatiquement les modifications de fichiers que le travail produit. Voir Modes de permission pour les alternatives. - Limite de tours : chaque exemple s’exécute jusqu’à ce que l’agent se termine et produise son message de résultat final. Si une session atteint d’abord sa limite de tours, ce message de résultat a le sous-type
error_max_turns. Vérifiezsubtypepour détecter cette fin. - Gestion des erreurs : ces exemples utilisent des appels
query()uniques. Après avoir produit un résultaterror_max_turns,query()lève une erreur qui inclutReached maximum number of turns. Chaque exemple enveloppe sa boucle dans un bloc try pour quitter proprement quand cela se produit. Voir Gérer le résultat pour les sous-types de résultat.
Les messages système du système de tâches,
SDKTaskNotificationMessage (TypeScript) ou TaskNotificationMessage (Python) parmi eux, rapportent les tâches en arrière-plan telles que les commandes en arrière-plan et les sous-agents. Dans le flux de messages, vous voyez l’activité des tâches sous forme de blocs tool_use dans les messages de l’assistant.Surveiller les modifications des tâches
L’exemple suivant regarde le flux de l’assistant pour les blocstool_use TaskCreate et TaskUpdate et imprime une ligne + avec le sujet de chaque nouvelle tâche et une ligne de mise à jour avec l’ID de la tâche et le nouveau statut de chaque changement de statut. Utilisez cette forme lorsque vous souhaitez un journal de l’activité des tâches plutôt qu’un affichage rendu. Les lignes + n’incluent pas les ID assignés, donc ce journal ne peut pas faire correspondre les mises à jour à leurs créations. Pour conserver cette corrélation, capturez les ID comme le fait Afficher la progression en temps réel.
L’entrée tool_use diffusée est la forme brute que le modèle a émise. Claude Code répare certains noms de clés proches mais incorrects avant l’exécution, en mappant id ou task_id à taskId et active_form à activeForm, mais cette réparation n’est pas reflétée dans le flux. Lisez les champs d’entrée TaskUpdate de manière défensive, comme le font les deux exemples sur cette page, plutôt que de supposer que le nom canonique est toujours présent.
Afficher la progression en temps réel
L’exemple suivant regarde le flux de l’assistant pour les blocstool_use TaskCreate et TaskUpdate et maintient une carte de tâches indexée par ID de tâche dans une classe TaskTracker, en réaffichant un résumé de progression à chaque changement. Le résumé compte les tâches complétées et en cours et affiche l’étiquette activeForm de chaque élément actif à la place de son subject. Utilisez cette forme lorsque votre application maintient un affichage de progression au lieu d’enregistrer chaque événement.
L’ID de tâche assigné ne se trouve pas dans l’entrée TaskCreate. Claude Code fournit la sortie structurée de chaque outil sur le message utilisateur qui porte son bloc tool_result, dans le champ tool_use_result. Pour TaskCreate, cet objet est documenté pour TypeScript comme TaskCreateOutput sous Types de sortie d’outil, et en Python le champ est un dict simple de la même forme. Le tracker apparie chaque bloc tool_result avec son appel tool_use par tool_use_id et lit task.id du tool_use_result du message appairé. Claude peut relire la liste avec TaskList et les détails complets d’une tâche avec TaskGet.
Documentation connexe
- Référence du SDK Agent - TypeScript : les options, les types et les schémas d’outils pour le SDK TypeScript, y compris les types d’entrée et de sortie de l’outil Task
- Référence du SDK Agent - Python : les options, les types et la documentation des outils pour le SDK Python
- Entrée en streaming : les deux modes d’entrée, et quand utiliser l’entrée en streaming au lieu des appels uniques que ces exemples utilisent
- Donner à Claude des outils personnalisés : définissez vos propres outils avec le serveur MCP en processus du SDK