Мастер Claude · Блок 2. Контекст и память

Урок 17 из 93 · ~10 мин чтения

MEMORY.md vs CLAUDE.md: что куда

Урок пока закрыт

Курс проходится последовательно.

К текущему уроку

Почему это важно именно вам

Вы уже знаете, что CLAUDE.md существует. Возможно, даже написали туда что-то — стиль ответов, напоминание про часовой пояс, инструкции не удалять файлы. Теперь появляется второй файл — MEMORY.md. И первый вопрос, который возникает: это дублирование? Зачем два файла, если можно писать всё в один?

Ответ не очевидный, но важный. Эти два файла решают принципиально разные задачи. Путаница между ними — одна из самых частых причин, по которым Claude начинает вести себя непредсказуемо: игнорирует контекст, забывает договорённости, задаёт вопросы, которые вы уже объясняли три сессии назад.

Директорская работа строится на двух слоях. Первый — правила и принципы: как отвечать, что не делать, как обращаться с данными. Второй — накопленные факты: что уже выяснили, что пробовали, какие решения приняли. Первый слой статичен и редко меняется. Второй — живёт и растёт. Смешивать их в одном файле — значит либо перегружать инструкции деталями, либо постоянно редактировать правила ради обновления фактов. Ни то ни другое не работает хорошо.

Что это такое

Представьте, что вы нанимаете нового помощника. В первый рабочий день вы даёте ему документ: «Вот правила работы в нашем отделе. Отвечай на письма в течение двух часов. Все договоры согласуй с юристом перед отправкой. Не давай цифры клиентам без моего одобрения.» Этот документ вы писали один раз. Он не меняется каждую неделю.

Через месяц у этого помощника появляется рабочая тетрадь. «Иванов из ПИК предпочитает таблицы, не тексты. По проекту Самолёт — согласовали формат отчёта 15-го. Клиент из Краснодара не любит звонки до 10 утра.» Это не правила — это накопленный контекст. Он меняется постоянно. Смешивать его с правилами в одном документе — быстро превратит и то, и другое в нечитаемую кашу.

CLAUDE.md — это первый документ. Правила. Инструкции. Принципы. То, что должно действовать всегда, независимо от конкретной задачи.

MEMORY.md — это рабочая тетрадь. Факты. Договорённости. Контекст. То, что Claude узнал в процессе работы и должен помнить в следующих сессиях.

Ключевое различие

CLAUDE.md отвечает на вопрос «как работать?». MEMORY.md отвечает на вопрос «что уже известно?». Первый пишет человек намеренно. Второй Claude заполняет сам — с вашего разрешения.

Техническая деталь: MEMORY.md лежит в папке авто-памяти — ~/.claude/projects/<проект>/memory/, привязанной к git-репозиторию. Открыть её проще всего командой /memory (пункт с папкой авто-памяти). CLAUDE.md вы редактируете вручную, MEMORY.md обновляет сам Claude, когда вы просите его что-то запомнить.

Как работает на практике

Разберём на конкретном примере. Допустим, вы директор по развитию портала недвижимости. Посмотрим, что попадает в каждый файл.

CLAUDE.md — примеры правильного содержимого:

## Стиль ответов
- Сначала суть, потом детали
- Не используй жаргон без объяснений
- Если не уверен — скажи прямо, не выдавай догадку за факт

## Работа с данными
- Перед массовыми операциями — тест на одном объекте
- Не удалять файлы без явного запроса, только архивировать
- Маскировать телефоны и имена в отчётах

## Формат отчётов
- Отчёты для пересылки — MD + HTML
- Имена файлов: Тема_YYYY-MM-DD.csv
- Таблицы для клиентов — только через Excel, не Markdown

Это правила. Они не зависят от конкретного проекта. Они действуют всегда.

MEMORY.md — примеры правильного содержимого:

- [Клиент ПИК предпочитает таблицы](detail_pik_format.md) — просил три раза, подтверждено 15.05.
- [Формат отчёта КЦ согласован](detail_kc_report_format.md) — колонки: дата, оператор, кол-во звонков, конверсия; без столбца «причина отказа».
- [Tailscale блокирует MCP-вызовы](feedback_tailscale_mcp.md) — при HTTP 000 проверить exit-node Tailscale.
- [Часовой пояс — Москва UTC+3](user_timezone.md) — все «сегодня/вчера» по МСК, не UTC.

Это факты. Они накапливаются. Некоторые устаревают. Они конкретны — вплоть до дат и деталей.

Формат записей в MEMORY.md

Каждая запись — краткое резюме плюс ссылка на файл с деталями. Это не случайно: сам MEMORY.md должен быть компактным (в сессию грузятся только первые 200 строк или 25 КБ), а детали лежат в отдельных файлах-темах рядом с ним, в той же папке ~/.claude/projects/<проект>/memory/.

Где физически лежат файлы:

У CLAUDE.md есть уровни — глобальный и проектный. У авто-памяти их нет.

Глобальный CLAUDE.md: ~/.claude/CLAUDE.md — действует во всех сессиях, в любой папке.
Проектный CLAUDE.md: .claude/CLAUDE.md внутри папки проекта — действует только когда Claude запускается из этой папки.

А вот MEMORY.md устроен иначе: он один на репозиторий и лежит в ~/.claude/projects/<проект>/memory/. Деления на «глобальную» и «проектную» память нет, а значит, нет и конфликта уровней. Все подпапки и worktree одного репозитория делят одну память.

Правила CLAUDE.md наследуются: запуская Claude из папки проекта, вы получаете оба уровня, и проектный важнее при конфликте. К авто-памяти это не относится — она одна.

Как добавить что-то в MEMORY.md:

Самый простой способ — попросить Claude прямо в диалоге:

Запомни: клиент Самолёт присылает данные 25-го числа каждого месяца, не в конце квартала.

Claude Code добавит это в MEMORY.md. В следующей сессии он уже будет знать про 25-е число.

Второй способ — команда /memory в интерфейсе Claude Code. Она открывает MEMORY.md для просмотра и редактирования.

Третий способ — отредактировать файл вручную. Он лежит в папке авто-памяти этого репозитория: ~/.claude/projects/<проект>/memory/MEMORY.md. Быстрее всего попасть туда через /memory — пункт с папкой авто-памяти.

Как проверить, что сработало:

Начните новую сессию и спросите что-то, что требует контекста из памяти:

Когда Самолёт присылает ежемесячные данные?

Если Claude отвечает «25-го числа» — память работает. Если «не знаю» — значит, либо запись не сохранилась, либо файл хранится не там, где Claude ищет.

Разделение по проектам работает само:

Память привязана к репозиторию, поэтому у каждого проекта она своя — отдельно настраивать ничего не нужно. Специфика клиентов коллцентра не попадёт в память проекта по недвижимости, и наоборот.

Пример того, что накапливается в памяти проекта коллцентра:

- [Формат отчёта согласован 15.03](kc_report_format.md) — колонки: дата, оператор, конверсия
- [Менеджер Ирина — предпочитает Excel, не Google Sheets](manager_irina.md)
- [CPA по Авито считается отдельно от Яндекса](avito_cpa_separate.md)

А то, что верно для вас всегда — часовой пояс, формат отчётов, правило «перед массовой операцией проверить на одном», — это уже не память, а инструкции: им место в пользовательском ~/.claude/CLAUDE.md. Вот граница между двумя механизмами на практике:

Где живёт Кто пишет Область действия
CLAUDE.md папка проекта и ~/.claude/ вы папка запуска и всё выше по дереву
MEMORY.md ~/.claude/projects/<проект>/memory/ Claude, с вашего согласия один репозиторий целиком

Память локальна для машины

Авто-память не уезжает в репозиторий и не синхронизируется между компьютерами. Если факт должен быть известен всей команде — ему место в проектном CLAUDE.md, который лежит в репозитории.

Частые ошибки

Ошибка 1: Писать факты в CLAUDE.md

Выглядит так: «Клиент Иванов предпочитает короткие отчёты, Петров любит детали, у Сидорова дедлайн каждую пятницу.» Это не инструкция — это факты. Если таких записей накапливается десяток, CLAUDE.md превращается в неструктурированный справочник, который сложно поддерживать. Правила теряются среди деталей.

Исправление: факты о клиентах, проектах, договорённостях — в MEMORY.md. Правила работы с клиентами (например, «всегда уточнять формат до отправки») — в CLAUDE.md.

Ошибка 2: Писать правила в MEMORY.md

Противоположная проблема. Кто-то решает, что раз MEMORY.md «запоминает» — можно туда написать «всегда проверяй цифры перед отправкой». Технически это работает, но неустойчиво. Claude сам обновляет MEMORY.md, и может случайно перезаписать или убрать важную инструкцию при следующем обновлении контекста. Правила должны быть там, где их не тронут без вашего ведома.

Исправление: всё, что должно действовать всегда и не зависит от накопленного опыта — в CLAUDE.md. Его Claude не редактирует сам.

Ошибка 3: Переполненная память без чистки

MEMORY.md растёт. Через три месяца там может накопиться 200 записей, часть из которых устарела. «Согласовали формат 15.03» — а сейчас уже август, формат три раза менялся. Старые записи не просто занимают место — они могут противоречить актуальному контексту и сбивать Claude с толку.

Исправление: раз в месяц просматривайте MEMORY.md и удаляйте устаревшее. Или попросите Claude: «Просмотри MEMORY.md и пометь записи, которые выглядят устаревшими.» Он не удалит сам, но покажет кандидатов.

Ошибка 4: Один огромный файл вместо структуры

Некоторые пытаются сделать MEMORY.md максимально подробным — и получают файл на 500 строк. Чем длиннее файл, тем медленнее Claude его обрабатывает и тем выше шанс, что нужная деталь просто потеряется в потоке текста.

Исправление: MEMORY.md должен быть индексом — короткие строки со ссылками на файлы с деталями. Смотрите пример выше: каждая запись — одна строка плюс ссылка. Детали — в отдельном файле.

Ошибка 5 (бонусная): Не чистить CLAUDE.md от дублей

После того как вы начинаете использовать MEMORY.md, часть записей оказывается одновременно в обоих файлах. Сначала написали в CLAUDE.md, потом Claude запомнил то же самое в MEMORY.md. Теперь одна и та же инструкция повторяется дважды. Это не страшно, но замусоривает контекст и иногда приводит к тому, что Claude «видит» одно правило с двумя чуть различающимися формулировками и выбирает непредсказуемо.

Исправление: раз в месяц сравнивайте содержимое обоих файлов. Факты — только в MEMORY.md, принципы — только в CLAUDE.md. Дубли убирайте.

Когда нужно / когда нет

CLAUDE.md нужен, когда:
- Вы хотите изменить поведение Claude по умолчанию (тон, формат, язык)
- Есть ограничения, которые нельзя нарушать (не публиковать цифры компании, маскировать персональные данные)
- Нужна инструкция, которая работает для всех задач без исключений
- Вы хотите, чтобы правила не менялись сами по себе

CLAUDE.md не нужен, если:
- Вы хотите что-то «напомнить» на один сеанс — достаточно написать это прямо в запросе
- Информация специфична для одного проекта и уже есть в MEMORY.md того проекта
- Правило нужно только иногда — лучше писать его в конкретный запрос, чем загрязнять глобальный файл

MEMORY.md нужен, когда:
- Claude регулярно задаёт вопросы, на которые вы уже отвечали
- Есть накопленный контекст по клиентам, проектам, договорённостям
- Вы хотите, чтобы между сессиями не терялась рабочая история
- Нужно хранить «выводы» из прошлых задач — что сработало, что нет

MEMORY.md не нужен, если:
- Информация одноразовая — прочитали, использовали, забыли
- Контекст уже есть в файлах проекта, которые Claude читает напрямую
- Вы не уверены, что информация останется актуальной через неделю

Практическое правило

Задайте себе вопрос: «Мне нужно, чтобы Claude это знал через месяц?» Если да — MEMORY.md. «Мне нужно, чтобы Claude всегда так делал?» Если да — CLAUDE.md. Если ответ «нет» на оба вопроса — просто напишите в текущем запросе.

Пограничный случай: часовой пояс

Казалось бы, «работай по московскому времени» — это правило. Его можно поставить в CLAUDE.md. Но это и факт о пользователе, который Claude мог узнать в процессе работы. На практике это удобнее держать в MEMORY.md: [Часовой пояс — Москва UTC+3] — потому что это узнанная деталь, а не принцип работы.

Строгой границы нет. Разные команды делают по-разному. Главное — не дублировать одно и то же в оба файла.

Связь с другими уроками

День 11: Что такое CLAUDE.md и зачем он нужен — там мы разбирали базовую структуру файла и что туда вообще писать. Этот урок строится поверх: теперь вы знаете, что не всё из «хочу, чтобы Claude помнил» — это инструкции. Часть — это контекст, и ему место в другом файле.

День 15 — авто-память, День 16 — команда /memory — там разобрано, как Claude обновляет память сам и как управлять ею вручную. День 17 отвечает на следующий вопрос: а что именно туда должно попадать, а что нет.

День 19: Компакция контекста — длинные сессии накапливают контекст, который начинает мешать. Компакция сжимает историю. Понимание разницы между MEMORY.md (постоянное) и контекстом сессии (временное) помогает правильно использовать компакцию: важное — перенести в память до сжатия, остальное — сжать.

Задание на сегодня

Откройте текущий CLAUDE.md (или создайте его в ~/.claude/CLAUDE.md, если его нет).

Найдите в нём хотя бы одну запись, которая является фактом, а не правилом — что-то конкретное о проекте, клиенте или договорённости, а не общий принцип работы.

Перенесите эту запись в MEMORY.md: откройте терминал и выполните

claude
> Запомни: [краткое описание факта]

или откройте папку авто-памяти через /memory и отредактируйте MEMORY.md напрямую.

Критерий «выполнено»: в CLAUDE.md эта запись удалена, в MEMORY.md — добавлена. Начните новую сессию и проверьте: Claude знает этот факт, не видя CLAUDE.md.

Если в CLAUDE.md не нашлось фактов — просто добавьте одну запись в MEMORY.md: что-то реальное из текущих проектов, что Claude должен помнить между сессиями.

Резюме

Следующий урок откроется после отметки.