Membatasi Ruang Lingkup Tugas Agar Tidak Menyimpang
otonom gagal dengan cara yang spesifik: ia menyimpang (drift). Kamu meminta satu hal, ia "dengan baik hati" merefaktor tiga hal lain, menyentuh berkas yang tidak pernah kamu sebutkan, dan kembali dengan diff yang tidak bisa kamu baca. Solusinya bukan agent yang lebih pintar — melainkan brief yang lebih ketat.
Tugas otonom yang baik punya empat bagian: tujuan (goal) yang jelas, batasan (constraints) yang eksplisit, kriteria selesai (done-criterion) yang konkret, dan pagar pengaman (guardrails) yang bisa dijalankan sendiri oleh agent. Pagar pengaman adalah bagian terpenting, karena itulah pagar yang tidak bisa dipanjat agent tanpa kamu sadari.
Goal: Make the failing tests in tests/checkout/ pass.
Constraints:
- Only edit files under src/checkout/. Do not touch src/auth/,
the database schema, or anything in config/.
- Do not add new dependencies.
- Do not change the tests themselves — the tests define correct behavior.
Done when:
- `npm test tests/checkout/` is fully green.
- `npm run typecheck` passes.
- `git diff --stat` shows changes only under src/checkout/.
If you get stuck after two real attempts, stop and report what you
tried and what's still failing. Don't paper over a failure to make
the suite go green.
Brief ini berhasil karena mengurung agent: batasan mengurung apa yang boleh disentuhnya, kriteria selesai adalah sebuah perintah yang bisa dijalankan, dan loop verifikasi menjaganya tetap jujur:
┌───────────────────────── SCOPE FENCE ─────────────────────────┐
│ may edit: src/checkout/ │
│ ✗ off-limits: src/auth/ · db schema · config/ · the tests │
│ │
│ ┌─────────┐ edit ┌──────────────┐ │
│ │ AGENT │──────────▶│ src/checkout/ │ │
│ │ │◀──────────┤ │ │
│ └────┬────┘ run test └──────────────┘ │
│ │ │
│ ▼ npm test + typecheck │
│ ┌─────────────┐ green ──▶ DONE │
│ │ VERIFY LOOP │ red ──▶ retry (max 2) │
│ └─────────────┘ stuck ──▶ STOP & report ────────────────┼─▶ you
└───────────────────────────────────────────────────────────────┘
Tiga hal membuat brief ini sulit untuk disimpangi. Batasan menggambar dinding di sekeliling berkas yang boleh disentuh agent. Kriteria selesai adalah sebuah perintah yang bisa dijalankan siapa pun, bukan sekadar perasaan (vibe). Dan paragraf terakhir memberinya izin untuk berhenti dan bertanya alih-alih terus meraba-raba — yang mencegah bencana dalam gerakan lambat di mana agent terus "memperbaiki" sesuatu selama dua puluh menit dan meninggalkan pohon kode dalam keadaan lebih buruk daripada saat ditemukannya.
Testnya adalah pagar yang sesungguhnya. Agent yang bisa menjalankan test-nya sendiri punya loop umpan balik yang ketat dan jujur, dan kebanyakan tetap berada di dalamnya; yang tidak punya cara untuk memeriksa pekerjaannya sendiri akan dengan percaya diri menyerahkan sesuatu yang rusak kepadamu. Jika kamu hanya mengambil satu kebiasaan dari bab ini: berikan agent cara untuk memverifikasi dirinya sendiri, dan jadikan lulus verifikasi itu sebagai definisi selesai.