A partire da TypeScript Agent SDK 0.3.142 e Claude Code v2.1.142, le sessioni utilizzano i tool Task strutturati
TaskCreate, TaskUpdate, TaskGet e TaskList al posto di TodoWrite. Vedere Migrazione ai tool Task per come monitorare i cambiamenti del codice. Gli esempi in questa pagina impostano CLAUDE_CODE_ENABLE_TASKS=0 per continuare a mostrare TodoWrite per le sessioni che non hanno ancora eseguito la migrazione.Ciclo di vita dei Todo
I todo seguono un ciclo di vita prevedibile:- Creati come
pendingquando le attività vengono identificate - Attivati a
in_progressquando il lavoro inizia - Completati quando l’attività termina con successo
- Rimossi quando tutte le attività in un gruppo sono completate
Quando vengono utilizzati i Todo
L’SDK crea automaticamente todo per:- Attività complesse multi-step che richiedono 3 o più azioni distinte
- Elenchi di attività forniti dall’utente quando vengono menzionati più elementi
- Operazioni non banali che traggono beneficio dal tracciamento dei progressi
- Richieste esplicite quando gli utenti chiedono l’organizzazione dei todo
Esempi
Monitoraggio dei cambiamenti dei Todo
Visualizzazione dei progressi in tempo reale
Migrazione ai tool Task
I tool Task dividono la singola chiamataTodoWrite in TaskCreate per ogni nuovo elemento e TaskUpdate per ogni cambio di stato, con TaskList e TaskGet disponibili affinché il modello possa leggere di nuovo l’elenco corrente. Il codice di monitoraggio continua a ispezionare i blocchi tool_use nel flusso dell’assistente, ma mantiene una mappa con chiave dell’ID attività invece di sostituire l’intero elenco ad ogni chiamata. I tool Task sono l’impostazione predefinita a partire da TypeScript Agent SDK 0.3.142 e Claude Code v2.1.142, quindi non è necessario alcun cambio options.env.
Con TodoWrite | Con tool Task |
|---|---|
Una chiamata di tool riscrive l’intero array todos | TaskCreate aggiunge un elemento, TaskUpdate modifica un elemento per taskId |
Corrisponde a block.name === "TodoWrite" | Corrisponde a block.name === "TaskCreate" o "TaskUpdate" |
Forma dell’elemento: { content, status, activeForm } | Input TaskCreate: { subject, description, activeForm?, metadata? }. Input TaskUpdate: { taskId, status?, subject?, description?, activeForm?, addBlocks?, addBlockedBy?, owner?, metadata? }. status è "pending", "in_progress" o "completed"; impostare status: "deleted" per eliminare |
Renderizza block.input.todos direttamente | Accumula elementi tra le chiamate, o leggi uno snapshot da un risultato dello strumento TaskList |
TaskCreate. Ritorna nel tool_result corrispondente come { task: { id, subject } }, quindi acquisiscilo dal blocco del risultato per inserire la chiave nella mappa. L’esempio seguente mostra il cambio minimo al ciclo Monitoraggio dei cambiamenti dei Todo. Per renderizzare un elenco completo, guarda un risultato dello strumento TaskList nel flusso o accumula i risultati TaskCreate e gli input TaskUpdate in una mappa: