Как Memora дает ассистентам Claude Code долговременную память и граф знаний
Каждый, кто пробовал поручать агентам вроде Claude Code или Codex CLI длинные задачи, знает это чувство. Вчера вы полдня разбирались с неочевидным багом в авторизации, обсудили архитектурные ограничения и наметили рефакторинг. Сегодня открываете новую сессию, а модель снова предлагает то самое решение, от которого вы вчера отказались.
Обычные текстовые файлы памяти вроде MEMORY.md разрастаются за пару недель. Контекст забивается дублями, противоречащими друг другу фактами и устаревшими планами. Проект Memora решает эту проблему через Model Context Protocol (MCP), превращая разрозненные заметки агента в структурированную графовую базу знаний.

Что под капотом и зачем это нужно
Memora работает как MCP-сервер на Python, хранящий данные в локальной базе SQLite или облачных хранилищах (Cloudflare D1, S3, R2). Главная фишка здесь не просто в сохранении строк, а в том, как система обрабатывает новые факты.

Когда агент завершает задачу и хочет сохранить контекст, он вызывает команду поглощения данных (absorb). Встроенная языковая модель сопоставляет свежий факт с уже имеющимися записями и классифицирует его: дубликат, обновление, противоречие, связь или принципиально новое знание.
Если информация обновляет старую, Memora выстраивает цепочку версий. Старая запись не удаляется бесследно, а помечается устаревшей, сохраняя историю изменений. При обычном поиске агент видит только актуальный срез, но при необходимости может поднять полную ретроспективу.
Чем проект выделяется на практике
В репозитории собрано несколько инженерных решений, которых сильно не хватает стандартным RAG-памяти для агентов.

1. Умная дедупликация и тематические выжимки
Вместо того чтобы скармливать модели десятки похожих кусков текста, инструмент объединяет факты по темам. Метод memory_digest(topic) одним вызовом собирает все релевантные воспоминания, открытые TODO, найденные баги и связи между ними.
Дубликаты отслеживаются автоматически:
# Поиск похожих записей через векторную близость и LLM-анализ
memory_find_duplicates(min_similarity=0.7, max_similarity=0.95, limit=10, use_llm=True)
# Объединение записей с нужной стратегией
memory_merge(source_id=123, target_id=456, merge_strategy="append")
При сравнении LLM выдает четкий вердикт: дубликат, похожая мысль или разные вещи, дополняя оценку аргументацией и рекомендацией.
2. Структурированные документы и атомарные фрагменты
Часто агенту нужно запомнить не короткую фразу, а целый отчет об исследовании или архитектурное решение (ADR). Если сохранить markdown единым куском, точечный семантический поиск по нему будет работать посредственно.
Memora разбирает markdown на дерево фрагментов:
- таблицы превращаются в отдельные утверждения (claims);
- нумерованные списки становятся пунктами плана (plan items);
- списки ссылок уходят в референсы;
- разделы с рисками парсятся в риски.
Каждый фрагмент доступен для векторного поиска независимо, а исходный документ можно в любой момент выгрузить целиком. Фрагменты защищены от случайного удаления или слияния системными проверками.
3. Интерактивный граф и веб-панель
Вместе с MCP-сервером запускается локальный веб-интерфейс на порту 8765. В нем можно смотреть на граф знаний, фильтровать связи по тегам, отслеживать таймлайн действий и общаться с базой через встроенный RAG-чат.

Чат в веб-интерфейсе поддерживает вызовы функций. Можно прямо из браузера попросить модель: «Удали заметку #42» или «Обнови требования в задаче #10», и она внесет правки в базу.
Настройка и грабли с эмбеддингами
Ставится пакет через pip:
pip install memora-mcp
Для локальных эмбеддингов без обращения к внешним API пригодится опция [local]:
pip install "memora-mcp[local]"
Подключение к Claude Code настраивается в файле .mcp.json в корне проекта:
{
"mcpServers": {
"memora": {
"command": "memora-server",
"args": [],
"env": {
"MEMORA_DB_PATH": "~/.local/share/memora/memories.db",
"MEMORA_ALLOW_ANY_TAG": "1",
"MEMORA_GRAPH_PORT": "8765",
"MEMORA_EMBEDDING_STRICT": "1"
}
}
}
}
Авторы проекта честно предупреждают об одной распространенной ошибке в конфигурации. Memora умеет разделять провайдера для LLM (например, OpenRouter) и провайдера для векторных представлений (например, Cloudflare Workers AI или OpenAI).
Если вы используете OpenRouter для рассуждений, помните: у него нет эндпоинта для эмбеддингов. Если ошибиться в конфиге и не выставить флаг MEMORA_EMBEDDING_STRICT=1, сервер молча откатится на примитивный поиск по ключевым словам TF-IDF. База продолжит отвечать, но качество векторного поиска незаметно упадет. Строгий режим сразу выдаст ошибку, если эндпоинт векторизации недоступен.
Для пользователей Neovim есть приятный бонус в виде интеграции с Telescope: плагин memora.lua позволяет искать по памяти горячей клавишей прямо во время редактирования кода.
Кому проект пригодится
Memora подойдет тем, кто активно использует Claude Code, Codex CLI или самописных агентов на MCP для долгоживущих проектов. Она закрывает главную боль агентной разработки — потерю контекста между перезапусками сессий.
Если вам нужна база знаний, которая не засоряется дубликатами и наглядно визуализирует связи между задачами и архитектурными решениями, попробовать инструмент определенно имеет смысл. Исходный код доступен под лицензией MIT в репозитории agentic-box/memora.
