Ketika beberapa agen bekerja dari fakta yang sama, fakta itu berubah, dan para agen tidak semuanya mengetahui perubahan tersebut pada saat yang sama. Tanggal jatuh tempo memperlihatkan masalah ini dengan jelas.

Misalkan faktur INV-2041 menyebut pembayaran jatuh tempo pada 22 Oktober, lalu email yang dikirim belakangan oleh pemasok menggeser tanggalnya ke 29 Oktober. Satu agen membaca faktur, agen lain membaca email, dan agen ketiga menyiapkan pembayaran minggu itu berdasarkan apa pun yang ditemukannya. Agen pertama menjawab 22 Oktober, agen kedua menjawab 29 Oktober, dan agen ketiga menjawab tanggal mana pun yang ia temukan lebih dulu. Tidak ada yang menentukan tanggal mana yang berlaku dalam susunan ini, sehingga orang yang mengelola para agen harus memeriksanya sendiri.

Contoh faktur khusus ini saya karang, tetapi susunan di baliknya nyata. Saya menjalankan [agen di tiga alat](https://markmhendrickson.com/posts/what-my-agentic-stack-actually-does) dengan satu instans [Neotoma](https://neotoma.io/). Sebuah proses pemantau email menyimpan pesan masuk beserta sumbernya dan mengubah pesan yang perlu ditindaklanjuti menjadi tugas; sesi di Claude Code, Codex, dan Cursor mengambil [tugas dan rencana yang sama](https://markmhendrickson.com/posts/the-swarm-that-runs-my-work). Susunan itulah, bersama pekerjaan saya membangun Neotoma sebagai sistem pencatatan yang menyeluruh, yang melahirkan esai ini.

![Sebuah dokumen dan amplop masing-masing terhubung ke lembar fakta yang berbeda](/images/posts/neotoma-paper/observation.svg "paper|Contoh rekaan · INV-2041|Dua sumber menyatakan hal berbeda tentang satu faktur: PDF menyebut jatuh tempo 22 Oktober, sedangkan email yang lebih baru menyebut 29 Oktober.")

## Mengingat berguna untuk pekerjaan lain

Pengambilan informasi menemukan materi yang tampaknya berkaitan dengan sebuah pertanyaan. Indeks vektor atau riwayat percakapan yang panjang melakukan ini dengan baik, dan untuk banyak tugas hal itu sudah cukup. Namun, keduanya tidak [menentukan mana yang berlaku](https://markmhendrickson.com/posts/agentic-search-and-the-truth-layer). Tanyakan tanggal jatuh tempo, dan sistem pengambilan akan mengembalikan faktur serta email yang diurutkan menurut kemiripannya dengan pertanyaan, bukan menurut mana yang terkini.

Semakin banyak alat dan lingkungan agen, semakin sulit persoalannya. Satu agen menyimpan [catatan dalam berkas Markdown](https://markmhendrickson.com/posts/the-markdown-memory-ceiling), agen lain menyimpan apa yang dipelajarinya di produk percakapannya, dan agen ketiga membaca folder bersama. Setiap salinan benar saat dibuat. Ketika faktanya berubah, salinan itu berubah pada waktu yang berbeda, atau tidak berubah sama sekali. Tidak ada agen yang dapat menanyakan salinan mana yang harus diikuti karena tidak ada tempat yang dapat menjawabnya. Sistem pencatatan harus berada di luar masing-masing alat itu, di satu tempat yang dapat dijangkau semuanya.

Pada awal tahun ini, saya menyebut Neotoma [lapisan memori dan lapisan kebenaran](https://markmhendrickson.com/posts/truth-layer-agent-memory). Saya berhenti karena kemudian menyadari bahwa memori adalah kategori yang keliru bagi Neotoma: istilah itu [membingungkan](https://markmhendrickson.com/posts/your-ai-remembers-your-vibe-but-not-your-work), dan orang terus membandingkan Neotoma dengan produk memori. Yang saya perlukan untuk disimpan agen adalah data yang tepat tentang beragam hal, dalam bentuk yang dapat diaudit. Nama sederhana untuk tempat penyimpanannya adalah sistem pencatatan.

Itulah yang saya maksud dengan sistem pencatatan: sistem itu menunjukkan apa yang berlaku sekarang, dari mana asalnya, dan apa yang digantikannya. Pencarian berdasarkan kemiripan tidak dapat menjawab pertanyaan tersebut karena kemiripan tidak menjelaskan waktu maupun sumber.

> **Pengambilan informasi dan catatan**
>
> **Alat memori dan pengambilan informasi membantu agen menyimpan serta menemukan konteks. Sistem pencatatan mempunyai tugas berbeda: menghitung nilai yang berlaku dari observasi yang diterima dan menjaga jalur kembali ke bukti untuk setiap bidang. Keduanya saling bersinggungan, dan sebuah produk dapat menjalankan lebih dari satu fungsi.**

## Apa yang dilakukan Neotoma saat ini

Saya membangun Neotoma, sistem pencatatan untuk agen AI. Kodenya terbuka dengan lisensi MIT dan berjalan secara lokal, dalam direktori data pilihan Anda. Uraian berikut menjelaskan kemampuan paket yang sudah diterbitkan saat ini (versi 0.25.0 di npm).

Setiap penulisan disimpan sebagai observasi baru yang terhubung ke sumber asalnya. Nilai baru ditambahkan di samping nilai lama, bukan menimpanya. Neotoma dapat menyimpan [PDF atau email asli](https://github.com/markmhendrickson/neotoma/blob/v0.25.0/docs/developer/source_storage_by_reference.md) bersama entitas terstruktur yang diturunkan darinya, sambil menjaga hubungan observasi dengan sumbernya.

Observasi dimiliki oleh entitas. ID sebuah entitas diturunkan dari jenis entitas dan bidang-bidang pengenalnya. Dalam instans yang sama dan dengan aturan identitas yang sama, nilai pengenal yang sama secara deterministik menghasilkan ID yang sama. Karena itu, dua agen yang menyimpan faktur yang sama menulis ke entitas yang sama.

Entitas juga dapat dihubungkan satu sama lain: faktur dengan pemasoknya, atau tugas tindak lanjut dengan faktur terkait. Agen membuat hubungan itu secara eksplisit. Hubungan tersebut menjelaskan keterkaitan antarcatatan, sedangkan tautan sumber menunjukkan PDF atau email di balik suatu observasi.

Neotoma secara otomatis menerapkan aturan penggabungan skema untuk setiap bidang guna menghitung nilai yang berlaku dari observasi. Pada sebagian besar bidang, observasi terbaru yang menang. Dengan observasi dan aturan penggabungan yang sama, proses reduksi menghasilkan potret keadaan yang sama, tanpa meminta model memilih ulang setiap kali data dibaca.

Setiap bidang yang berlaku menyebut observasi yang menetapkannya, dan observasi yang disimpan menyebut sumbernya. Itu adalah jejak menuju bukti, bukan bukti bahwa agen membaca bukti tersebut dengan benar. Koreksi merupakan observasi baru, bukan pengeditan, dan nilai terdahulu tetap tercantum. Anda juga dapat membaca suatu entitas sebagaimana dicatat Neotoma pada waktu sebelumnya.

Kembali ke faktur: penulisan kedua agen masuk ke satu entitas. Tanggal jatuh tempo kini terbaca 29 Oktober dan menunjuk ke observasi dari email. Jumlah pembayaran masih menunjuk ke observasi pertama karena tidak berubah. Agen pembayaran membaca 29 Oktober, sementara observasi 22 Oktober tetap tercantum beserta sumbernya.

![Faktur dan email terpisah masing-masing dihubungkan oleh garis tipis ke kartu catatan yang ditandai](/images/posts/neotoma-paper/invoice-example.svg "paper|Catatan yang berlaku · INV-2041|Tanggal jatuh tempo kini terbaca 29 Oktober. Bidang yang berubah menunjuk ke observasi yang lebih baru. Jumlah pembayaran tetap berasal dari observasi pertama. Kedua observasi tetap tersimpan.")

Agen mengakses Neotoma melalui server MCP, API REST, dan CLI. Panduan instalasi menjelaskan cara menghubungkan alat dan lingkungan agen yang didukung. Arahkan setiap alat ke instans dan profil data yang sama, atau ke entri MCP yang sama, agar catatan dapat dibagikan; entri yang terpisah dapat memakai basis data yang terpisah.

Orang dapat memeriksa catatannya dalam aplikasi Neotoma yang disertakan.

Sebuah [permintaan bertanda tangan](https://markmhendrickson.com/posts/know-which-of-your-agents-wrote-what/) yang diterima dapat menetapkan identitas agen yang terverifikasi. Izin aktif dengan cakupan tertentu menentukan tindakan yang diizinkan; tanda tangan saja tidak memberikan izin.

## Arah pengembangan

Sejauh ini saya menggambarkan sistem pencatatan yang menetapkan fakta yang berlaku bagi agen. Arah yang dituju ialah sistem pencatatan yang dikelola bersama oleh manusia dan agen, tempat siapa pun dapat menanyakan nilai mana yang berlaku, sumber mana yang memperkenalkannya, apakah nilai itu diamati, disimpulkan, atau diputuskan, siapa yang berwenang mengoreksinya, dan agen mana yang mengandalkan versi sebelumnya. Kemampuan tata kelola yang direncanakan melampaui identitas bertanda tangan, izin bercakupan, dan aplikasi yang tersedia saat ini:

- Menetapkan penanggung jawab yang jelas untuk setiap ranah, dengan kewenangan mengoreksi catatan yang dibatasi pada ranah tersebut.
- Mewakili klaim yang saling bersaing, perselisihan yang belum selesai, dan posisi resmi secara eksplisit.
- Menunjukkan alasan suatu nilai berlaku, kewenangan yang mendasarinya, dan hal-hal yang akan terpengaruh jika nilai itu berubah.

Ateles memperluas arah ini pada sisi operasional. Dalam [rancangan adaptor Ateles](https://github.com/markmhendrickson/ateles/blob/a3e4d9ed2c33ac867bb67447221d559cbe8c5810/docs/foundation/adapters.md#L14-L22), adaptor membawa informasi dari sistem seperti email, kalender, dan penyedia hosting kode ke Neotoma, lalu membawa tindakan yang diizinkan kembali ke sistem-sistem itu. Neotoma menyimpan catatan; alat-alat yang terhubung melakukan pekerjaannya.

Visi lengkap beserta status masing-masing bagiannya saat ini ada di [README](https://github.com/markmhendrickson/neotoma#vision-and-execution-status).

![Kepemilikan ranah: pemegang yang berwenang menjangkau salah satu dari dua ruang yang dibatasi](/images/posts/neotoma-paper/vision-domain.svg "paper|Kepemilikan ranah|Kepemilikan ranah akan memperjelas siapa yang boleh mengoreksi setiap bagian sistem pencatatan yang dibatasi.")
![Pelacakan posisi: dua klaim yang dipertahankan terhubung ke berkas yang menandai satu posisi sebagai pilihan](/images/posts/neotoma-paper/vision-positions.svg "paper|Pelacakan posisi|Pelacakan posisi akan mempertahankan klaim yang bersaing dan membuat posisi yang dinyatakan secara eksplisit dapat diperiksa.")
![Penjelasan: bidang yang berlaku diangkat untuk menampakkan dasar dan sekumpulan dampak yang dibatasi](/images/posts/neotoma-paper/vision-explanation.svg "paper|Penjelasan|Penjelasan akan menunjukkan mengapa suatu nilai berlaku, kewenangan yang mendasarinya, dan nilai terkait mana yang mungkin terpengaruh oleh perubahan.")

## Sistem pencatatan, bukan sekadar pengambilan

Jawabannya bukan indeks yang lebih baik. Pengambilan informasi membantu agen menemukan apa yang pernah dikatakan. [Sistem pencatatan memberi tahu apa yang berlaku saat ini](https://markmhendrickson.com/posts/the-spine-of-the-loop). Agen yang bekerja di beberapa alat membutuhkan fungsi kedua, di satu tempat yang dapat dijangkau semuanya. Namun sistem pencatatan hanya membantu bila agen menulis ke dalamnya dan membaca darinya.

Jika Anda menggunakan agen di lebih dari satu alat atau lingkungan, mulailah dari satu alur kerja yang fakta dan entitasnya saling terkait:

```
npm install -g neotoma
neotoma init
neotoma setup --tool claude-code
```

Gunakan opsi penyiapan untuk alat atau lingkungan Anda; panduan instalasi menjelaskan integrasi lain yang didukung. Kemudian simpan fakta dan entitas yang saling terkait dari satu agen, lalu bacalah dari agen lain yang terhubung ke instans terkonfigurasi dan profil data atau entri MCP yang sama.

Panduan instalasi tersedia di [neotoma.io/install](https://neotoma.io/install?utm_source=site&utm_medium=blog&utm_campaign=essay-system-of-record). Kode dan pelacak masalah tersedia di GitHub pada [github.com/markmhendrickson/neotoma](https://github.com/markmhendrickson/neotoma).

> **Tujuan jangka panjang**
>
> **Neotoma adalah sistem pencatatan untuk agen AI. Tujuannya ialah memberi manusia dan agen pemahaman bersama yang dapat mereka periksa dan tata: apa yang diketahui, mengapa hal itu diyakini, di mana mereka berbeda pendapat, dan siapa yang berwenang mengubahnya. Pemahaman itu seharusnya bertahan melampaui model, alat, atau aplikasi tertentu.**
