Disponibilità del modello
I seguenti strumenti sono disponibili per impostazione predefinita solo su Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5 e sui modelli precedenti. Su tutti gli altri modelli, inclusi gli ID modello che Claude Code non riconosce, non sono disponibili a meno che tu non li abiliti esplicitamente:
TodoWriteTaskCreateTaskGetTaskUpdateTaskList
TodoWrite quando impostate CLAUDE_CODE_ENABLE_TASKS=0.Questo set predefinito si applica in Claude Code v2.1.268 e versioni successive, che l’Agent SDK TypeScript raggruppa dalla v0.3.268.tool_use per loro nel flusso dei messaggi. L’Agent SDK applica questi valori predefiniti attraverso il binario Claude Code che raggruppa. Se punti pathToClaudeCodeExecutable (TypeScript) o cli_path (Python) alla tua installazione di Claude Code, otterrai gli strumenti che quella installazione fornisce, secondo i suoi valori predefiniti. Per vedere l’insieme esatto in una sessione in esecuzione, controlla quali strumenti sono disponibili. Per abilitare una sessione, fai uno dei seguenti:
- Nomina uno degli strumenti nell’opzione
allowedTools(TypeScript) oallowed_tools(Python) - Elenca gli strumenti nell’opzione
tools, che limita gli strumenti integrati della sessione a quelli che nomina. Includi gli strumenti che desideri insieme agli altri strumenti integrati che utilizzi - Imposta
CLAUDE_CODE_ENABLE_TODO_TOOLS=1nell’opzioneenv, come fanno gli esempi in questa pagina. In TypeScript,envsostituisce l’ambiente del sottoprocesso, quindi diffondere...process.envper mantenere le variabili ereditate. In Python,envviene unito sopra l’ambiente ereditato
Ciclo di vita dei todo
Claude sposta ogni todo attraverso un ciclo di vita prevedibile:- Creato: Claude aggiunge il todo come
pendingquando identifica un’attività - Attivato: Claude imposta il todo su
in_progressquando inizia il lavoro - Completato: Claude lo contrassegna come completato quando l’attività termina con successo
- Rimosso: Claude elimina un todo che non ha più bisogno impostando
status: "deleted"in una chiamataTaskUpdate
Quando Claude crea i todo
In una sessione che ha i task-tracking tools, Claude crea todo per la maggior parte del lavoro multi-step, come:- Attività complesse multi-step che richiedono tre o più azioni distinte
- Elenchi di attività forniti dall’utente quando vengono menzionati più elementi
- Operazioni più lunghe che traggono beneficio dal tracciamento dei progressi
- Richieste esplicite quando gli utenti chiedono l’organizzazione dei todo
Esempi
Prima di eseguire questi esempi, installa Claude Agent SDK seguendo la guida rapida. Ogni esempio in questa pagina condivide la stessa configurazione di permessi e comportamento di uscita:- Modalità di permesso: gli esempi di prompt chiedono a Claude di fare lavoro reale su un progetto, quindi ogni esempio imposta
permissionMode: "acceptEdits"(TypeScript) opermission_mode="acceptEdits"(Python) per approvare automaticamente le modifiche ai file che il lavoro produce. Vedi Modalità di permesso per le alternative. - Limite di turni: ogni esempio viene eseguito fino a quando l’agente non termina e produce il suo messaggio di risultato finale. Se una sessione raggiunge prima il limite di turni, quel messaggio di risultato ha il sottotipo
error_max_turns. Controllasubtypeper rilevare quella conclusione. - Gestione degli errori: questi esempi utilizzano singole chiamate
query(). Dopo aver prodotto un risultatoerror_max_turns,query()genera un errore che includeReached maximum number of turns. Ogni esempio racchiude il suo ciclo in un blocco try per uscire correttamente quando ciò accade. Vedi Gestire il risultato per i sottotipi di risultato.
I messaggi di sistema del task,
SDKTaskNotificationMessage (TypeScript) o TaskNotificationMessage (Python) tra loro, segnalano attività di background come comandi in background e subagenti. Nel flusso dei messaggi, vedi l’attività dei todo come blocchi tool_use nei messaggi dell’assistente.Monitora i cambiamenti dei todo
L’esempio seguente osserva il flusso dell’assistente per i blocchitool_use TaskCreate e TaskUpdate e stampa una riga + con il soggetto di ogni nuovo compito e una riga di aggiornamento con l’ID del compito di ogni cambio di stato e il nuovo stato. Usa questa forma quando desideri un registro dell’attività delle attività piuttosto che un display renderizzato. Le righe + non includono gli ID assegnati, quindi questo registro non può far corrispondere gli aggiornamenti ai loro creati. Per mantenere quella correlazione, cattura gli ID come fa Visualizza i progressi in tempo reale.
L’input tool_use trasmesso è la forma grezza che il modello ha emesso. Claude Code ripara alcuni nomi di chiave quasi corretti ma non del tutto prima dell’esecuzione, mappando id o task_id a taskId e active_form a activeForm, ma questa riparazione non si riflette nel flusso. Leggi i campi di input TaskUpdate in modo difensivo, come fanno entrambi gli esempi in questa pagina, piuttosto che assumere che il nome canonico sia sempre presente.
Visualizza i progressi in tempo reale
L’esempio seguente osserva il flusso dell’assistente per i blocchitool_use TaskCreate e TaskUpdate e mantiene una mappa di attività con chiave dell’ID attività in una classe TaskTracker, renderizzando un riepilogo dei progressi ad ogni cambiamento. Il riepilogo conta le attività completate e in corso e mostra l’etichetta activeForm di ogni elemento attivo al posto del suo subject. Usa questa forma quando la tua applicazione mantiene un display di progresso invece di registrare ogni evento.
L’ID attività assegnato non è nell’input TaskCreate. Claude Code fornisce l’output strutturato di ogni strumento nel messaggio dell’utente che porta il suo blocco tool_result, nel campo tool_use_result. Per TaskCreate, quell’oggetto è documentato per TypeScript come TaskCreateOutput in Tipi di output degli strumenti, e in Python il campo è un semplice dict della stessa forma. Il tracker abbina ogni blocco tool_result alla sua chiamata tool_use per tool_use_id e legge task.id dal tool_use_result del messaggio abbinato. Claude può leggere l’elenco di nuovo con TaskList e i dettagli completi di un’attività con TaskGet.
Documentazione correlata
- Riferimento Agent SDK - TypeScript: le opzioni, i tipi e gli schemi degli strumenti per l’SDK TypeScript, inclusi i tipi di input e output dello strumento Task
- Riferimento Agent SDK - Python: le opzioni, i tipi e la documentazione degli strumenti per l’SDK Python
- Streaming Input: i due modalità di input, e quando utilizzare lo streaming input invece delle chiamate a singolo scatto che questi esempi utilizzano
- Dai a Claude strumenti personalizzati: definisci i tuoi strumenti con il server MCP in-process dell’SDK