Izabrani projekti
total-agent-memory totalmemory.dev
Trajna memorija za Claude Code i Codex CLI — knowledge graph, multi-representation embeddings, 3D WebGL vizuelizacija.
- Python
- SQLite
- FAISS
- BGE
- Ollama
- MCP
- Three.js
Problem
Coding agent bez memorije pita iste stvari svake sesije. I ponavlja iste greške. Context window nije memorija, to je radni skup. Vector store takođe nije memorija, to je Ctrl+F sa embeddings-ima.
Hteo sam nešto bliže senior inženjeru: epizodni recall (“probali smo prošlog utorka, nije radilo”), semantički (“u kompaniji logujemo u JSON”), decay, kontradikcije i pravo da kažem “ne znam”.
Arhitektura
- Hot path: SQLite + FTS5 — keyword recall ispod 50 ms.
- Warm path: BGE / FastEmbed embeddings u FAISS-u za semantic similarity.
- Graph sloj: entiteti + triples + cognitive activation spreading.
- Re-rank: opcioni CrossEncoder za preciznost.
- Diversity: MMR pass da agent ne uđe u echo-chamber.
6-stage pipeline (FTS → BM25 → semantic → fuzzy → graph → MMR) postiže R@5 = 97.45 % na LongMemEval default — iznad objavljenih baseline-ova.
Ključne odluke
- Multi-representation skladište — svako sećanje stoji kao raw text, normalizovan, BM25-tokenizovan, embedding i graph čvor. Po upitu se bira pravo predstavljanje.
- Self-extracting knowledge graph — entiteti i triples se izvlače malim lokalnim LLM-om, fact-merger spaja i razrešava kontradikcije.
- Time travel — svaka promena je checkpoint,
kg at <timestamp>pokazuje šta je agent verovao prošlog četvrtka. - 3D WebGL inspektor — ceo graf odluka u Three.js-u: drag čvorova, replay epizoda, vidljivo širenje pažnje.
Rezultati
Production-ready, MIT, MCP-native. Radi na Raspberry Pi 4 (sa isključenim embedding stack-om). Plug-in u Claude Code, Codex, Cursor, Cline kroz MCP — agent prestaje da pita osnovne stvari.
Lekcije
- Recall je stack, ne servis. Najbolja memorija za AI je sve tehnike fusion-isane zajedno.
- Zaboravljanje je feature. Bez decay-a, store postaje ukleti tavan za tri nedelje.
- Mala promišljena memorija pobeđuje džinovski indeks. R@5 dobitak je došao od pruninga, ne od više dimenzija.