Back to Articles
● December 27, 2024 ● 4 MIN READ

Berhenti Merestart Agent Anda: Membangun Harness Engineering untuk Tugas Jangka Panjang

AI AgentsAnthropicEngineeringAgent SDKSoftware Development
Research & Insights ● Future of Digital Experience ● AI Revolution ● Design Strategy ● New Era of Intelligence ●

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.sh untuk booting environment.
  • Melakukan inisialisasi repository git untuk melacak riwayat.
  • Menghasilkan file claude-progress.txt sebagai log memori yang persisten.
  • Membangun feature_list.json yang 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

FiturCompaction StandarAnthropic State-Harness
PersistensiVolatil (Berdasarkan ringkasan)Tahan Lama (Berdasarkan File/Git)
Cakupan TugasMencoba “One-Shot”Inkremental (Satu fitur/sesi)
VerifikasiTebakan / Unit TestEnd-to-End (Puppeteer)
Pemulihan MemoriBiaya token tinggi (Baca ulang)Biaya token rendah (git log)
Mode KegagalanKode “Vibe” setengah jadiCommit 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.

Antigravity Design & Development
Share
Continue Reading

Related
Articles