Skip to main content
Glama

memem

Постоянная, саморазвивающаяся память для Claude Code. Перестаньте пересказывать суть проекта каждую сессию.

CI memem MCP server License: MIT Python 3.11+

Для поиска инструментов 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 автоматически исправляет все необходимое:

  1. Проверяет наличие Python ≥ 3.11

  2. Устанавливает uv, если он отсутствует (через официальный установщик Astral)

  3. Синхронизирует зависимости в локальное .venv плагина (с кэшированием хеша по uv.lock)

  4. Создает и тестирует ~/.memem/ и ~/obsidian-brain/

  5. Записывает ~/.memem/.capabilities (используется для решений в режиме ограниченной функциональности)

  6. Запускает настоящий 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 хранит мои воспоминания?

Хранилище

Путь

Назначение

Воспоминания

~/obsidian-brain/memem/memories/*.md

Источник истины (читаемый markdown)

Плейбуки

~/obsidian-brain/memem/playbooks/*.md

Курируемые брифинги по проектам

База поиска

~/.memem/search.db

Индекс SQLite FTS5 (быстрый поиск)

Телеметрия

~/.memem/telemetry.json

Отслеживание доступа (атомарная запись)

Журнал событий

~/.memem/events.jsonl

Аудиторский след (только добавление)

Возможности

~/.memem/.capabilities

Флаги режима ограниченной функциональности

Лог загрузки

~/.memem/bootstrap.log

Диагностика первого запуска

Вы можете указать другой путь для memem через переменные окружения MEMEM_DIR и MEMEM_OBSIDIAN_VAULT.

Какие MCP-инструменты может вызывать Claude?

Инструмент

Что он делает

memory_save(content, title, tags)

Сохранить урок. Перед записью сканируется на предмет внедрения промптов и утечки учетных данных.

memory_recall(query, limit)

Поиск воспоминаний. FTS5 + временной распад + подкрепление доступа + взвешивание важности.

memory_list(scope_id)

Список всех воспоминаний со статистикой, сгруппированных по проектам.

memory_import(source_path)

Массовый импорт из файлов, директорий или экспортов чатов.

transcript_search(query)

Поиск по сырым JSONL-логам сессий Claude Code (не по извлеченным воспоминаниям).

context_assemble(query, project)

Брифинг по запросу из плейбуков + воспоминаний + транскриптов.

Какие слэш-команды добавляет 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 FTS5

  • obsidian_store.py — ввод-вывод воспоминаний, оценка дедупликации, обнаружение противоречий

  • playbook.py — рост и уточнение плейбуков по проектам

  • assembly.py — сборка контекста через Haiku

  • capabilities.py — определение возможностей среды выполнения для режима деградации

  • storage.py — помощники жизненного цикла сервера (управление PID, автозапуск майнера)

  • server.py — тонкая точка входа MCP (FastMCP импортируется лениво)

  • cli.py — диспетчер команд для точек входа, не являющихся MCP

  • mining.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
---

Конфигурация

Переменная окружения

По умолчанию

Назначение

MEMEM_DIR

~/.memem

Директория состояния (PID-файлы, база поиска, логи)

MEMEM_OBSIDIAN_VAULT

~/obsidian-brain

Расположение хранилища

MEMEM_EXTRA_SESSION_DIRS

(нет)

Дополнительные директории сессий для майнинга (через двоеточие)

MEMEM_MINER_SETTLE_SECONDS

300

Секунды ожидания перед майнингом завершенной сессии

MEMEM_SKIP_SYNC

0

Загрузчик пропускает uv sync, если установлено в 1 (только для разработки)

Настройка Obsidian (необязательно, рекомендуется)

memem работает без Obsidian — он просто записывает markdown. Но Obsidian дает вам графовое представление и обратные ссылки бесплатно:

  1. Скачайте: https://obsidian.md (бесплатно)

  2. Откройте ~/obsidian-brain как хранилище

  3. Воспоминания появятся в memem/memories/, плейбуки в memem/playbooks/

  4. Используйте 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

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - A tier

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