Beberapa bulan yang lalu saya menulis tentang [tumpukan agen saya](/posts/what-my-agentic-stack-actually-does): sebuah monorepo pribadi tempat agen AI menangani email, pembayaran, dan penerapan saya, dengan [Neotoma](https://neotoma.io) sebagai memori terstruktur di bawahnya. Postingan itu berakhir dengan sebuah janji. Saya katakan bahwa saya adalah lapisan strategi, dan arsitekturnya dirancang untuk membuat peran tersebut dapat digantikan oleh perangkat lunak. Ini adalah postingan tentang melakukannya.

[Ateles](https://github.com/markmhendrickson/ateles) adalah produk kedua saya, setelah Neotoma, dan dibuat langsung di atasnya. Ini adalah segerombolan agen pribadi. Jika tumpukan lama adalah satu agen per sesi dengan saya dalam loop untuk setiap tugas, Ateles adalah armada agen tetap yang ditentukan berdasarkan peran, dikoordinasikan melalui Neotoma, berjalan setiap hari di bawah peluncuran. Inilah perbedaan antara saya yang mengarahkan setiap agen dan saya yang mengarahkan tim yang sudah mengetahui tugasnya.

Posting ini menjelaskan mengapa saya membangunnya, cara kerjanya, dan ke mana tujuannya.

## Mengapa tumpukan berhenti melakukan penskalaan

Pemicunya adalah volume. Setelah [rilis pengembang](/posts/neotoma-developer-release) Neotoma pada akhir Februari, perhatian saya terbagi menjadi tiga mode yang tidak banyak berbagi: membangun produk, memasarkannya, dan mengelola hubungan dengan pengguna awal. Saya juga memberi Neotoma lebih banyak konteks tentang kehidupan saya, secara profesional dan pribadi, dan semakin baik ingatan tersebut, semakin banyak agen yang dapat melakukan hal tersebut. Hal ini tidak menghilangkan kendala, namun justru memindahkannya. Batasannya tidak lagi diketahui oleh para agen. Itu adalah saya, satu-satunya orang yang mengubah apa yang mereka ketahui menjadi tindakan, satu sesi pada satu waktu.

Pendekatan lama adalah seperangkat aturan dan keterampilan khusus repo. Mereka membiarkan saya menghindari pengulangan prosedur. Keterampilan menentukan langkah-langkah untuk triase email atau penerapan situs web, dan sesi apa pun dapat menjalankannya berdasarkan konteks yang sudah ada di Neotoma. Itu berhasil sampai sesi menjadi sibuk.

Kegagalannya bersifat spesifik. Ketika satu agen generik menjalankan setiap aturan dan peran sekaligus, agen tersebut tidak dapat memegang semuanya secara merata. Pada kesempatan tertentu, ia bersandar pada satu jenis pekerjaan dan membiarkan sisanya berlalu. Itu menyusun email dengan baik dan melupakan aturan yang berlaku tentang bagaimana saya keluar. Ini memperbaiki bug dan melewati uji regresi. Juga tidak ada pemeriksaan permusuhan. Salah satu agen merencanakan, melaksanakan, dan meninjau pekerjaannya sendiri, tanpa mengetahui apa pun jika pekerjaannya jelas-jelas salah.

Dua hal lagi mendorong ke arah yang sama. Saya memindahkan operasi produk saya ke GitHub secara default, menggunakan masalah dan menarik permintaan alih-alih melakukan langsung ke main. Hal ini sebagian disebabkan oleh [jalur masalah yang saya buat](/posts/agent-to-agent-issue-resolution-with-humans-at-the-edges), yang mulai merutekan laporan nyata dari pengguna dan agen mereka ke Neotoma dan keluar ke GitHub. Dan saya ingin proses pengembangan saya dapat dibaca oleh publik, sehingga orang yang menggunakan Neotoma dapat melihat secara pasti pekerjaan apa yang sedang dilakukan. Keduanya menginginkan serangkaian agen khusus di bidang desain, manajemen produk, QA, dan rilis. Satu agen yang melakukan semua itu tidak menyelesaikan masalah.

Jadi Ateles adalah keputusan untuk membentuk armada, dan mendefinisikan armada itu di Neotoma sendiri.

## Neotoma sebagai bahannya, bukan sekedar memorinya

Jurus yang membuat Ateles berbeda adalah Neotoma memegang dua benda sekaligus. Ini berisi konteks operasional yang dibutuhkan gerombolan, fakta yang sama yang dibaca dan ditulis oleh tumpukan lama saya. Dan ia menahan gerombolan itu sendiri.

Agen adalah entitas Neotoma. Masing-masing merupakan `agent_definition` dengan perintah, daftar alat yang diizinkan, dan serangkaian pemberian kemampuan. Memperbarui perilaku agen adalah panggilan `benar()` terhadap entitas tersebut, dengan riwayat versi lengkap dan atribusi penulis. Tanpa komitmen, tanpa penerapan ulang. File SKILL.md pada disk adalah cerminan yang dihasilkan dari entitas tersebut, bukan sumbernya.

Hubungan mereka juga merupakan entitas Neotoma. Kawanan memiliki hierarki, dinyatakan sebagai pohon, sehingga koordinator mengetahui agen mana yang dikirim dan tugas mengetahui agen mana yang memilikinya. Dan pekerjaan itu sendiri adalah entitas Neotoma: tugas, rencana, definisi alur kerja, catatan partisipasi. Seorang agen mengambil tugas, mengerjakannya, dan menulis kembali hasilnya sebagai observasi yang dikaitkan dengan identitasnya.

Hasilnya adalah satu grafik dunia untuk semuanya. Fakta-fakta yang ditindaklanjuti oleh gerombolan, definisi dari gerombolan yang bertindak terhadap mereka, dan catatan tentang apa yang dilakukannya, semuanya ada di penyimpanan khusus lampiran yang sama. Itu memberikan tiga properti yang saya pedulikan. Ini transparan, karena setiap tindakan merupakan pengamatan yang dapat Anda baca kembali. Ini dapat diaudit, karena Anda dapat memutar ulang tindakan agen mana pun di jendela mana pun. Dan ini bisa dibalik, karena tidak ada yang bisa menggantikan kebenaran. Jika agen melakukan panggilan buruk, saya dapat melacak peristiwa yang menyebabkannya, mengembalikan status, dan memperbaiki aturan yang menyebabkan hal tersebut, satu kali.

Identitas adalah bagian yang membuat atribusi menjadi nyata, bukan aspirasional. Setiap agen memiliki pasangan kunci [AAuth](/posts/know-which-of-your-agents-wrote-what) dan menandatangani setiap panggilan alat. Harness memverifikasi tanda tangan sebelum bertindak dan mencatat siapa yang mengaku bertindak bersama siapa yang sebenarnya bertindak di GitHub. Agen penulis kode tidak lagi hanya bertindak sebagai saya. Ia bertindak sebagai dirinya sendiri, dan log mengatakan demikian.

## Para agen, berdasarkan peran

Kawanan ini disusun dalam tingkatan. T1 adalah tuan rumah: proses yang memiliki saluran dan memunculkan agen, saat ini OpenClaw untuk yang saya ajak bicara dan meluncurkan untuk yang di latar belakang. Ini adalah infrastruktur, bukan agen yang berperan. Agen-agen itu sendiri berjalan dalam tiga tingkatan di atasnya. Agen T2 selalu aktif dan memiliki kepribadian: Ateles sendirilah yang saya ajak bicara, dan satu-satunya agen yang menghubungi saya. Daemon T3 adalah proses latar belakang berbasis peristiwa tanpa persona, masing-masing berlangganan peristiwa Neotoma atau webhook eksternal. Agen T4 tidak memiliki kewarganegaraan, dihasilkan per tugas, dengan identitas dan memori stabil yang mereka peroleh dengan menanyakan Neotoma.

Beberapa peran yang dijalankan saat ini:

**Produk.** Daemon koordinator membaca definisi alur kerja dari Neotoma dan mengirimkan gerbang secara berurutan: desain, manajemen produk, QA, rilis. Pekerjaan kode ditujukan ke pekerja masalah yang membuka permintaan penarikan di seluruh repo. Setiap permintaan penarikan mendapat tinjauan dasar dari agen peninjau terpisah, dengan pakar domain mengikuti jalur yang mereka miliki. Tujuan dari pemisahan ini adalah adanya cek permusuhan yang tidak pernah dimiliki oleh agen tunggal. Bukan orang yang menulis kode itu yang membersihkannya.

**Keuangan.** Daemon pembayaran berulang menjalankan transfer Wise dan Bitcoin yang dipicu oleh acara kalender dan tanggal jatuh tempo tugas, dengan setiap penerima dan jumlah diambil dari entitas profil pembayaran, bukan kode. Menambahkan pembayaran berulang baru adalah entitas baru, bukan komitmen. Peran penasihat keuangan dan peran perpajakan dan pengarsipan ditentukan untuk penganggaran dan rekonsiliasi.

**Hukum dan kepatuhan.** Peran hukum mencakup penilaian risiko dan peninjauan persyaratan. Peran kepatuhan mencakup privasi dan tata kelola data. Hal ini menjadi lebih penting ketika segerombolan orang dapat mengambil tindakan berdasarkan data orang, dan hal ini juga dilakukan oleh data saya.

**Strategi.** Ini adalah peran yang saya gambarkan sebagai milik saya di postingan terakhir, dan inilah peran yang paling sengaja saya serahkan. Penyerahan tersebut adalah versi konkrit dari argumen yang saya buat di [The Human Inversion](/posts/series/the-human-inversion): ketika agen menyerap bagian tengah eksekusi, pengaruh manusia bergerak ke ujung, standar yang lebih tajam masuk dan penilaian yang lebih padat keluar. Otonomi dikalibrasi per rencana, bukan secara global. Entitas kebijakan eksekusi menyatakan, untuk rencana tertentu, apa yang boleh dilakukan sendiri oleh agen, batasan kualitas apa yang harus diselesaikan, dan di mana agen harus berhenti dan menanyakan kepada saya sebelum melanjutkan. Rantai eskalasi dimulai dari penjabat agen, pakar domain, hingga penjaga konstitusi, dan setiap resolusi ditulis kembali sebagai satu kesatuan sehingga keputusan berikutnya akan diwariskan.

Di belakangnya terdapat daemon penyerapan dan dukungan yang menjaga agar grafik tetap terisi: triase email, impor audio, persiapan kalender, kesehatan dan kebugaran, triase masalah. Masing-masing adalah proses kecil yang mengubah sinyal masuk menjadi entitas Neotoma yang dapat ditindaklanjuti oleh kawanan lainnya.

## Tugas tulang belakang

Yang menyatukan armada adalah manajemen tugas, dan ini sengaja membosankan. Tugas adalah suatu entitas. Ia memiliki pemilik, negara bagian, prioritas, dan catatan untuk siapa ia dieksekusi. Merencanakan tugas kelompok dan melaksanakan keputusan mereka sendiri serta langkah selanjutnya. Definisi alur kerja mendeklarasikan fase dan gerbang yang dilalui suatu pekerjaan.

Karena semua ini berada di penyimpanan yang sama dengan yang lainnya, gerombolan tersebut berkoordinasi tanpa database orkestrasi terpisah. Daemon berlangganan peristiwa tugas melalui aliran peristiwa Neotoma. Saat sebuah tugas muncul, tugas tersebut dirutekan ke agen yang tepat berdasarkan domain, di balik gerbang yang mempertimbangkan kepercayaan agen terhadap seberapa besar kerusakan yang dapat ditimbulkan oleh tindakan yang salah. Radius ledakan rendah dan kepercayaan diri tinggi berjalan dengan sendirinya. Radius ledakan tinggi menungguku.

Ini adalah tulang punggung saya membangun sisa pengalaman.

## Ke mana arahnya

Antarmuka yang saya inginkan sederhana untuk dinyatakan. Saya memberikan masukan kepada gerombolan itu, melalui transportasi apa pun yang terdekat, dan gerombolan itu menyerapnya dan bertindak. Sebuah prompt di terminal. Sebuah email. Pesan Telegram. Sebuah memo audio yang direkam saat berjalan-jalan, yang merupakan awal mula catatan postingan ini. Semuanya harus mendarat di grafik yang sama, dan gerombolan harus proaktif mengenai pekerjaan yang disiratkannya, tanpa saya harus membantu agen mana pun untuk melewatinya.

Ada dua properti yang memungkinkan hal itu. Kawanan itu harus berevolusi dengan sendirinya. Seiring dengan konteks baru dan jenis pekerjaan baru, organisasi ini harus menyediakan kemampuan dan mengembangkan keterampilan yang dibutuhkan, beradaptasi dengan koreksi saya daripada menunggu saya mengkonfigurasi ulang secara manual. Dan masukan saya, yang masih diperlukan pada saat-saat yang benar-benar membutuhkan penilaian, tidak boleh diberikan dua kali. Saya mengoreksi cara melakukan sesuatu satu kali, itu menjadi suatu entitas, dan koreksi tersebut berlaku.

Peta jalan yang lebih dekat adalah tentang jangkauan. Ateles dibuat untuk saya gunakan sendiri, jadi sebagian besar masih menggunakan satu operator, saya. Saya [mendorongnya agar dapat diinstal dan multi-operator](https://github.com/markmhendrickson/ateles/blob/main/docs/multi_tenant.md): segerombolan orang lain dapat melakukan fork, menunjuk ke Neotoma mereka sendiri, menyediakan entitas konteks mereka sendiri, dan menjalankannya. Karena agen bersifat agnostik terhadap operator berdasarkan kebijakan dan tidak ada operator khusus yang dimasukkan ke dalam kode, kasus fork sebagian besar merupakan masalah konteks, bukan penulisan ulang. Pekerjaan yang benar-benar baru ini mendukung lebih dari satu manusia di dalam satu penyewa, itulah sebabnya batas penyewa dirancang sekarang daripada dipasang nanti.

Neotoma menciptakan agen yang dapat mengingat, dan Ateles adalah apa yang dimungkinkan oleh ingatan itu: segerombolan orang yang dapat bertindak tanpa saya di tengah-tengah setiap langkahnya. Keduanya bangkit bersama. Memori yang lebih baik bukanlah masalah yang sudah selesai saya lewati. Ini adalah substrat tempat seluruh kawanan berdiri, dan setiap keuntungan yang dapat dipegang dan diselesaikan oleh Neotoma adalah keuntungan dari apa yang dapat dilakukan oleh kawanan tersebut. Ingatannya terus meningkat, dan kawanannya terus meningkat.