Отслеживание задач предоставляет структурированный способ управления задачами и отображения прогресса пользователям. Claude Code SDK включает встроенную функциональность задач, которая помогает организовать сложные рабочие процессы и держать пользователей в курсе прогресса выполнения задач.

Жизненный цикл задач

Задачи следуют предсказуемому жизненному циклу:
  1. Создаются как pending когда задачи идентифицированы
  2. Активируются в in_progress когда работа начинается
  3. Завершаются когда задача успешно заканчивается
  4. Удаляются когда все задачи в группе завершены

Когда используются задачи

SDK автоматически создает задачи для:
  • Сложных многоэтапных задач, требующих 3 или более отдельных действий
  • Предоставленных пользователем списков задач, когда упоминается несколько элементов
  • Нетривиальных операций, которые выигрывают от отслеживания прогресса
  • Явных запросов, когда пользователи просят организацию задач

Примеры

Мониторинг изменений задач

import { query } from "@anthropic-ai/claude-code";

for await (const message of query({
  prompt: "Оптимизируй производительность моего React приложения и отслеживай прогресс с задачами",
  options: { maxTurns: 15 }
})) {
  // Обновления задач отражаются в потоке сообщений
  if (message.type === "tool_use" && message.name === "TodoWrite") {
    const todos = message.input.todos;
    
    console.log("Обновление статуса задач:");
    todos.forEach((todo, index) => {
      const status = todo.status === "completed" ? "✅" : 
                    todo.status === "in_progress" ? "🔧" : "❌";
      console.log(`${index + 1}. ${status} ${todo.content}`);
    });
  }
}

Отображение прогресса в реальном времени

import { query } from "@anthropic-ai/claude-code";

class TodoTracker {
  private todos: any[] = [];
  
  displayProgress() {
    if (this.todos.length === 0) return;
    
    const completed = this.todos.filter(t => t.status === "completed").length;
    const inProgress = this.todos.filter(t => t.status === "in_progress").length;
    const total = this.todos.length;
    
    console.log(`\nПрогресс: ${completed}/${total} завершено`);
    console.log(`В настоящее время работаем над: ${inProgress} задач(ей)\n`);
    
    this.todos.forEach((todo, index) => {
      const icon = todo.status === "completed" ? "✅" : 
                  todo.status === "in_progress" ? "🔧" : "❌";
      const text = todo.status === "in_progress" ? todo.activeForm : todo.content;
      console.log(`${index + 1}. ${icon} ${text}`);
    });
  }
  
  async trackQuery(prompt: string) {
    for await (const message of query({
      prompt,
      options: { maxTurns: 20 }
    })) {
      if (message.type === "tool_use" && message.name === "TodoWrite") {
        this.todos = message.input.todos;
        this.displayProgress();
      }
    }
  }
}

// Использование
const tracker = new TodoTracker();
await tracker.trackQuery("Построй полную систему аутентификации с задачами");

Связанная документация