Tenet - harness coding AI jangka panjang yang mencakup interview, eksekusi DAG, 3 lapis critic, hingga pesan steer
(github.com/JeiKeiLim)Halo.
Saya sedang membuat Tenet, sebuah harness AI coding agent yang mampu berjalan secara otonom dalam jangka panjang, dan ingin membagikannya.
Saat menggunakan AI coding agent, pekerjaan singkat biasanya berjalan cukup baik, tetapi ketika beralih ke implementasi yang memakan waktu berjam-jam atau lebih, sering kali cepat terasa tidak pasti.
Spesifikasi mulai kabur, test memang berjalan tetapi tidak yakin apakah sudah cukup, mengubah arah di tengah jalan juga terasa canggung, dan jika sesi terputus maka konteks ikut hilang.
Tenet adalah harness yang dibuat untuk mengurangi masalah tersebut.
Alih-alih sekadar “agent yang berjalan lama”, ini lebih dekat ke struktur yang menjaga arah dan kualitas meski dijalankan dalam waktu panjang.
Kurang lebih alurnya bekerja seperti ini.
-
Interview
- Pertama, kebutuhan diperjelas melalui interview.
- Jika perlu, riset teknis juga dilakukan bersama.
-
Visuals / Architecture
- Membuat diagram arsitektur atau UI mockup.
- Untuk pekerjaan UI, beberapa variation dibuat agar arah yang akan diambil bisa dipilih terlebih dahulu.
-
Spec / Harness / Scenarios
- Spec implementasi, harness untuk test/verifikasi, dan scenario didokumentasikan.
- Bukan hanya “apa yang akan dibuat”, tetapi juga “dengan apa dianggap lolos” ditetapkan bersama.
-
DAG decomposition
- Pekerjaan dipecah menjadi dependency graph.
- Job yang independen dapat dijalankan secara paralel.
-
Autonomous execution loop
- Menjalankan tiap job, lalu menambahkan evaluasi setelah selesai.
- Loop ini dirancang agar bisa berjalan lama.
Metode evaluasi
Setiap job tidak langsung lanjut ke tahap berikutnya setelah dianggap selesai, tetapi harus lolos dari 3 critic.
- code critic: apakah implementasi sesuai dengan maksud spec
- test critic: apakah test yang ada sekarang benar-benar cukup untuk memverifikasi job ini
- Playwright e2e eval: apakah benar-benar berfungsi dari sudut pandang pengguna nyata
Hal yang saya anggap penting adalah critic ini sebisa mungkin menilai dalam fresh context yang terpisah dari konteks penulis.
Saya ingin mengurangi situasi ketika agent yang menulis kode terlalu mudah meloloskan hasilnya sendiri.
Seperti juga saya tulis di README, khususnya pada sisi test, saya menganggap yang lebih penting bukan sekadar “apakah ada test”, melainkan apakah test itu benar-benar memverifikasi dengan tepat.
Steer di tengah jalan
Saat dijalankan lama, ada kalanya manusia ingin sedikit mengubah arah di tengah proses.
Di Tenet, pada saat itu alih-alih menjelaskan ulang eksekusi dari awal,
cukup kirim steer message, lalu pesan itu disimpan dan diterapkan pada job terkait di tahap berikutnya.
Artinya,
- loop tidak harus langsung diputus seluruhnya
- dan proses akan pickup lagi pada tahap yang relevan
Saya menganggap penting sisi dokumentasi dan jejak kerja
Saat membuat ini, yang sangat saya anggap penting adalah
bukan hanya meninggalkan hasil akhir, tetapi juga meninggalkan keputusan dan jejak pekerjaan bersama-sama.
Di bawah .tenet/, hal-hal berikut akan tersimpan.
- interview
- spec
- harness
- visuals
- knowledge
- journal
- steer
- status
- SQLite state
Jadi, alih-alih sekadar agent berbasis sesi yang sekali dijalankan lalu selesai,
struktur yang dituju adalah terus menumpuk catatan pengembangan yang bisa dirujuk kembali pada pekerjaan berikutnya.
Secara feel, ini lebih dekat ke upaya untuk membawa
“struktur dokumentasi/verifikasi/handoff yang dibutuhkan saat menyerahkan pekerjaan ke freelancer atau vendor”
ke sisi AI agent.
Status saat ini
Masih pada tahap awal.
Namun alur dasarnya sudah diimplementasikan, dan saat ini sudah mencakup hal-hal berikut.
- adapter Claude Code / OpenCode / Codex
- server MCP + CLI
- orchestrasi job berbasis DAG
- persistent state berbasis SQLite + WAL
- orphan job recovery
- pipeline evaluasi 3-critic
- pemrosesan steer message
- struktur dokumen
.tenet/
Saya sendiri sudah menjalankannya cukup lama dalam penggunaan nyata,
dan *telah memastikan bahwa setelah berjalan lebih dari 6 jam tanpa intervensi manusia, hasil yang langsung bisa digunakan dapat keluar.
Salah satu implementasi yang saya pakai setiap hari saat ini juga merupakan hasil yang dibuat menggunakan tenet.
Karena ini proyek tahap awal, masih banyak bagian yang kasar.
Saya akan sangat berterima kasih atas masukan apa pun yang ingin diberikan dengan santai.
Belum ada komentar.