Dua lapis, dan kapan pakai yang mana
| Dokumen | Fakta | |
|---|---|---|
| Isinya | Markdown panjang | Satu kalimat, satu subject |
| Dibaca | Utuh, oleh manusia | Dicari, oleh agent |
| Berubah? | Diperbarui sesekali | Sering — itu intinya |
| Tool | oprex_list_memories, oprex_get_memory, oprex_create_memory | oprex_recall_memory, oprex_remember |
Dokumen untuk catatan kerja satu sesi, keputusan arsitektur, apa pun yang butuh paragraf. Fakta untuk hal yang punya masa berlaku: server ini punya RAM sebesar itu, kita memutuskan tidak auto-retry karena itu, insiden ini terjadi pada tanggal itu.
Kenapa fakta perlu tabel sendiri
Kebanyakan fitur "AI memory" cuma menambah. Enam bulan kemudian project Anda punya tiga kalimat yang saling bertentangan tentang satu server, dan tidak ada cara tahu mana yang masih benar. Itu lebih buruk daripada tidak punya catatan — karena sekarang agent-nya mengulang yang basi dengan yakin.
Di Oprex, fakta yang menggantikan fakta lain wajib menyebut id fakta yang digantikan. Yang lama tidak dihapus: ia ditandai *superseded*, ditautkan ke penggantinya, dan menyimpan alasannya. Jadi pertanyaan "kapan kita berhenti percaya ini, gara-gara apa" tetap terjawab berbulan-bulan kemudian.
Contoh nyata
Maret. Agent mencatat dua fakta tentang subject melati:
- Melati punya RAM 6 GB — *kind: constraint*
- Melati menghosting Coolify dan seluruh ekosistem Kinexa — *kind: reference*
Agustus. Melati mati kehabisan memori; workload dipindah. Sesi baru bertanya *"kenapa coolify sempat mati"*. Agent memanggil oprex_recall_memory, dapat kedua fakta itu, lalu:
- Menambah fakta insiden baru, dengan
supersedesberisi id fakta nomor 2 dan alasan *"Melati down 2026-08-06, workload dipindah"* - Mengonfirmasi fakta nomor 1 dengan operasi
noop— RAM 6 GB masih benar, dan justru itu penyebabnya. Konfirmasi menaikkan penghitung, tidak menduplikasi.
Sesudahnya, subject melati punya dua fakta aktif, bukan tiga. Yang basi masih ada di riwayat, lengkap dengan penggantinya.
Yang membuat kontradiksi tidak menumpuk diam-diam
Setiap kali agent menambah fakta, jawabannya menyertakan coexisting: fakta aktif dengan subject yang sama yang tidak ikut digantikan. Bukan error — dua fakta sesubjek bisa dua-duanya benar. Tapi kalau baru saja tercipta kontradiksi ketiga, itu terlihat saat itu juga, bukan tiga sesi kemudian.
Riwayat & audit
oprex_memory_fact_history mengembalikan satu fakta plus setiap perubahannya. Tiap revisi menyimpan keadaan sebelum perubahan, siapa yang mengubah, dan alasannya. Menghapus fakta wajib menyertakan alasan — justru itu momen paling penting untuk tahu kenapa.
Privasi
Fakta punya dua scope:
- personal — hanya Anda yang bisa membacanya, bahkan rekan satu tenant tidak
- project — dibagi ke anggota project itu saja
Aturannya ditegakkan di server, bukan di UI. Agent yang bekerja di satu project klien tidak bisa membaca fakta klien lain, dan tidak ada yang pernah ikut ke data pelatihan model.
Cara memakainya
Pola yang bekerja: recall di awal, reconcile di akhir.
Awal sesi : oprex_recall_memory { q: "<yang sedang dikerjakan>" }
Akhir sesi : oprex_remember { operations: [ … ] }
Kalau ada yang ternyata sudah tidak benar, jangan cuma menambah fakta kedua — sebutkan id yang lama di supersedes. Itu satu-satunya cara menyatakan pertentangan.