AI asistent sa amnezijom — naslovna

Kako sam izgradio sistem trajne memorije koji čini da Claude Code i Codex CLI pamte sve između sesija.

11 uveče, utorak. Proveo si poslednja tri sata duboko u Claude Code sesiji, refaktorišući payment servis. Claude savršeno razume tvoju arhitekturu — repository pattern, lanac middleware-a, konvencije imenovanja na koje ste se složili pre dve nedelje. Kucaš /compact poslednji put, udaraš u limit konteksta, zatvaraš terminal.

Sreda ujutru. Nova sesija. Novi Claude. Ne zna ništa.

„Kakva je struktura tvog projekta?” pita. Opet.

Objašnjavaš arhitekturu. Opet. Ispravljaš istu grešku koju je napravio prošlog četvrtka — koristio map[string]interface{} umesto tipiziranih DTO-ova. Opet. Lepiš isti dokument sa konvencijama. Opet.

Ako ovo zvuči poznato, nisi sam. Proveo sam dva meseca živeći u ovoj petlji kroz 72 projekta pre nego što sam odlučio da to popravim.


Pravi problem: stateless by design

Claude Code i OpenAI Codex CLI su izvanredni alati. Ali dele fundamentalno ograničenje: nula trajne memorije između sesija. Svaki razgovor počinje iz nule.

Ovo nije bug — to je arhitektura. Ovi alati su stateless by design. Ali za bilo koga ko radi ozbiljan, trajan razvoj, statelessness je ubica produktivnosti.

Evo šta gubiš svaki put kad se sesija završi:

  • Arhitektonske odluke i razloge iza njih
  • Rešenja bug-ova koje si već rešio
  • Konvencije projekta na kojima su se izgrađivale sesije
  • Greške koje je Claude napravio (i ispravke koje si dao)
  • Mentalni model celog tvog codebase-a

Umoran sam od toga što sam ljudski memory bank za svog AI asistenta. Pa sam izgradio total-agent-memory — open-source MCP server koji daje Claude Code-u (i Codex CLI-ju, Cursor-u, Cline-u, Continue, Aider-u, Windsurf-u, Gemini CLI, OpenCode-u — svemu što govori MCP) trajni mozak.

Sajt: totalmemory.dev · GitHub: vbcherepanov/total-agent-memory

💡 Update (maj 2026): Projekat je originalno objavljen kao claude-total-memory, a u v12.0.0 preimenovan je u total-agent-memory — radi sa bilo kojim MCP klijentom, ne samo sa Claude Code. Stari claude-total-memory paket na PyPI sada je deprecation shim (povlači total-agent-memory>=12.0.0), pa postojeće instalacije nastavljaju da rade.


Šta on zaista radi

total-agent-memory je Python MCP server koji stoji uz Claude Code. Pruža 32 alata u 6 kategorija koji omogućavaju Claude-u da čuva, pretražuje, povezuje i uči iz znanja koje opstaje zauvek.

Razmišljaj o tome kao o nadogradnji Claude-a sa briljantnog kolege sa amnezijom na onog koji vodi detaljan inženjerski notes.

Pre i posle

Pre (svako ponedeljak ujutru):

Ti: Nastavljamo rad na payment servisu
Claude: Rado ću pomoći! Možeš li da mi kažeš o strukturi tvog
projekta, konvencijama i šta smo do sad uradili?
Ti: *uzdišeš, lepiš 2000 tokena konteksta*

Posle:

Ti: Nastavljamo rad na payment servisu
Claude: [memory_recall("payment service architecture")]
Razumem. Prošla sesija smo refaktorisali PaymentService da koristi
gateway pattern. Tinkoff integracija je gotova, sledeći je Stripe.
Preferiraš constructor injection i metrics middleware koji smo
postavili u internal/middleware/metrics.go.
Da nastavim odakle smo stali.

To je razlika. Bez ponovnog objašnjavanja. Bez lepljenja konteksta. Claude jednostavno zna.


32 alata u 6 kategorija

1. Core Memory (12 alata)

Temelj. Čuvaj i pretražuj znanje sa pet tipova: decision, solution, lesson, fact i convention.

# Claude čuva odluku tokom tvoje sesije
memory_save(
content="Koristi UUID v7 za sve primarne ključeve umesto SERIAL.
Razlozi: sortabilan po vremenu, nema sequence contention,
bolji za distribuirane sisteme.",
type="decision",
tags=["database", "postgresql", "architecture"],
project="payment-service"
)
# Sledeće nedelje, druga sesija, Claude pretražuje
memory_recall(
query="primary key strategy for postgresql",
detail="full"
)
# Vraća: tačno odluku iznad, rangiranu po relevantnosti

Pretraga nije samo keyword matching. To je 4-tier hibridni pipeline:

Upit: "docker networking between services"

├── Tier 1: FTS5 + BM25 keyword search
│ └── Nalazi tačna podudaranja: "docker", "networking"

├── Tier 2: Semantic search (ChromaDB vectors)
│ └── Nalazi povezano: "container communication", "bridge network"

├── Tier 3: Fuzzy matching (SequenceMatcher)
│ └── Hvata greške u kucanju: "dokcer netowrking" i dalje radi

└── Tier 4: Graph expansion
└── Sledi relacije: docker networking → compose config → env variables

Svi tier-ovi se spajaju kroz Reciprocal Rank Fusion (RRF)

Ovo je važno. BM25 sam postiže 89% na retrieval benchmark-ima. Semantic search sam pogađa 91%. Ceo 4-tier pipeline sa RRF fusion-om? 97.45% na LongMemEval R@5 — prevazilazi MemPalace-ovih 96.6%.

2. Self-Improvement (6 alata) — Killer Feature

Ovde postaje zanimljivo. Claude ne samo skladišti znanje — on uči iz svojih sopstvenih grešaka.

Evo pipeline-a:

Sesija 1: Claude koristi `npm install` unutar Docker-a
→ Hook detektuje grešku
→ self_error_log(category="docker", error="running npm outside container")

Sesija 3: Ista greška ponovo
→ Brojač grešaka za "docker" kategoriju: 2

Sesija 5: Treći put
→ 3+ grešaka u istoj kategoriji triggeruje auto-insight
→ self_insight("Always run package managers inside Docker containers")

Insight dobija sigurnost kroz uspešnu primenu...

→ Promovisan u SOUL pravilo (importance >= 5, confidence >= 0.8)
→ Pravilo se učitava na SVAKOM početku sesije
→ Claude više nikad ne pravi tu grešku

Alati: self_error_log, self_insight, self_rules, self_patterns, self_reflect, self_rules_context.

Koncept SOUL pravila — trajnih pravila ponašanja koja oblikuju kako Claude radi — je ono što ovo čini više od baze podataka. To je feedback loop. Claude bukvalno postaje bolji u radu sa tvojim codebase-om tokom vremena.

3. Knowledge Graph (4 alata)

Znanje nije ravno. Odluke se odnose na druge odluke. Rešenja referenciraju probleme koje su rešila. Graph hvata ove veze.

memory_relate(
from_id=42, # "Use gateway pattern for payments"
to_id=67, # "Tinkoff API requires idempotency keys"
relation="context"
)

Kad Claude poziva odluku o gateway pattern-u, automatski povlači povezan kontekst o zahtevima Tinkoff API-ja. Bez ručnog povezivanja nakon postavljanja početne relacije.

4. Episodic Memory (2 alata)

Činjenice ti govore šta. Epizode ti govore šta se desilo.

memory_episode_save(
content="Proveo 3 sata debug-ujući race condition u order
servisu. Korenski uzrok: deljeni database connection pool
između gorutina bez pravilnog context cancellation.
Popravljeno dodavanjem per-request connection checkout.",
context="payment-service sprint 4"
)

Kad Claude naiđe na sličan concurrency problem mesecima kasnije, ne samo da zna fix — pamti i debug putovanje i lažne početke.

5. Skills & Competencies (3 alata)

Claude prati u čemu je dobar i gde se muči.

memory_skill_get(skill="kubernetes-debugging")
# Vraća: nivo veštine, poslednje vežbanje, putanja poboljšanja

memory_self_assess()
# Vraća: jake strane, slabosti, slepe tačke na osnovu istorije grešaka

6. Advanced Cognitive Tools (5 alata)

Spreading activation (memory_associate), automatska izgradnja konteksta (memory_context_build), logovanje opservacija (memory_observe) i on-demand refleksija (memory_reflect_now).


Tehnička arhitektura

Ispod haube, namerno je jednostavno:

┌─────────────────────────────────────────────┐
│ MCP Server (Python). │
│ │
│ ┌──────────┐ ┌───────────┐ ┌──────────┐ │
│ │ SQLite │ │ ChromaDB │ │ Graph │ │
│ │ FTS5 │ │ (vectors) │ │ Engine │ │
│ │ + BM25 │ │ │ │ │ │
│ └──────────┘ └───────────┘ └──────────┘ │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ Privacy Layer (auto-redacts secrets) │ │
│ └──────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ Web Dashboard (localhost:37737) │ │
│ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────┘

Ključni dizajnerski izbori:

  • SQLite FTS5 za keyword pretragu sa pravilnim BM25 rangiranjem — bez potrebe za eksternim search engine-om
  • ChromaDB za vektorsku sličnost sa binary quantization za brzinu
  • Decay scoring sa 90-dnevnim half-life — sveže znanje rangira više, ali ništa se ne baca prerano
  • Retention zone: active (default) → archived (180 dana, više se ne poziva) → purged (365 dana arhivirano)
  • Auto-deduplication kroz Jaccard similarity (>0.85 threshold) sprečava nadimanje znanja
  • Privacy stripping automatski uklanja API ključeve, JWT-ove i email adrese pre skladištenja
  • Nula eksternih servisa — sve radi lokalno. Tvoje znanje o kodu nikad ne napušta tvoju mašinu.

Radi sa Claude Code I Codex CLI

Pošto je MCP server, bilo koji alat koji govori MCP protokol može ga koristiti. Konfiguriši jednom, i Claude Code i OpenAI Codex CLI dele istu memory bazu. Prebacuj se između alata bez gubitka konteksta.


Realni brojevi iz 2+ meseca svakodnevne upotrebe

Ovo nije weekend projekat o kome teoretišem. Radi na mojoj mašini u svakodnevnoj produkciji već više od dva meseca:

MetrikaVrednost
Aktivnih zapisa znanja1.683
Praćenih projekata72
Graph čvorova1.847
Graph ivica20.925
Naučenih veština177
Zabeleženih epizoda164

Subjektivna razlika je dramatična. Ponedeljak jutro je sa 15–20 minuta obnavljanja konteksta palo na praktično nulu. Claude nastavlja tačno odakle je stao — ne zato što je sesija opstala, već zato što je svaki važan deo konteksta sačuvan i instant pretraživ.


Self-Improvement Loop u praksi

Hajde da prođem kroz pravi scenarijo.

Nedelja 1: radim na Go projektu. Claude generiše handler sa 30 linija biznis logike unutra. Ispravljam ga — „handleri treba da budu tanki, ispod 15 linija, delegiraju u service sloj”. Claude se prilagodi. Ispravka se čuva kao convention.

Nedelja 2: drugi projekat, isti stack. Claude generiše još jedan debeo handler. Hook hvata moju ispravku, loguje je kroz self_error_log. To je greška #2 u kategoriji „go-architecture”.

Nedelja 3: dešava se ponovo. Greška #3. Sistem detektuje pattern i generiše insight: „Go handleri moraju biti tanki (<=15 linija) — delegiraj svu biznis logiku u service sloj”.

Posle nekoliko uspešnih primena, insight se promoviše u SOUL pravilo. Sad svaka nova sesija počinje sa tim da Claude zna ovo pravilo. Greška debelog handler-a prestaje da se dešava. Ne zato što sam ga podsetio — već zato što je naučio.

To je razlika između alata koji čuva tekst i onog koji se zaista poboljšava.


Kako početi

Izaberi šta odgovara tvom stack-u — svih šest putanja instalacije vode do istog MCP servera. Pune instrukcije na totalmemory.dev.

# Node (zero-install preko npx)
npx -y total-agent-memory connect claude-code

# Python preko uv (brzo)
uvx total-agent-memory

# Python preko pipx (izolovan venv)
pipx install total-agent-memory

# Homebrew (macOS / Linuxbrew)
brew install vbcherepanov/tap/total-memory

# Docker (multi-arch)
docker run --rm -p 37737:37737 -v ~/.tam:/data ghcr.io/vbcherepanov/total-agent-memory:latest

# Ručni clone
git clone https://github.com/vbcherepanov/total-agent-memory.git ~/total-agent-memory && cd ~/total-agent-memory && ./install.sh

Putanja kroz npx takođe upisuje MCP entry u izabrani IDE — connect claude-code, connect codex, connect cursor, connect cline, connect continue, connect aider, connect windsurf, connect gemini-cli, connect opencode.

Ako više voliš ručno — dodaj u ~/.claude/settings.json:

{
  "mcpServers": {
    "memory": {
      "command": "/absolute/path/to/.venv/bin/total-agent-memory",
      "env": {
        "TAM_MEMORY_DIR": "~/.tam"
      }
    }
  }
}

To je to. Sledeći put kad Claude Code pokrene se, ima 32 nova dostupna alata. Počni sa memory_save i memory_recall — ostalo se gradi odatle.


Ograničenja (iskreno gledište)

Nijedan projekat nije savršen. Evo šta da znaš:

  • First-session cold start: Memorija je u početku prazna. Treba 2–3 sesije aktivne upotrebe pre nego što se benefiti naslažu.
  • Skladište raste: 1.600+ zapisa zauzima oko 50MB sa vektorima. Nije briga za moderne mašine, ali nije ni nula.
  • Claude treba podsticaj na početku: Dok se SOUL pravila ne nakupe, možda ćeš morati da podsećaš Claude-a da koristi memory_recall na početku sesija. Hooks pomažu da se ovo automatizuje.
  • Python zavisnost: Server zahteva Python 3.10+ i nekoliko paketa. Install skripta to rešava, ali nije jedan binary.

Zašto open source

Izgradio sam ovo za sebe. Onda sam shvatio da svaki Claude Code korisnik ima isti problem. Projekat je MIT licenciran — koristi, fork-uj, modifikuj, doprinesi mu.

Memory problem je verovatno najveća tačka trenja u AI-asistiranom razvoju danas. Context windows nastavljaju da rastu, ali nikad neće biti beskonačni. A i da jesu, ponovno učitavanje konteksta svake sesije je rasipanje. Trajna memorija je prava apstrakcija.


Probaj

Ako koristiš Claude Code ili Codex CLI za pravi posao — ne demo, ne toy projekte, već stvaran trajan razvoj — ovo će promeniti tvoj workflow.

Daj zvezdicu repo-u, probaj nedelju dana, i vidi razliku kad tvoj AI asistent zaista pamti ko si i šta gradiš.

Sajt: totalmemory.dev · GitHub: vbcherepanov/total-agent-memory

Licenca: MIT — besplatno zauvek.


Vitalii Cherepanov je software inženjer koji gradi alate na preseku AI-ja i developer produktivnosti. Piše Go i PHP danju i uči Claude-a da pamti stvari noću.