Jaga Claude tetap bekerja menuju tujuan
Tetapkan kondisi penyelesaian dengan /goal dan Claude terus bekerja hingga kondisi terpenuhi, model menilai tidak mungkin, atau kesalahan yang harus Anda perbaiki menghapus tujuan.
Perintah /goal menetapkan kondisi penyelesaian dan Claude terus bekerja menuju tujuan tersebut tanpa Anda meminta setiap langkah. Setelah setiap giliran, model cepat kecil memeriksa apakah kondisi terpenuhi. Jika model menilai belum terpenuhi, Claude memulai giliran lain alih-alih mengembalikan kontrol kepada Anda. Tujuan dihapus secara otomatis setelah kondisi terpenuhi, jika model menilai kondisi tidak mungkin dipenuhi, atau jika giliran gagal pada kesalahan yang harus Anda perbaiki.
Gunakan tujuan untuk pekerjaan substansial dengan keadaan akhir yang dapat diverifikasi:
- Migrasi modul ke API baru hingga setiap situs panggilan dikompilasi dan tes lulus
- Implementasi dokumen desain hingga semua kriteria penerimaan terpenuhi
- Pemisahan file besar menjadi modul yang terfokus hingga masing-masing berada di bawah anggaran ukuran
- Menyelesaikan antrian masalah berlabel hingga antrean kosong
Bandingkan cara untuk menjaga sesi tetap berjalan
Tiga pendekatan menjaga sesi saat ini berjalan di antara prompt. Pilih berdasarkan apa yang harus memulai giliran berikutnya:
| Pendekatan | Giliran berikutnya dimulai ketika | Berhenti ketika |
|---|---|---|
/goal |
Giliran sebelumnya selesai, atau pemeriksaan idle akan datang sementara pekerjaan latar belakang membuat goal menunggu, hingga tiga kali per goal di antara prompt Anda | Model mengkonfirmasi kondisi terpenuhi atau menilainya tidak mungkin, atau giliran gagal pada kesalahan yang harus Anda perbaiki, atau Anda menjalankan /goal clear |
/loop |
Interval waktu berlalu | Anda menghentikannya, atau Claude memutuskan pekerjaan selesai |
| Stop hook | Giliran sebelumnya selesai | Skrip atau prompt Anda sendiri memutuskan |
/goal dan Stop hook keduanya diaktifkan setelah setiap giliran. /goal adalah pintasan berskop sesi: Anda mengetik kondisi dan itu aktif hanya untuk sesi saat ini. Stop hook berada di file pengaturan Anda, berlaku untuk setiap sesi dalam cakupannya, dan dapat menjalankan skrip untuk pemeriksaan deterministik atau prompt untuk yang dievaluasi model.
Auto mode dengan sendirinya menyetujui panggilan alat dalam satu giliran tetapi tidak memulai yang baru. Claude berhenti ketika menilai pekerjaan selesai. /goal menambahkan evaluator terpisah yang memeriksa kondisi Anda setelah setiap giliran, sehingga penyelesaian diputuskan oleh model segar daripada yang melakukan pekerjaan. Keduanya saling melengkapi: auto mode menghilangkan prompt per-alat, dan /goal menghilangkan prompt per-giliran.
Pendekatan di atas menjaga sesi saat ini berjalan. Anda juga dapat menjadwalkan pekerjaan yang berjalan independen dari sesi terbuka apa pun, seperti tes malam atau triase pagi. Lihat opsi penjadwalan untuk rutinitas cloud dan tugas terjadwal desktop.
Gunakan `/goal`
Satu tujuan dapat aktif per sesi. Perintah yang sama menetapkan, memeriksa, dan menghapusnya tergantung pada argumennya.
Tetapkan tujuan
Jalankan /goal diikuti dengan kondisi yang ingin Anda penuhi. Jika tujuan sudah aktif, yang baru menggantikannya.
/goal all tests in test/auth pass and the lint step is clean
Menetapkan tujuan memulai giliran segera, dengan kondisi itu sendiri sebagai arahan. Anda tidak perlu mengirim prompt terpisah. Saat tujuan aktif, indikator ◎ /goal active menunjukkan berapa lama tujuan telah berjalan.
Sebuah tujuan tidak mengubah mode izin Anda. Untuk membiarkan giliran tujuan berjalan tanpa pengawasan, jalankan /goal dalam mode otomatis. Dalam mode Manual, Claude masih meminta sebelum panggilan alat yang pengaturan Anda tidak sudah izinkan, seperti perintah tes di atas.
Saat tujuan aktif, transkrip menunjukkan setiap putusan yang dikembalikan evaluator, dan Anda dapat menekan Ctrl+O untuk melihat alasan di baliknya. Tampilan status juga menunjukkan alasan paling baru, sehingga Anda dapat melihat apa yang Claude kerjakan selanjutnya.
Tulis kondisi yang efektif
Evaluator menilai kondisi Anda terhadap apa yang telah Claude tampilkan dalam percakapan. Ini tidak menjalankan perintah atau membaca file secara independen, jadi tulis kondisi sebagai sesuatu yang output Claude sendiri dapat demonstrasikan. "Semua tes dalam test/auth lulus" berfungsi karena Claude menjalankan tes dan hasilnya mendarat dalam transkrip untuk evaluator dibaca.
Kondisi yang bertahan di banyak giliran biasanya memiliki:
- Satu keadaan akhir yang terukur: hasil tes, kode keluar build, jumlah file, antrian kosong
- Pemeriksaan yang dinyatakan: bagaimana Claude harus membuktikannya, seperti "
npm testexits 0" atau "git statusis clean" - Batasan yang penting: apa pun yang tidak boleh berubah dalam perjalanan ke sana, seperti "tidak ada file tes lain yang dimodifikasi"
Kondisi dapat mencapai 4.000 karakter.
Untuk membatasi berapa lama tujuan berjalan, sertakan klausa giliran atau waktu dalam kondisi, seperti or stop after 20 turns. Claude melaporkan kemajuan terhadap klausa itu setiap giliran dan evaluator menilainya dari percakapan.
Periksa status
Jalankan /goal tanpa argumen untuk melihat keadaan saat ini.
/goal
Jika tujuan aktif, status menunjukkan:
- Kondisinya
- Berapa lama itu telah berjalan
- Berapa banyak giliran yang telah dievaluasi
- Pengeluaran token saat ini
- Alasan paling baru evaluator
Jumlah giliran dan alasan paling baru muncul setelah evaluasi pertama telah berjalan.
Jika tidak ada tujuan aktif tetapi satu dicapai sebelumnya dalam sesi, status menunjukkan kondisi yang dicapai bersama dengan durasi, jumlah giliran, dan pengeluaran tokennya.
Hapus tujuan
Jalankan /goal clear untuk menghapus tujuan aktif sebelum kondisinya terpenuhi.
/goal clear
Claude mencetak Goal cleared: diikuti dengan kondisi untuk mengonfirmasi, atau No goal set jika tidak ada yang aktif.
stop, off, reset, none, dan cancel diterima sebagai alias untuk clear. Menjalankan /clear untuk memulai percakapan baru juga menghapus tujuan aktif apa pun.
Lanjutkan dengan tujuan aktif
Ketika Anda melanjutkan sesi, Claude Code memulihkan tujuan yang masih aktif ketika sesi berakhir. Claude Code memulihkannya di setiap rute lanjutan: --continue, --resume dengan ID atau nama sesi, dan pemilih sesi. Sebelum v2.1.239, Claude Code memulihkan tujuan di setiap rute kecuali pemilih claude --resume.
Claude Code membawa kondisi tetapi mengatur ulang jumlah giliran, timer, dan baseline pengeluaran token. Ini tidak memulihkan tujuan yang sudah dicapai atau dihapus.
Jalankan non-interaktif
/goal bekerja dalam mode non-interaktif, di aplikasi desktop, dan melalui Remote Control. Menetapkan tujuan dengan -p menjalankan loop hingga selesai dalam satu invokasi:
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
Dengan output teks default, tidak ada yang dicetak sampai jalannya berakhir, jadi tujuan yang berjalan banyak giliran dapat terlihat macet. Tambahkan --output-format stream-json --verbose untuk memancarkan setiap pesan saat loop berjalan.
Hentikan proses dengan Ctrl+C untuk menghentikan tujuan non-interaktif sebelum kondisinya terpenuhi.
Cara evaluasi bekerja
/goal adalah pembungkus di sekitar Stop hook berbasis prompt berskop sesi. Setiap kali Claude menyelesaikan giliran, Claude Code mengirimkan kondisi dan percakapan sejauh ini ke model cepat kecil yang dikonfigurasi, yang secara default adalah Haiku pada Claude API; pada penyedia pihak ketiga, periksa halaman penyedia Anda untuk default platform. Model mengembalikan salah satu dari tiga keputusan, masing-masing dengan alasan singkat:
- Belum terpenuhi: Claude terus bekerja dan mengambil alasan sebagai panduan untuk giliran berikutnya.
- Terpenuhi: Claude Code menghapus tujuan dan mencatat entri yang dicapai dalam transkrip.
- Tidak mungkin: evaluator menilai bahwa kondisi tidak dapat pernah dipenuhi. Claude Code menghapus tujuan dan mencatat entri yang gagal dalam transkrip bersama dengan alasannya. Anda tidak perlu menghapusnya sendiri.
Jika Claude terus menjawab evaluator tanpa membuat kemajuan (tidak ada penggunaan alat selama beberapa giliran berturut-turut), Claude Code menghentikan loop, mencetak peringatan, dan mengembalikan kontrol kepada Anda dengan tujuan masih ditetapkan. Evaluasi dilanjutkan setelah prompt Anda berikutnya. Panduan hooks menjelaskan mekanisme yang mendasarinya.
Kesalahan yang harus Anda perbaiki menghapus tujuan
Jika giliran gagal pada kesalahan yang tidak akan dihapus sampai Anda memperbaikinya, Claude Code menghapus tujuan dan mencetak peringatan yang menyebutkan penyebabnya. Peringatan dimulai dengan Goal cleared after an unrecoverable error dan diakhiri dengan Run /goal again to continue. Perbaiki penyebabnya, kemudian tetapkan tujuan lagi dengan /goal <condition>. Empat jenis kegagalan menghapus tujuan:
- Kegagalan autentikasi, ketika Claude Code mengelola kredensialnya sendiri. Ketika host mengelolanya untuk Anda, seperti aplikasi desktop, ekstensi VS Code, atau sesi cloud, Claude Code membiarkan tujuan tetap aktif karena host memulihkan akses dengan sendirinya.
- Saldo kredit yang habis
- Overflow konteks yang auto-compaction tidak dapat menghapus
- Model yang tidak tersedia
Setelah kegagalan lainnya, termasuk kesalahan transien seperti batas laju dan server yang kelebihan beban, Claude Code membiarkan tujuan tetap aktif.
Pekerjaan latar belakang menunda evaluasi
Jika subagent atau perintah shell latar belakang masih berjalan ketika giliran berakhir, Claude Code melewati evaluasi untuk giliran itu. Ini mengevaluasi pada akhir giliran berikutnya yang selesai tanpa pekerjaan latar belakang yang berjalan. Ketika pekerjaan latar belakang selesai, Claude Code mengirimkan hasilnya kepada Claude sebagai giliran baru, jadi Anda tidak perlu memberi prompt.
Setelah pekerjaan latar belakang membuat tujuan menunggu selama 30 menit, check-in sudah jatuh tempo. Dalam check-in, Claude Code mencantumkan tugas yang sedang berjalan dan meminta Claude untuk membaca output mereka, terus menunggu jika mereka membuat kemajuan, dan memperbaiki atau menghentikan yang macet. Setelah check-in pertama, Claude Code menunggu dua kali lebih lama sebelum setiap check-in kemudian, hingga empat kali interval pertama: dengan default, 1 jam setelah check-in pertama, kemudian setiap 2 jam. Claude Code mengirimkan check-in yang jatuh tempo, yang pertama disertakan, dalam salah satu dari dua cara:
- Ketika giliran berakhir: Claude Code mengirimkan check-in pada akhir giliran berikutnya yang selesai dengan pekerjaan masih berjalan. Dalam sesi non-interaktif, seperti yang dimulai dengan
-p, ini adalah satu-satunya cara Claude Code mengirimkan check-in. - Saat sesi menganggur: dalam sesi interaktif, Claude Code juga memulai giliran dengan sendirinya untuk mengirimkan check-in alih-alih menunggu prompt Anda berikutnya. Jika pekerjaan latar belakang telah berhenti tanpa melaporkan hasil, Claude Code meminta Claude untuk melanjutkan menuju tujuan. Claude Code memulai paling banyak tiga check-in menganggur per tujuan di antara prompt Anda. Dalam check-in menganggur ketiga, Claude Code mengatakan bahwa check-in menganggur dijeda sampai Anda mengirimkan prompt lain. Sebelum v2.1.246, check-in menganggur tidak terbatas. Check-in menganggur memerlukan Claude Code v2.1.236 atau lebih baru.
Sebelum v2.1.239, hanya check-in menganggur yang mundur dengan cara ini; check-in yang disampaikan pada akhir giliran berulang pada interval pertama.
Untuk mengubah interval pertama, atur CLAUDE_CODE_GOAL_CHECKIN_MINUTES. Claude Code menggunakan nilai Anda sebagai pengganti interval 30 menit dan menskalakan interval kemudian dengannya. Atur ke 0 untuk mematikan check-in. Check-in memerlukan Claude Code v2.1.234 atau lebih baru.
Model evaluasi dan biaya
Untuk mengevaluasi pada model yang berbeda, atur ANTHROPIC_DEFAULT_HAIKU_MODEL.
Claude Code membaca ANTHROPIC_DEFAULT_HAIKU_MODEL di mana pun ia menggunakan model cepat kecil, bukan hanya untuk evaluasi /goal. Ketika Anda menetapkannya, Claude Code juga menyelesaikan alias haiku ke model itu dan menjalankan fungsionalitas latar belakang, seperti peringkasan percakapan, di atasnya.
Evaluator berjalan di mana pun penyedia sesi Anda dikonfigurasi. Ini tidak memanggil alat, jadi hanya dapat menilai apa yang telah Claude tampilkan dalam percakapan.
Token evaluasi ditagih pada model cepat kecil yang dikonfigurasi untuk penyedia Anda dan biasanya dapat diabaikan dibandingkan dengan pengeluaran giliran utama.
Persyaratan
Claude Code membuat /goal tersedia di bawah aturan kepercayaan ruang kerja yang sama dengan hooks dalam file pengaturan, karena evaluator adalah bagian dari sistem hooks. /goal juga tidak tersedia ketika disableAllHooks adalah true setelah penerapan prioritas pengaturan, atau ketika allowManagedHooksOnly diatur dalam pengaturan terkelola. Dalam setiap kasus, perintah memberi tahu Anda mengapa alih-alih diam-diam tidak melakukan apa pun.
Lihat juga
- Jalankan prompt berulang kali dengan
/loop: jalankan ulang pada interval waktu alih-alih hingga kondisi terpenuhi - Prompt-based hooks: tulis Stop hook Anda sendiri ketika Anda memerlukan logika evaluasi kustom
- Auto mode: setujui panggilan alat secara otomatis sehingga setiap giliran tujuan berjalan tanpa dihadiri
- Perbandingan penjadwalan: jalankan pekerjaan sesuai jadwal independen dari sesi terbuka apa pun