Perintah goal Claude Code: Berputar Sampai Syarat Terpenuhi

Ia menetapkan syarat penyelesaian untuk sesi yang sedang berjalan. Setelah tiap giliran, sebuah model kecil nan cepat membaca syarat dan percakapannya lalu mengembalikan vonis. Kalau syaratnya belum terpenuhi, Claude memulai giliran lagi alih-alih mengembalikan kendali ke Anda, jadi pekerjaan panjang berlanjut tanpa Anda memberi prompt tiap langkah.
Tulis sesuatu yang bisa dibuktikan keluaran Claude sendiri, karena evaluatornya tidak pernah menjalankan perintah atau membaca file — ia hanya menilai apa yang sudah ada di transkrip. Sebut satu keadaan akhir yang terukur, nyatakan bagaimana Claude harus membuktikannya, dan tambahkan batasan yang harus tetap berlaku di sepanjang jalan. Menyertakan klausa seperti berhenti setelah dua puluh giliran membatasi run-nya.
Jalankan perintah goal dengan argumen clear, atau salah satu aliasnya: stop, off, reset, none, dan cancel. Memulai percakapan baru juga menghapus goal yang aktif. Sebuah goal membersihkan dirinya ketika syaratnya terpenuhi, ketika evaluatornya menilai itu mustahil, atau setelah error yang tidak akan selesai sendiri.
Keduanya menjaga sesi tetap berjalan di antara prompt Anda, tapi bedanya ada di apa yang memulai giliran berikutnya. Goal memulai giliran berikutnya ketika yang sebelumnya selesai dan syaratnya belum terpenuhi. Loop memulai giliran berikutnya ketika sebuah interval waktu berlalu. Stop hook tulisan Anda sendiri juga menyala setelah tiap giliran, dengan logika yang Anda kendalikan.
Tidak. Goal tidak mengubah mode izin Anda, jadi di mode yang masih bertanya, tiap giliran goal berhenti di panggilan tool pertama. Jalankan goal-nya di auto mode kalau Anda mau gilirannya berjalan tanpa ditunggui. Keduanya saling melengkapi: auto mode menghapus prompt di dalam giliran, dan goal menghapus prompt di antara giliran.

Ringkasan Utama
Perintah goal menetapkan sebuah syarat penyelesaian, dan setelah tiap giliran sebuah model kecil nan cepat menilai apakah syarat itu berlaku. Belum terpenuhi, dan Claude memulai giliran lagi alih-alih mengembalikan kendali. Ia membersihkan dirinya ketika syaratnya terpenuhi, ketika evaluatornya menilai itu mustahil, atau ketika sebuah giliran gagal karena error yang hanya bisa Anda perbaiki.
Dulu saya menunggui refactor panjang dengan mengetik lanjutkan tiap beberapa menit, pekerjaan yang aneh untuk seorang manusia. Kali pertama saya menetapkan syarat lalu pergi, saya kembali ke migrasi yang selesai dan transkrip penuh vonis yang menjelaskan sasaran tiap giliran. Kali kedua, saya kembali ke sebelas giliran berisi model yang sopan menjelaskan bahwa ia tidak bisa memverifikasi sesuatu yang saya rumuskan dengan buruk.
Kedua hasil itu datang dari mekanisme yang sama, dan memahaminya adalah sebagian besar keterampilannya. Tulisan ini membahas apa yang terjadi setelah tiap giliran, cara menulis syarat yang benar-benar bisa dinilai evaluatornya, perintah-perintahnya, perbandingannya dengan loop dan dengan Stop hook tulisan tangan, apa yang dilakukan pekerjaan latar terhadap evaluasi, kegagalan yang membersihkan sebuah goal, dan berapa biayanya.
Perintahnya adalah pembungkus untuk sebuah prompt-based Stop hook bercakupan sesi. Ketika sebuah giliran selesai, Claude Code mengirim syarat Anda dan percakapan sejauh ini ke model kecil nan cepat yang dikonfigurasi untuk penyedia Anda — Haiku secara bawaan di Claude API — dan ia mengembalikan satu dari tiga vonis berikut alasan singkat:
Ada katup pengaman yang layak diketahui. Kalau Claude terus menjawab evaluatornya tanpa memakai tool apa pun selama beberapa giliran berturut-turut, Claude Code menghentikan loop-nya, mencetak peringatan, dan mengembalikan kendali ke Anda dengan goal-nya masih terpasang. Evaluasi berlanjut pada prompt Anda berikutnya. Dalam praktiknya, begitulah rupa syarat yang buruk dari luar.
Fakta paling berguna tentang evaluatornya adalah bahwa ia tidak menjalankan perintah dan tidak membaca file. Ia hanya menilai apa yang sudah dimunculkan Claude di percakapan. Jadi sebuah syarat bekerja ketika keluaran Claude sendiri bisa membuktikannya — tes lulus karena Claude menjalankannya dan hasilnya ada di transkrip. Syarat tentang keadaan dunia yang tak dibuktikan apa pun di transkrip tidak akan pernah selesai.
# Set it. This starts a turn immediately — the condition IS
# the first directive, so you do not send a separate prompt.
/goal all tests in test/auth pass and the lint step is clean
# A condition that holds up over many turns names one end state,
# how to prove it, and what must not change on the way:
/goal every call site in src/billing compiles against the v3
client and npm test exits 0, with no test file modified,
or stop after 20 turns
/goal # status: condition, elapsed, turns, tokens, last reason
/goal clear # also: stop, off, reset, none, cancel
# Non-interactive. Nothing prints until the run ends unless you
# ask for the stream.
claude -p "/goal CHANGELOG.md has an entry for every PR merged
this week" --output-format stream-json --verboseTaruh batasnya di dalam syaratnya. Di sini tidak ada flag jumlah giliran maksimum, tapi syaratnya boleh sampai 4.000 karakter dan evaluatornya membaca semuanya, jadi klausa seperti atau berhenti setelah 20 giliran menjadi bagian dari yang dinilai: Claude melaporkan kemajuannya terhadap klausa itu tiap giliran dan evaluatornya akhirnya menyatakannya terpenuhi. Itulah beda antara pergi sepuluh menit dan pergi seharian.
Tiga mekanisme menjaga sebuah sesi tetap berjalan di antara prompt Anda, dan bedanya ada di apa yang memulai giliran berikutnya, bukan di apa yang bisa mereka lakukan. Memilih yang salah adalah alasan biasa orang menyimpulkan bahwa sesi otonom tidak bekerja.
Mana yang harus dipakai:
| Pendekatan | Giliran berikutnya mulai ketika | Ia berhenti ketika |
|---|---|---|
| Perintah goal | Giliran sebelumnya selesai, atau sebuah check-in menganggur jatuh tempo sementara pekerjaan latar menahannya | Sebuah model memastikan syaratnya terpenuhi atau mustahil, error tak terpulihkan datang, atau Anda membersihkannya |
| Perintah loop | Sebuah interval waktu berlalu | Anda menghentikannya, atau Claude memutuskan pekerjaannya selesai |
| Stop hook di settings | Giliran sebelumnya selesai | Skrip atau prompt Anda sendiri yang memutuskan |
Giliran yang berakhir sementara sebuah subagent atau perintah shell latar masih berjalan sama sekali tidak dievaluasi — Claude Code menunggu giliran berikutnya yang selesai bersih. Itu perilaku yang benar, dan ia memperkenalkan satu-satunya mesin di sini yang mengagetkan orang: tangga check-in yang menjaga goal yang menunggu tetap jujur tanpa menggedornya.
# Background work DEFERS evaluation. A turn that ends with a
# subagent or a background shell command still running is not
# evaluated; the next turn that ends clean is.
#
# After 30 minutes of waiting, a check-in is due. Claude is asked
# to read the running tasks' output, keep waiting if they are
# progressing, and fix or stop anything stuck.
#
# The interval then DOUBLES, capped at four times the first:
# 30 min -> 1 hour -> every 2 hours
CLAUDE_CODE_GOAL_CHECKIN_MINUTES=15 # scales the whole ladder
CLAUDE_CODE_GOAL_CHECKIN_MINUTES=0 # no check-ins at all
# In an interactive session, up to THREE idle check-ins per goal
# between your prompts. The third one says idle check-ins are
# paused until you send another prompt.Bedanya ada di antara error yang harus Anda perbaiki dan error yang selesai sendiri. Hanya empat jenis yang membersihkan goal-nya, dan masing-masing kalau tidak begitu akan membuat loop-nya gagal dengan cara yang sama selamanya. Kegagalan sementara — rate limit, server kelebihan beban — sengaja membiarkannya tetap aktif, karena mencoba lagi memang respons yang tepat untuk itu.
# Four failures clear the goal. Everything else — rate limits,
# overloaded servers, transient errors — leaves it active.
#
# an authentication failure, when Claude Code manages its own
# credentials (a host that manages them for you keeps the
# goal alive, because the host restores access itself)
# an exhausted credit balance
# a context overflow auto-compaction could not clear
# a model that is not available
#
# The warning starts "Goal cleared after an unrecoverable error"
# and ends "Run /goal again to continue".
# /goal is unavailable, and says why, when:
# the workspace is untrusted (the evaluator is a hook)
# disableAllHooks is true after settings precedence
# allowManagedHooksOnly is set in managed settingsEvaluasinya berjalan di penyedia yang memang sudah dipakai sesi Anda, dan tokennya ditagih pada model kecil nan cepat, yang biasanya tak berarti dibanding gilirannya sendiri. Anda bisa mengarahkan evaluasinya ke model lain, dan di situlah kehati-hatiannya dibutuhkan.
Menyetel environment variable model Haiku bawaan tidak hanya memengaruhi evaluasi goal. Claude Code membacanya di mana pun ia memakai model kecil nan cepat, menyelesaikan alias haiku ke model itu, dan menjalankan fungsi latar seperti perangkuman percakapan di atasnya. Jadi mengubahnya demi evaluator yang lebih pintar diam-diam mengubah perangkum Anda dan beberapa hal lain sekaligus.
Sebuah goal tidak mengubah mode izin Anda, artinya di mode yang masih bertanya, tiap giliran goal berhenti di prompt pertama dan seluruh maksudnya menguap. Jalankan di auto mode kalau Anda mau gilirannya berjalan tanpa ditunggui. Dan karena evaluatornya bagian dari sistem hook, perintahnya mengikuti aturan kepercayaan workspace yang sama dengan hook di file settings, serta tidak tersedia ketika hook dimatikan atau dibatasi hanya pada yang terkelola.
Auto mode dan sebuah goal menyelesaikan dua paruh berbeda dari masalah yang sama, itulah kenapa keduanya berpasangan baik. Auto mode menghapus prompt per-tool di dalam sebuah giliran; goal menghapus prompt per-giliran di antaranya. Tak satu pun menggantikan yang lain, dan menjalankan goal tanpa auto mode adalah cara paling umum berakhir menonton sesi yang katanya otonom menunggui Anda.
Tulis syaratnya sebagai sesuatu yang bisa dibuktikan transkripnya, taruh batas giliran atau waktu di dalamnya, dan jalankan di mode yang tidak berhenti di tiap panggilan tool. Lalu baca vonisnya, bukan keluarannya: alasan evaluator tiap giliran adalah sinyal terjernih yang Anda dapat soal apakah sesinya paham arti selesai, dan run yang melenceng mengatakannya di sana beberapa giliran sebelum itu jadi jelas di tempat lain.
Sumber & bacaan lanjutan