Избранное
total-agent-memory totalmemory.dev
Постоянная память для Claude Code и Codex CLI — knowledge graph, multi-representation эмбеддинги, 3D WebGL визуализация.
- Python
- SQLite
- FAISS
- BGE
- Ollama
- MCP
- Three.js
Проблема
Coding-агент без памяти переспрашивает одно и то же каждую сессию. И повторяет те же ошибки. Context window — не память, это working set. Векторный store — тоже не память, это Ctrl+F с эмбеддингами.
Хотелось ближе к тому, как работает senior-инженер: эпизодический recall (“это пробовали в прошлый вторник, не сработало”), семантический (“в компании логи пишутся в JSON”), decay, противоречия и право сказать “не знаю”.
Архитектура
- Hot path: SQLite + FTS5 — keyword recall за <50 мс.
- Warm path: BGE / FastEmbed эмбеддинги в FAISS для semantic similarity.
- Graph layer: сущности + triples + cognitive activation spreading.
- Re-rank: опциональный CrossEncoder для precision.
- Diversity: MMR pass, чтобы агент не уходил в echo-chamber.
6-стадийный пайплайн (FTS → BM25 → semantic → fuzzy → graph → MMR) даёт R@5 = 97.45 % на LongMemEval default — выше опубликованных бейзлайнов.
Ключевое в реализации
- Multi-representation хранилище — каждое воспоминание лежит как raw text, нормализованный, BM25-токенизированный, embedding и нода графа. Под запрос подбирается нужное представление.
- Self-extracting knowledge graph — сущности и triples достаются маленькой локальной LLM, объединяются fact-merger’ом с разруливанием противоречий.
- Time travel — каждое изменение — чекпойнт, можно
kg at <timestamp>и посмотреть, во что агент верил в прошлый четверг. - 3D WebGL inspector — весь граф решений ходим в Three.js: drag-узлы, replay эпизодов, видно как растекается attention.
Результаты
Production-ready, MIT, MCP-native. Работает на Raspberry Pi 4 (если выключить embedding-стек). Подключается к Claude Code, Codex, Cursor, Cline через MCP — и агент перестаёт переспрашивать базовое.
Уроки
- Recall — это стек, а не сервис. Лучшая память для AI — все техники сразу, через fusion.
- Забывание — это фича. Без decay store превращается в чердак за три недели.
- Маленькая осознанная память бьёт огромный индекс. Прирост R@5 пришёл от прунинга, а не от лишних измерений.