
Файл памяти Claude что оставить, а что выкинуть
В конце июля Anthropic срезали новым моделям больше 80% системного промпта Claude Code и признались прямым текстом: перестарались с инструкциями, и в промпте, и в файлах памяти. В чек-листе описано, что оставить в файле памяти, что вынести в правила и как за минуту проверить, что файл вообще загрузился.
Содержание9 глав
- 011. Убедиться, что файл вообще загрузился
- 022. Замерить длину и признать проблему
- 033. Пересобрать вместо того, чтобы дописывать
- 044. Что вырезать, а что оставить
- 055. Разнести остальное по местам
- 066. Четыре ловушки, на которых горят чаще всего
- 077. Не писать руками то, что пишется само
- 088. Проверка результата
- 099. Первоисточники
Пошаговая ревизия CLAUDE.md за один вечер: проверить загрузку, срезать лишнее, разнести остальное по местам, где оно грузится только когда нужно.
1. Убедиться, что файл вообще загрузился
Половина жалоб «он меня не слушается» - это файл, которого Claude не видит. Проверяется за минуту.
- Запустил /context и нашёл свой файл в списке Memory files
- Если файла в списке нет - открыл /memory и проверил, в той ли папке он лежит
- Помню порядок загрузки: файлы выше по дереву грузятся целиком при старте, файлы во вложенных папках подхватываются только когда Claude читает файлы оттуда
- Знаю, что CLAUDE.local.md - личный файл рядом с проектным, его место в .gitignore
2. Замерить длину и признать проблему
Ориентир не выдуманный, он записан в документации: целиться нужно меньше чем в 200 строк на файл, потому что длинные файлы съедают контекст и снижают следование инструкциям.
wc -l CLAUDE.md ~/.claude/CLAUDE.md .claude/CLAUDE.md 2>/dev/null
- Посчитал строки во всех своих файлах: проектном, пользовательском, локальном
- Каждый уложился меньше чем в 200 строк
- Проверил, что правила не противоречат друг другу: при конфликте Claude выберет одно произвольно
- В монорепозитории отсёк чужие файлы через claudeMdExcludes в .claude/settings.local.json
3. Пересобрать вместо того, чтобы дописывать
Собирать файл вручную по анкете из десятков вопросов не нужно. Есть две штатные команды.
Промт 12 строки · 123 знака
/init # читает проект и собирает стартовый CLAUDE.md /doctor # проверяет конфигурацию и предлагает вычистить лишнее
- Прогнал /init: если файл уже есть, команда не перезатирает его, а предлагает улучшения
- Прогнал /doctor и прочитал предложения до того, как согласился (он сначала показывает находки и спрашивает подтверждение)
- Обновил Claude Code до свежей версии - разбор и обрезка файла появились не в первых релизах
4. Что вырезать, а что оставить
Критерий один: Claude сам это увидит в коде? Если да - строка не нужна.
- Каждую оставшуюся строку можно проверить: «отступ в 2 пробела» вместо «форматируй красиво», «запускай npm test перед коммитом» вместо «тестируй изменения»
- Убрал устаревшие и дублирующие правила
- Заметки для людей спрятал в HTML-комментарии - они вырезаются до попадания в контекст и не тратят токены
5. Разнести остальное по местам
Вычищенное не удаляется навсегда - оно переезжает туда, где грузится по требованию.
Промт 18 строк · 123 знака
--- paths: - "src/api/**/*.ts" --- # Правила для API - каждая ручка валидирует вход - ошибки возвращаем в едином формате
- Разложил правила по .claude/rules/, по одной теме на файл
- Всё, что стало процедурой, а не фактом, вынес в скилл: тело скилла грузится только когда он реально нужен
- То, что обязано выполняться всегда (линтер перед коммитом, запрет на пуш в main), сделал хуком, а не строкой в файле
- Личные предпочтения для всех проектов положил в ~/.claude/rules/, а не в проектный файл
6. Четыре ловушки, на которых горят чаще всего
- Импорты не экономят контекст. Разбить файл на части через @путь - это про порядок, а не про экономию: импортированное всё равно грузится при старте.
- Claude Code не читает AGENTS.md. Если в репозитории лежит только он, инструкций загрузится ноль, и никакой ошибки не будет. Лечится строкой @AGENTS.md внутри CLAUDE.md или симлинком ln -s AGENTS.md CLAUDE.md.
- Вложенные файлы не возвращаются после сжатия контекста. Корневой CLAUDE.md перечитывается с диска, файлы из подпапок - только когда Claude снова тронет файл оттуда.
- Инструкции из чата не переживают сессию. Если правило важное, ему место в файле, а не в переписке.
7. Не писать руками то, что пишется само
Часть контекста Claude накапливает без тебя: команды сборки, найденные особенности отладки, твои предпочтения. Это отдельный механизм, он включён по умолчанию.
- Открыл /memory и посмотрел, что уже записано в автопамяти
- Знаю про её потолок: в каждую сессию грузятся первые 200 строк или 25 КБ индекса, остальное лежит в тематических файлах и читается по требованию
- Удалил из своего файла то, что автопамять и так знает
- Помню, что автопамять живёт на конкретной машине и между компьютерами не переезжает
8. Проверка результата
- /context показывает нужные файлы в Memory files и не ругается на раздутую память
- Каждый файл меньше 200 строк
- Ни одного правила, которое нельзя проверить глазами по результату
- Ни одного правила, которое противоречит другому
- Взял задачу, на которой раньше Claude стабильно косячил, и прогнал заново
9. Первоисточники
- code.claude.com/docs/en/memory - как устроена память: иерархия файлов, порядок загрузки, лимит в 200 строк, импорты, правила по путям, автопамять
- code.claude.com/docs/en/commands - что именно делают /init, /doctor, /context и /memory
- code.claude.com/docs/en/skills - когда раздел файла пора превращать в скилл и почему это дешевле по контексту
- claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models - разбор Anthropic: как срезали больше 80% системного промпта Claude Code без потерь на тестах кодинга
- trychroma.com/research/context-rot - независимое исследование на 18 моделях: качество падает по мере роста длины входа


