Da li želite da znate kako je implementirana dugoročna memorija u Codex-u? Zašto što duže koristite Codex, deluje sve pametnije? Kao da bolje razume vaše preferencije?
Proučio sam Codex-ov open-source repozitorijum, posebno izvorni kod vezan za mehanizam memorije, i pregledao lokalni SQLite — Codex čuva dugoročnu memoriju baš tu — pa mogu samopouzdano, otvoreno i jasno da vam pomognem da razumete tri stvari:
- Kako nastaje dugoročna memorija?
- Kada memorije postane previše, treba li ih obrisati?
- Konačno, kako dugoročna memorija izgleda?

Danas ću vam za 3 minuta razjasniti kako je implementirana dugoročna memorija u Codex-u.
Zavežite pojaseve, krećemo~
Prvo, kako svaki razgovor postaje dugoročna memorija.
Ne čuva se nakon svakog razgovora. Codex u pozadini obrađuje stari zadatak kad god započnete novi zadatak (ili nit), i iz njega sačuvava vredne memorije.
Codex zaduži pod-agenta da pročita istorijski razgovor i izdvaja dugoročnu memoriju prema sledećem prioritetu: prvo čita šta ste vi rekli i koje su rezultate vratili alati, dok odgovore modela uzima samo kao referencu.
Zatim procenjuje: da li bi agent radio bolje ako bi ovu memoriju sačuvao?
Ne? Onda je ne čuva.
Ovom jednom potezu se odmah odbacuje gomila sadržaja od malog značaja poput „zdravo", „hvala", „OK". Nakon generisanja se radi i deidentifikacija — API ključevi i lozinke se zamenjuju.

Da? Onda se čuva u SQLite.
A pametni među vama će sigurno pomisliti: pošto svaki novi zadatak generiše dugoročnu memoriju, neće li vremenom SQLite puknuti?
Codex je očito, baš kao i pametni vi, smislio elegantno rešenje.
Svaka memorija nosi dva pokazatelja: usage_count, odnosno koliko je puta referencirana; i last_usage, odnosno vreme poslednje upotrebe.
Sa ova dva polja, stvari su mnogo lakše. Memorije koje se često koriste idu na vrh, a one koje dugo nisu korišćene se postepeno eliminišu.
Obratite pažnju — ovaj korak ne koristi vektorsku sličnost za bodovanje, nema Embedding, nema Top-K. Prosto rangira po frekvenciji i starosti. Jednostavno i praktično.

A pametni među vama će opet pitati: rangirano je, šta onda?
Zatim sledi druga faza. Uzme se nekoliko memorija sa vrha rang-liste i pokrene novi pod-agent da ih kategorizuje.
Prvi sloj je sažetak memorije, uglavnom gust profil korisnika, koji se automatski injektuje u kontekst za novi zadatak. Tako novi zadatak odmah zna ko ste.
Drugi sloj je detaljan priručnik za rad, koji se pretražuje po ključnim rečima. Moj lokalni MEMORY.md trenutno ima hiljadušestotinakest linija — iako se pretražuje samo po ključnim rečima, veoma je brz.
Treći sloj su detaljni dokazi za svaki zadatak — šta je urađeno, u šta se upalo.
Četvrti sloj su veštine. Ponavljajući procesi se nadograđuju u ponovljive standarde — sa uslovima okidačima, koracima i načinima provere.

Važna napomena. Pod-agent u drugoj fazi ima veoma ograničena ovlašćenja: ne može na internet, ne može da zadužuje pod-agente, ne može da čita svoju staru memoriju.
Zašto?
Da se spreči „pamćenje sopstvenih generisanih memorija", čime bi se onečistio sažetak memorije.
Na kraju, kratko rezime.
Dugoročna memorija Codex-a prvo destiluje i sažima LLM, zatim je SQLite koristi kao tranzit, a onda se konačno sređuje u Markdown-u prema broju korišćenja i starosti.
Otvorite vaš lokalni folder ~/.codex/memories/ i videćete fajlove dugoročne memorije Codex-a.

Da li ste savladali ovo znanje? Želite još teških AI saznanja,
