Два слоя памяти Claude Code

Каждая сессия Claude Code начинается с пустого контекстного окна. Никакой «долгосрочной памяти» в модели нет — зато есть два механизма, которые переносят знания между сессиями.

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

Авто-память — заметки, которые Claude записывает себе в процессе работы: найденные команды сборки, паттерны кода, ваши предпочтения.

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


Быстрое повторение
Назови два механизма, которые переносят знания между сессиями Claude Code

Иерархия файлов CLAUDE.md

CLAUDE.md может лежать в нескольких местах с разным охватом. Загружаются все найденные файлы — от самого общего к самому конкретному.

flowchart TD A["🏢 Managed Policy\n/etc/claude-code/CLAUDE.md\nили managed-settings.json"] --> B B["👤 User\n~/.claude/CLAUDE.md\n~/.claude/rules/*.md"] --> C C["📁 Project\n./CLAUDE.md\n./.claude/CLAUDE.md\n.claude/rules/*.md"] --> D D["🔒 Local\n./CLAUDE.local.md"] style A fill:#e74c3c,color:#fff style B fill:#e67e22,color:#fff style C fill:#27ae60,color:#fff style D fill:#2980b9,color:#fff E["📝 Auto Memory\n~/.claude/projects/<project>/memory/MEMORY.md"] F["📖 В контекст каждой сессии:"] --> A F --> B F --> C F --> D F --> E style F fill:#8e44ad,color:#fff style E fill:#16a085,color:#fff
flowchart TD
    A["🏢 Managed Policy\n/etc/claude-code/CLAUDE.md\nили managed-settings.json"] --> B
    B["👤 User\n~/.claude/CLAUDE.md\n~/.claude/rules/*.md"] --> C
    C["📁 Project\n./CLAUDE.md\n./.claude/CLAUDE.md\n.claude/rules/*.md"] --> D
    D["🔒 Local\n./CLAUDE.local.md"]

    style A fill:#e74c3c,color:#fff
    style B fill:#e67e22,color:#fff
    style C fill:#27ae60,color:#fff
    style D fill:#2980b9,color:#fff

    E["📝 Auto Memory\n~/.claude/projects/<project>/memory/MEMORY.md"]
    F["📖 В контекст каждой сессии:"] --> A
    F --> B
    F --> C
    F --> D
    F --> E

    style F fill:#8e44ad,color:#fff
    style E fill:#16a085,color:#fff
Иерархия файлов памяти Claude Code: от enterprise до локального уровня. Все файлы конкатенируются в контекст в порядке от общего к частному.
УровеньПутьОхватПопадает в git
Managed policy (enterprise)macOS: /Library/Application Support/ClaudeCode/CLAUDE.md<br>Linux: /etc/claude-code/CLAUDE.mdВсе пользователи машиныНет (деплоится IT)
User~/.claude/CLAUDE.mdВсе проекты конкретного пользователяНет
Project./CLAUDE.md или ./.claude/CLAUDE.mdВесь проект, общий для командыДа
Local./CLAUDE.local.mdПроект, только для васНет (добавить в .gitignore)

Порядок загрузки: managed → user → project → local. Файлы не перекрывают друг друга — они конкатенируются в контекст. Файлы из поддиректорий загружаются лениво: только когда Claude читает файлы в этой директории.

Практика: project CLAUDE.md коммитится в репозиторий и разделяется с командой. В нём — архитектурные решения, coding conventions, типовые команды. Личные предпочтения (ваши sandbox-URL, локальные пути) — в CLAUDE.local.md, добавленном в .gitignore.

Проверь себя
Вы работаете в команде над проектом. Где правильно хранить: (а) соглашение по именованию функций, общее для всей команды, и (б) ваш локальный URL тестового сервера?

Быстрое повторение
Сколько уровней в иерархии CLAUDE.md и в каком порядке они загружаются?

Импорты через @path

CLAUDE.md поддерживает импорт других файлов через синтаксис @path/to/file. Импортированные файлы раскрываются в контекст при старте сессии.

# CLAUDE.md

См. @README.md для обзора проекта.
Доступные команды: @package.json


Быстрое повторение
Как импортировать содержимое другого файла в CLAUDE.md?

Git workflow

@docs/git-conventions.md


Несколько правил:
- Пути могут быть относительными (от файла с импортом) и абсолютными
- Поддерживается рекурсивный импорт до 4 уровней вложенности
- Импортированные файлы **полностью** попадают в контекст при запуске — импорт помогает с организацией, но не экономит токены

Если вы работаете в нескольких git worktrees одного репозитория и хотите разделить личные инструкции — импортируйте файл из домашней директории:

В CLAUDE.local.md текущего проекта

@~/.claude/my-project-prefs.md


При первой встрече с внешними импортами Claude Code покажет диалог подтверждения со списком файлов.

---

## Директория .claude/rules/

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

.claude/

├── CLAUDE.md

└── rules/

├── code-style.md # соглашения по стилю

├── testing.md # требования к тестам

└── api-design.md # стандарты API


Файлы правил поддерживают **path-scoped** режим через YAML-фронтматтер. Такие правила загружаются только когда Claude работает с совпадающими файлами:

paths:

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

- "lib/**/*.ts"


API Rules

  • Все эндпоинты обязаны валидировать входные данные
  • Использовать стандартный формат ошибок из src/api/errors.ts

Path-scoped правила — мощный инструмент для монорепо: инструкции для фронтенда не загрязняют контекст при работе с бэкендом и наоборот.

---

## Авто-память

Авто-память хранится в `~/.claude/projects/<project>/memory/` и включает:

- `MEMORY.md` — главный файл-индекс; **первые 200 строк или 25KB** загружаются в каждую сессию
- Тематические файлы (`debugging.md`, `api-conventions.md`) — загружаются по запросу

Claude решает сам, что стоит запомнить: нестандартную команду сборки, найденный баг-паттерн, ваше предпочтение по именованию. Когда видите «Writing memory» в интерфейсе — Claude активно обновляет эти файлы.

Важно: авто-память **локальная**. Все worktrees одного git-репозитория делят одну директорию памяти. На другую машину или в облачные агенты она не переносится автоматически.

Чтобы попросить Claude запомнить что-то прямо сейчас: напишите в чате «запомни, что мы всегда используем pnpm, не npm» — Claude сохранит это в авто-память. Чтобы добавить в CLAUDE.md: «добавь это в CLAUDE.md».

Просмотреть и отредактировать всё сохранённое: команда `/memory` в сессии.

Проверь себя
Предположите: что произойдёт с авто-памятью, если MEMORY.md вырастет до 600 строк? Загрузятся ли все 600 строк в следующую сессию?

Как писать эффективный CLAUDE.md

CLAUDE.md — не документация для людей. Это инструкции для модели, которая читает их при каждом старте. Несколько правил, которые реально влияют на качество следования:

Размер: до 200 строк. Больше — больше токенов и ниже adherence. Если файл разрастается, переносите специфичные вещи в .claude/rules/ с path-scoping.

Конкретность, не абстракции. Сравните:

# ❌ Плохо
Форматируй код аккуратно и тестируй изменения.

# ✅ Хорошо
- Отступы: 2 пробела (не табы)
- Запускать `npm test` перед каждым коммитом
- Обработчики API живут в src/api/handlers/

Структура через Markdown. Headers и bullets Claude сканирует как читатель — структурированные секции работают лучше плотных параграфов.

Консистентность. Два противоречащих правила — Claude выберет одно произвольно. Периодически ревьюйте CLAUDE.md, особенно после добавления вложенных файлов.

Что класть в CLAUDE.md:

  • Команды сборки, тестирования, деплоя
  • Naming conventions и coding standards
  • Архитектурные решения, которые не видны из кода
  • «Всегда делай X» правила

Что не класть:

  • Многошаговые процедуры — их лучше упаковать в Skills — переносимые навыки
  • Инструкции, нужные только для одной части кодовой базы — используйте path-scoped rules
  • Личные предпочтения — в ~/.claude/CLAUDE.md или CLAUDE.local.md

Примечание о HTML-комментариях: <!-- заметки для мейнтейнеров --> в CLAUDE.md вырезаются перед инъекцией в контекст. Пользуйтесь ими для служебных пометок — они не тратят токены.


Быстрый старт: /init и /memory

/init — запускает автоматическое создание CLAUDE.md. Claude анализирует кодовую базу и генерирует файл с командами сборки, конвенциями и структурой проекта. Если CLAUDE.md уже есть — предложит улучшения. С флагом CLAUDE_CODE_NEW_INIT=1 запускается интерактивный режим: Claude проведёт вас через несколько вопросов и покажет предложение перед записью.

/memory — открывает список всех загруженных файлов памяти (CLAUDE.md, CLAUDE.local.md, rules). Позволяет переключить авто-память и открыть любой файл в редакторе. Используйте как быстрый диагностический инструмент: если инструкция не соблюдается, первый шаг — проверить через /memory, что файл вообще загружается.

Проверь себя
Запустили /memory — и нужной вам инструкции нет в списке. Что это означает и что делать дальше?

See also