Pravo AI agenta da ćuti — naslovna

Deo 3 od 3 — „Memorija za AI agente” Zašto prava metrika nije accuracy — već nula sigurno-pogrešnih akcija

Zamisli dva scenarija.

U prvom — stariji kardiohirurg gleda u snimak i kaže: „Ne znam. Postoje dve konkurentske hipoteze ovde, simptomi se preklapaju. Trebaju nam dodatni testovi — konkretno ova tri, plus CT sa kontrastom. Dok ih ne vidim, neću dati odgovor koji bih branio.”

U drugom — mladi stažista samouvereno isporučuje dijagnozu za trideset sekundi, oslonjen na sličan slučaj iz udžbenika prošle nedelje. Sigurno. Jasno. Bez sumnje.

Kome bi poverio operaciju svoje majke?

Trenutno, svaki AI agent koji deplojujemo je drugi doktor. Samouveren. Brz. Nikad ne kaže „ne znam.” I upravo zato im ne možeš poveriti ništa bolnije od prepravljanja README-a.

Danas — kako to promeniti. Ne algoritamski. Arhitektonski.


Trula metrika koja nas je sve otrovala

Postoji nepisani konsenzus u industriji koji smatram katastrofom: merimo modele i sisteme po accuracy — procentu tačnih odgovora na benchmark-u.

GPT-4 ima 86% na MMLU. Claude — 88%. Gemini — 90%. Bolje, bolje, još bolje. Broj raste.

Ono što taj broj ne pokazuje: preostali 10–14%. To nisu „odgovori koje model nije dao.” To su samouvereno generisani pogrešni odgovori, vizuelno neodvojivi od tačnih. Model nema svetlo upozorenja za „nisam siguran ovde.” Sve generiše sa istom tekstualnom samouverenošću.

Kad koristiš takav model za pisanje beleški — okej. Kad ga koristiš za produkcijski kod, medicinske odluke, pravna mišljenja, finansijske transakcije — 10% sigurnih halucinacija znači 10% slučajeva u kojima ti sistem laže pravim licem.

Prava metrika za produkcijski AI zvuči drugačije:

0% sigurno-pogrešnih akcija pri prihvatljivom abstain rate-u.

Ne „procenat tačnih odgovora.” Već „procenat pogrešnih akcija” — nula. I odvojeno — abstain rate: koliko često sistem pošteno kaže „ne znam, treba mi podatak / verifikacija / razjašnjenje.” Nula pogrešnih akcija plus 30% abstain je deset puta više production-ready od 90% accuracy sa 10% sigurnih halucinacija.

Primeti: nisam rekao „0% pogrešnih odgovora.” Rekao sam „0% pogrešnih akcija.” Razlika je važna. Odgovor su reči. Akcija je commit, transakcija, dijagnoza, API poziv, izmena u produkciji. Reči se mogu ponovo pročitati i odbaciti. Akcija se već desila.

I to razdvajanje između „odgovora” i „akcije” — to je ono što arhitektonski nedostaje u modernim AI agentima.


Abstain kao first-class ishod

U delu 2 ove serije postavio sam sedam principa prave memorije, i drugi je bio strict mode. Brzo podsećanje: pre nego što činjenica dospe u prompt kontekst, prolazi kroz vrata — izvor, confidence, temporal validity, bez nerešenih kontradikcija. Ako nijedna činjenica nije prošla — sistem vraća abstain = true, sa eksplicitnim razlogom.

Postoji detalj koji želim da podvučem odvojeno. Abstain nije greška. To je rezultat. Toliko first-class koliko i „odgovor” ili „akcija.” Ako tvoj AI ima tačno dva moguća ishoda — „odgovorio” i „pogrešio” — nema arhitektonskog mesta za pošteno „ne znam.” Što znači da će izmišljati.

U razumnom sistemu, postoji najmanje četiri ishoda:

  • answer — dovoljno dokaza, odgovor dat, akcija izvršena
  • clarification request — delimični dokaz, treba korisnikov input
  • abstain → brain task — nedovoljno dokaza, zabeleženo kao backlog zadatak sa eksplicitnim zahtevom za podatak
  • escalation — postoji kontradikcija koja zahteva ljudsku reviziju

I poslednja tri nisu fallback-ovi. Ne „kad sve pođe naopako.” Oni su puni, očekivani, dizajnirani putevi.

Kad pitam braincore da nađe odluku o auth flow-u na projektu na kome radimo tri meseca — nalazi je. Kad pitam o projektu koji sam upravo počeo, gde ništa nije zabeleženo — ne izmišlja. Kaže: „Nemam dokaze o ovom pitanju. Kreiran brain task: skupiti odluke o auth, izvor — naš trenutni design dokument, vlasnik — ti. Kad popuniš, pitaj ponovo.”

Ovo nije bug. To je ispravno ponašanje. Primeti šta se desilo: sistem me nije blokirao. Nije rekao „error, no data.” On je pretvorio neznanje u zadatak, koji sad živi u njegovom backlog-u i periodično će se sam podsećati.


Self-Tasking. Mozak sa backlog-om, a ne pasivni search engine

Stvar koja me najviše plaši kod modernih „AI agenata” je da su pasivni. Čekaju prompt. Svaki. Put. Ne pamte ništa između sesija. Nemaju interni backlog. Ne shvataju da imaju nerešena pitanja.

To nije „agent.” To je funkcija u kostimu agenta. Funkcija uzima input, vraća output. Agent ima ciljeve, stanje i sopstvene zadatke između zahteva.

U pravom kognitivnom runtime-u postoji odvojen entitet — brain tasks. Automatski se pojavljuju:

  • truth.contradiction — kontradikcija nađena u knowledge graph-u → zadatak za rešavanje
  • truth.staleness — činjenica nije potvrđena dugo vremena → zadatak za verifikaciju
  • strict.abstain — sistem je odbio da odgovori → zadatak za nalaženje dokaza
  • selflearn.skill_scorecard — veština počela često da pada → zadatak za popravku
  • specs.evidence_gap — zahtev bez dokaza pokrivenosti → zadatak za prikupljanje
  • tests.failing_coverage — testovi ne prolaze → zadatak za popravku
  • learning.failure_pattern — detektovan ponavljajući pattern greške → zadatak za generalizaciju u pravilo

Svaki zadatak sam sebi prioritizuje po jednostavnoj formuli:

priority = f(urgency, impact, confidence, risk, effort, dependency_readiness)

I u bilo kom trenutku korisnik može da pita: „pokaži sledećih pet zadataka, zašto su važni, koje mogu bezbedno da uradim sad, koji zahtevaju moj input.” To nije isti chat gde svaki put počinješ sa praznom tablom. To je radno okruženje sa sopstvenom memorijom o tome šta nije urađeno.

Ovo je obrt u perspektivi. Ne „korisnik se pojavi i pita, agent odgovori.” Već „agent radi u pozadini, akumulira otvorene niti, i sam ti kaže — evo šta je važno sad.”

Pokaži mi RAG stack koji to radi. Spojler: ne postoji. Jer RAG je search engine, ne agent. I kad neko kaže „naš RAG-bazirani AI ima agency” — to je marketinška fikcija. Agency zahteva interno stanje, ciljeve, backlog i self-assessment. RAG nema ništa od toga.


Cognitive Runtime > Veličina modela

Poslednji mit za rušenje.

„Kad izađe GPT-5 / Claude 5 / Gemini 3 — memorija će se sama rešiti.” Ne. Neće. Nikad.

Memorija nije osobina modela. To je osobina sistema u kome model radi. Analogija:

Čovek ima dobru memoriju ne zato što neuroni brzo računaju. Čovek ima dobru memoriju zato što postoji hipokampus, neokorteks, konsolidacija tokom sna, emocionalno filtriranje kroz amigdalu, i arhitektonsko razdvajanje između working / episodic / semantic / procedural memory. To je infrastruktura, ne računarska snaga.

Učini LLM deset puta većim — memorija se i dalje ne pojavljuje. Izgradi runtime oko postojećeg LLM-a koji implementira sedam principa iz dela 2 plus abstain plus self-tasking — i slab lokalni model u tom runtime-u počinje da radi stvari koje GPT-5 sa RAG-memorijom arhitektonski ne može.

Ne zato što je pametniji. Već zato što runtime radi za njega ono što ne bi morao da radi sam: pamti, verifikuje, odbija, sam sebi postavlja zadatke.

To je, uzgred, jedini smislen put napred u svetu gde su foundation modeli commodity. Kad svi imaju otprilike ekvivalentne Claude/GPT/Gemini — konkurentska prednost može doći samo od onoga oko modela. Domain-specific kognitivni runtime. Project-specific memorija. Team-specific pravila.

I ova opklada je takođe o privatnosti. O suverenitetu podataka. O činjenici da je memorija tvog projekta tvoj kapital, i predaja je third-party vector DB-u za mesečnu rentu je strateška greška koju ćeš primetiti tek za tri godine, kad više ne možeš da odeš.

Zato je, uzgred, braincore lokalni Go binary koji po default-u radi bez OpenAI-ja i bez Anthropic-a. Ne zato što sam protiv njih (paying customer sam oba). Već zato što je arhitektonski ispravan put runtime u kome je model zamenljiva komponenta, a ne centar gravitacije.


Checklist za sve koji grade AI proizvode upravo sad

Ako si pročitao celu seriju i misliš „okej, slažem se, šta da radim u ponedeljak ujutru?” — evo deset stavki po kojima možeš početi da se krećeš bez obzira da li koristiš braincore ili ne.

  1. Izbaci reč „memorija” iz svog stack-a ako imaš RAG. Zovi to retrieval ili search — odmah skida 80% naduvanih očekivanja.
  2. Uvedi truth_status za svaku činjenicu. Minimum: hypothesis | confirmed | deprecated. Ne dozvoli confirmed bez source_ref.
  3. Uvedi valid_from / valid_until. Bilo koja činjenica bez temporal validity je hipoteza, ne činjenica.
  4. Učini abstain first-class ishodom. Ne „kad stvari pođu naopako” — već kao jedan od četiri validna rezultata.
  5. Razlikuj staging | working | consolidated | archived. Ne gomilaj sve u jednu kolekciju.
  6. Negative memory. Šta se polomilo — beleži eksplicitno, sa linkom na failing test ili commit.
  7. Entity disambiguation. Nikad ne auto-merge-uj entitete pri niskoj confidence. Kreiraj ambiguity record.
  8. Kauzalni lanci za odluke. Ne „tekst” — problem → alternatives → decision → reasoning → outcome.
  9. Lokalno gde je moguće. Memorija projekta je tvoj kapital.
  10. Metrika nije „procenat tačnih odgovora.” Već 0% pogrešnih akcija pri prihvatljivom abstain rate-u.

Ne sve odjednom. Izaberi dva-tri i počni. Za mesec dana imaćeš AI sistem kome možeš verovati više nego većini koji postoje.


Epilog. Kognitivna higijena za AI industriju

Umoran sam od toga što reč „memorija” lepe na svaku vector bazu sa embedding-ima. To je devalvacija termina — kao da nazoveš tabelu sa jednom kolonom text VARCHAR knowledge base-om. Tehnički — da. Suštinski — ne.

Memorija je:

  • struktura, ne ravna lista
  • znanje granice, ne sigurni bullshit
  • kauzalni lanci, ne chunk-ovi
  • entity-aware, ne string-aware
  • temporal-aware, ne „kreirano juče, validno zauvek”
  • samokorigujuća, ne samozavaravajuća
  • upravljana, ne „gomilaj šta god, sortiraj kasnije”
  • abstain-sposobna, ne „uvek odgovara”

Ako tvoj „AI sa memorijom” ne radi bar polovinu od ovog — tvoj AI nema memoriju. Ima rezultate pretrage. To nisu iste stvari.

Poslednja stvar. Ne kažem ti da bacaš RAG. RAG je odličan alat za svoju klasu zadataka (nađi mi paragraf o X u 100 dokumenata). Kažem ti da prestaneš da zoveš RAG memorijom i počneš da gradiš prave kognitivne runtime — sporije, disciplinovanije, sa eksplicitnim vratima i eksplicitnim abstain. To je jedini put ka AI sistemima kojima možeš verovati za bilo šta važnije od prepravljanja README-a.

Ako si startup sa „naš AI ima long-term memory na vector bazi” u pitch deck-u — zatvori taj slajd, prepravi ga, i za dve godine ćeš sebi zahvaliti.

Ako si developer koji se bori sa agentom koji zaboravlja šta si rekao juče — to nije agentova krivica. To je krivica onoga ko ti je prodao search engine umotanog u mozak.

Dobar AI agent nije onaj koji uvek odgovara. Dobar AI agent je onaj koji nikad ne preduzme sigurno-pogrešnu akciju. Između te dve rečenice leži cela provalija koja razdvaja AI tooling 2024. od AI tooling-a kome će se moći verovati u 2027.

Izabrao sam svoju stranu provalije. Gradim braincore — otvoren, Apache-2.0, u repozitorijumu. Ako prepoznaješ sebe u ovoj seriji — u istom smo brodu. Ako nešto u tvom stack-u radi drugačije — reci mi, zaista želim da znam.

Jedna stvar koju ne možeš da uradiš je da ćutiš.


TL;DR cele serije:

  • Deo 1: RAG = Ctrl+F sa embeddings-ima. To je pretraga, ne memorija. Mem0/Letta/Zep — RAG u oblogama. 1M kontekst je RAM, ne disk.
  • Deo 2: Prava memorija = sedam principa u kombinaciji. Atomske jedinice + lifecycle + truth_status + temporal + kauzalni lanci + AST identitet + internal git + memory scoring + negative memory. Svaki postoji izolovano. Spojeno — drugačiji proizvod.
  • Deo 3: Metrika za produkcijski AI nije accuracy — već 0% sigurno-pogrešnih akcija. Abstain je first-class ishod, ne greška. Kognitivni runtime > veličina modela.

Ako tvoj AI „pamti” preko vector_db.query(top_k=5) — ima demenciju prerušenu u sigurnost. Popravi arhitekturu, ne model.


Deo 3 od 3. Serija završena. Ako je odjeknulo — podeli. Ako se ne slažeš — reci mi u komentarima, volim suštinske argumente.