Ketersediaan model
Tool berikut tersedia secara default hanya pada Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5, dan model-model sebelumnya. Pada setiap model lainnya, termasuk ID model yang tidak dikenali Claude Code, tool tersebut tidak tersedia kecuali Anda memilih untuk mengaktifkannya:
TodoWriteTaskCreateTaskGetTaskUpdateTaskList
TodoWrite sebagai gantinya ketika Anda menetapkan CLAUDE_CODE_ENABLE_TASKS=0.Set default ini berlaku di Claude Code v2.1.268 dan yang lebih baru, yang dibundel oleh TypeScript Agent SDK dari v0.3.268.tool_use untuk mereka dalam aliran pesan. Agent SDK menerapkan default ini melalui biner Claude Code yang disertakannya. Jika Anda menunjuk pathToClaudeCodeExecutable (TypeScript) atau cli_path (Python) ke instalasi Claude Code Anda sendiri, Anda mendapatkan alat apa pun yang disediakan instalasi tersebut, di bawah default-nya sendiri. Untuk melihat set yang tepat dalam sesi yang berjalan, periksa alat mana yang tersedia. Untuk memilih sesi, lakukan salah satu dari berikut:
- Beri nama salah satu alat dalam opsi
allowedTools(TypeScript) atauallowed_tools(Python) - Daftar alat dalam opsi
tools, yang membatasi alat bawaan sesi ke yang dinamainya. Sertakan alat yang Anda inginkan bersama alat bawaan lain yang Anda gunakan - Atur
CLAUDE_CODE_ENABLE_TODO_TOOLS=1dalam opsienv, seperti yang dilakukan contoh di halaman ini. Di TypeScript,envmenggantikan lingkungan subproses, jadi sebarkan...process.envuntuk menyimpan variabel yang diwariskan. Di Python,envdigabungkan di atas lingkungan yang diwariskan
Siklus hidup todo
Claude memindahkan setiap todo melalui siklus hidup yang dapat diprediksi:- Dibuat: Claude menambahkan todo sebagai
pendingketika mengidentifikasi tugas - Diaktifkan: Claude menetapkan todo ke
in_progressketika memulai pekerjaan - Diselesaikan: Claude menandainya selesai ketika tugas selesai dengan sukses
- Dihapus: Claude menghapus todo yang tidak lagi dibutuhkan dengan menetapkan
status: "deleted"dalam panggilanTaskUpdate
Kapan Claude membuat todos
Dalam sesi yang memiliki alat pelacakan tugas, Claude membuat todos untuk sebagian besar pekerjaan multi-langkah, seperti:- Tugas multi-langkah yang kompleks memerlukan tiga atau lebih tindakan yang berbeda
- Daftar tugas yang disediakan pengguna ketika beberapa item disebutkan
- Operasi yang lebih lama yang mendapat manfaat dari pelacakan kemajuan
- Permintaan eksplisit ketika pengguna meminta organisasi todo
Contoh
Sebelum menjalankan contoh-contoh ini, instal Claude Agent SDK dengan mengikuti quickstart. Setiap contoh di halaman ini berbagi pengaturan izin dan perilaku keluar yang sama:- Mode izin: contoh prompt meminta Claude untuk melakukan pekerjaan nyata pada proyek, jadi setiap contoh menetapkan
permissionMode: "acceptEdits"(TypeScript) ataupermission_mode="acceptEdits"(Python) untuk menyetujui otomatis pengeditan file yang dihasilkan pekerjaan. Lihat Mode izin untuk alternatifnya. - Batas giliran: setiap contoh berjalan sampai agen selesai dan menghasilkan pesan hasil akhirnya. Jika sesi mencapai batas giliran terlebih dahulu, pesan hasil tersebut memiliki subtipe
error_max_turns. Periksasubtypeuntuk mendeteksi penghentian tersebut. - Penanganan kesalahan: contoh-contoh ini menggunakan panggilan
query()single-shot. Setelah menghasilkan hasilerror_max_turns,query()melempar kesalahan yang mencakupReached maximum number of turns. Setiap contoh membungkus loop-nya dalam blok try untuk keluar dengan bersih ketika itu terjadi. Lihat Handle the result untuk subtipe hasil.
Pesan sistem tugas,
SDKTaskNotificationMessage (TypeScript) atau TaskNotificationMessage (Python) di antaranya, melaporkan tugas latar belakang seperti perintah yang dilatarbelakangkan dan subagen. Dalam aliran pesan, Anda melihat aktivitas todo sebagai blok tool_use dalam pesan asisten.Memantau perubahan todo
Contoh berikut memantau aliran asisten untuk bloktool_use TaskCreate dan TaskUpdate dan mencetak baris + dengan subjek setiap tugas baru dan baris pembaruan dengan ID tugas dan status baru setiap perubahan status. Gunakan bentuk ini ketika Anda menginginkan log aktivitas tugas daripada tampilan yang dirender. Baris + tidak menyertakan ID yang ditugaskan, jadi log ini tidak dapat mencocokkan pembaruan kembali ke pembuatannya. Untuk mempertahankan korelasi tersebut, tangkap ID seperti yang dilakukan Display progress in real time.
Input tool_use yang dialirkan adalah bentuk mentah yang dipancarkan model. Claude Code memperbaiki beberapa nama kunci yang hampir-tetapi-tidak-benar sebelum eksekusi, memetakan id atau task_id ke taskId dan active_form ke activeForm, tetapi perbaikan itu tidak tercermin dalam aliran. Baca bidang input TaskUpdate secara defensif, seperti yang dilakukan kedua contoh di halaman ini, daripada mengasumsikan nama kanonik selalu ada.
Tampilkan kemajuan secara real-time
Contoh berikut memantau aliran asisten untuk bloktool_use TaskCreate dan TaskUpdate dan menyimpan peta tugas yang dikunci berdasarkan ID tugas dalam kelas TaskTracker, merender ulang ringkasan kemajuan pada setiap perubahan. Ringkasan menghitung tugas yang diselesaikan dan sedang berlangsung dan menampilkan label activeForm setiap item aktif sebagai pengganti subject-nya. Gunakan bentuk ini ketika aplikasi Anda mempertahankan tampilan kemajuan daripada mencatat setiap peristiwa.
ID tugas yang ditugaskan tidak ada dalam input TaskCreate. Claude Code mengirimkan output terstruktur setiap alat pada pesan pengguna yang membawa blok tool_result-nya, dalam bidang tool_use_result. Untuk TaskCreate, objek itu didokumentasikan untuk TypeScript sebagai TaskCreateOutput di bawah Tipe Output Tool, dan di Python bidangnya adalah dict biasa dari bentuk yang sama. Pelacak memasangkan setiap blok tool_result dengan panggilan tool_use-nya berdasarkan tool_use_id dan membaca task.id dari tool_use_result pesan yang dipasangkan. Claude dapat membaca daftar kembali dengan TaskList dan detail lengkap satu tugas dengan TaskGet.
Dokumentasi terkait
- Referensi Agent SDK - TypeScript: opsi, tipe, dan skema alat untuk SDK TypeScript, termasuk tipe input dan output alat Task
- Referensi Agent SDK - Python: opsi, tipe, dan dokumentasi alat untuk SDK Python
- Streaming Input: dua mode input, dan kapan menggunakan streaming input daripada panggilan single-shot yang digunakan contoh-contoh ini
- Berikan Claude alat kustom: tentukan alat Anda sendiri dengan server MCP in-process SDK