CLAUDE.md и auto memory решают разные задачи, и путать их не стоит. CLAUDE.md - это инструкции, которые Claude Code добавляет в контекст сессии: reviewable источник истины команды, живущий в репозитории под контролем версий. Auto memory - заметки, которые Claude ведёт сам между сессиями: вспомогательное накопление опыта. Первое вы пишете и ревьюите сознательно, второе накапливается по ходу; смешивать их роли - значит либо засорять источник истины, либо ждать от заметок надёжности контракта.
Память устроена иерархически. Claude Code ищет managed-память, user-файл ~/.claude/CLAUDE.md, project CLAUDE.md или .claude/CLAUDE.md, вложенные файлы по мере работы и личный CLAUDE.local.md. Более конкретные инструкции применяются ближе к своему пути. Если организация уже использует AGENTS.md, Claude Code не считает его автоматически полным эквивалентом - его импортируют явно директивой @AGENTS.md; так же через @path подключают и другие файлы, рекурсивно до документированной глубины 4, но никогда - секреты.
Хороший CLAUDE.md - это контракт проекта, а не пересказ структуры. В нём назначение, команды проверки, границы ("не запускать production-миграции", "не трогать сгенерированное") и определение готовности. Держат основной файл примерно до 200 строк - это не жёсткий лимит парсера, а практическая рекомендация: длинные инструкции занимают контекст и теряют salience. Общие факты оставляют в корне, а path-специфичные требования переносят в rules.
Path-scoped rules - ключ к дешёвой и точной памяти. Правило в .claude/rules/*.md с frontmatter paths включается, только когда Claude работает с совпадающими файлами; правило без paths загружается всегда. Полезно один раз увидеть такое правило: ниже - rule для src/api с двумя требованиями. Это дешевле и точнее, чем огромная корневая память: релевантная инструкция подгружается к своему коду, а не висит в контексте на каждой задаче.
Команды /init и /memory помогают вести память осознанно. /init создаёт начальный CLAUDE.md - это draft, а не автоматически верная политика, и его сверяют с фактическими скриптами и CI. /memory показывает загруженные источники памяти и открывает управление ими. Регулярная ревизия важна: память легко зарастает дублями, пожеланиями и устаревшими фактами, которые не помогают, а занимают контекст и вводят агента в заблуждение.
Auto memory - отдельный механизм со своими правилами. По умолчанию она включена, а ключ autoMemoryEnabled её выключает - у пользователя целиком или в одном проекте; хранится она отдельно от закоммиченных инструкций. В контекст загружается только начало памяти - первые 200 строк или 25 КБ, что наступит раньше; остальное Claude читает по необходимости. Туда пишут устойчивые наблюдения, а не временное состояние задачи. Всё, что важно всей команде, переносят в отревьюенные CLAUDE.md и rules - авто-память не замена общему источнику истины.
Инженерный вывод про память прост: она должна сокращать повторное исследование, а не превращаться во второй backlog. Заметка полезна, пока избавляет агента от повторного выяснения того, что уже понято; она вредна, когда копит пожелания, устаревшие догадки и то, чему место в трекере. Регулярно удаляйте устаревшее, не храните пароли, персональные данные и неподтверждённые предположения - память с мусором обманывает не хуже неверной инструкции.
Типичные провалы работы с памятью предсказуемы. Раздутый CLAUDE.md, который занимает контекст и теряет salience вместо короткого контракта. Path-специфичные требования, сваленные в корень вместо rules. Ожидание, что правка CLAUDE.md в середине сессии тут же подействует, - а она применяется лишь после clear, compact или перезапуска. И авто-память как свалка вместо устойчивых наблюдений. Держите контракт коротким, правила - по путям, а память - отревизованной.
---
paths:
- "src/api/**/*.ts"
---
# API rules
- Validate all external input at the boundary.
- Add a contract test for every response schema change.
# Правило без paths грузится всегда; с paths - только на совпавших файлах{ "autoMemoryEnabled": false } // выключить авто-память (по умолчанию она включена)
// Авто-память отдельна от committed-инструкций; в контекст - первые 200 строк / 25 KB.
// Импорт файлов в CLAUDE.md: @AGENTS.md, @path/to/file (рекурсивно до глубины 4)