Intervjuer te pita: „Kako da Agent dobije memoriju?" Ako odgovoriš „samo malo proširi context window i gotovo", čestitam, opet si nagazio na minu.
Zašto?
Zato što prozor, ma koliko veliki, ostaje samo privremena kratkoročna memorija. Osim toga, taj prozor ne može biti beskonačan — prozor DeepSeek V4 je već ogroman, a iznosi samo 1 milion token-a; uz to, čim otvoriš novi prozor, i prethodna privremena memorija nestaje. Prava memorija se oslanja na Harness Engineering i Context Engineering.
U prethodna dva dela rekli smo da LLM nema memoriju i da context window ima ograničenje veličine. Danas je na redu najvažniji deo — kako zaista doći do toga da Agent ima memoriju.
Ovim pitanjem intervjuer proverava tri nivoa: prvo, koje probleme redom rešavaju kratkoročna i dugoročna memorija; drugo, kako se svaka od njih implementira; treće, kako se održava memorija kad se nagomila.
Dobro, evo sad odgovora za pun bod, nauči napamet i gotovo.
LLM je stateless. Da bi Agent imao memoriju, na inženjerskom nivou mora da održava dve stvari: kratkoročnu i dugoročnu memoriju.
Prvo o kratkoročnoj memoriji. Kratkoročna memorija rešava problem unutar jednog razgovora — kako u ograničenom context window-u zadržati što više korisnih informacija.
Dva načina.
Prvi, sliding window. Zadrži samo poslednjih N krugova razgovora, a najstarije prosto odbaci. Prosto i sirovo, ali koristi. U većini slučajeva kontekst iz poslednjih nekoliko krugova važniji je od onog na početku.
Drugi, kompresija u sumarnu belešku. LLM sabija prvih 20 krugova razgovora u jednu sumarnu belešku od 200 znakova i ubacuje je nazad u prozor za dalju upotrebu. Token-a se uštedi, a ključne informacije ostanu. Baš tako radi Claude Code — kad razgovor postane predug, sistem automatski sabija prethodni sadržaj u sumarnu belešku.
A sada o dugoročnoj memoriji. Dugoročna memorija rešava problem preko razgovora — danas kažeš Agent-u kako se zoveš i čime se baviš, a kad sledeći put otvoriš novi razgovor, on te i dalje prepoznaje.
Kako? U četiri koraka.
Prvi korak, ekstrakcija. Agent iz razgovora izdvoji ključne informacije. Na primer „korisnik je programer", „preferira Python", „projekat koristi Spring AI".
Drugi korak, skladištenje. Te informacije se upišu u spoljašnje fajlove ili bazu podataka i sačuvaju trajno. Razgovor se završio, a informacije i dalje stoje.
Treći korak, pretraga. Kad se sledeći put otvori novi razgovor, na osnovu trenutnog korisnikovog ulaza pronalaze se relevantne memorije.
Četvrti korak, ubacivanje. Pronađene memorije se ubace u system prompt. Model ih pročita i već „vidi" tvoje istorijske informacije.
Jedan primer. Memorijski sistem Claude Code-a upravo funkcioniše tako što ključne informacije zapisuje kao markdown fajlove i čuva ih u lokalnom projektu. Pri pokretanju svakog novog razgovora, automatski ih učitava u kontekst. Model i dalje ostaje stateless, ali ti imaš osećaj da te „poznaje".
Ako intervjuer dalje pita: „Šta kad se memorija nagomila ili zastari?"
Reci mu — oslanja se na Memory Reflection. Agent povremeno prelista postojeću memoriju i odradi tri stvari:
- Prvo, ažurira zastarele informacije, na primer korisnik je promenio posao, pa se stara pozicija obeleži kao istekla;
- Drugo, spoji duplikate — pet razgovora pomene „preferira Python", dovoljno je to stopiti u jednu;
- Treće, uoči protivrečnost i sam je ispravi: u memoriji stoji „korisnik je vegetarijanac", a korisnik pita „koji je dobar steak house u blizini", pa Agent sam krene da proverava.
QoderWork ima funkciju Memory Reflection — Agent sam proverava da li je svaka memorija još uvek tačna i da li protivreči novom razgovoru.
Na kraju poklanjam svima jednu izreku — kratkoročno uz kompresiju, dugoročno uz spoljašnje skladište; ekstrakcija, skladištenje, pretraga, ubacivanjem postaje memorija.
Da li si savladao ovo pitanje? Za još izvornih, detaljnih rastavljanja Agent pitanja sa intervju-a, lajkuj i prati
