自 TypeScript Agent SDK 0.3.142 和 Claude Code v2.1.142 起,會話使用結構化的 Task 工具
TaskCreate、TaskUpdate、TaskGet 和 TaskList,而不是 TodoWrite。請參閱遷移到 Task 工具以了解監控代碼如何變更。此頁面上的範例設置 CLAUDE_CODE_ENABLE_TASKS=0 以繼續為尚未遷移的會話顯示 TodoWrite。待辦事項生命週期
待辦事項遵循可預測的生命週期:- 建立為
pending當任務被識別時 - 啟動為
in_progress當工作開始時 - 完成當任務成功完成時
- 移除當群組中的所有任務都完成時
何時使用待辦事項
SDK 會自動為以下情況建立待辦事項:- 複雜的多步驟任務需要 3 個或更多不同的操作
- 用戶提供的任務清單當提及多個項目時
- 非平凡的操作受益於進度追蹤
- 明確的請求當用戶要求待辦事項組織時
範例
監控待辦事項變更
實時進度顯示
遷移到 Task 工具
Task 工具將單個TodoWrite 呼叫分割為每個新項目的 TaskCreate 和每個狀態變更的 TaskUpdate,並提供 TaskList 和 TaskGet 供模型讀回當前清單。您的監控代碼仍然檢查助手流中的 tool_use 區塊,但維護一個由任務 ID 鍵入的映射,而不是在每次呼叫時替換整個清單。Task 工具是 TypeScript Agent SDK 0.3.142 和 Claude Code v2.1.142 起的預設值,因此不需要 options.env 變更。
使用 TodoWrite | 使用 Task 工具 |
|---|---|
一個工具呼叫重寫完整的 todos 陣列 | TaskCreate 新增一個項目,TaskUpdate 按 taskId 修補一個項目 |
匹配 block.name === "TodoWrite" | 匹配 block.name === "TaskCreate" 或 "TaskUpdate" |
項目形狀:{ content, status, activeForm } | TaskCreate 輸入:{ subject, description, activeForm?, metadata? }。TaskUpdate 輸入:{ taskId, status?, subject?, description?, activeForm?, addBlocks?, addBlockedBy?, owner?, metadata? }。status 是 "pending"、"in_progress" 或 "completed";設置 status: "deleted" 以刪除 |
直接呈現 block.input.todos | 跨呼叫累積項目,或從 TaskList 工具結果讀取快照 |
TaskCreate 輸入中。它在匹配的 tool_result 中作為 { task: { id, subject } } 返回,因此從結果區塊捕獲它以鍵入您的映射。以下範例顯示了對監控待辦事項變更迴圈的最小變更。要呈現完整清單,請在流中監視 TaskList 工具結果或將 TaskCreate 結果和 TaskUpdate 輸入累積到映射中: