使用 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("建立完整的身份驗證系統並使用待辦事項");