Память Claude Code — auto memory, rules и CLAUDE.md

У Claude Code два типа памяти: файлы CLAUDE.md с вашими инструкциями и auto memory, где Claude записывает паттерны проекта сам. Плюс модульные правила и импорты.

Память Claude Code — auto memory, rules и CLAUDE.md
TL;DR: У Claude Code два вида памяти: CLAUDE.md (ты пишешь инструкции) и auto memory (Claude сам записывает полезное). Плюс система правил в .claude/rules/, импорты файлов и организационные политики. Всё загружается при старте сессии и помогает Claude понимать проект без повторных объяснений.

Каждый раз, когда ты запускаешь Claude Code, он начинает с чистого листа. Не помнит, что вы обсуждали вчера, не знает, что у тебя тесты запускаются через pnpm test, а не npm test. Точнее — не знал, пока не появилась нормальная система памяти.

Сейчас в Claude Code есть несколько слоёв памяти, и если настроить их правильно, ощущение совсем другое. Claude помнит контекст, следует конвенциям, не задаёт одни и те же вопросы.

Два типа памяти

Принципиально разных:

CLAUDE.md — файлы, которые пишешь ты. Инструкции, правила, описание проекта. Claude читает их как руководство к действию.

Auto memory — заметки, которые Claude пишет сам. Паттерны проекта, решения багов, архитектурные наблюдения. Он записывает то, что считает полезным для будущих сессий.

Оба типа загружаются при старте каждой сессии. CLAUDE.md — полностью. Auto memory — первые 200 строк основного файла MEMORY.md, остальное Claude подгружает по необходимости.

Иерархия CLAUDE.md

У CLAUDE.md есть шесть уровней, от самого широкого к самому узкому:

Уровень Где лежит Для кого
Managed policy /Library/Application Support/ClaudeCode/CLAUDE.md (macOS) Вся организация. Ставит IT-отдел
User memory ~/.claude/CLAUDE.md Ты, во всех проектах
Project memory ./CLAUDE.md или ./.claude/CLAUDE.md Команда (коммитится в git)
Project rules ./.claude/rules/*.md Команда, модульные правила
Local memory ./CLAUDE.local.md Только ты, только этот проект
Auto memory ~/.claude/projects/<project>/memory/ Только ты (Claude пишет сам)

Claude загружает всё это при старте. Более специфичные инструкции перекрывают более общие. Если в user memory написано «используй tabs», а в project memory «используй spaces» — победит project.

CLAUDE.md файлы в родительских директориях загружаются автоматически. Если ты запускаешь Claude Code в foo/bar/, он прочитает и foo/CLAUDE.md, и foo/bar/CLAUDE.md. А вот файлы в дочерних директориях загружаются лениво — только когда Claude начинает работать с файлами оттуда.

Auto memory — Claude записывает сам

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

Что он может записать: - Команды сборки и тестирования, которые ты используешь - Решения нетривиальных багов — чтобы не отлаживать одно и то же дважды - Архитектурные заметки: какие модули за что отвечают, как связаны - Твои предпочтения: стиль коммуникации, какие инструменты любишь

Всё хранится в ~/.claude/projects/<project>/memory/:

memory/
├── MEMORY.md          # Индекс — загружается при старте (первые 200 строк)
├── debugging.md       # Заметки про отладку
├── api-conventions.md # Решения по API
└── ...

MEMORY.md — это оглавление. Claude старается держать его компактным и выносить детали в отдельные файлы. Отдельные файлы не загружаются при старте — Claude читает их, когда ему нужна конкретная информация.

Управление auto memory

Можно попросить Claude запомнить что-то конкретное: «запомни, что мы используем pnpm, а не npm» или «сохрани в память, что для API-тестов нужен локальный Redis». Claude запишет это в свои файлы.

Файлы памяти — обычный markdown, их можно редактировать вручную. Команда /memory откроет файл в системном редакторе.

Если auto memory не нравится, можно отключить:

export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1  # Отключить
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=0  # Принудительно включить

Фича пока раскатывается постепенно — если не видишь auto memory, поставь CLAUDE_CODE_DISABLE_AUTO_MEMORY=0.

Модульные правила в .claude/rules/

Для больших проектов один CLAUDE.md может стать неуправляемым. Директория .claude/rules/ позволяет разбить инструкции по файлам:

.claude/rules/
├── frontend/
│   ├── react.md
│   └── styles.md
├── backend/
│   ├── api.md
│   └── database.md
└── testing.md

Все .md файлы подхватываются рекурсивно. Каждый файл — одна тема. Это удобнее, чем один гигантский CLAUDE.md.

Условные правила по путям

Самая интересная часть. Правила можно привязать к конкретным файлам через frontmatter:

---
paths:
  - "src/api/**/*.ts"
---

# Правила API

- Все эндпоинты должны валидировать входные данные
- Использовать стандартный формат ответа с ошибками
- Добавлять OpenAPI-комментарии

Эти правила загружаются только когда Claude работает с файлами в src/api/. Для остальных файлов они не видны — не засоряют контекст.

Поддерживаются glob-паттерны:

  • **/*.ts — все TypeScript-файлы
  • src/components/*.tsx — React-компоненты в конкретной папке
  • src/**/*.{ts,tsx} — TypeScript и TSX через фигурные скобки

Правила без paths загружаются всегда, как обычный CLAUDE.md.

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

Можно создать правила для всех проектов в ~/.claude/rules/:

~/.claude/rules/
├── preferences.md    # Личные предпочтения
└── workflows.md      # Любимые рабочие процессы

Они загружаются до проектных правил, поэтому проектные имеют приоритет.

Импорты — ссылки на другие файлы

CLAUDE.md поддерживает импорт файлов через синтаксис @path/to/file:

Смотри @README для описания проекта и @package.json для npm-команд.

# Дополнительные инструкции
- Git workflow @docs/git-instructions.md

Пути могут быть относительными (от файла, содержащего импорт) или абсолютными. Импорты рекурсивные — импортированный файл может импортировать другие, до 5 уровней вложенности.

Полезный паттерн для git worktrees: вместо CLAUDE.local.md (который существует только в одном worktree), можно импортировать файл из домашней директории:

# Личные настройки
- @~/.claude/my-project-instructions.md

Тогда все worktrees подхватят одни и те же личные инструкции.

При первом обнаружении импортов Claude Code покажет диалог подтверждения. Это одноразовое решение — если отклонишь, импорты останутся отключёнными для этого проекта.

Быстрый старт с /init

Если у тебя ещё нет CLAUDE.md, самый простой способ начать:

> /init

Claude Code проанализирует проект и создаст базовый CLAUDE.md с описанием стека, командами и основными правилами. Не идеально, но хорошая отправная точка — дальше допилишь вручную.

Мои рекомендации по организации памяти

После нескольких месяцев работы с Claude Code у меня сложился такой подход:

User memory (~/.claude/CLAUDE.md) — минимально. Язык ответов, пара личных предпочтений. 10-15 строк.

Project CLAUDE.md — описание проекта, стек, основные команды, критичные конвенции. 50-100 строк. Коммитится в git.

.claude/rules/ — для проектов побольше. Отдельный файл на каждую тему: testing.md, api.md, code-style.md. С path-условиями где уместно.

CLAUDE.local.md — личные URL (staging, sandbox), тестовые данные, эксперименты.

Auto memory — не трогаю. Пусть Claude пишет свои заметки. Иногда захожу через /memory и удаляю устаревшее.

Главное правило: будь конкретным. «Используй 2 пробела для отступов» лучше, чем «форматируй код правильно». Claude интерпретирует инструкции буквально — чем точнее напишешь, тем точнее выполнит.

Часто задаваемые вопросы

Auto memory занимает место в контекстном окне? Да, но только первые 200 строк MEMORY.md. Отдельные файлы (debugging.md, patterns.md) загружаются по запросу. Поэтому Claude старается держать MEMORY.md компактным.

Можно ли шарить auto memory между разработчиками? Нет, auto memory хранится локально в ~/.claude/projects/. Для общих знаний используй CLAUDE.md и .claude/rules/ — они коммитятся в git.

Как сбросить auto memory проекта? Удали директорию ~/.claude/projects/<project>/memory/. Claude Code пересоздаст её при следующей сессии с нуля.

Работают ли symlink-и в .claude/rules/? Да. Можно сделать симлинк на общие правила из другого репозитория или домашней директории. Циклические ссылки обрабатываются корректно.

Как посмотреть, какие файлы памяти загружены? Команда /memory покажет все загруженные файлы памяти: CLAUDE.md, rules, auto memory.

Что ещё почитать