Apa yang sebenarnya dilakukan tumpukan agen saya
Saya membuat tumpukan agen untuk dogfood Neotoma dan mempercepat pekerjaan saya. Monorepo pribadi dengan 12+ server MCP tempat saya bekerja sama dengan agen AI setiap hari. Neotoma menyediakan memori terstruktur di bawahnya, memungkinkan agen membangun pekerjaan sebelumnya di setiap sesi.
Poin-poin penting
- Tumpukan agen saya adalah monorepo pribadi dengan 12+ server MCP, aturan tetap, dan keterampilan yang dapat digunakan kembali. Saya bekerja sama dengan agen AI di Cursor sepanjang hari, membuka sesi untuk tugas mulai dari triase email, pembayaran Bitcoin, hingga penerapan situs web.
- Neotoma menyediakan lapisan memori terstruktur di bawahnya: 1.000+ kontak, 600 tugas, 170 tipe entitas. Agen menyimpan entitas dan hubungan di setiap kesempatan dan mengambil konteks sebelumnya sebelum merespons.
- Panggilan MCP nyata menunjukkan polanya: satu panggilan
tokomempertahankan percakapan, mengekstrak kontak, tugas, dan hubungan yang diketik dalam satu payload. Panggilan pengambilan memberikan konteks kepada agen sebelum mereka bertindak. - Arsitektur berlapis Neotoma memisahkan kebenaran (keadaan bersumber peristiwa), strategi (kognisi murni, keputusan keluar), dan eksekusi (efek samping, peristiwa kembali). Hari ini saya adalah lapisan strategi. Arsitekturnya membuat peran tersebut dapat digantikan oleh perangkat lunak.
- Sasarannya adalah beralih dari eksekusi langsung ke peninjauan dan persetujuan, dengan agen yang menangani alur kerja berulang secara mandiri. Tumpukan akan menjadi sumber terbuka setelah data pribadi dimigrasikan ke Neotoma dan skrip difaktorkan ulang menjadi generik.

Tumpukan agen saya adalah cara saya melakukan dogfood Neotoma. Ini juga merupakan sistem operasi pribadi saya. Monorepo pribadi tempat agen AI menangani segalanya mulai dari triase email, pembayaran Bitcoin, hingga penerapan situs web, dengan Neotoma sebagai memori terstruktur di bawahnya.
Setiap fitur yang saya kirimkan di Neotoma akan divalidasi terlebih dahulu di sini, terutama di Cursor dan kedua melalui agen terminal seperti Claude Code, Codex, dan Cursor CLI. Setiap celah yang saya temukan dalam memori agen muncul di sini terlebih dahulu. Tumpukannya adalah cara saya menjalankan kehidupan dan pekerjaan sehari-hari. Permasalahan yang saya temui, selain masukan dari pengguna, adalah hal yang mendorong peta jalan Neotoma.
Saya bermaksud untuk membuat tumpukan menjadi sumber terbuka. Namun repo tersebut telah mengumpulkan data pribadi selama berbulan-bulan, skrip yang di-hardcode ke akun saya, dan konfigurasi yang terkait dengan pengaturan saya. Sebelum dapat dipublikasikan, saya perlu memasukkan data tersebut sepenuhnya ke Neotoma dan memfaktorkan ulang alat tersebut menjadi generik. Pekerjaan itu sedang berlangsung.
Posting ini menjelaskan apa itu tumpukan, bagaimana saya menggunakannya, dan apa yang diungkapkannya tentang apa yang perlu dilakukan oleh memori agen terstruktur.
Apa tumpukannya
Tumpukannya adalah monorepo dengan lebih dari selusin server dan CLI MCP, masing-masing menghubungkan agen AI ke layanan berbeda: Gmail, Google Kalender, WhatsApp, a Dompet Bitcoin, Instagram, Asana, HomeKit, DNSimple, Google Search Console, 1Password, web scraper, dan banyak lagi. Beberapa di antaranya adalah server MCP yang disebut agen sebagai alat. Lainnya adalah CLI yang dipanggil agen dari terminal. Keduanya memberikan hal yang sama kepada agen: menjangkau layanan eksternal.
Di atas server MCP terdapat aturan dan keterampilan. Aturan adalah instruksi perilaku persisten yang ada di repo, bukan di Neotoma: selalu simpan kontak di Neotoma sebelum merespons, jangan pernah melakukan rahasia, gunakan kapitalisasi kalimat dalam judul, jalankan pengujian setelah perubahan kode, pilih CLI daripada dasbor untuk log dan konfigurasi, tautkan penyebutan pertama nama produk. Keterampilan adalah alur kerja multi-langkah: melakukan triase pada kotak masuk saya, membuat draf postingan blog, menerapkan situs web, memproses umpan balik produk, mengekstrak pesanan Amazon dari email, membayar kontraktor dalam Bitcoin.
Dan di bawah semuanya terdapat Neotoma sebagai lapisan memori terstruktur. Setiap agen membacanya dan menulis padanya. Itulah yang membuat tumpukan bertambah seiring waktu alih-alih mengatur ulang pada setiap sesi.
Bagaimana saya mengerjakannya
Saya tinggal di Kursor. Hari saya adalah rangkaian sesi agen. Saya membuka agen baru, menjelaskan apa yang ingin saya lakukan, dan agen tersebut mengeksekusi menggunakan server MCP, aturan, dan keterampilan di ruang kerja. Beberapa sesi berlangsung cepat: "balas email ini". Ada yang panjang: "periksa kotak masuk saya, proses masukan penguji terbaru, lalu buat draf postingan perbandingan tentang agen memori Google."
Ini adalah kerja sama dengan agen. Saya duduk di meja saya dan bekerja bersama mereka sepanjang hari. Tugas pribadi: menjadwalkan perbaikan, membayar kontraktor, mengelola acara kalender. Yang profesional: menulis postingan, memproses umpan balik, menerapkan situs web, mengelola domain. Agen menangani eksekusi. Saya memberikan arahan, meninjau keluaran, dan menyetujui tindakan yang memerlukan keterlibatan manusia.
Setiap sesi agen memiliki konteks ruang kerja penuh: setiap server MCP, setiap aturan, setiap keterampilan. Agen dapat membaca Gmail saya, memeriksa kalender saya, menanyakan Neotoma untuk konteks sebelumnya, menyimpan data baru, membuat gambar, memasukkan kode, dan memverifikasi penerapan. Peran saya semakin menjelaskan maksud dan meninjau hasil.
Bagaimana Neotoma cocok
Tanpa memori terstruktur, setiap sesi agen dimulai dari nol. Agen tidak mengetahui siapa kontak Anda, tugas apa yang Anda buka, apa yang Anda diskusikan kemarin, atau berapa yang sudah Anda bayarkan kepada seseorang. Anda dapat menempelkan konteks ke setiap perintah, tetapi itu tidak akan melampaui beberapa sesi. Memori platform menyimpan getaran Anda, bukan karya Anda. RAG membantu dalam hal kode, namun tidak dengan fakta terstruktur yang mendorong alur kerja: kepada siapa Anda berutang, masukan apa yang Anda terima minggu lalu, tugas mana yang masih terbuka.
Instans Neotoma saya menyimpan lebih dari 1.000 kontak, 600 tugas, 140 percakapan, 120 postingan blog, dan 170 tipe entitas yang dibuat agen saat mereka menemukan jenis informasi baru: transaksi, aturan tetap, catatan umpan balik, acara kalender, perselisihan, faktur, keterampilan, hasil penerapan. Saat agen memulai sesi baru, agen mengambil apa yang dibutuhkannya. Ketika selesai, ia menyimpan apa yang dipelajarinya.
Berikut adalah 20 tipe entitas teratas dalam instance Neotoma saya hari ini, dengan masing-masing contohnya:
Tak satu pun dari skema ini dirancang terlebih dahulu. Agen membuat dan memperluas skema sesuai kebutuhan saat mereka menemukan jenis informasi baru. Sistem ini sekarang memiliki total 170 tipe entitas, sebagian besar hanya memiliki sedikit catatan. Ekor panjang adalah hal yang menarik bagi ingatan agen: satu entitas sengketa dengan riwayat negosiasi lengkap, satu komitmen untuk menindaklanjuti seseorang jika strategi berubah, satu preferensi tentang cara menangani pembayaran tertentu.
Perbedaan praktisnya adalah agen membangun pekerjaan sebelumnya. Ketika saya meminta agen untuk mengirim email kepada seseorang, ia mencari kontak Neotoma terlebih dahulu. Ketika saya memintanya untuk memproses umpan balik, ia mengambil entitas umpan balik yang ada dan menghubungkan yang baru. Ketika saya memintanya untuk membayar kontraktor dalam Bitcoin, ia mengetahui aturan tetapnya (selalu membayar orang ini dalam BTC) dan menyertakan tautan transaksi dalam konfirmasi karena aturan tetap lainnya mengharuskannya.
Penyimpanan dan pengambilan dari dekat
Neotoma MCP memaparkan alat yang dihubungi agen secara langsung. Inilah tampilan penyimpanan dan pengambilan sebenarnya dalam praktiknya.
Saat agen perlu melanjutkan percakapan dengan entitas yang diekstraksi, agen akan memanggil penyimpanan dengan satu payload:
toko({
"entitas": [
{
"entity_type": "percakapan",
"title": "Triase email 9 Maret"
},
{
"entity_type": "agent_message",
"peran": "pengguna",
"konten": "periksa kotak masuk saya",
"turn_key": "konv-42:1"
},
{
"entity_type": "kontak",
"nama_lengkap": "Alex Chen",
"email": "alex@example.com",
"sumber": "panggilan umpan balik penguji"
},
{
"entity_type": "tugas",
"title": "Tindak lanjuti masukan Alex",
"status": "menunggu keputusan",
"prioritas": "sedang"
}
],
"hubungan": [
{
"relationship_type": "PART_OF",
"indeks_sumber": 1,
"indeks_target": 0
},
{
"relationship_type": "REFERS_TO",
"indeks_sumber": 1,
"indeks_target": 2
},
{
"relationship_type": "REFERS_TO",
"indeks_sumber": 1,
"indeks_target": 3
}
],
"idempotency_key": "konv-42-turn-1-triage"
})
Satu panggilan menyimpan percakapan, pesan, kontak baru, dan tugas, semuanya dihubungkan oleh hubungan yang diketik. Agen tidak memerlukan definisi skema untuk kontak atau tugas sebelumnya. Neotoma menerima bidang arbitrer dan menyimpulkan struktur.
Ketika agen memerlukan konteks sebelum merespons, agen akan menanyakan berdasarkan pengidentifikasi:
ambil_entitas_oleh_identifier({
"pengidentifikasi": "Alex Chen"
})
Ini mengembalikan catatan kontak dengan email, percakapan sebelumnya, dan asal setiap bidang. Jika agen memerlukan konteks yang lebih luas, agen akan melakukan kueri berdasarkan jenis:
ambil_entitas({
"entity_type": "catatan_umpan balik",
"pencarian": "rilis pengembang",
"batas": 10
})
Ini mengembalikan sepuluh catatan umpan balik paling relevan tentang rilis pengembang, masing-masing dengan cuplikan lengkap dan riwayat pengamatannya.
Untuk aturan tetap, agen mengambilnya satu kali pada awal alur kerja:
ambil_entitas({
"entity_type": "aturan_berdiri"
})
Contoh saya mengembalikan aturan seperti "selalu bayar Carlos dalam Bitcoin" dan "berikan pesan yang dirancang dalam blok penurunan harga". Agen menerapkan ini secara otomatis untuk sisa sesi.
Saat alur kerja menyentuh file (tanda terima, tangkapan layar, dokumen), agen menyimpannya bersama entitas dalam panggilan yang sama menggunakan file_path:
toko({
"entitas": [
{
"entity_type": "transaksi",
"penjual": "Amazon",
"jumlah": 47,99,
"mata uang": "EUR"
}
],
"file_path": "/path/ke/receipt.pdf",
"idempotency_key": "amazon-order-maret-9"
})
jalur penyimpanan tidak terstruktur Neotoma menangani file dari sana. Byte mentah diberi alamat konten (SHA-256) sehingga file yang sama tidak pernah disimpan dua kali. Agen meneruskan file apa adanya melalui file_path (lingkungan lokal seperti Cursor) atau file_content (base64, untuk lingkungan berbasis web); itu tidak menafsirkan atau mengekstrak data sebelum disimpan. Secara default, Neotoma menjalankan interpretasi AI pada file yang disimpan secara otomatis, mengekstraksi entitas terstruktur dan menghubungkannya kembali ke sumbernya dengan hubungan EMBEDS. Menyimpan ulang file yang sama dengan interpret: true akan memicu penafsiran ulang tanpa membuat duplikat. Tanda terima menjadi data terstruktur yang dapat dikueri dengan PDF asli yang disimpan untuk asal usulnya. Interpretasi juga dapat ditunda (interpret: false) untuk pemrosesan batch atau manajemen kuota, kemudian dijalankan nanti dengan konfigurasi berbeda.
Alur kerja dalam praktik
Beberapa alur kerja menunjukkan polanya.
Triase email. Agen membaca email yang belum dibaca melalui Gmail MCP, memeriksa Neotoma untuk catatan kontak yang ada dan konteks sebelumnya dengan setiap pengirim, menyusun balasan menggunakan aturan gaya komunikasi saya, menyimpan kontak dan tugas baru, dan mengarsipkan pesan yang diproses. Satu proses triase mungkin menyimpan lima kontak baru, tiga tugas, dan selusin putaran percakapan.
Penulisan postingan blog. Keterampilan itu sendiri ada di Neotoma sebagai entitas terstruktur. Agen mengambilnya dengan retrieve_entity_snapshot. Kemudian menanyakan postingan yang ada untuk kalibrasi gaya, menulis draf, menyimpan entitas postingan dengan semua metadata, menghasilkan gambar pahlawan, membuat salinan berbagi untuk Twitter dan LinkedIn, membuat ulang cache situs web dari ekspor Neotoma, dan menyebarkan. Posting ini ditulis seperti itu.
Pembayaran Bitcoin. Saya membayar kontraktor dalam Bitcoin menggunakan server MCP dompet BTC. Neotoma menyimpan aturan tetap, catatan kontak, dan riwayat transaksi. Agen mengambil ketiganya, melakukan pembayaran, menyimpan transaksi baru dengan tautan on-chain, dan mengonfirmasi.
Pemrosesan masukan. Saat penguji memberikan masukan pada rilis pengembang Neotoma, agen mengekstrak entitas masukan terstruktur, menautkannya ke catatan kontak penguji, mengklasifikasikan masukan berdasarkan bucket, dan menilainya berdasarkan batasan tahap rilis. Masukan sebelumnya dapat diambil berdasarkan penguji, berdasarkan keranjang, atau berdasarkan tanggal.
Penerapan situs web. Keterampilan penerapan menyinkronkan pengeditan penurunan harga lokal ke Neotoma, mengekspor kumpulan data situs web lengkap, membuat ulang cache, mengirim repo situs web, dan memantau Tindakan GitHub hingga pembangunan berhasil. Jika pembangunan gagal, agen membaca log, memperbaiki masalah, dan menjalankannya kembali.
Menuju agen yang berjalan tanpa saya
Setiap alur kerja dimulai dengan saya membuka agen Kursor dan mengetik instruksi. Saya selalu memantau setiap tugas. Itu bagus untuk tahap saat ini, tapi ini bukan keadaan akhir.
Saya menyiapkan proses otomatis sehingga agen dapat menangani alur kerja tanpa keterlibatan langsung saya. Bagian-bagiannya sudah ada: keterampilan menentukan langkah-langkah alur kerja penuh, Neotoma menyimpan konteks dan aturan, server MCP menyediakan jangkauan. Yang hilang adalah orkestrasi yang memicu alur kerja sesuai jadwal atau sebagai respons terhadap peristiwa, dan antarmuka persetujuan yang ringan sehingga saya dapat meninjau dan mengotorisasi tindakan tanpa perlu duduk di depan laptop.
[Arsitektur berlapis] Neotoma (https://github.com/markmhendrickson/neotoma/blob/dev/docs/foundation/layered_architecture.md) dirancang untuk hal ini. Ini memisahkan tiga kekhawatiran:
- Lapisan kebenaran (Neotoma). Bersumber dari peristiwa, digerakkan oleh peredam, deterministik. Semua agen membacanya. Pembaruan status hanya mengalir melalui peristiwa domain yang diproses oleh reduksi. Tidak ada agen yang mengubah kebenaran secara langsung.
- Lapisan strategi. Membaca keadaan dunia saat ini dari Neotoma. Mengevaluasi prioritas, kendala, risiko, komitmen, dan waktu. Menghasilkan keputusan dan perintah. Kognisi murni: nyatakan, keputusan keluar. Tidak ada efek samping.
- Lapisan eksekusi. Mengambil perintah dari lapisan strategi. Melakukan efek samping melalui adaptor eksternal (API email, layanan pembayaran, kalender, perpesanan). Memancarkan peristiwa domain yang menjelaskan apa yang terjadi. Peristiwa tersebut mengalir kembali melalui reduksi untuk memperbarui status. Efek murni: perintah masuk, acara keluar.
Lingkaran ditutup:
Sinyal masuk (email, WhatsApp, kalender, data keuangan)
-> Normalisasi -> Status Neotoma (log peristiwa + reduksi)
-> Centang strategi (evaluasi prioritas, keputusan keluaran)
-> Agen eksekusi (melakukan efek samping, memancarkan peristiwa)
-> Pengurang -> Status yang diperbarui
-> Centang berikutnya
Hari ini, saya adalah lapisan strategi. Saya melihat keadaan, memutuskan apa yang harus dilakukan, dan meminta agen untuk mengeksekusi. Arsitekturnya membuat peran tersebut dapat digantikan oleh perangkat lunak. Mesin strategi membaca Neotoma, mengevaluasi apa yang perlu diperhatikan berdasarkan aturan dan prioritas yang berlaku, dan mengeluarkan perintah kepada agen pelaksana. Agen tersebut memanggil server MCP, menyimpan hasilnya, dan siklus berulang.
Invarian kritisnya adalah tidak ada lapisan yang menulis ke penyimpanan data dasar Neotoma secara langsung. Pembaruan hanya mengalir melalui peristiwa dan reduksi domain. Hal ini membuat sistem dapat diaudit dan dibalik. Jika agen otonom membuat keputusan yang buruk, saya dapat melacak peristiwa yang menyebabkannya, mengembalikan pembaruan status, dan memperbaiki aturan yang menyebabkan keputusan tersebut.
Tujuannya adalah untuk mengurangi waktu harian saya di depan komputer. Bukan menghilangkannya. Peralihan dari eksekusi langsung ke peninjauan dan persetujuan. Saya ingin mendapatkan ringkasan tentang apa yang ditangani agen saya dalam semalam: email diprioritaskan, postingan disusun, penerapan diverifikasi, antrean pembayaran. Saya ingin menyetujui pembayaran Bitcoin dari [Apple Watch] saya(https://www.apple.com/watch). Saya ingin meninjau draf email di ponsel saya sambil berjalan dan ketuk untuk mengirim. Agen menangani 80% yang dapat diulang. Saya menangani 20% yang membutuhkan penilaian.
Di sinilah pertanyaan tentang perangkat keras menjadi menarik. Ponsel dan jam tangan saat ini tidak dirancang untuk pola interaksi ini. Anda memerlukan perangkat yang dioptimalkan untuk tinjauan singkat dan isyarat persetujuan, bukan untuk mengetik atau menjelajah.
Dari perangkat yang ada saat ini, Apple Watch terasa paling mendekati faktor bentuk yang tepat: selalu ada di pergelangan tangan Anda, mudah dilihat, mampu melakukan interaksi sederhana dengan mengetuk untuk menyetujui. Namun lapisan perangkat lunaknya belum ada. Tidak ada cara untuk menyalurkan ringkasan agen dan permintaan persetujuan ke jam tangan dengan cara yang terasa asli.
Itu mungkin menjadi area bagi saya untuk bereksperimen di beberapa titik, membangun aplikasi pendamping ringan yang menjembatani keadaan Neotoma ke antarmuka tingkat pergelangan tangan. Baik permukaan kanan akan menjadi aplikasi jam tangan, perangkat AI khusus, atau sesuatu yang belum ada, model interaksinya jelas: agen melakukan pekerjaannya, memori terstruktur menyimpan status, dan manusia memberikan arahan sesuai dengan kecepatan niat, bukan kecepatan eksekusi.
Sumber terbuka tumpukan
Tumpukan tersebut bersifat pribadi saat ini karena berisi kehidupan saya: kontak, keuangan, data kesehatan, komunikasi pribadi, peraturan tetap tentang bagaimana saya menjalankan rumah tangga. Sebelum saya dapat menjadikannya sumber terbuka, saya harus menguraikan semua itu.
Jalannya mudah. Data pribadi dipindahkan sepenuhnya ke Neotoma, yang sudah menjadi sumber kebenaran bagi sebagian besar data tersebut. Skrip yang mereferensikan akun dan jalur spesifik saya difaktorkan ulang untuk dibaca dari konfigurasi. Pembungkus server MCP menjadi generik. Keterampilan kehilangan asumsi yang dikodekan secara keras.
Yang tersisa hanyalah tumpukan agen yang dapat digunakan kembali: templat monorepo dengan perancah server MCP, kerangka aturan dan keterampilan, integrasi Neotoma untuk memori terstruktur, dan contoh alur kerja yang dapat diadaptasi oleh siapa pun. Arsitektur adalah bagian yang menarik. Data pribadi saya tidak.
Saya tidak punya batas waktu untuk ini. Refactoring terjadi bersamaan dengan penggunaan sehari-hari. Setiap kali saya menyentuh naskah, saya membuatnya lebih umum. Setiap kali saya memindahkan data ke Neotoma, saya menghapusnya dari repo. Tumpukan menjadi lebih portabel di setiap sesi.
Hal ini membuktikan tentang Neotoma
Saya membuat tumpukan ini sebelum Neotoma ada. Versi awal menggunakan file datar dan tabel Parquet. Itu berhasil sampai tidak berhasil.
Mode kegagalan spesifik: agen akan menyimpan kontak sebagai "Sarah Kim" di satu sesi dan "S.Kim" di sesi lain, membuat duplikat tanpa ada cara untuk menggabungkannya. Tidak ada asal usulnya, jadi saya tidak tahu agen mana yang menulis bidang tersebut atau kapan.
Kueri dibatasi pada pencocokan persis pada satu kolom, jadi tanyakan "masukan apa yang saya dapatkan minggu lalu?" berarti memindai setiap file secara manual. Kadang-kadang catatan ditimpa dengan buruk atau dihapus seluruhnya, tanpa ada log peristiwa yang dapat dipulihkan. Dan tidak ada yang terhubung antar tipe, jadi mengetahui bahwa tugas yang terkait dengan kontak terkait dengan suatu transaksi mengharuskan saya untuk mengingat grafik itu di kepala saya.
Neotoma menggantikan lapisan itu. Ini memberi agen memori terstruktur, dapat dikueri, dan sadar akan hubungan yang berfungsi di setiap alur kerja. Tumpukan sekarang memiliki 170 tipe entitas di Neotoma, bukan karena saya merancang 170 skema di awal, tetapi karena agen membuat tipe entitas saat mereka menemukan jenis informasi baru. Catatan umpan balik berbeda dari transaksi berbeda dari aturan tetap, dan sistem menangani semuanya.
Dogfooding inilah yang membuat Neotoma tetap jujur. Saat pengambilan lambat, saya merasakannya di setiap sesi agen. Ketika resolusi entitas gagal, saya mendapatkan kontak duplikat. Jika penyimpanan tidak dapat diandalkan, alur kerja akan terganggu. Setiap bug dan celah muncul dalam pekerjaan saya sehari-hari sebelum muncul di pekerjaan orang lain.
Masalah memori bersifat universal. Setiap pengembang yang membangun alur kerja agen akan menemui hambatan yang sama: agen yang tidak dapat mengingat, tidak dapat melakukan kueri, dan tidak dapat membangun berdasarkan pekerjaan sebelumnya. Pengambilan saja tidak cukup; struktur dan asal adalah apa yang membuat ingatan dapat dipercaya. Tumpukan ini adalah bukti bahwa memori terstruktur mengubah apa yang dapat dilakukan agen. Neotoma adalah cara saya membuatnya tersedia untuk semua orang.
Rilis pengembang terbuka untuk pengujian. Jika Anda sedang membangun alur kerja agen dan menginginkan memori terstruktur di bawahnya, di sinilah Anda harus memulai.