待办事项生命周期
待办事项遵循可预测的生命周期:- 创建 为
pending状态,当任务被识别时 - 激活 为
in_progress状态,当工作开始时 - 完成 当任务成功完成时
- 移除 当组中的所有任务都完成时
何时使用待办事项
SDK 会自动为以下情况创建待办事项:- 复杂的多步骤任务 需要 3 个或更多不同的操作
- 用户提供的任务列表 当提到多个项目时
- 非平凡的操作 受益于进度跟踪
- 明确请求 当用户要求待办事项组织时
Agent Skills are now available! Learn more about extending Claude's capabilities with Agent Skills.
使用 Claude Agent SDK 跟踪和显示待办事项,实现有组织的任务管理
pending 状态,当任务被识别时in_progress 状态,当工作开始时import { query } from "@anthropic-ai/claude-agent-sdk";
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-agent-sdk";
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("构建一个完整的身份验证系统并使用待办事项");
此页面对您有帮助吗?