A partir del TypeScript Agent SDK 0.3.142 y Claude Code v2.1.142, las sesiones utilizan las herramientas Task estructuradas
TaskCreate, TaskUpdate, TaskGet y TaskList en lugar de TodoWrite. Consulte Migrar a herramientas Task para ver cómo cambia el código de monitoreo. Los ejemplos en esta página establecen CLAUDE_CODE_ENABLE_TASKS=0 para seguir mostrando TodoWrite para sesiones que aún no han migrado.Ciclo de Vida de las Tareas
Las tareas siguen un ciclo de vida predecible:- Creadas como
pendingcuando se identifican las tareas - Activadas a
in_progresscuando comienza el trabajo - Completadas cuando la tarea finaliza exitosamente
- Eliminadas cuando todas las tareas en un grupo se completan
Cuándo se Utilizan las Tareas
El SDK crea automáticamente tareas para:- Tareas complejas de múltiples pasos que requieren 3 o más acciones distintas
- Listas de tareas proporcionadas por el usuario cuando se mencionan múltiples elementos
- Operaciones no triviales que se benefician del seguimiento del progreso
- Solicitudes explícitas cuando los usuarios piden organización de tareas
Ejemplos
Monitoreo de Cambios en Tareas
Visualización de Progreso en Tiempo Real
Migrar a herramientas Task
Las herramientas Task dividen la única llamadaTodoWrite en TaskCreate para cada elemento nuevo y TaskUpdate para cada cambio de estado, con TaskList y TaskGet disponibles para que el modelo lea la lista actual. Su código de monitoreo aún inspecciona bloques tool_use en la secuencia del asistente, pero mantiene un mapa codificado por ID de tarea en lugar de reemplazar la lista completa en cada llamada. Las herramientas Task son las predeterminadas a partir del TypeScript Agent SDK 0.3.142 y Claude Code v2.1.142, por lo que no se necesita cambio en options.env.
Con TodoWrite | Con herramientas Task |
|---|---|
Una llamada de herramienta reescribe el array todos completo | TaskCreate añade un elemento, TaskUpdate parcha un elemento por taskId |
Coincide con block.name === "TodoWrite" | Coincide con block.name === "TaskCreate" o "TaskUpdate" |
Forma del elemento: { content, status, activeForm } | Entrada de TaskCreate: { subject, description, activeForm?, metadata? }. Entrada de TaskUpdate: { taskId, status?, subject?, description?, activeForm?, addBlocks?, addBlockedBy?, owner?, metadata? }. status es "pending", "in_progress" o "completed"; establezca status: "deleted" para eliminar |
Renderice block.input.todos directamente | Acumule elementos entre llamadas, o lea una instantánea de un resultado de herramienta TaskList |
TaskCreate. Vuelve en el bloque tool_result coincidente como { task: { id, subject } }, así que capturelo del bloque de resultado para codificar su mapa. El siguiente ejemplo muestra el cambio mínimo al bucle Monitoreo de Cambios en Tareas. Para renderizar una lista completa, observe un resultado de herramienta TaskList en la secuencia o acumule resultados de TaskCreate e entradas de TaskUpdate en un mapa: