Memori dan pengetahuan
Untuk apa memori
Bahagian bertajuk “Untuk apa memori”Tanpa memori, setiap perbualan ejen bermula dari kosong: konvensyen yang sama perlu dijelaskan semula, keputusan yang sama dipertikaikan semula, jalan mati yang sama diteroka semula. Memori ialah stor berskop ruang kerja yang kekal merentas larian dan ia wujud supaya pengetahuan yang dihasilkan oleh satu ejen boleh ditemui oleh ejen lain kemudian.
Ia mempunyai tiga lapisan dan ketiga-tiganya menjawab soalan yang berbeza:
- Fakta — apa yang benar (satu konvensyen, satu hasil, satu keputusan).
- Polisi — apa yang ejen mesti lakukan mengenainya (satu peraturan normatif).
- Memori kerja — apa yang sedang dilakukan oleh satu ejen.
Perbezaan ini penting kerana ketiga-tiganya sampai kepada ejen melalui laluan yang berbeza. Fakta dicari. Polisi didorong. Memori kerja bersifat peribadi.
Sesuatu MemoryFact ialah unit pengetahuan yang berskop kepada satu ruang kerja
dan satu domain.
| Atribut | Apa itu |
|---|---|
domain |
Domain pengetahuan (“conventions”, “decisions”, “codebase”) |
topic |
Label topik yang pendek |
content |
Teks pengetahuan |
confidence |
0.0–1.0, dijana daripada asal usul dan dinaikkan apabila disebut semula |
memoryType |
Jenis fakta itu — menentukan keluk pereputan masanya |
veracity |
Bagaimana ia diketahui — menjana keyakinan dan menentukan saiz setiap lonjakan sebutan semula |
sourceObservationIds |
Pemerhatian mana yang membawa kepadanya |
supersededBy |
Fakta yang lebih baharu yang menggantikannya, jika ada |
validUntil, recallCount, mentionCount |
Isyarat luput dan penggunaan yang digunakan semasa dapatan semula |
Dua baris terakhir ialah baris yang orang selalu terlepas pandang dan itulah
yang menentukan fakta mana yang muncul. memoryType membawa parameter
pereputan Weibull mengikut jenis, jadi komitmen yang terikat pada masa pudar
dengan cepat manakala fakta profil yang stabil tidak. veracity merekodkan
asal usul — dinyatakan oleh manusia (pemberat 1.0), disimpulkan oleh ejen
(0.7), dihasilkan oleh alat (0.5), diimport (0.6) — dan pemberat itu menjana
keyakinan permulaan fakta tersebut.
Fakta tidak pernah disunting di tempatnya apabila ia bercanggah. Menulis fakta menjalankan pengesanan konflik terhadap fakta yang sama domain dan sama topik lalu menggantikan yang kalah, sambil merekodkan baris konflik. Jejak audit itulah tujuannya: anda sentiasa boleh melihat apa yang diyakini sebelum ini dan apa yang menggantikannya.
Sesuatu MemoryPolicy ialah peraturan normatif yang diperoleh daripada fakta,
berskop kepada satu ruang kerja dan domain, dengan bendera aktif dan
requiredRole yang pilihan.
Setiap polisi aktif dalam ruang kerja disuntik ke dalam setiap
penghantaran, tanpa penapisan — tiada penapisan mengikut domain, peranan, tugas
atau ruang. Ini wajar diketahui sebelum anda menulis polisi kedua puluh anda,
kerana polisi bersaing untuk tetingkap konteks yang sama dengan tugas. Itulah
juga sebabnya requiredRole pada polisi bersifat nasihat: ia menerangkan
kepada siapa peraturan itu ditujukan, ia tidak menghalang peraturan itu sampai
kepada orang lain.
Sesuatu MemoryDomain mengelompokkan fakta dan polisi dalam satu ruang kerja.
Domain memberi pengetahuan struktur organisasi dan ia merupakan unit yang
menjadi asas pemberian akses ditulis — tetapi lihat amaran di bawah sebelum
menganggap domain sebagai sempadan kerahsiaan.
Sesuatu domain sama ada merentas seluruh ruang kerja (architecture) atau
berskop kepada satu repositori (repo:<slug>/architecture). Nama yang sama
dalam kedua-dua skop ialah dua stor yang berasingan: fakta yang benar bagi satu
pangkalan kod tidak menimpa fakta yang merentas seluruh ruang kerja.
search_memory dan mukadimah penghantaran meletakkan memori berskop repo
dahulu apabila ejen bekerja dalam repo itu; ia tidak menapis yang lain keluar.
Hantar repo pada propose_fact / propose_policy / search_memory untuk
menulis atau meningkatkan skop itu.
Kawalan akses bersifat fail-open untuk bacaan
Bahagian bertajuk “Kawalan akses bersifat fail-open untuk bacaan”MemoryAccessGrant memetakan peranan ejen dan domain kepada salah satu daripada
tiga tahap kebenaran:
| Kebenaran | Maksud |
|---|---|
none |
Tiada akses |
read |
Boleh mencari dan mendapatkan fakta |
write |
Diperlukan oleh propose_policy. Penulisan fakta (propose_fact, supersede_fact) tidak terikat pada pemberian akses |
Asimetri ini — longgar pada bacaan, ketat pada penulisan polisi — ialah
pertukaran yang disengajakan. Memori paling berguna apabila ia beredar dan
penafian bacaan menghasilkan ejen yang diam-diam tahu lebih sedikit daripada
ejen yang melaporkan masalah. Penafian penulisan polisi, sebaliknya, nyaring
dan boleh diperbaiki, jadi di situlah penguatkuasaannya terletak. Domain yang
baru dicipta menjana write untuk setiap peranan; mengetatkannya selepas itu
ialah suntingan melalui RPC sahaja, kerana tiada UI untuk pemberian.
Memori kerja
Bahagian bertajuk “Memori kerja”Setiap ejen mempunyai AgentWorkingMemory: papan coretan teks bebas yang
dikunci mengikut ruang kerja dan ejen. Ia kekal merentas larian, bersifat
peribadi kepada ejen itu dan disuntik ke dalam promptnya pada setiap
penghantaran. Di situlah “saya baru separuh jalan melakukan refaktor auth”
tinggal — keadaan yang berbaloi dibawa ke larian seterusnya tetapi tidak
berbaloi dinaikkan menjadi fakta yang kekal.
Apa yang benar-benar sampai ke prompt ejen
Bahagian bertajuk “Apa yang benar-benar sampai ke prompt ejen”Semasa penghantaran, mukadimah memori dibentuk daripada tepat tiga perkara:
- Setiap polisi ruang kerja yang aktif, sebagai baris
- [domain] rule. - Memori kerja ejen itu sendiri, verbatim.
- Senarai pendek fakta yang dipadankan dengan kata kunci untuk tugas ini — paling banyak lima, dalam belanjawan ~1,200 aksara dan hanya apabila penerangan tugas sekurang-kurangnya 20 aksara panjangnya. Tugasan yang lebih pendek tidak mendapat sebarang fakta.
Senarai pendek itu hanya FTS/kata kunci dan ia dihadkan secara sengaja.
Membenamkan pertanyaan itu perlahan dan laluan penghantaran ialah satu-satunya
tempat kependaman kelihatan serta-merta, jadi laluan semantik yang perlahan
sengaja dijauhkan daripadanya. Mukadimah ditutup dengan memberitahu ejen supaya
mengesahkan perkara yang menanggung beban dengan search_memory, di situlah
model dapatan semula yang penuh berada.
Tiada pemberian akses dirujuk pada laluan ini. Apa sahaja yang ditemui oleh senarai pendek itulah yang dilihat oleh ejen.
Dapatan semula: satu pertanyaan, empat suara
Bahagian bertajuk “Dapatan semula: satu pertanyaan, empat suara”Alat search_memory yang dihadapi ejen mempunyai tiga modus dan ketiga-tiganya
carian yang benar-benar berbeza:
keyword— FTS5 sahaja.semantic— hasil BM25 dan vektor digabungkan melalui gabungan pangkat salingan.hybrid(yang lalai) — dapatan semula polifonik: empat suara berpangkat digabungkan bersama, kemudian dipelbagaikan.
Keempat-empat suara itu ialah leksikal (FTS), semantik (KNN vektor), temporal (fakta aktif yang terkini) dan graf — satu penelusuran dua hop merentas tepi episodik daripada benih leksikal dan semantik yang paling kuat. Suara graf itulah sebabnya tepi episodik wujud sama sekali: ia memunculkan fakta yang berkaitan dengan jawapan anda tanpa memadankan mana-mana perkataan anda. Suara-suara itu diberatkan oleh niat pertanyaan yang dikelaskan (semantik membawa pemberat paling banyak secara lalai, kemudian graf dan leksikal, kemudian keterkinian), skor setiap calon diskalakan oleh pereputan Weibullnya, dan set hasil dipelbagaikan dengan MMR supaya lima penyataan semula bagi satu fakta tidak menenggelamkan empat fakta yang berbeza.
Carian memori pada desktop dan web ialah laluan berasingan yang lebih ringkas:
operasi RPC memory_fact.search ialah FTS5 sahaja, kerana klien nipis tidak
boleh menyertakan pembenaman pertanyaan dan laluan hibrid kekal dalaman hos.
Jadi kedudukan yang anda lihat dalam pelayar memori bukan kedudukan yang
diterima oleh ejen daripada search_memory. Itu dijangka, bukan pepijat, tetapi
ia bermakna “saya mencari dan tidak menjumpainya” dalam UI bukan bukti bahawa
ejen tidak akan menjumpainya.
Di mana memori berada dan siapa yang menulisnya
Bahagian bertajuk “Di mana memori berada dan siapa yang menulisnya”Pelayar memori berada di Tetapan → Ruang kerja → Memori
(/workspaces/<id>/settings/memory), dengan tab Fakta, Polisi dan Graf.
Terdapat satu asimetri di situ yang mengejutkan orang: anda boleh menyunting
dan memadam memori, tetapi anda tidak boleh menciptanya. Baik tab Fakta
mahupun tab Polisi tiada pilihan untuk menambah. Pengarangan berlaku di pihak
ejen, melalui propose_fact dan propose_policy (supersede_fact /
supersede_policy untuk menggantikannya). remember menulis item tingkat panas
yang terikat pada sesi yang mungkin dinaikkan oleh consolidate_memory menjadi
fakta kemudian; record_observation dan update_my_notes menulis papan coretan
peribadi yang disuntik semasa penghantaran. Pelayar itu ialah permukaan semakan
dan pembetulan, bukan permukaan pengarangan — jadi jika anda mahu sesuatu fakta
berada dalam memori, cara untuk meletakkannya di sana ialah memberitahu ejen.
Dua operasi penyelenggaraan juga dilancarkan oleh ejen dan bukan dijadualkan:
consolidate_memory mencantum dan memangkas fakta terkumpul dan
harmonize_memory menyelaraskan kepercayaan yang menyimpang antara ejen.
list_memory_conflicts menunjukkan apa yang telah direkodkan oleh pengesanan
konflik. Tiada apa-apa yang menjalankannya untuk anda mengikut pemasa. Keputusan
mesyuarat dituai ke dalam domain decisions apabila langkah kekal mesyuarat
merekodkannya; itu bukan pemasa pada larian ejen yang telah selesai.
Konsep berkaitan
Bahagian bertajuk “Konsep berkaitan”- Model ejen: peranan ialah asas yang menjadi rujukan pemberian
- Ruang kerja dan pengasingan: memori berskop ruang kerja dan berada dalam fail pangkalan data ruang kerja itu sendiri
- Urus memori ruang kerja: bekerja dengan memori dalam amalan