Berhenti Merestart Agent Anda: Membangun Harness Engineering untuk Tugas Jangka Panjang
TL;DR: Agent AI sering gagal karena kehilangan memori antar sesi. Dengan menggunakan “Initializer Agent” untuk membangun state dan “Coding Agent” yang mencatat progress ke git secara bertahap, developer bisa membangun sistem kompleks selama berhari-hari tanpa kehilangan konteks (context rot).
Masalah “Pekerja Shift” pada AI
Bayangkan sebuah tim software di mana setiap engineer datang untuk shift mereka dengan amnesia total. Mereka tidak punya ingatan tentang codebase, tidak ada catatan tentang apa yang diimplementasikan sepuluh menit lalu, dan tidak tahu apa prioritasnya. Inilah tepatnya cara kerja kebanyakan agent AI saat ini ketika tugas mereka melampaui satu context window.
Metode “compaction” standar (meringkas percakapan) tidaklah cukup. Ketika sebuah agent mencoba membangun aplikasi kompleks dalam satu kali jalan (one-shot), ia akhirnya akan menabrak batas konteks, meninggalkan kode yang setengah jadi, dan sesi berikutnya terpaksa menghabiskan token hanya untuk menebak apa yang terjadi sebelumnya.
Arsitektur Harness dengan Persistensi Tinggi
Untuk mengatasi hal ini, tim engineering Anthropic mengembangkan sistem harness ganda yang memperlakukan pengembangan AI seperti lari maraton, bukan sprint.
1. Initializer Agent
Sesi pertama tidak pernah fokus pada coding. Fokusnya adalah scaffolding (membangun pondasi). Initializer Agent bertugas untuk:
- Membuat script
init.shuntuk booting environment. - Melakukan inisialisasi repository
gituntuk melacak riwayat. - Menghasilkan file
claude-progress.txtsebagai log memori yang persisten. - Membangun
feature_list.jsonyang komprehensif.
2. Coding Agent
Setiap sesi berikutnya menggunakan Coding Agent. Alih-alih mencoba menyelesaikan seluruh proyek sekaligus, agent ini dibatasi untuk mengerjakan tepat satu fitur pada satu waktu. Hal ini memastikan environment selalu ditinggalkan dalam “clean state” (siap untuk merge ke branch utama) sebelum context window berakhir.
Feature List: Mengapa JSON Lebih Baik untuk Agent?
Salah satu wawasan praktis dari riset Anthropic adalah perpindahan dari Markdown ke JSON untuk melacak requirement.
Meskipun manusia menyukai Markdown, agent cenderung terlalu kreatif dengan formatting, seringkali menghapus bagian penting atau menghilangkan catatan yang dianggap “tidak perlu”. Dengan menggunakan feature_list.json yang terstruktur ketat, agent dipaksa berinteraksi dengan requirement sebagai data. Setiap fitur memiliki field passes: false yang hanya berubah setelah verifikasi selesai.
{
"category": "functional",
"description": "User can open a new chat and see response",
"passes": false
} Git sebagai Buffer Memori Utama
Kita sering menganggap git sebagai alat version control untuk manusia, namun bagi agent, git adalah jaring pengaman. Dengan mewajibkan agent untuk commit progress dengan pesan yang deskriptif, harness memungkinkan agent untuk:
- Mengembalikan state yang berfungsi jika terjadi halusinasi yang merusak build.
- Memberikan konteks kepada instance agent berikutnya melalui log commit.
- Menjaga diff tetap bersih, memudahkan model untuk melihat dengan tepat apa yang telah berubah.
Verifikasi: Puppeteer dan Jebakan End-to-End
Mode kegagalan utama bagi coding agent adalah “false completion”—menyatakan sebuah fitur selesai hanya karena kodenya terlihat benar, padahal gagal saat dijalankan.
Harness Anthropic menyelesaikan ini dengan mengintegrasikan Puppeteer MCP. Agent tidak hanya menjalankan unit test; ia membuka browser headless, mengklik tombol “New Chat”, dan memverifikasi bahwa UI benar-benar merespons. Jika test end-to-end gagal, agent dilarang menandai fitur tersebut sebagai selesai dalam log JSON.
Perbandingan: Compaction vs. State-Harness
| Fitur | Compaction Standar | Anthropic State-Harness |
|---|---|---|
| Persistensi | Volatil (Berdasarkan ringkasan) | Tahan Lama (Berdasarkan File/Git) |
| Cakupan Tugas | Mencoba “One-Shot” | Inkremental (Satu fitur/sesi) |
| Verifikasi | Tebakan / Unit Test | End-to-End (Puppeteer) |
| Pemulihan Memori | Biaya token tinggi (Baca ulang) | Biaya token rendah (git log) |
| Mode Kegagalan | Kode “Vibe” setengah jadi | Commit bersih dan terdokumentasi |
FAQ
Q: Apakah ini berfungsi untuk semua LLM? A: Meskipun dirancang untuk Claude Agent SDK, prinsip-prinsip ini (log JSON, commit Git, prompt Initializer) bersifat model-agnostic dan akan meningkatkan alur kerja agentik jangka panjang apa pun.
Q: Bukankah menjalankan Initializer Agent itu mahal? A: Sebenarnya, ini menghemat token dalam jangka panjang. Dengan menghabiskan token di awal untuk menentukan jalur yang terstruktur, sesi berikutnya terhindar dari “context rot” yang menyebabkan implementasi ulang yang mubazir.
Q: Apa yang dimaksud dengan “clean state” dalam konteks ini? A: Clean state berarti kode tidak memiliki bug besar, teratur, dan terdokumentasi dengan baik. Ini meniru keadaan yang siap untuk digabungkan ke dalam branch produksi.
Q: Mengapa menggunakan Puppeteer secara khusus? A: Untuk aplikasi web, otomatisasi browser adalah satu-satunya cara untuk menangkap regresi visual atau bug state-management yang sering terlewatkan oleh unit test. Ini memaksa agent untuk merasakan aplikasi seperti pengguna sungguhan.
Q: Bisakah ini digunakan untuk tugas non-coding? A: Ya. Logika harness yang sama—Initializer untuk requirement, file Progress untuk memori—dapat diterapkan pada riset ilmiah, pemodelan keuangan, atau penyusunan dokumen hukum.
Kesimpulan Engineering
Era “vibe coding” di mana kita berharap agent menyelesaikan semuanya dalam sekali jalan akan segera berakhir. Untuk membangun software kelas produksi dengan AI, kita harus memperlakukan agent seperti senior engineer: beri mereka struktur manajemen proyek, sistem version control, dan harness pengujian yang ketat. Berhenti menganggap context window sebagai batasan, dan mulailah menganggapnya sebagai sebuah shift kerja.