План лекции
Сначала мы разберем, какой класс задач закрывает Supermemory и почему этот инструмент удобно рассматривать после Cognee. Затем отделим memory от обычного RAG: Supermemory делает ставку на extracted memories, user profiles, hybrid search and automatic forgetting, а не только на поиск chunks.
После этого пройдем архитектурную схему: Memory Engine, User Profiles, Hybrid Search, Connectors, File Processing and local runtime. В конце обсудим, где Supermemory подходит лучше всего, какие вопросы задавать перед self-hosting, как проверять качество памяти and чем он отличается от Cognee, Mem0 and Zep.
Цель лекции
Разобрать Supermemory как open-source memory and context engine, который объединяет персональную память пользователя, RAG по документам, connectors and локальный запуск в одном API-слое.
Ожидаемый результат
После лекции читатель понимает:
- чем Supermemory отличается от классического vector RAG;
- зачем нужны user profiles and container tags;
- как связаны
add,search,profile, connectors and MCP tools; - где Supermemory хорошо ложится в consumer AI, coding assistants and product agents;
- какие риски нужно проверить перед внедрением.
Короткая карточка инструмента
| Поле | Значение |
|---|---|
| Repository | https://github.com/supermemoryai/supermemory |
| Docs | https://supermemory.ai/docs |
| Product site | https://supermemory.ai |
| Stars snapshot | около 28.8k на 2026-08-08 по GitHub page |
| Primary language | TypeScript |
| License | MIT |
| Category | Memory and context engine |
| Главная идея | Один слой для memory, RAG, user profiles, connectors and file processing |
| Self-host/local | Есть local mode через binary / npx supermemory local |
Supermemory описывает себя как memory and context layer for AI. В README проекта акцент сделан на том, что система автоматически учится из разговоров, извлекает факты, строит user profiles, обрабатывает knowledge updates and contradictions, забывает устаревшую информацию and возвращает нужный context в нужный момент.
Для нашего курса Supermemory важен как пример memory platform, которая пытается сделать memory не дополнительной таблицей рядом с приложением, а отдельным API-продуктом с готовыми primitives for personalization.
Почему Supermemory не стоит считать просто RAG
Обычный RAG отвечает на вопрос:
Какие документы похожи на текущий запрос?
Memory layer отвечает на другой вопрос:
Что система уже знает о пользователе, проекте, истории решений и текущем состоянии?
В RAG один и тот же запрос двух пользователей часто возвращает одинаковый набор документов. В memory-aware системе одинаковый вопрос может требовать разного контекста:
- один пользователь предпочитает Python, другой TypeScript;
- один проект использует PostgreSQL, другой SQLite;
- у одного клиента issue уже исправлен, у другого еще открыт;
- вчерашний temporary fact уже не должен влиять на ответ;
- новое утверждение может заменить старое.
Supermemory как раз строится вокруг этой разницы. Он совмещает retrieval по knowledge base documents с personalized memory. Поэтому его удобнее относить к классу context engine, а не только к RAG wrapper.
Базовая mental model
В простом приложении агент работает так:
user message -> LLM -> answer
В memory-aware приложении появляется дополнительный слой:
user message -> memory/context engine -> selected context -> LLM -> answer -> memory update
Supermemory пытается сделать этот слой готовым:
Здесь важно не просто то, что есть поиск. Важнее, что Supermemory явно выделяет профиль пользователя как отдельный результат работы memory engine.
Ключевые термины
| Термин | Значение в контексте Supermemory |
|---|---|
Memory Engine |
Компонент, который извлекает факты, отслеживает updates, contradictions and forgetting. |
User Profile |
Сжатое представление пользователя: stable facts and dynamic recent context. |
Hybrid Search |
Поиск, который может вернуть и документы knowledge base, и персональные memories. |
Container tag |
Scope памяти: пользователь, проект, клиент, репозиторий, команда или другой контейнер. |
Connectors |
Интеграции для синхронизации внешних источников вроде Drive, Gmail, Notion, GitHub. |
MCP server |
Способ подключить память к совместимым AI clients через Model Context Protocol. |
Local mode |
Запуск Supermemory локально с тем же API-подходом, но на своей машине. |
Automatic forgetting |
Механизм, который должен не закреплять временные или устаревшие факты навсегда. |
Термин container tag особенно полезен. Он решает практическую проблему isolation. Если память не разделена по scope, агент начнет смешивать клиентов, проекты and пользователей. Это один из самых частых production bugs в agent memory.
Основные возможности
Supermemory объединяет несколько возможностей, которые в самодельной архитектуре часто собираются из разных библиотек.
| Возможность | Что дает |
|---|---|
| Conversation memory | Извлечение важных фактов из диалогов. |
| User profiles | Быстрый профиль пользователя для injection в prompt. |
| Hybrid search | Одним запросом искать и по RAG, и по memories. |
| Connectors | Автоматически подтягивать документы and внешние источники. |
| File processing | Обрабатывать PDFs, images with OCR, videos with transcription, code. |
| MCP and plugins | Подключать память к Claude Code, OpenCode, OpenClaw, Cursor-like workflows. |
| Local runtime | Прототипировать или запускать memory API локально. |
На уровне архитектуры это означает, что Supermemory берет на себя не только storage, но и orchestration: когда извлекать memory, как обновлять profile, как отдавать context and как синхронизировать внешние documents.
Как работает запись памяти
Самый простой API-паттерн выглядит так:
client.add(content, container_tag)
Но смысл операции шире, чем "положить текст в базу". Когда агент или приложение передает conversation fragment, memory engine должен решить:
- есть ли в этом fragment факты, которые стоит помнить;
- относится ли информация к stable profile или к temporary context;
- противоречит ли новая информация старой;
- нужно ли заменить старый факт;
- когда информация перестанет быть актуальной;
- к какому scope ее привязать.
Например, пользователь говорит:
Я больше не работаю над FastAPI-сервисом, сейчас занимаюсь ClickHouse pipeline.
Плохая память сохранит обе фразы как равноправные facts. Хорошая память должна понять, что работает над FastAPI-сервисом стало outdated, а занимается ClickHouse pipeline стало current dynamic context.
Supermemory заявляет именно такую модель: update handling, contradiction handling and automatic forgetting.
User profile как отдельный artifact
Во многих memory systems поиск является единственным способом получить память. Агент должен заранее догадаться, что спросить:
search("user programming preferences")
search("current project")
search("recent issues")
Проблема в том, что агент не всегда знает, какие воспоминания существуют. User profile решает это иначе: система сама поддерживает компактное summary.
Static profile хранит более устойчивые facts: роль, языки, предпочтения, constraints. Dynamic profile хранит recent activity: текущий проект, открытые проблемы, недавние решения. Вместе они позволяют агенту начинать разговор не с пустого листа.
Это очень сильный pattern для B2C assistants, IDE assistants and productivity tools. Пользователь ожидает, что ассистент "помнит меня", но при этом не хочет каждый раз руками перечислять весь контекст.
Hybrid search
Hybrid search в Supermemory нужен для ситуаций, где одновременно важны:
- документы;
- персональные preferences;
- история взаимодействий;
- текущий project context.
Представим вопрос:
Как мне задеплоить это приложение?
Обычный RAG найдет deployment docs. Memory-aware hybrid search может добавить:
- пользователь обычно предпочитает GitHub Actions;
- текущий проект использует FTP deploy;
- в прошлой сессии уже была ошибка с Poetry lock;
- production directory уже настроена на стороне FTP.
Ответ агента становится не просто правильным по документации, а ситуативно полезным.
Container tags and isolation
Supermemory использует scope через containerTag. Это может быть:
user_123;project_ai_agent_memory;client_acme;repo_backend_api;team_growth_ops.
Принцип простой: все, что может быть случайно смешано, должно быть разделено. В agent memory это не косметика, а security and correctness requirement.
Если агент хранит preference "используй Poetry" без scope, он может применить его в проекте на Node.js. Если агент хранит "клиент просил отключить email reminders" без tenant scope, он может применить это к другому клиенту. Поэтому перед внедрением нужно проектировать taxonomy of containers.
MCP, plugins and AI tools
Один из сильных use cases Supermemory - подключение памяти к существующим AI clients. В README упоминаются app, browser extension, plugins and MCP server. Также перечислены совместимые клиенты вроде Claude Desktop, Cursor, Windsurf, VS Code, Claude Code, OpenCode, OpenClaw and Hermes.
С точки зрения курса это пример важного тренда: memory layer становится не только backend API, но и cross-tool identity layer. Пользователь может говорить с разными AI tools, а память остается общей.
Такая архитектура выглядит так:
Главный риск здесь - consent and boundary management. Пользователь должен понимать, какие tools пишут в память, какие читают ее and где проходит граница между personal, work and client context.
Local mode and self-hosting
Supermemory можно запускать локально. README описывает local mode как один binary / zero config вариант, где full Memory API работает на http://localhost:6767. Также указано, что можно использовать local embeddings by default, внешние LLM providers или OpenAI-compatible endpoints, а при настройке через Ollama - полностью offline режим.
Для разработчика это удобно по двум причинам.
Во-первых, можно быстро проверить memory behavior без production setup. Во-вторых, API остается похожим на hosted platform: приложение переключается через baseURL.
Однако local mode не отменяет engineering due diligence. Нужно проверить:
- где физически лежит data directory;
- как делать backup and migration;
- как устроены upgrades;
- какие providers вызываются наружу;
- какие embeddings используются;
- есть ли encryption at rest;
- как ограничивать доступ к local API;
- что происходит при corrupted local store.
Local-first memory звучит просто, но память обычно содержит самые чувствительные данные пользователя.
API primitives
Для 101-level понимания достаточно держать в голове четыре группы operations:
| Operation | Что делает |
|---|---|
add |
Сохраняет content: conversation text, URLs, HTML или другие fragments. |
profile |
Возвращает user profile and optionally search results. |
search |
Делает поиск по memories and documents, включая hybrid mode. |
documents |
Загружает and ищет documents, files and knowledge base content. |
Важный architectural point: profile - это не просто search alias. Это отдельная абстракция, которая делает memory usable at prompt time. В production agents обычно нельзя каждый раз отправлять десятки raw memories. Нужен компактный context package.
Типы памяти, которые закрывает Supermemory
| Тип из курса | Как проявляется |
|---|---|
| Semantic memory | Stable facts about user, products, docs, preferences. |
| Episodic memory | Recent interactions, project activity, conversation-derived context. |
| Reflection memory | Частично, если memory engine обобщает experience в profile or learned facts. |
| World memory / RAG | Knowledge base documents, files, synced connectors. |
| Shared memory | Через container tags, teams, projects and shared knowledge scopes. |
| Procedural memory | Не основной фокус; скорее хранится как preferences or workflow notes. |
Supermemory особенно силен там, где нужно быстро собрать user-aware context. Если же задача требует строгого workflow planning, policy enforcement or step-by-step procedural memory, придется добавлять отдельный orchestration layer.
Где Supermemory особенно полезен
Supermemory хорошо подходит, когда продукту нужна персонализация "из коробки":
- AI companion or personal assistant;
- coding assistant across sessions;
- sales/support copilot with user/account context;
- productivity agent with connected docs and email;
- learning assistant, который помнит уровень, цели and mistakes студента;
- internal assistant для команды, где нужны и shared docs, и personal preferences.
Общий признак таких задач: пользователь возвращается много раз, а ценность растет от накопления context.
Где Supermemory может быть лишним
Инструмент может быть слишком мощным, если:
- нужен только one-shot RAG по документации;
- нет персонализации;
- все данные уже в строгой SQL schema;
- retrieval должен быть полностью deterministic;
- нельзя передавать data в hosted service, а self-host еще не проверен;
- нужно глубокое graph reasoning по сложным relationships.
В последнем случае Cognee или Zep-like temporal graph может быть ближе. Supermemory делает ставку на context API and profile-oriented memory. Это не обязательно замена graph database.
Мини-кейс: coding assistant
Представим, что мы строим coding assistant для разработчика. Без памяти ассистент каждый раз спрашивает:
- какой стек проекта;
- какие команды запускать;
- какие ограничения по стилю;
- какой deploy pipeline используется;
- какие ошибки уже встречались.
С Supermemory можно хранить:
| Memory | Scope |
|---|---|
| User prefers concise diffs and Poetry for Python projects | user_ivan |
| Repo uses website_builder/build.py check as validation command | project_ai_agent_memory |
| FTP deploy needs FTP_HOST, FTP_USER, FTP_PASSWORD | project_ai_agent_memory |
| Mermaid diagrams must support zoom and fullscreen | project_ai_agent_memory |
Когда пользователь через неделю спрашивает "проверь сборку", assistant получает profile and project memories заранее. Он не угадывает context, а восстанавливает его.
Мини-кейс: customer support copilot
В support scenario memory обычно смешивает три слоя:
- public product knowledge;
- account-specific facts;
- agent/user preferences.
Supermemory-like architecture может работать так:
Тут особенно важен scope. Account-specific memory нельзя смешивать между клиентами. Если Supermemory используется как central memory service, container taxonomy and permission model становятся частью архитектуры продукта.
Как тестировать качество Supermemory
Перед внедрением недостаточно проверить, что API возвращает какие-то memories. Нужно тестировать behavior.
| Тест | Что проверяет |
|---|---|
| Preference retention | Сохраняются ли устойчивые предпочтения пользователя. |
| Contradiction update | Заменяется ли старый факт новым. |
| Temporary forgetting | Исчезают ли временные facts после истечения актуальности. |
| Scope isolation | Не попадает ли memory одного проекта в другой. |
| Hybrid relevance | Возвращаются ли вместе документы and personalized facts. |
| Prompt budget | Не раздувается ли context сверх лимита. |
| Deletion | Можно ли удалить user/project memories предсказуемо. |
| Offline mode | Не уходит ли data наружу в local setup. |
Хороший тестовый набор должен содержать не только happy path. Добавьте противоречия, устаревшие утверждения, похожие проекты, разные language preferences and queries with missing context.
Сравнение с Cognee
| Критерий | Cognee | Supermemory |
|---|---|---|
| Главный акцент | Knowledge graph memory platform | Memory and context API |
| Сильная сторона | Graph relationships, provenance, graph-RAG | User profiles, hybrid search, AI tool integrations |
| Базовый объект | Documents, chunks, entities, relationships | Memories, profiles, documents, container tags |
| Хорош для | Enterprise knowledge graph, research memory | Personalization, product agents, coding assistants |
| Self-host story | Graph/vector/relational backends, Docker profiles | Local binary/API mode |
| Complexity | Выше при production graph setup | Ниже для quick product integration |
Это не вопрос "какой инструмент лучше". Это вопрос формы задачи. Если главная боль - entity relationships and knowledge graph traversal, Cognee ближе. Если главная боль - быстро дать агенту user-aware memory and RAG через один API, Supermemory выглядит естественнее.
Сравнение с Mem0 and Zep
Mem0 часто выбирают как lightweight personalization memory: extracted facts, ADD/UPDATE/DELETE and simple integration. Zep силен там, где нужна temporal graph logic and history-aware factual accuracy.
Supermemory находится между ними:
- как Mem0, он удобен для personalization;
- как Zep, он заявляет handling of temporal changes and contradictions;
- в отличие от узкого SDK, он активно продвигает full context stack: documents, connectors, profiles, MCP, local runtime.
Поэтому Supermemory можно воспринимать как productized context layer. Он стремится дать разработчику меньше ручной сборки и больше готовых primitives.
Риски и вопросы перед production use
Supermemory закрывает много задач, но именно поэтому его нужно внедрять осознанно.
| Риск | Что уточнить |
|---|---|
| Privacy | Какие данные уходят в hosted API, какие остаются локально. |
| Scope leaks | Как enforced container tags and tenant boundaries. |
| Deletion guarantees | Как удаляются memories, profiles, documents and derived data. |
| Evaluation | На каких собственных сценариях проверяется recall and forgetting. |
| Vendor coupling | Насколько легко заменить Supermemory на другой memory layer. |
| Connector permissions | Какие OAuth scopes получают integrations. |
| Prompt injection | Как очищаются external documents before memory extraction. |
| Observability | Как отлаживать, почему memory попала в context. |
Особенно внимательно нужно относиться к connectors. Подключение Gmail, Drive, Notion or GitHub резко увеличивает полезность памяти, но также расширяет attack surface.
Практический pattern внедрения
Начинать лучше не с "включить память для всего". Более безопасный путь:
- Выбрать один clear scope: например,
user_idorproject_id. - Сохранять только low-risk facts and explicit preferences.
- Подключить
profileв prompt как короткий блок. - Добавить
searchтолько для запросов, где retrieval реально нужен. - Завести evaluation dataset with contradictions and stale facts.
- Проверить deletion and export.
- Только потом подключать connectors.
Такой rollout снижает риск неожиданного behavior. Memory bugs часто выглядят не как crash, а как уверенный ответ с чужим или устаревшим контекстом.
Антипаттерны
Первый антипаттерн - писать в память все подряд. Если каждая фраза становится permanent memory, retrieval быстро загрязняется. Memory engine должен отделять сигнал от шума.
Второй антипаттерн - использовать один container для всех пользователей. Это превращает personalization в источник утечек.
Третий антипаттерн - слепо доверять benchmark claims. Benchmarks полезны как сигнал, но production quality определяется вашими данными, языками, доменом, privacy constraints and user expectations.
Четвертый антипаттерн - добавлять memory context без объяснимости. Если агент использует факт о пользователе, команда должна уметь понять, откуда этот факт взялся and почему он сейчас считается актуальным.
Чек-лист выбора Supermemory
Supermemory стоит рассмотреть, если на большинство вопросов ответ "да":
- пользователи возвращаются в продукт регулярно;
- personalization влияет на качество ответа;
- есть смесь conversations and documents;
- нужен быстрый profile injection;
- нужны integrations with AI tools or MCP;
- важны local development and self-host option;
- команда готова тестировать contradictions, forgetting and scope isolation.
Если же задача - stateless Q&A по документации, начните с простого RAG. Memory layer должен появляться там, где есть real state over time.
Источники
- GitHub repository: https://github.com/supermemoryai/supermemory
- Documentation: https://supermemory.ai/docs
- Product site: https://supermemory.ai
- Self-hosting entry from README: https://github.com/supermemoryai/supermemory#supermemory-local--run-it-yourself
- Memory vs RAG entry from README: https://github.com/supermemoryai/supermemory#how-memory-works-under-the-hood
Краткое резюме
Supermemory - это memory and context engine, который объединяет conversation memory, user profiles, hybrid search, connectors, file processing and local runtime. Его главный урок для архитектора: agent memory должна быть не только retrieval механизмом, но и системой управления пользовательским состоянием.
В отличие от чистого RAG, Supermemory пытается понимать temporal changes, contradictions and forgetting. В отличие от graph-first платформ, он делает сильный акцент на API ergonomics, profiles and integrations with AI tools.
Вопросы для самопроверки
- Почему Supermemory нельзя сводить к vector RAG?
- Чем static profile отличается от dynamic profile?
- Какую проблему решает
containerTag? - В каких сценариях hybrid search полезнее обычного document search?
- Какие риски появляются при подключении Gmail, Drive, Notion or GitHub connectors?
- Почему deletion and forgetting нужно тестировать отдельно?
- Когда Cognee может быть лучше Supermemory?
- Какие production bugs возникают при смешивании scopes?
Что дальше
В следующей лекции мы разберем Memori - более компактный Python-oriented framework for agent memory. Если Cognee показывает graph-first platform, а Supermemory - productized context engine, то Memori полезен как пример memory layer, который ближе к application library and agent integration.