cortex
memem
Постоянная, саморазвивающаяся память для Claude Code. Перестаньте пересказывать суть проекта каждую сессию.
Для поиска инструментов LLM/AI см. llms.txt.
███╗ ███╗███████╗███╗ ███╗███████╗███╗ ███╗
████╗ ████║██╔════╝████╗ ████║██╔════╝████╗ ████║
██╔████╔██║█████╗ ██╔████╔██║█████╗ ██╔████╔██║
██║╚██╔╝██║██╔══╝ ██║╚██╔╝██║██╔══╝ ██║╚██╔╝██║
██║ ╚═╝ ██║███████╗██║ ╚═╝ ██║███████╗██║ ╚═╝ ██║
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
persistent memory for Claude CodeЧто такое memem?
memem — это плагин для Claude Code, который дает Claude постоянную память между сессиями. Фоновый майнер извлекает важные уроки (решения, соглашения, исправления ошибок, предпочтения) из ваших завершенных сессий, сохраняет их в формате markdown в хранилище Obsidian и автоматически выводит актуальные данные в начале каждой новой сессии с помощью краткого обзора, адаптированного под запрос.
Это локальное решение: никаких облачных сервисов, не нужны API-ключи, никакой привязки к поставщику. Все хранится в ~/obsidian-brain/memem/memories/ в виде читаемого человеком markdown.
Когда стоит использовать memem?
Используйте memem, если:
Вы ежедневно используете Claude Code и постоянно пересказываете суть проекта в каждой новой сессии
Вам нужна долговечная память, которую можно просматривать и редактировать как markdown
Вам нравятся локальные инструменты без привязки к поставщику
Вы уже используете Obsidian (memem подключается прямо к вашему хранилищу)
Не используйте memem, если:
CLAUDE.mdвас полностью устраивает и вы не хотите запускать фоновый демонВам нужна облачная синхронизация памяти между машинами (memem работает только локально)
У вас Python версии ниже 3.11
Чем memem отличается от CLAUDE.md?
CLAUDE.md — это один файл, редактируемый вручную для каждого проекта. memem предлагает:
Автоматическое извлечение — никаких заметок вручную, майнер фиксирует уроки из каждой завершенной сессии
Контекст с учетом запроса — вставляются только те воспоминания, которые актуальны для вашего текущего вопроса, а не статический дамп
Саморазвитие — воспоминания объединяются, обновляются и устаревают автоматически по мере развития проекта
Кросс-проектная работа — работает во всех проектах Claude Code, которые вы используете, а не только в одном репозитории
Сканирование безопасности — каждая запись проверяется на предмет внедрения промптов и утечки учетных данных
Возможность просмотра — хранилище Obsidian с графовым представлением и обратными ссылками бесплатно
Как установить memem?
/plugin marketplace add TT-Wang/memem
/plugin install mememЭто все. При первом запуске bootstrap.sh автоматически исправляет все необходимое:
Проверяет наличие Python ≥ 3.11
Устанавливает
uv, если он отсутствует (через официальный установщик Astral)Синхронизирует зависимости в локальное
.venvплагина (с кэшированием хеша поuv.lock)Создает и тестирует
~/.memem/и~/obsidian-brain/Записывает
~/.memem/.capabilities(используется для решений в режиме ограниченной функциональности)Запускает настоящий MCP-сервер
Первый запуск: ~5 секунд. Все последующие: ~100 мс. Никаких отдельных шагов pip install.
Что происходит во время моей первой сессии в Claude Code?
Вы вводите свое первое сообщение. Срабатывает хук UserPromptSubmit, он видит, что воспоминаний нет (вы только что установили плагин), поэтому вставляет приветственный баннер в контекст Claude. Claude читает баннер, сообщает вам, что memem активен, и — если у вас есть предыдущие сессии Claude Code — предлагает извлечь их через /memem-mine-history.
Вы работаете как обычно. Демон-майнер работает тихо в фоновом режиме. Когда ваша сессия завершается и «отстаивается» в течение 5 минут, майнер извлекает воспоминания из транскрипта с помощью Claude Haiku и записывает их в ваше хранилище.
Начиная со второй сессии: хук отправляет ваше первое сообщение в context_assemble, который передает Haiku соответствующие воспоминания и просит синтезировать адаптированный брифинг. Вы видите баннер состояния, например [memem] 12 memories · miner OK · assembly OK, за которым следует краткий обзор. Claude начинает работу с полным контекстом — ничего не нужно пересказывать.
Что сохраняет memem?
Он сохраняет долговечные знания, а не логи сессий:
Архитектурные решения с обоснованием («мы используем RS256 JWT, потому что…»)
Соглашения («тесты находятся в
tests/, а не вspec/»)Исправления ошибок, которые можно забыть («bcrypt.compare — асинхронная функция, нужно использовать
await»)Предпочтения пользователя («предпочитаю одиночные коммиты, а не стеки PR»)
Известные проблемы («JWT_SECRET по умолчанию равен 'secret', если не задан — отслеживается в #123»)
Он НЕ сохраняет:
Сырые транскрипты сессий (их можно искать через
transcript_search, они не хранятся как воспоминания)Тривиальные или очевидные факты
Результаты сессий («сегодня я работал над X»)
Где memem хранит мои воспоминания?
Хранилище | Путь | Назначение |
Воспоминания |
| Источник истины (читаемый markdown) |
Плейбуки |
| Курируемые брифинги по проектам |
База поиска |
| Индекс SQLite FTS5 (быстрый поиск) |
Телеметрия |
| Отслеживание доступа (атомарная запись) |
Журнал событий |
| Аудиторский след (только добавление) |
Возможности |
| Флаги режима ограниченной функциональности |
Лог загрузки |
| Диагностика первого запуска |
Вы можете указать другой путь для memem через переменные окружения MEMEM_DIR и MEMEM_OBSIDIAN_VAULT.
Какие MCP-инструменты может вызывать Claude?
Инструмент | Что он делает |
| Сохранить урок. Перед записью сканируется на предмет внедрения промптов и утечки учетных данных. |
| Поиск воспоминаний. FTS5 + временной распад + подкрепление доступа + взвешивание важности. |
| Список всех воспоминаний со статистикой, сгруппированных по проектам. |
| Массовый импорт из файлов, директорий или экспортов чатов. |
| Поиск по сырым JSONL-логам сессий Claude Code (не по извлеченным воспоминаниям). |
| Брифинг по запросу из плейбуков + воспоминаний + транскриптов. |
Какие слэш-команды добавляет memem?
/memem— приветствие, статус, помощь/memem-status— количество воспоминаний, проекты, размер базы поиска, состояние майнера/memem-doctor— проверка работоспособности с инструкциями по исправлению для любого блокировщика/memem-mine— запуск демона-майнера вручную (обычно запускается автоматически)/memem-mine-history— согласие на извлечение всех ваших сессий Claude Code, созданных до установки
Что если CLI claude не находится в моем PATH?
memem переходит в режим ограниченной функциональности — он продолжает работать, но без сборки контекста на базе Haiku и умного поиска. Вместо адаптированных брифингов вы получаете только поиск по ключевым словам FTS. В каждой сессии вверху контекста отображается [memem] N memories · miner OK · assembly degraded (claude CLI missing — FTS-only recall), чтобы вы знали причину.
Это сделано намеренно: отсутствие необязательных зависимостей должно приводить к деградации, а не к сбою.
Как диагностировать проблемы?
Запустите /memem-doctor. Он выполняет ту же проверку, что и скрипт загрузки (версия Python, импортируемость mcp, наличие CLI claude в PATH, доступность директорий для записи, наличие uv), а затем выводит отчет с пометкой HEALTHY (ЗДОРОВ), DEGRADED (ДЕГРАДИРОВАН) или FAILING (СБОЙ) с четкими инструкциями по исправлению для каждого блокировщика.
Для более глубокой отладки:
tail -f ~/.memem/bootstrap.log # first-run shim log
tail -f ~/.memem/miner.log # miner daemon log
cat ~/.memem/events.jsonl # memory operation audit trail
python3 -m memem.server --status # detailed status dumpКак работает конвейер майнинга?
Session ends → miner daemon sees the JSONL file in ~/.claude/projects/
→ Waits 5 minutes for the file to "settle" (no more writes)
→ Filters to human messages + assistant prose (strips tool calls, system reminders)
→ One Haiku call with the full context: "extract durable lessons"
→ Haiku returns JSON array of memory candidates
→ Each candidate runs: security scan → dedup check → contradiction detection → save
→ Index rebuilt, per-project playbooks grown and refined
→ Session marked COMPLETE in ~/.memem/.mined_sessionsКак работает конвейер поиска?
First message in a new session → auto-recall.sh hook fires
→ Reads ~/.memem/.capabilities for status banner
→ If claude CLI is available → sends (message, memories) to Haiku
→ Haiku synthesizes a focused briefing (300-800 tokens usually)
→ Brief injected into Claude's context as "memem context briefing"
→ If claude CLI is missing → falls back to FTS-only keyword recall
→ Either way, Claude starts its reply with relevant context already loadedАрхитектура
memem разделен на небольшие специализированные модули:
models.py— типы данных, константы путейsecurity.py— сканирование на внедрение промптов и утечку учетных данныхtelemetry.py— отслеживание доступа, журнал событий (атомарная запись, блокировка fcntl)search_index.py— индекс SQLite FTS5obsidian_store.py— ввод-вывод воспоминаний, оценка дедупликации, обнаружение противоречийplaybook.py— рост и уточнение плейбуков по проектамassembly.py— сборка контекста через Haikucapabilities.py— определение возможностей среды выполнения для режима деградацииstorage.py— помощники жизненного цикла сервера (управление PID, автозапуск майнера)server.py— тонкая точка входа MCP (FastMCP импортируется лениво)cli.py— диспетчер команд для точек входа, не являющихся MCPmining.py— конвейер майнинга сессий
Многосигнальная оценка поиска:
50% релевантность FTS
15% новизна (распад 0.995^часов)
15% история доступа (подкрепление использования)
20% важность (шкала 1-5 от Haiku)
Схема воспоминаний (markdown frontmatter):
---
id: uuid
schema_version: 1
title: "descriptive title"
project: project-name
tags: [mined, project-name]
related: [id1, id2, id3]
created: 2026-04-13
updated: 2026-04-13
source_type: mined | user | import
source_session: abc12345
importance: 1-5
status: active | deprecated
valid_to: # set when deprecated
contradicts: [id1] # flagged conflicts
---Конфигурация
Переменная окружения | По умолчанию | Назначение |
|
| Директория состояния (PID-файлы, база поиска, логи) |
|
| Расположение хранилища |
| (нет) | Дополнительные директории сессий для майнинга (через двоеточие) |
|
| Секунды ожидания перед майнингом завершенной сессии |
|
| Загрузчик пропускает |
Настройка Obsidian (необязательно, рекомендуется)
memem работает без Obsidian — он просто записывает markdown. Но Obsidian дает вам графовое представление и обратные ссылки бесплатно:
Скачайте: https://obsidian.md (бесплатно)
Откройте
~/obsidian-brainкак хранилищеВоспоминания появятся в
memem/memories/, плейбуки вmemem/playbooks/Используйте Graph View, чтобы увидеть, как воспоминания связаны через поле
related
Требования
Claude Code
Python ≥ 3.11
uv(автоматически устанавливается через bootstrap.sh при первом запуске)CLI
claudeв PATH (необязательно — требуется для сборки контекста на базе Haiku; режим деградации работает без него)
Разработка
git clone https://github.com/TT-Wang/memem.git
cd memem
pip install -e ".[dev]"
pytest # 54 tests
ruff check . # lint
mypy memem # type check (strict)См. CONTRIBUTING.md для процесса PR и CHANGELOG.md для истории версий.
Лицензия
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TT-Wang/cortex-plugin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server