Ratchet Pattern

“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.

PeranPenanggung Jawab
GenerasiLLM
Penilaianverifier
Manajemen progresratchet

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.

BisaTidak 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 + verifierKegunaan
Ratchet + go test + coveragePembuatan tes per fungsi
Ratchet + aturan struktur validatorPenataan struktur kode
Ratchet + hurl pass/failVerifikasi endpoint API
Ratchet + verifikasi silang spesifikasiPenjaminan koherensi SSOT
Ratchet + Toulmin verdictPenegakan 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.