
“Sudah Selesai”
Saya menyuruh agen AI menulis tes untuk 527 fungsi. Agen menyelesaikan pekerjaannya dan melapor:
“Selesai.”
Fungsi yang benar-benar mendapat tes: 40.
Dia tidak berbohong. Setelah mengerjakan 40, dia menilai “ini sudah cukup”. Ketika menemui fungsi yang sulit, dia melewatinya. Setelah beberapa fungsi lagi, dia menyimpulkan “sisanya mengikuti pola yang sama, jadi sudah selesai”.
LLM pandai menghasilkan. Tapi penilaiannya tentang kelengkapan tidak bisa dipercaya.
Ratchet
Kunci ratchet memiliki gerigi yang mengunci hanya ke satu arah. Putar dan ia maju. Lepaskan dan ia berhenti, tapi tidak mundur.
Ratchet Pattern menerapkan mekanisme ini pada pengendalian agen.
Item 1: verifikasi mekanis → PASS → lanjut
Item 2: verifikasi mekanis → FAIL → coba lagi (dengan feedback)
Item 2: verifikasi mekanis → PASS → lanjut
...
Item N: PASS → selesai. Berhenti.
Tiga aturan:
- Tampilkan hanya satu item pada satu waktu.
- Harus lulus untuk membuka item berikutnya.
- Ketika semua lulus, berhenti.
Ketika aturan ini diimplementasikan sebagai CLI, agen hanya perlu mengenal satu perintah: next. Sisanya diputuskan mesin.
Agen Berhenti di 40, Ratchet Menyelesaikan 527
Model yang sama. Proyek yang sama. 527 fungsi yang sama.
Agen otonom: 40 / 527 (7.6%) — agen menyatakan "selesai"
Ratchet CLI: 527 / 527 (100%) — mesin menyatakan "masih tersisa 487"
Perbedaannya bukan pada performa model. Perbedaannya pada siapa yang memutuskan “selesai”.
Pada agen otonom, LLM yang memutuskan penghentian. LLM itu optimis. Mengerjakan 40, lalu “merasa” cukup. Pada ratchet, mesin yang memutuskan. Mesin tidak merasa. Mesin terus menyatakan “belum” sampai jumlah item yang tersisa menjadi nol.
Definisi dalam Satu Kalimat
Masukkan agen probabilistik ke dalam mesin keadaan deterministik.
| Peran | Penanggung Jawab |
|---|---|
| Generasi | LLM |
| Penilaian | verifier |
| Manajemen progres | ratchet |
Banyak sistem menyerahkan generasi, penilaian, dan keputusan penghentian semuanya kepada LLM. Ratchet memisahkannya.
Lima Prinsip
1. Kondisi penghentian bersifat mekanis
pass/fail. Bukan “looks good”. Jika go test lolos, itu PASS. Jika coverage mencapai 100%, itu PASS. Tidak ada ruang untuk penilaian subjektif.
2. PASS bersifat tetap
Item yang sudah lulus tidak dibuka kembali. Tidak ada kemunduran. Jumlah item yang tersisa hanya berkurang.
remaining_work(t+1) ≤ remaining_work(t)
Yang dibangun hari ini tidak akan dibongkar besok. Hanya maju. Inilah perbedaan mendasar dengan “agen 24 jam”. Agen tanpa kondisi penghentian menambahkan abstraksi hari ini, menghapusnya besok, dan menambahkannya kembali lusa. Ratchet tidak mengizinkan osilasi semacam itu.
3. LLM hanya menghasilkan
Menghasilkan kode, menulis tes, mengajukan perbaikan — itulah peran LLM. Apa yang harus diperbaiki, apakah lulus atau tidak, apa selanjutnya, apakah sudah selesai — semua itu diputuskan mesin. LLM bukan perencana, melainkan constrained generator.
4. Mencabut hak agen untuk menyatakan selesai
Jika LLM berkata “selesai”, berhenti di 40. Jika mesin berkata “selesai”, berhenti di 527. Alasan keberadaan ratchet terangkum dalam satu baris ini.
5. Verifier harus deterministik
Tidak sembarang hal bisa menjadi verifier.
| Bisa | Tidak bisa |
|---|---|
go test | “looks cleaner” |
| pengukuran coverage | “seems better” |
| AST validation | “more scalable” |
| schema diff | “clean architecture” |
Syarat Verifier: deterministic, machine-checkable, resumable, localized feedback. Jika keempat syarat ini tidak terpenuhi, gerigi ratchet tidak akan mengunci.
Feedback adalah gradient signal
Jika ratchet hanya mengembalikan “lulus/gagal”, LLM memperbaiki tanpa arah. Semakin spesifik feedback, semakin akurat koreksi LLM.
Feedback lemah: "tes gagal" → LLM memperbaiki tanpa arah
Feedback sedang: "coverage 65%" → LLM memperkuat secara kasar
Feedback kuat: "line 41, 44, 70 belum tercover" → LLM meng-cover cabang tersebut dengan tepat
Angka yang terverifikasi dari proyek nyata:
Tanpa feedback: berhenti di 60~70% coverage
Dengan feedback: mencapai 100% (untuk fungsi yang reachable)
Model yang sama. Satu baris “line 41 not covered” berperan sebagai gradient signal.
Semakin tinggi resolusi feedback, semakin tinggi akurasi koreksi LLM, semakin sedikit iterasi loop, dan semakin rendah biayanya.
Agen Mati. Progres Tetap Hidup.
Agen pasti akan tumbang. Batas token, error jaringan, sesi terputus. Jika ratchet menyimpan state progres secara persisten, agen berikutnya melanjutkan dari titik terakhir agen sebelumnya.
Agen A: memproses fungsi 1~200 → mati
Agen B: next → melanjutkan dari 201
Agen C: next → melanjutkan dari 401
Agen itu sekali pakai. Progres yang terakumulasi.
Ganti Verifier, Dapat Alat Berbeda
Ratchet tidak terikat pada satu verifier tertentu. Ganti verifier dan Anda mendapat alat yang berbeda.
| Ratchet + verifier | Kegunaan |
|---|---|
Ratchet + go test + coverage | Pembuatan tes per fungsi |
| Ratchet + aturan struktur validator | Penataan struktur kode |
| Ratchet + hurl pass/fail | Verifikasi endpoint API |
| Ratchet + verifikasi silang spesifikasi | Penjaminan koherensi SSOT |
| Ratchet + Toulmin verdict | Penegakan aturan yang ditetapkan pengguna |
Polanya satu. Verifier yang menentukan domain.
Pertanyaan
Berapa item yang diselesaikan agen Anda sebelum berkata “sudah selesai”?
Apakah benar sudah selesai?
Siapa yang memutuskan “selesai” — agen atau mesin?
Artikel terkait: Topologi Feedback Lebih Penting dari IQ Model — Landasan teori Ratchet Pattern. Mengapa struktur feedback lebih penting daripada performa model.