Skip to main content
Claude Code fornisce i task-tracking tools per impostazione predefinita solo sui modelli elencati in Disponibilità del modello. I modelli più recenti traccia il lavoro multi-step senza un elenco todo scritto, quindi su quelli non hai bisogno di nulla in questa pagina affinché Claude lavori attraverso attività multi-step. In una sessione che ha i task-tracking tools, Claude mantiene un elenco todo scritto, aggiornando lo stato di ogni elemento mentre lavora. Vedi ogni cambiamento nel flusso dei messaggi come una chiamata di strumento strutturata. Abilita una sessione solo quando la tua applicazione legge quelle chiamate di strumento, sia per registrare l’attività delle attività che per renderizzare il proprio display di progresso.

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:
  • TodoWrite
  • TaskCreate
  • TaskGet
  • TaskUpdate
  • TaskList
Ovunque gli strumenti siano disponibili, Claude Code fornisce i quattro strumenti Task, oppure 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.
Su un modello che non dispone degli strumenti per impostazione predefinita, a meno che non abiliti una sessione, non vedrai blocchi 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) o allowed_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=1 nell’opzione env, come fanno gli esempi in questa pagina. In TypeScript, env sostituisce l’ambiente del sottoprocesso, quindi diffondere ...process.env per mantenere le variabili ereditate. In Python, env viene unito sopra l’ambiente ereditato

Ciclo di vita dei todo

Claude sposta ogni todo attraverso un ciclo di vita prevedibile:
  1. Creato: Claude aggiunge il todo come pending quando identifica un’attività
  2. Attivato: Claude imposta il todo su in_progress quando inizia il lavoro
  3. Completato: Claude lo contrassegna come completato quando l’attività termina con successo
  4. Rimosso: Claude elimina un todo che non ha più bisogno impostando status: "deleted" in una chiamata TaskUpdate

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
Claude potrebbe saltare i todo per richieste molto brevi o a singolo step.

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) o permission_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. Controlla subtype per rilevare quella conclusione.
  • Gestione degli errori: questi esempi utilizzano singole chiamate query(). Dopo aver prodotto un risultato error_max_turns, query() genera un errore che include Reached 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 blocchi tool_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 blocchi tool_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.