Todo-Verfolgung bietet eine strukturierte Möglichkeit, Aufgaben zu verwalten und den Fortschritt für Benutzer anzuzeigen. Das Claude Code SDK enthält integrierte Todo-Funktionalität, die dabei hilft, komplexe Arbeitsabläufe zu organisieren und Benutzer über den Aufgabenfortschritt zu informieren.

Todo-Lebenszyklus

Todos folgen einem vorhersagbaren Lebenszyklus:
  1. Erstellt als pending, wenn Aufgaben identifiziert werden
  2. Aktiviert zu in_progress, wenn die Arbeit beginnt
  3. Abgeschlossen, wenn die Aufgabe erfolgreich beendet wird
  4. Entfernt, wenn alle Aufgaben in einer Gruppe abgeschlossen sind

Wann Todos verwendet werden

Das SDK erstellt automatisch Todos für:
  • Komplexe mehrstufige Aufgaben, die 3 oder mehr unterschiedliche Aktionen erfordern
  • Vom Benutzer bereitgestellte Aufgabenlisten, wenn mehrere Elemente erwähnt werden
  • Nicht-triviale Operationen, die von Fortschrittsverfolgung profitieren
  • Explizite Anfragen, wenn Benutzer nach Todo-Organisation fragen

Beispiele

Überwachung von Todo-Änderungen

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

for await (const message of query({
  prompt: "Optimiere die Leistung meiner React-App und verfolge den Fortschritt mit Todos",
  options: { maxTurns: 15 }
})) {
  // Todo-Updates werden im Nachrichten-Stream reflektiert
  if (message.type === "tool_use" && message.name === "TodoWrite") {
    const todos = message.input.todos;
    
    console.log("Todo-Status-Update:");
    todos.forEach((todo, index) => {
      const status = todo.status === "completed" ? "✅" : 
                    todo.status === "in_progress" ? "🔧" : "❌";
      console.log(`${index + 1}. ${status} ${todo.content}`);
    });
  }
}

Echtzeit-Fortschrittsanzeige

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(`\nFortschritt: ${completed}/${total} abgeschlossen`);
    console.log(`Arbeitet derzeit an: ${inProgress} Aufgabe(n)\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();
      }
    }
  }
}

// Verwendung
const tracker = new TodoTracker();
await tracker.trackQuery("Baue ein vollständiges Authentifizierungssystem mit Todos");

Verwandte Dokumentation