Desain Harness untuk Pengembangan Aplikasi Berjalan Lama: Agen AI, Alur Kerja Frontend, dan Masa Depan Rekayasa UI
Tim teknik Anthropic baru-baru ini menerbitkan eksplorasi mendalam tentang apa yang mereka sebut “desain harness”, pola arsitektur dan perangkat yang memungkinkan agen AI berfungsi dengan andal dalam periode yang panjang. Ini bukan hanya tentang membiarkan jendela terminal tetap terbuka. Ini tentang membangun lingkungan terstruktur di mana model AI dapat merencanakan, mengeksekusi, mengamati, dan memulihkan diri selama berjam-jam atau bahkan berhari-hari pekerjaan pengembangan berkelanjutan. Bagi pengembang frontend, implikasinya sangat mendalam. Agen yang berjalan lama yang dapat secara bertahap membangun dasbor React yang kompleks, merefaktor basis kode CSS lama, atau secara iteratif menyempurnakan UI berdasarkan umpan balik pengguna mewakili perubahan paradigma.
Tetapi agen yang kuat hanya seefektif lingkungan tempat ia beroperasi. Inilah inti dari desain harness. Anggap saja seperti perancah di sekitar lokasi konstruksi. Agen adalah pekerja terampil, tetapi tanpa perancah yang stabil, spesifikasi yang jelas, akses alat yang terstruktur, manajemen status, dan putaran pemulihan kesalahan, ia tidak dapat membangun gedung pencakar langit. Ia hampir tidak bisa merakit gudang. Dalam postingan ini, kita akan menguraikan temuan utama Anthropic, menerjemahkannya ke dalam alur kerja frontend yang praktis, dan menunjukkan bagaimana alat seperti DivMagic, Claude Code, dan harness terminal terstruktur sudah membentuk kembali cara kita membangun aplikasi web berjalan lama yang siap produksi.
Penelitian Anthropic mengungkapkan bahwa tantangan inti bukanlah “kecerdasan” model tetapi kemampuan agen untuk mempertahankan rencana yang koheren dan dapat dieksekusi di ribuan panggilan alat berurutan dan beberapa pemeriksaan manusia.
Anatomi Harness Pengembangan: Lebih dari Sekadar Sandbox
Ketika para insinyur Anthropic berbicara tentang “harness,” yang mereka maksud adalah putaran yang diinstrumentasi dengan hati-hati. Agen berada di dalam lingkungan yang dikontainerisasi, dengan akses ke terminal, sistem file, dan serangkaian alat yang ditentukan. Ia tidak hanya menulis kode; ia menulis kode, menjalankan pengujian, mengurai kesalahan, membaca log, dan kemudian menulis lebih banyak kode. Harness adalah yang menahan status percakapan yang sedang berlangsung antara model dan sistem. Bagi pengembang frontend, padanannya mungkin adalah lingkungan Node.js dengan server dev yang berjalan, alat otomatisasi browser seperti Playwright, dan pipeline hot-module-replacement. Harness menjaga semuanya tetap koheren.
Anthropic menyoroti bahwa rantai prompt yang tidak terstruktur dan ad-hoc gagal secara fatal dalam tugas yang berjalan lama. Model melupakan batasan, berhalusinasi tentang keluaran alat, atau terjebak dalam putaran berulang. Harness yang dirancang dengan baik mengurangi hal ini melalui beberapa mekanisme: rencana kerja terstruktur yang disimpan dalam file TODO.md , komit berbasis checkpoint, dan gerbang umpan balik manusia-dalam-putaran yang eksplisit. Ini mengubah agen AI dari chatbot sederhana menjadi mitra pengembangan yang tangguh yang dapat secara otonom menavigasi proyek UI multi-file yang kompleks selama berjam-jam.
Properti Utama dari Harness yang Efektif
Penelitian Anthropic mengidentifikasi beberapa properti yang tidak dapat ditawar untuk harness tingkat produksi. Ini diterjemahkan langsung ke dalam praktik terbaik untuk perangkat frontend:
- Observabilitas: Agen harus dapat melihat konsekuensi dari tindakannya. Dalam konteks frontend, ini berarti snapshot browser tanpa kepala, log konsol, dan waterfall permintaan jaringan, semuanya dimunculkan kembali ke konteks model.
- Keadaan Penuh: Harness mempertahankan sistem file dan memori yang persisten. Untuk proyek UI, ini adalah repositori Git. Agen dapat bercabang, melakukan komit, dan kembali.
- Modularitas Alat: Setiap alat (mis.,
write_file,run_terminal_command,take_browser_screenshot) memiliki cakupan yang jelas dan sempit, mengurangi ambiguitas. - Putaran Pemulihan: Ketika build gagal atau asersi pengujian tidak lulus, harness memberikan pesan kesalahan yang tepat itu kembali ke agen, bukan “terjadi kesalahan” yang samar.

Claude Code dan Harness Terminal: Alur Kerja Frontend Baru
Claude Code dari Anthropic adalah contoh utama dari desain harness dalam aksi. Ini adalah agen yang hidup langsung di terminal Anda, dilengkapi dengan serangkaian alat yang luas. Bagi pengembang frontend, ini adalah pengubah permainan. Anda dapat meminta Claude Code untuk mem-bootstrap proyek Vite baru, menginstal Tailwind CSS, membuat perancah pustaka komponen, dan mengimplementasikan antarmuka drag-and-drop yang kompleks, sambil secara iteratif memperbaiki kesalahan TypeScript dan menyesuaikan dengan umpan balik desain Anda. Harness terminal menyediakan lingkungan yang stabil; Claude Code menyediakan tenaga kerja yang cerdas dan persisten.

Pertimbangkan skenario umum: membangun dasbor data dengan beberapa bagan interaktif. Tanpa agen, Anda akan menghabiskan waktu berjam-jam menulis kode boilerplate, menghubungkan Chart.js atau D3, dan men-debug transformasi data. Dengan agen yang berjalan lama di harness yang tepat, Anda dapat menentukan desain tingkat tinggi dan skema data, dan membiarkannya bekerja. Ia menulis komponen, menjalankan server dev, mendeteksi status pemuatan yang macet, dan merefaktor logika pengambilan data. Kuncinya adalah bahwa harness mencegahnya keluar jalur selama pivot pengembangan yang tak terhindarkan ketika Anda meminta untuk mengubah dari bagan batang menjadi plot sebar.
Untuk mencegah pembengkakan konteks, gunakan hook komit yang merangkum. Setelah sejumlah pekerjaan yang signifikan, minta agen untuk merangkum perubahannya dalam pesan komit Git. Ringkasan ini kemudian dapat disuntikkan ke dalam prompt di masa mendatang untuk menjaga agen tetap selaras.
Menerjemahkan Desain Harness ke Arsitektur SPA Frontend
Prinsip-prinsip desain harness tidak hanya berlaku untuk infrastruktur agen AI. Mereka cocok dengan sangat baik ke arsitektur frontend modern, terutama untuk aplikasi satu halaman (SPA) yang perlu tetap penuh status dan responsif selama sesi pengguna yang panjang. Pikirkan alat desain berbasis web yang canggih seperti Figma atau dasbor waktu nyata. Ini adalah aplikasi yang berjalan lama, dan mereka membutuhkan “harness” internal mereka sendiri untuk mengelola status, efek samping, dan batas kesalahan.
“Arsitektur aplikasi yang tahan lama adalah harness untuk niat pengguna. Ini menjaga alur kerja mereka tetap koheren bahkan saat mereka menavigasi ratusan transisi status dalam satu sesi.”
Dalam aplikasi React atau Vue, harness ini diterjemahkan ke dalam beberapa implementasi konkret. StateManager seperti Redux Toolkit atau Zustand menyediakan status yang persisten dan dapat diamati. React Query atau SWR bertindak sebagai harness deklaratif untuk status server, mengelola caching, pembaruan latar belakang, dan siklus stale-while-revalidate. Batas kesalahan berfungsi sebagai putaran pemulihan, menangkap komponen yang crash dan mengembalikan UI ke status kerja tanpa menyegarkan seluruh halaman. Struktur aplikasi itu sendiri menjadi harness untuk logika bisnis Anda, memastikan stabilitas di seluruh interaksi pengguna yang berjalan lama.
Harnessing Tingkat Komponen: Merangkum Kompleksitas
Anthropic menekankan modularitas alat. Dalam ekosistem komponen, ini adalah prinsip tanggung jawab tunggal dan isolasi. Komponen yang dirancang dengan baik adalah alat dengan cakupan sempit yang dapat diatur oleh kerangka aplikasi yang lebih besar. Komponen menerima *props* (masukan terstruktur), menghasilkan keluaran (observabilitas), dan memancarkan *event* (panggilan alat kembali ke kerangka induk). Dengan menjaga komponen tetap modular dan manajemen statusnya eksplisit, Anda mencegah jenis penurunan konteks yang diamati Anthropic pada agen AI yang tidak dikelola dengan baik, tetapi pada antarmuka pengguna Anda. Sebuah komponen tidak boleh terjerat dengan logika autentikasi. Kerangka, lapisan manajemen status aplikasi Anda, membuat mereka bekerja sama dengan aman dari waktu ke waktu.
Kemacetan UI: Saat Kerangka Sempurna, Tapi Desainnya Tidak
Bahkan dengan kerangka pengembangan yang dirancang sempurna dan agen AI yang tak kenal lelah, satu kemacetan *frontend* tetap kritis: penerjemahan desain antarmuka pengguna yang diinginkan menjadi kode siap produksi. Agen dapat menulis TypeScript yang logis dan bebas kesalahan, tetapi jika ia menghabiskan waktu berjam-jam dengan susah payah mencoba mereproduksi gradien yang kompleks, *scrollbar* khusus, atau *mockup* Figma desainer piksel demi piksel, keuntungan produktivitas kerangka akan menguap. Di sinilah pengembang membutuhkan cara untuk mempersingkat proses konversi UI, memberi kerangka titik awal yang akurat dan langsung, bukan deskripsi visual yang ambigu.

Ini adalah celah yang diisi oleh DivMagic . Sementara kerangka terminal seperti Claude Code menyediakan *loop* cerdas untuk membangun logika aplikasi, DivMagic bertindak sebagai alat presisi untuk lapisan visual. Dengan memungkinkan Anda menyalin elemen UI apa pun dari situs web mana pun secara instan, mengekstrak CSS, struktur HTML, dan token desainnya yang tepat dan terkomputasi, alat ini menghilangkan bagian paling membosankan dan memakan waktu dari proyek *frontend* jangka panjang. Anda tidak perlu lagi mendeskripsikan bayangan dalam bahasa alami dan berharap agen menafsirkannya dengan benar. Anda menyalinnya, menempelkannya ke proyek Anda, dan membiarkan agen mengintegrasikannya dalam kerangka yang lebih besar.

DivMagic: Alat yang Hilang dalam Alur Kerja Kerangka AI
Dalam kerangka pengembangan gaya Anthropic, alat agen adalah segalanya. Seperangkat alat tipikal mencakup read_file, write_file, run_shell, dan web_fetch. Yang masih kurang dari ini adalah cara yang andal untuk menafsirkan maksud desain visual ke dalam kode. Manusia dapat berkata "buatlah seperti formulir *checkout*-nya Stripe," tetapi agen, bahkan dengan kemampuan visi, kesulitan menghasilkan reproduksi yang setia dan siap produksi hanya dari tangkapan layar. CSS yang dihasilkan sering kali berlebihan, tidak benar secara semantik, atau menggunakan spasi yang salah.
Dengan mengintegrasikan DivMagic ke dalam kerangka sebagai alat baru atau sebagai langkah pra-pemrosesan manual, alur kerja berubah. Pengembang mengidentifikasi komponen UI referensi, tombol, modal, kartu harga. Dengan satu klik di peramban, DivMagic menangkap gaya *live* dan terkomputasinya. CSS yang murni dan terisolasi ini kemudian dapat disimpan langsung ke file komponen di proyek. Agen AI, yang beroperasi di dalam kerangka terminal, kemudian diinstruksikan: "Gunakan PricingCard.module.css yang baru disimpan untuk penataan gaya. Integrasikan dengan logika penagihan dinamis yang baru saja kita tulis." Agen menangani integrasi, status, dan logika aksesibilitas, tetapi DNA visual dirender dengan sempurna sejak awal.
Menggabungkan kerangka AI yang kuat seperti Claude Code dengan alat kloning UI presisi seperti DivMagic menciptakan efek produktivitas majemuk. Kerangka tidak lagi terbebani oleh tugas interpretasi visual, memungkinkannya menghabiskan jendela konteksnya pada masalah arsitektur dan logika yang kompleks.
Membangun Dasbor Berjalan Lama: Orkestrasi Praktis
Mari kita bahas contoh konkret. Misalkan Anda perlu membangun dasbor analitik berjalan lama untuk platform IoT. Dasbor membutuhkan *feed* data waktu nyata, visualisasi data yang kompleks, dan panel manajemen pengguna yang canggih. Ini adalah tugas multi-hari. Kerangka Anda adalah wadah Docker dengan Node.js, proyek Vite React, dan Claude Code. Alur kerja Anda adalah:

- Inisialisasi Kerangka: Siapkan repositori Git, instal dependensi, dan konfigurasikan *hook* pengujian dan *linting*. Buat
TODO.mdyang akan dikelola Claude Code secara otonom. - Bibit Identitas Visual: Alih-alih mendeskripsikan tampilan dasbor, Anda menggunakan DivMagic untuk menyalin serangkaian komponen yang dipoles dari beberapa dasbor SaaS kelas atas, bilah sisi, kartu statistik, tabel data, dan bilah filter. Anda menempelkannya ke dalam modul CSS individual di proyek Anda.
- Delegasikan Logika ke Agen: Instruksikan agen: "Saya telah menambahkan komponen bergaya. Terapkan *feed* data waktu nyata menggunakan WebSocket di
useWebSocket. Isi komponenStatCarddengan data langsung dari API tiruan kami. Pastikan navigasi bilah sisi memperbarui area konten utama." - Iterasi dan Amati: Agen menulis *hook*, terhubung ke aliran data, dan segera menjalankan server pengembangan. Ia menggunakan Playwright untuk mengambil tangkapan layar, mem-parsing konsol untuk kesalahan, dan memfaktorkan ulang kode penanganan datanya sendiri saat mendeteksi *closure* basi.
- Sentuhan Akhir: Dengan logika yang solid, Anda kembali ke UI. Minta agen untuk menambahkan *toggle* mode gelap yang memengaruhi semua komponen yang disalin dari DivMagic. Ia memodifikasi variabel CSS dan konteks status yang Anda tetapkan. Seluruh siklus, dari konsep hingga prototipe yang tampak produksi dan terhubung data, memakan waktu berjam-jam, bukan berhari-hari.
Merancang Kerangka untuk Ketahanan *Frontend*
Aplikasi berjalan lama, baik yang digerakkan oleh AI atau pengguna manusia, hanya akan setangguh penanganan kesalahannya. Anthropic membahas "masalah *reset*," di mana agen berjalan lama kehilangan konteksnya dan harus memulai dari awal. Dalam aplikasi *frontend*, ini analog dengan kesalahan JavaScript yang tidak tertangkap yang merusak bagian UI dan memaksa pengguna untuk memuat ulang halaman, kehilangan pekerjaan mereka yang belum disimpan. Filosofi desain kerangka menawarkan obat: batas kesalahan granular, pos pemeriksaan status, dan *loop* pemulihan penyembuhan mandiri.
Menerapkan kerangka pengembangan yang mencerminkan konsep-konsep ini berarti menulis kode yang dapat diprediksi saat terjadi kegagalan. Untuk pengembang React, membungkus setiap bagian fitur utama dalam dengan UI cadangan adalah pola kerangka. Mempertahankan sebagian status aplikasi kritis ke localStorage atau *service worker* adalah pola lainnya. Aplikasi dapat "memulai ulang" pohon komponen tanpa kehilangan data formulir atau konteks navigasi pengguna. Ini adalah prinsip yang sama yang memungkinkan agen AI melanjutkan sesi pengkodean setelah kesalahan jaringan: kerangka menyimpan status yang penting.
Menguji Kerangka Itu Sendiri
Tim Anthropic melakukan uji ketahanan pada *harness* agen mereka dengan mensimulasikan kegagalan jaringan, memulai ulang agen di tengah tugas, dan merusak file sementara. Pengembang *frontend* dapat menerapkan pola pikir yang sama pada proses QA mereka. Jangan hanya menguji apakah komponen merender dengan benar. Ujilah apakah komponen dapat pulih ketika sumber datanya gagal. Suntikkan pointer null ke dalam sebuah *prop*, simulasikan pemutusan koneksi WebSocket, dan pastikan bahwa "*harness*" (arsitektur manajemen status dan *error boundary* Anda) memandu UI kembali ke kondisi yang dapat digunakan tanpa perlu memuat ulang halaman sepenuhnya. Alat seperti DivMagic memastikan bahwa bahkan UI cadangan, mungkin sebuah kartu *error* yang dirancang dengan indah, tetap serapi bagian aplikasi lainnya, karena Anda dapat langsung menangkap dan mengadaptasi pola desain *graceful-failure* apa pun dari aplikasi produksi yang tangguh.
"Ketahanan agen AI tidak diukur dari seberapa sering ia berhasil, tetapi dari seberapa anggun ia pulih. Hal yang sama berlaku untuk kode frontend yang dihasilkannya."
Masa Depan *Harness* Frontend: Orkestrasi Multi-Agen
Penelitian Anthropic mengisyaratkan masa depan di mana beberapa agen khusus berkolaborasi dalam satu *harness* bersama. Satu agen mungkin menjadi ahli sistem desain CSS, yang lain menjadi master logika TypeScript, dan yang ketiga menjadi auditor pengujian dan aksesibilitas. Mereka semua akan berbagi repositori Git dan berkoordinasi melalui papan tugas bersama. Untuk proyek *frontend* jangka panjang, ini adalah titik akhir logis dari desain *harness*. Anda tidak akan memiliki satu jendela konteks yang kelebihan beban; Anda akan memiliki agen khusus dengan fokus sempit untuk setiap lapisan tumpukan.
Dalam pengaturan multi-agen seperti itu, alat seperti DivMagic menjadi "penyedia konteks visual" yang ditunjuk. Agen desain tidak menghasilkan CSS dari perintah teks; ia menerima klon langsung dan murni dari UI target. Tugasnya kemudian adalah menggeneralisasi klon tersebut secara cerdas menjadi sebuah sistem desain, mengekstrak token warna, membangun sistem varian, dan memastikan aksesibilitas. Ia mengomunikasikan pola-pola ini ke agen logika, yang mengikatnya ke data nyata. Jenis orkestrasi ini, yang dibangun di atas prinsip desain *harness*, akan mendefinisikan generasi berikutnya dari rekayasa *frontend* berbantuan AI.
Kesimpulan: Bangun *Harness*-nya, Lalu Bangun Aplikasinya
Pembahasan mendalam Anthropic tentang desain *harness* adalah bacaan wajib bagi setiap pengembang *frontend* yang serius memanfaatkan AI dalam pekerjaan sehari-hari. Pelajarannya jelas: berhentilah mencoba menemukan *prompt* serba-bisa yang sempurna. Mulailah membangun lingkungan yang sempurna. *Harness* terminal yang andal dengan perencanaan terstruktur, pemulihan *error*, dan panggilan alat yang deterministik akan melipatgandakan efektivitas model apa pun yang Anda tempatkan di dalamnya. Ketika Anda kemudian melengkapi *harness* tersebut dengan alat khusus dan presisi seperti DivMagic untuk memecahkan tantangan unik implementasi UI, Anda menciptakan jalur pengembangan yang lebih cepat, lebih tangguh, dan mampu menangani pembangunan aplikasi yang benar-benar panjang dan kompleks.
Masa depan pengembangan *frontend* bukanlah tentang menggantikan pengembang. Ini tentang merancang *harness* yang begitu efektif untuk alat AI kita sehingga keahlian rekayasa UI bergeser dari *pixel-pushing* ke orkestrasi tingkat tinggi, mendefinisikan perilaku, status, dan ketahanan. *Harness* adalah IDE yang baru.
