К содержимому
ErgonLab
← Блог
Гайд · Claude Code
· 9 мин

4 уровня памяти Claude Code — что куда класть

CLAUDE.md, MEMORY.md, persistent memory, settings.json — четыре места, где хранится контекст. Главный антипаттерн: всё свалить в CLAUDE.md.

Зачем разделять память на уровни

Полгода назад у меня был один CLAUDE.md на 600 строк. Туда стекалось всё: стек проекта, мои предпочтения, незавершённые задачи, факты о клиентах, фидбек от прошлых сессий. Через месяц этот файл стал бесполезен — Claude в каждой сессии читал его, тратил контекст на ненужные детали, путался в активных и старых задачах.

Я разнёс это по четырём уровням. Каждый отвечает за своё, каждый загружается в нужный момент, ничего не дублируется. CLAUDE.md съёжился до 200 строк, и при этом проекту стало известно про меня в разы больше.

Расскажу систему, которая у меня сейчас работает на ErgonLab, SkandiKlubb, HealthCompanion и десятке других проектов.

Уровень 1: CLAUDE.md — то, что НЕ меняется

CLAUDE.md — главный файл проекта в его корне. Тут живёт всё, что верно всегда для этого проекта:

  • Стек (точные версии).
  • Структура папок со смыслами.
  • Конвенции (именование, тон документов, язык).
  • Ключевые файлы, которые нельзя трогать.
  • Запреты (НИКОГДА).

Это не дневник. Это паспорт проекта. Открыл — понял, куда попал.

Пример из моего ErgonLab CLAUDE.md:

## Стек
- Сайт: Next.js 14+, TypeScript strict, Tailwind 4, shadcn/ui
- Боты: Python 3.13+, aiogram 3.22+, aiosqlite
- AI: Claude Sonnet 4 через OpenRouter

## Ключевые файлы — НЕ менять
- ИДЕЯ.md — исходная стратегия
- CLAUDE.md — этот файл
- archive/ — историческая ценность

Этот блок не меняется месяцами. Если стек переехал на Next.js 15 — обновлю. Если архив переименовали — обновлю. Но активные клиенты, текущие задачи, что сегодня сломалось — сюда не пишу.

Уровень 2: MEMORY.md — то, что НЕ закончено

MEMORY.md — это файл «что я сейчас не дописал». Короткие записи о незавершённых сессиях, текущих задачах, где-то на середине.

У меня MEMORY.md лежит в ~/.claude/projects/<project-slug>/memory/MEMORY.md. Структура:

# ErgonLab Memory Index

## Незавершённые сессии
- [Клиент A — контент-аудит готов](session_client_a_audit.md)
- [Клиент B — отправлена гипотеза](session_client_b_hypothesis.md)
- [Avito Sprint — приостановлен](session_avito_sprint.md)

## Критичные правила
- [НИКОГДА не отправлять без одобрения](feedback_never_send_without_approval.md)
- [Лана — изоляция чатов](feedback_lana_chat_isolation.md)

Сам MEMORY.md — это только индекс. По строке на запись, ссылка на детальный файл. Через 3 месяца работы у меня там сейчас около 60 записей, и файл всё равно читается за минуту.

Зачем нужен такой индекс отдельно: когда Claude открывает проект, он первым делом подтягивает MEMORY.md и видит карту. Если ему нужна деталь — переходит по ссылке к конкретному файлу. Если не нужна — не тратит контекст.

Что попадает в MEMORY.md:

  • Незавершённая сессия (что доделал, что нет, какие следующие шаги).
  • Свежий фидбек от меня (правило, которое я выдал во время работы).
  • Активный клиентский кейс с открытыми вопросами.

Что НЕ попадает:

  • Стек проекта (это в CLAUDE.md).
  • Полный лог за день (это плагин claude-mem или git log).
  • Подробности — только индексная строка, детали в отдельном файле.

Уровень 3: Persistent memory — накопленные факты

Это папка ~/.claude/projects/<project-slug>/memory/ — там лежат отдельные .md файлы, по одной теме на файл.

У меня структура такая:

memory/
  MEMORY.md                              ← индекс
  feedback_never_send_without_approval.md
  feedback_lana_chat_isolation.md
  feedback_lana_professional_tone.md
  client_a.md
  client_b.md
  session_client_a_breakthrough.md
  research_avito_march2026.md
  research_mcp_servers_march2026.md
  project_vps_migration_apr2026.md
  ...

Префиксы — это категории:

  • feedback_* — правила, которые я выдал во время работы. Например, «Лана — без наигранной заботы о времени» (после случая, когда она написала «понимаю что вы занятой человек»).
  • client_* — карточка клиента. Кто, на каком этапе, что обсуждали.
  • session_* — итог одной рабочей сессии. Что сделано, где остановились, что дальше.
  • research_* — собранное исследование (рынок, конкуренты, инструменты).
  • project_* — крупный кусок проекта, который тянется через несколько сессий.
  • contact_* — люди, которые не клиенты, но важны (партнёры, друзья, кураторы).
  • tool_* — заметка про инструмент или интеграцию.

Один факт — один файл. Не сваливаю «всё про клиента» в один разросшийся файл — у клиента свой client-файл (общий контекст), отдельные session-файлы по каждой проведённой сессии, project-файлы по крупным задачам (контент-аудит, архитектура воронки).

Почему это работает лучше, чем один большой файл:

  • Когда Claude нужен факт по клиенту — он подтягивает client-файл и нужный session-файл. Не тащит всю историю.
  • Когда я выдаю новый фидбек — создаю новый feedback-файл, не редактирую старый.
  • Когда работа закончена — переношу запись из «Незавершённые» в архив или удаляю.

Уровень 4: settings.json — что Claude может делать сам

Это не память про факты, а конфиг поведения. Что AI может делать без подтверждения, какие хуки срабатывают автоматически, какие переменные среды доступны.

В settings.json я кладу:

  • Разрешения на bash-команды (npm install, git status, gh pr list — без подтверждения).
  • Хуки на события (форматирование при сохранении, security-warning на опасные команды).
  • Переменные среды для текущего проекта.

Это другой уровень мышления. CLAUDE.md и MEMORY.md — про «что я знаю». settings.json — про «что я могу делать сам, без спроса».

Пример: если у меня в settings.json разрешено git status, Claude его выполнит, не спрашивая. Если нет — каждый раз будет «можно ли запустить?». На активных проектах разрешённый список из 20-30 команд экономит огромное количество кликов.

Главные антипаттерны

1. Свалить всё в CLAUDE.md

Самая частая ошибка. Симптомы:

  • CLAUDE.md > 500 строк.
  • В нём смешаны стек, активные задачи, фидбек, имена клиентов с переписками.
  • Через месяц работы там устаревшая информация, которую боишься удалить.

Лечение: вынеси активное в MEMORY.md, факты в memory/.md, правила оставь в CLAUDE.md только если они «навсегда» для этого проекта.

2. Тащить ежедневный лог в memory

Memory — это не дневник. Если я каждый день буду писать «сегодня сделал X, Y, Z» — через месяц там будет 30 файлов с похожими названиями, и я в них утону.

Для логов есть плагин claude-mem (он хранит timeline отдельно от persistent memory) и git log (что коммитил — то и сделал).

В memory попадает только то, что нужно помнить дольше одной сессии: правило, факт, контекст клиента, незакрытый вопрос.

3. Дублировать факт в 2-3 местах

Если правило «не отправляй без одобрения» написано:

  • В глобальном ~/.claude/CLAUDE.md,
  • В проектном CLAUDE.md,
  • И в feedback_never_send_without_approval.md в memory —

то через полгода ты не вспомнишь, где источник истины. Поменял в одном — забыл в двух других. AI читает все три и в каком-то моменте видит противоречие.

Правило: один факт — одно место. В остальных — ссылка.

Личные правила работы → глобальный CLAUDE.md. Конвенции проекта → проектный CLAUDE.md. Конкретный фидбек по конкретной ситуации → отдельный feedback-файл в memory.

Между уровнями — ссылки, не копии.

4. Не чистить memory

Через 3 месяца у меня было 80+ записей. Половина — про задачи, которые давно закрыты. Они отвлекали Claude — он подтягивал старые контексты к новым задачам.

Я завёл протокол: раз в две недели открываю MEMORY.md и прохожусь по списку. Записи старше 4 недель из категории «незавершённые сессии» — либо архивирую, либо удаляю.

В моём глобальном CLAUDE.md есть правило: «если в MEMORY.md больше 15 записей в одном проекте — предложи очистку». Это срабатывает само, мне не нужно помнить.

Как это работает на ErgonLab

Покажу на своём примере. У меня сейчас:

Глобальный ~/.claude/CLAUDE.md — 250 строк. Правила работы (язык, тон, запреты), модель партнёрства с AI, иерархия инструментов, список MCP-серверов с триггерами.

Проектный ErgonLab/CLAUDE.md — 300 строк. Концепция, команда (Лана, Саша), стек, структура папок, активные клиенты с их статусами, конвенции для файлов клиентов и кейсов.

memory/MEMORY.md (индекс) — 60 строк. Список незавершённых сессий, критичных правил, продуктовых исследований, инфраструктуры, клиентов.

memory/*.md (60+ файлов) — каждый про одну вещь. От правила «Лана — длинные тексты с абзацами» до полного отчёта по миграции VPS в апреле.

settings.json — разрешения на типичные bash-команды, хук на конвертацию excalidraw в PNG, хук на палитру SkandiKlubb.

Когда я открываю Claude Code в этом проекте — за две секунды загружается всё нужное. Я могу с порога сказать «доделай контент-аудит клиента» — и Claude знает, кто это, что такое контент-аудит, что было сделано в прошлой сессии, какой следующий шаг, какие правила для общения с ним, какой тон в карточке клиента.

Ни одного «а что это за проект?» больше.

Чек-лист для своей системы

  1. Открой свой CLAUDE.md. Если он > 400 строк — пора разносить.
  2. Есть ли у тебя MEMORY.md как индекс? Если нет — создай. Если есть, но в нём детали, а не ссылки — переноси детали в отдельные файлы.
  3. Есть ли в твоей системе категории через префиксы (client_*, feedback_*, session_*)? Если нет — заведи. Через 50 файлов это спасёт.
  4. Когда последний раз чистил MEMORY.md? Если «не помню» — пора.
  5. Дублируются ли правила между глобальным и проектным CLAUDE.md? Если да — выбери одно место.

Что сделать прямо сейчас

  1. Создай папку memory/ рядом со своим CLAUDE.md (или используй стандартный путь Claude Code).
  2. Заведи MEMORY.md как индекс — пока на 5 строк.
  3. Возьми из своего раздутого CLAUDE.md один блок «текущие задачи» — вынеси в memory/MEMORY.md со ссылками на детальные файлы.
  4. Через неделю — повтори для блока «фидбек».

Через месяц у тебя будет система, которая помнит про твой проект больше, чем ты сам. И при этом не тонет в собственной памяти.

Соседние посты

Читать дальше

← Предыдущий
Контекст переполняется — что делать
Следующий →
CLAUDE.md — как написать, чтобы AI понял проект с первого раза
Все материалы
Принимаю заказы

Понравилось?
Обсудим задачу?

Напишите коротко — ответим в течение дня.

Написать в Telegram
@ergonlab_bot