使用 Claude Code SDK 跟踪和显示待办事项,实现有组织的任务管理
pending
in_progress
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("构建一个完整的身份验证系统并使用待办事项");