Memori dan pengetahuan
Untuk apa memori
Bagian berjudul “Untuk apa memori”Tanpa memori, setiap percakapan agen dimulai dari nol: konvensi yang sama harus dijelaskan ulang, keputusan yang sama diperdebatkan ulang, jalan buntu yang sama ditelusuri ulang. Memori adalah penyimpanan bercakupan ruang kerja yang bertahan lintas eksekusi, dan keberadaannya membuat pengetahuan yang dihasilkan satu agen dapat ditemukan agen lain di kemudian hari.
Memori memiliki tiga lapisan dan ketiganya menjawab pertanyaan yang berbeda:
- Fakta — apa yang benar (sebuah konvensi, sebuah hasil, sebuah keputusan).
- Kebijakan — apa yang harus dilakukan agen tentangnya (aturan normatif).
- Memori kerja — apa yang sedang setengah jalan dikerjakan satu agen.
Perbedaan ini penting karena ketiganya mencapai agen melalui jalur yang berbeda. Fakta dicari. Kebijakan didorong. Memori kerja bersifat privat.
MemoryFact adalah unit pengetahuan yang bercakupan ruang kerja dan domain.
| Atribut | Isinya |
|---|---|
domain |
Domain pengetahuan (“conventions”, “decisions”, “codebase”) |
topic |
Label topik yang singkat |
content |
Teks pengetahuannya |
confidence |
0,0–1,0, diinisialisasi dari asal-usul dan dinaikkan saat disebut ulang |
memoryType |
Jenis fakta — menentukan kurva peluruhan temporalnya |
veracity |
Bagaimana fakta itu diketahui — menginisialisasi keyakinan dan menentukan besaran setiap kenaikan saat disebut ulang |
sourceObservationIds |
Observasi mana yang menghasilkannya |
supersededBy |
Fakta yang lebih baru yang menggantikannya, jika ada |
validUntil, recallCount, mentionCount |
Sinyal kedaluwarsa dan pemakaian yang dipakai saat recall |
Dua baris terakhir adalah yang sering terlewat, dan justru keduanya yang
menentukan fakta mana yang muncul. memoryType membawa parameter peluruhan
Weibull per jenis, sehingga komitmen berbatas waktu cepat memudar sementara
fakta profil yang stabil tidak. veracity mencatat asal-usul — dinyatakan oleh
manusia (bobot 1,0), disimpulkan oleh agen (0,7), dihasilkan oleh alat (0,5),
diimpor (0,6) — dan bobot itu menginisialisasi keyakinan awal fakta.
Fakta tidak pernah disunting di tempat saat dibantah. Menulis fakta menjalankan deteksi konflik terhadap fakta berdomain dan bertopik sama, lalu menggantikan yang kalah dan mencatat satu baris konflik. Jejak auditnya itulah intinya: Anda selalu dapat melihat apa yang dahulu diyakini dan apa yang menggantikannya.
Kebijakan
Bagian berjudul “Kebijakan”MemoryPolicy adalah aturan normatif yang diturunkan dari fakta, bercakupan
ruang kerja dan domain, dengan penanda aktif dan requiredRole opsional.
Setiap kebijakan aktif di ruang kerja disuntikkan ke setiap pengiriman,
tanpa penyaringan — tidak ada penyaringan menurut domain, peran, tugas, atau
space. Ini perlu diketahui sebelum Anda menulis kebijakan kedua puluh, karena
kebijakan bersaing memperebutkan jendela konteks yang sama dengan tugasnya.
Itulah pula sebabnya requiredRole pada sebuah kebijakan hanya bersifat saran:
ia menjelaskan kepada siapa aturan itu ditujukan, bukan menghalangi aturan itu
sampai ke semua orang lain.
Domain
Bagian berjudul “Domain”MemoryDomain mengelompokkan fakta dan kebijakan di dalam sebuah ruang kerja.
Domain memberi pengetahuan struktur organisasional dan domain adalah unit yang
menjadi acuan penulisan pemberian akses — tetapi perhatikan peringatan di bawah
sebelum memperlakukan domain sebagai batas kerahasiaan.
Sebuah domain bersifat seluruh ruang kerja (architecture) atau dibatasi ke
satu repositori (repo:<slug>/architecture). Nama yang sama pada kedua cakupan
adalah dua penyimpanan yang independen: fakta yang benar untuk satu basis kode
tidak menimpa fakta seluruh ruang kerja. search_memory dan preambul
pengiriman mengurutkan memori bercakupan repo lebih dahulu saat agen bekerja di
repo itu; keduanya tidak menyaring sisanya keluar. Berikan repo pada
propose_fact / propose_policy / search_memory untuk menulis atau
memperkuat cakupan tersebut.
Kontrol akses bersifat fail-open untuk pembacaan
Bagian berjudul “Kontrol akses bersifat fail-open untuk pembacaan”MemoryAccessGrant memetakan peran agen dan sebuah domain ke salah satu dari
tiga tingkat izin:
| Izin | Artinya |
|---|---|
none |
Tidak ada akses |
read |
Dapat mencari dan mengambil fakta |
write |
Diperlukan oleh propose_policy. Penulisan fakta (propose_fact, supersede_fact) tidak digerbangi pemberian akses |
Asimetri ini — longgar untuk pembacaan, ketat untuk penulisan kebijakan — adalah
pertukaran yang disengaja. Memori paling berguna saat beredar, dan penolakan
pembacaan menghasilkan agen yang diam-diam tahu lebih sedikit, bukan agen yang
melaporkan masalah. Sebaliknya, penolakan penulisan kebijakan bersifat nyaring
dan dapat diperbaiki, jadi di situlah penegakannya berada. Domain yang baru
dibuat menginisialisasi write untuk setiap peran; memperketatnya setelah itu
hanyalah penyuntingan lewat RPC, karena tidak ada UI untuk pemberian akses.
Memori kerja
Bagian berjudul “Memori kerja”Setiap agen memiliki AgentWorkingMemory: buku catatan teks bebas yang dikunci
menurut ruang kerja dan agen. Catatan ini bertahan lintas eksekusi, bersifat
privat untuk agen tersebut, dan disuntikkan ke prompt-nya pada setiap
pengiriman. Di sinilah “saya sudah setengah jalan merefaktor auth” hidup —
keadaan yang layak dibawa ke eksekusi berikutnya tetapi tidak layak diangkat
menjadi fakta permanen.
Apa yang benar-benar sampai ke prompt agen
Bagian berjudul “Apa yang benar-benar sampai ke prompt agen”Saat pengiriman, preambul memori disusun dari tepat tiga hal:
- Setiap kebijakan ruang kerja yang aktif, sebagai baris
- [domain] rule. - Memori kerja agen itu sendiri, apa adanya.
- Daftar pendek fakta yang cocok secara kata kunci untuk tugas ini — paling banyak lima, dalam anggaran ~1.200 karakter dan hanya ketika deskripsi tugas panjangnya minimal 20 karakter. Tugas yang lebih pendek tidak mendapat fakta sama sekali.
Daftar pendek itu hanya berbasis FTS/kata kunci dan memang dibatasi dengan
sengaja. Membuat embedding untuk sebuah kueri itu lambat dan jalur pengiriman
adalah satu-satunya tempat latensi langsung terlihat, jadi jalur semantik yang
lambat sengaja dijauhkan dari sana. Preambul ditutup dengan meminta agen
memverifikasi butir-butir yang menopang keputusan dengan search_memory, tempat
model recall selengkapnya berada.
Tidak ada pemberian akses yang diperiksa di jalur ini. Apa pun yang ditemukan daftar pendek itulah yang dilihat agen.
Recall: satu kueri, empat suara
Bagian berjudul “Recall: satu kueri, empat suara”Alat search_memory yang dihadapkan ke agen memiliki tiga mode dan ketiganya
benar-benar pencarian yang berbeda:
keyword— hanya FTS5.semantic— hasil BM25 dan vektor digabungkan dengan reciprocal rank fusion.hybrid(bawaan) — recall polifonik: empat suara berperingkat yang digabungkan, lalu didiversifikasi.
Keempat suara itu adalah leksikal (FTS), semantik (KNN vektor), temporal (fakta aktif yang terbaru), dan graf — penelusuran dua hop atas edge episodik dari benih leksikal dan semantik terkuat. Suara graf adalah alasan edge episodik ada sejak awal: ia memunculkan fakta yang terhubung dengan jawaban Anda tanpa cocok dengan satu kata pun dari Anda. Setiap suara diberi bobot berdasarkan intent kueri yang diklasifikasikan (semantik paling berbobot secara bawaan, lalu graf dan leksikal, lalu kebaruan), skor setiap kandidat diskalakan oleh peluruhan Weibull-nya, dan himpunan hasilnya didiversifikasi dengan MMR sehingga lima pernyataan ulang satu fakta tidak menyingkirkan empat fakta yang berbeda.
Pencarian memori di desktop dan web adalah jalur terpisah yang lebih sederhana:
operasi RPC memory_fact.search hanya FTS5, karena klien tipis tidak dapat
mengirimkan embedding kueri dan jalur hybrid tetap internal di host. Jadi
peringkat yang Anda lihat di peramban memori bukan peringkat yang diterima agen
dari search_memory. Itu memang diharapkan, bukan bug, tetapi artinya “saya
sudah mencari dan tidak menemukannya” di UI bukan bukti bahwa agen tidak akan
menemukannya.
Di mana memori berada dan siapa yang menulisnya
Bagian berjudul “Di mana memori berada dan siapa yang menulisnya”Peramban memori berada di Pengaturan → Ruang kerja → Memori
(/workspaces/<id>/settings/memory), dengan tab Fakta, Kebijakan, dan Graf.
Ada asimetri di sana yang mengejutkan banyak orang: Anda dapat menyunting dan
menghapus memori, tetapi tidak dapat membuatnya. Baik tab Fakta maupun tab
Kebijakan tidak memiliki kontrol untuk menambah. Penulisan dilakukan di sisi
agen, melalui propose_fact dan propose_policy (supersede_fact /
supersede_policy untuk menggantikannya). remember menulis butir tier panas
yang dibatasi sesi yang nantinya mungkin diangkat consolidate_memory menjadi
fakta; record_observation dan update_my_notes menulis buku catatan privat
yang disuntikkan saat pengiriman. Peramban ini adalah permukaan untuk meninjau
dan mengoreksi, bukan untuk menulis — jadi jika Anda ingin sebuah fakta masuk ke
memori, cara menaruhnya di sana adalah dengan memberi tahu agen.
Dua operasi pemeliharaan juga dipanggil oleh agen, bukan dijadwalkan:
consolidate_memory menggabungkan dan memangkas fakta yang menumpuk dan
harmonize_memory merekonsiliasi keyakinan yang menyimpang antar-agen.
list_memory_conflicts menampilkan apa yang sudah dicatat deteksi konflik. Tidak
ada yang menjalankannya untuk Anda dengan pengatur waktu. Keputusan rapat
dipanen ke domain decisions ketika langkah persist rapat mencatatnya; itu
bukan pengatur waktu pada eksekusi agen yang selesai.
Konsep terkait
Bagian berjudul “Konsep terkait”- Model agen: peran adalah acuan penulisan pemberian akses
- Ruang kerja dan isolasi: memori bercakupan ruang kerja dan berada di berkas basis data ruang kerja itu sendiri
- Kelola memori ruang kerja: bekerja dengan memori dalam praktik