Langkau ke kandungan

Memori dan pengetahuan

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:

  1. Fakta — apa yang benar (satu konvensyen, satu hasil, satu keputusan).
  2. Polisi — apa yang ejen mesti lakukan mengenainya (satu peraturan normatif).
  3. 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.

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.

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.

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.

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.

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.