Гайд · Claude Code · сентябрь 2026

Claude Code перечитывает проект: 3 причины и карта на 4 строки

Просишь Claude Code поправить одну строку, а он открывает половину проекта заново - и лимит сессии сгорает быстрее, чем должен. Разбираю 3 технические причины этого поведения по официальной документации Anthropic и своему собственному прогону: одинаковый тестовый проект я прогнал 4 раза с разными настройками и посчитал разницу в ходах и деньгах

Я лично прогнал свой тестовый проект из 36 файлов через Claude Code 5 сентября 2026 года четыре раза подряд: без карты проекта и с картой, с широкой формулировкой задачи и с узкой. Разница видна в терминал-выводах, которые лежат рядом со статьёй без сокращений

Положи в корень проекта файл CLAUDE.md с короткой картой папок (что где лежит и что не читать без явной просьбы), формулируй задачи узко - называй конкретный файл и строку, а не «разберись в проекте». Оба приёма проверены моим собственным прогоном: без карты и с широкой формулировкой Claude Code уходит в 6-7 ходов и читает вдвое больше токенов, чем с картой и узкой задачей

Что вообще значит «перечитывает проект»

Когда ты работаешь с Claude Code, каждый файл, который он открывает командой чтения, добавляется в контекстное окно - это как рабочий стол, на котором лежат открытые страницы. Стол не бесконечный: у Sonnet 5 он держит 1 миллион токенов (единица подсчёта текста, примерно ¾ слова каждая) разом, но заполняется быстро, если агент открывает файлы, которые задаче не нужны. Если хочется понять эту единицу измерения на живом примере с документами, а не только с кодом - смотри разбор Claude и PDF: как скормить документы без лишних токенов

Официальная страница с интерактивным симулятором контекстного окна Claude Code на сайте Anthropic
Официальный симулятор контекстного окна Claude Code на сайте Anthropic - показывает, что загружается автоматически при старте сессии и что происходит при сжатии разговора

«Перечитывает проект» на практике выглядит так: ты просишь что-то мелкое, а в окне с командами одна за другой мелькают строки «Read» с именами файлов, которые вообще не связаны с твоей задачей. Официальная документация Anthropic называет три технических источника этого поведения, и все три можно проверить своими руками - разбираю их по порядку. Если проект уже разросся настолько, что в нём несколько связанных частей и запутаться легко даже с картой - смотри отдельный разбор большой проект в Claude Code: схема из 4 звеньев без хаоса

Что уже загружается в контекст ещё до твоего первого сообщения

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

Это не потерянные впустую токены - без них Claude Code не будет знать твои личные правила и не сможет пользоваться навыками. Но именно поэтому размер и точность самого CLAUDE.md имеют значение: чем он длиннее и расплывчатее, тем больше места он занимает ещё до старта работы, и тем меньше остаётся для настоящей задачи

Причина 1: у проекта нет карты в файле CLAUDE.md

Claude Code не умеет заглянуть в папку и сразу понять, что в ней важно, а что можно пропустить. Без подсказки он действует так же, как ты бы действовал в чужом незнакомом проекте: открывает файлы один за другим, чтобы разобраться. Файл CLAUDE.md в корне проекта - это записка, которую Claude Code читает в начале КАЖДОЙ сессии, и в ней можно прямо написать, какие папки не трогать без явной просьбы

Важная оговорка сразу: CLAUDE.md - это просьба, а не жёсткий запрет. Модель старается следовать написанному, но гарантии стопроцентного соблюдения нет - для по-настоящему железного запрета есть отдельный механизм под названием хуки, разобранный в короткой справке хуки (hooks) в Claude Code. Готовый набор из 4 коротких правил для самого файла CLAUDE.md, которым сейчас пользуются сотни тысяч разработчиков - в разборе CLAUDE.md Karpathy: 210K звёзд и 4 правила простыми словами

Я проверил это своим прогоном. Собрал синтетический тестовый проект (36 файлов, около 864 килобайт: рабочий файл index.js плюс две папки-заглушки с бессмысленным содержимым для симуляции объёма) и прогнал в нём одну и ту же команду claude -p "разберись в проекте" дважды - в одной копии проекта CLAUDE.md не было, в другой лежал файл с 4 строками карты

Без CLAUDE.md-картыС CLAUDE.md-картой
Ходов агента63
Прочитано текста (в токенах)161 365108 752
Стоимость запроса0,81 доллара0,55 доллара
Что ответил агент«Я проверил все 35 файлов»«По карте проекта это служебные заглушки, их я по инструкции не открывал»

Таблица прокручивается вбок →

Разница на абсолютно одинаковом содержимом: в 2 раза меньше ходов, почти в 1,5 раза меньше прочитанного текста, стоимость ниже почти на треть. Карта проекта не ускоряет саму модель - она просто избавляет её от необходимости выяснять то, что ты и так знаешь заранее

Полный вывод прогонов на том же тестовом проекте из 36 файлов лежит рядом со статьёй в формате JSON без сокращений, с точными числами ходов, токенов и стоимости - я не пересказываю чужие цифры, а прикладываю свои

Причина 1 на практике: карта в CLAUDE.md

  1. Что напечатать создай файл CLAUDE.md в самом корне проекта (там же, где ты открываешь Claude Code) и коротким списком опиши папки: что в них лежит и что не читать без явного запроса
  2. Что увидишь на экране в начале следующей сессии Claude Code не покажет содержимое файла явно, но в ответах начнёт ссылаться на него: «по карте проекта это...», и не будет открывать папки, помеченные как второстепенные
  3. Что это тебе даёт меньше ходов на простую задачу и меньше сожжённых денег на запрос - в моём прогоне разница составила треть стоимости одного запроса на одинаковой задаче

Как разложить структуру проекта и файл CLAUDE.md с нуля, если у тебя её ещё нет - подробный разбор в отдельном гайде структура проекта для Claude Code: папки и файл CLAUDE.md. Здесь речь только про то, как отсутствие карты технически приводит к перечитыванию, сама структура там

Причина 2: широкая формулировка задачи вместо узкой

Вторая причина не про файл настроек, а про то, как ты формулируешь просьбу. «Почини баг» и «в файле index.js замени строку hello на нужную» - это две принципиально разные задачи для агента с точки зрения того, сколько ему придётся читать, чтобы понять, что вообще имеется в виду

Я проверил и это своим прогоном, на том же тестовом проекте, свежими копиями без предыдущей истории

Широкая: «почини баг с приветствием»Узкая: «в index.js замени строку hello»
Ходов агента74
Прочитано текста (в токенах)241 134150 982
Стоимость запроса0,82 доллара0,58 доллара

Таблица прокручивается вбок →

Разница: широкая формулировка без названного файла заставила агента искать «баг» по всему дереву папок проекта - 7 ходов и 241 134 токена чтения. Узкая формулировка с прямым указанием файла и конкретной строки закрыла ту же по сути задачу за 4 хода при 150 982 токенах - на 37% меньше чтения на живых цифрах

Обе команды прогонялись на свежих копиях тестового проекта из 36 файлов без общей истории разговора, чтобы разница была честной, а не следствием того, что модель что-то запомнила из прошлого прогона

Что делать с этим дальше, разобрано в статье почему ими не пользуются и 7 задач, где экономят часы

Причина 2 на практике: узкая формулировка

  1. Что напечатать вместо «почини баг» или «сделай форму красивее» назови конкретный файл, функцию или даже строку: «в файле контактной формы поправь текст ошибки под полем email»
  2. Что увидишь на экране агент сразу открывает названный файл, а не начинает поиск по всем файлам проекта подряд, перебирая папку за папкой в поисках нужного места
  3. Что это тебе даёт меньше ходов и меньше прочитанного текста на ту же по сути задачу - в моём прогоне разница составила больше трети стоимости запроса

Узость формулировки не значит, что нужно знать код досконально. Достаточно указать ориентир - имя файла, название функции, кусок текста на экране, который нужно поменять. Если у тебя большая задача, которую сложно свести к одному файлу, лучше явно попросить Claude Code сначала предложить план, а не сразу бросаться переписывать код - про это отдельный разбор в гайде флаги Claude Code: 6 команд запуска, которые экономят часы, где разобран режим планирования запуска. Первые шаги после установки, если ты только начинаешь работать в Claude Code вообще - в гайде что делать после установки Claude Code: первые шаги

Причина 3: компакция стирает историю, а перезагружает не всё подряд

Третья причина - механизм, который срабатывает автоматически и без твоего участия: когда разговор становится слишком длинным, Claude Code сжимает его в краткий пересказ командой /compact (сам или по твоей команде). Проблема в том, что этот пересказ не хранит содержимое файлов, которые уже читались - оно заменяется коротким описанием

Раздел документации Claude Code «What survives compaction» с таблицей правил перезагрузки файлов
Официальная таблица Anthropic «What survives compaction» - что именно перезагружается автоматически после команды /compact, а что остаётся только кратким пересказом

По официальной документации Anthropic, сразу после сжатия Claude Code «re-reads up to five of the files Claude has read or edited in the session, choosing the ones modified most recently» - перечитывает заново до пяти файлов, выбирая те, что менялись позже всех остальных. Файл, который был открыт до сжатия и в это число не попал, приходит обратно как ссылка на путь без содержимого - документация называет это «Referenced file instead of Read». Если тебе снова понадобится его содержимое, Claude Code честно откроет его повторно - и это тоже читается со стороны как «перечитывает проект», хотя на самом деле это не баг, а прямое следствие того, как устроена сама компакция

Второй важный факт из той же документации: правила, которые подгружаются вместе с файлами определённых папок (path-scoped rules) и вложенные CLAUDE.md в подпапках, «reload as Claude reads files they apply to» - перезагружаются заново по мере того, как Claude читает файлы соответствующих папок, а не сразу все разом при старте. Если инструкция обязательно нужна каждую сессию, документация советует прямо: «drop the paths: frontmatter or move it to the project-root CLAUDE.md» - убрать привязку к конкретным путям и перенести правило в корневой CLAUDE.md, который перезагружается всегда. Если ты работаешь с телефона и хочешь видеть, что происходит с контекстом сессии на ходу - смотри Claude Code с телефона: включаем Remote Control за 3 шага

Официальная страница документации Claude Code о хранении инструкций - CLAUDE.md во вложенных папках и правила по путям
Официальная страница Anthropic про хранение памяти проекта - откуда вложенные файлы CLAUDE.md и правила по путям подгружаются в контекст только при обращении к соответствующим файлам

Причина 3 на практике: /compact с фокусом

  1. Что напечатать прямо в поле ввода открытого окна: /compact и следом уточнение того, что важно сохранить, например /compact сохрани план миграции и список изменённых файлов
  2. Что увидишь на экране подтверждение, что разговор сжат в краткое содержание, а следом - одна строка «Read» на каждый из перезагруженных файлов (их не больше пяти, самые свежие идут первыми)
  3. Что это тебе даёт ты сам решаешь, что войдёт в краткий пересказ, вместо того чтобы полагаться на то, что автоматическое сжатие угадает правильно

Если после сжатия разговора Claude Code вдруг «забыл» какое-то правило, которое ты называл раньше только словами в переписке, а не файлом - это ожидаемо: правило из обычного диалога компакция не хранит, оно живёт только в кратком пересказе. Постоянные требования переносятся в CLAUDE.md заранее, до того как понадобятся снова. Похожий механизм отката к более раннему состоянию разговора и кода - не то же самое, что сжатие, но живёт в том же меню - подробно разобран в гайде как откатить изменения Claude Code: /rewind, git и 5 путей

Три причины рядом: что решает каждая

Три разобранные причины действуют независимо друг от друга и лечатся разными приёмами - удобно свести их в одну таблицу, чтобы понять, с какой начать в твоём конкретном случае

ПричинаКогда срабатываетЧто чинит
Нет карты в CLAUDE.mdВ начале и на протяжении всей сессииФайл CLAUDE.md с короткой картой папок
Широкая формулировкаНа каждый твой отдельный запросНазывать конкретный файл или строку в самой просьбе
КомпакцияТолько после сжатия длинного разговораПостоянные правила держать в корневом CLAUDE.md, а важное сохранять фокусом /compact

Таблица прокручивается вбок →

Если у тебя проблема на каждом новом запросе с самого начала сессии - вероятнее всего дело в карте. Если проблема появляется только в очень длинных разговорах ближе к вечеру работы - вероятнее всего дело в компакции

Перечитывание, которое не является проблемой

Не любое повторное чтение файла - это брак. Если ты действительно правишь один и тот же файл несколько раз подряд в рамках одной задачи, Claude Code читает его снова каждый раз перед новой правкой, чтобы не затереть чужие изменения поверх устаревшей версии - это нормальная страховка, а не лишний расход

Разница простая: если файл читается заново ПОСЛЕ того, как он менялся (твоей рукой или самим агентом) - это ожидаемо. Если файл читается заново БЕЗ единой правки между двумя чтениями, и задача при этом не менялась - вот тогда стоит смотреть на три причины выше

Есть ли файл .claudeignore, чтобы просто закрыть папку от чтения

По наряду этой статьи я отдельно проверил вопрос про .claudeignore - файл по аналогии с .gitignore, который в теории должен был бы закрывать папки от Claude Code вообще. Проверка была буквальной: я скачал markdown-версии шести официальных страниц документации (про контекстное окно, настройки, права доступа, структуру .claude-директории и хранение памяти) и построчно проверил их на слово «claudeignore»

Результат отрицательный: ни в одном из шести документов слово не встречается ни разу. Отдельного файла .claudeignore в Claude Code на сентябрь 2026 нет - это распространённое заблуждение по аналогии с похожими файлами других инструментов, а не реальный встроенный механизм

Рабочая замена - обычный файл .gitignore, который у тебя, скорее всего, уже есть в проекте (он говорит системе версий Git, какие файлы не сохранять в историю изменений). Claude Code по умолчанию уважает этот же список: файлы, перечисленные в нём, автоматически выпадают из подсказок и обычного поиска файлов. Для более точечного запрета на чтение конкретной папки, даже если она не в этом списке, есть отдельные правила прав доступа с похожими правилами написания путей - подробно они устроены сложнее одной строки в статье и заслуживают отдельного разбора, здесь важен сам факт: специального файла-игнора нет, работает то, что у тебя, скорее всего, уже есть

Продолжение темы у меня разобрано отдельно: Как оплатить Qwen Code из России в 2026

Частая ошибка: слишком длинная и расплывчатая карта вместо короткой

Написать CLAUDE.md мало - легко перестараться в другую сторону и превратить его в длинное описание всего проекта подряд, что тоже вредит, только по-другому: по официальной документации, файлы длиннее 200 строк занимают больше места в контексте и хуже соблюдаются моделью. Разница не в объёме папок, которые ты описал, а в том, насколько чётко названо, что можно пропустить

Рабочий приём - писать карту так же коротко, как в моём тестовом прогоне: три-четыре строки, каждая называет папку и одно правило про неё, без пересказа того, что и так видно из названия файлов. Если правил становится действительно много и они относятся к разным частям большого проекта - лучше не раздувать единый CLAUDE.md, а разнести их по отдельным файлам правил, которые подключаются только когда Claude работает с соответствующей папкой. Устройство такой раскладки на конкретных папках разобрано в гайде структура проекта для Claude Code: папки и файл CLAUDE.md

Что делать, если карта и узкая формулировка уже есть, а перечитывания всё равно много

Иногда причина не в тебе, а в масштабе самой задачи: если файл, который агенту приходится держать в контексте, весит больше 5000 токенов, после сжатия разговора он всё равно вернётся как ссылка на путь без содержимого, и Claude Code откроет его заново при первом же обращении - это документированное поведение, а не сбой

Здесь помогают два приёма из документации: разбивать длинную сессию на более короткие через /clear, когда переключаешься на несвязанную задачу (старый разговор без того будет занимать место, которое тебе больше не нужно), и отправлять тяжёлые исследовательские задачи отдельному помощнику, у которого своё собственное контекстное окно - в твой основной разговор возвращается только итоговый вывод, а не содержимое всех прочитанных им файлов. Как устроен такой помощник и когда его звать вместо обычной просьбы - в отдельном гайде агенты для Claude Code: полный разбор для новичка. Если тебе не хватает встроенных приёмов и хочется дополнительного стороннего инструмента для сжатия счёта - есть отдельный разбор внешнего инструмента в гайде Headroom GitHub: сжатие токенов Claude Code, счёт ниже на 95%

Как проверить, что причина действительно устранена

После правки карты проекта или формулировки задачи проверка простая: набери команду /context прямо в поле ввода открытого окна Claude Code - она покажет живую разбивку контекста по категориям с указанием того, какие файлы CLAUDE.md и памяти подгрузились на самом деле. Если после узкой формулировки в списке всё ещё мелькают файлы папок, которые ты пометил как второстепенные в карте - проверь, что CLAUDE.md действительно лежит в корне того каталога, откуда запускается Claude Code, а не на уровень выше или ниже. Если ты вообще не уверен, что запускаешь Claude Code из правильного места - смотри общий разбор с нуля как пользоваться Claude Code: установка и 9 шагов до проекта

Что дальше, если хочется разобраться в структуре проекта глубже

Эта статья разбирает ПОЧЕМУ Claude Code перечитывает файлы и три конкретных технических рычага, чтобы это остановить. Как именно раскладывать папки проекта с нуля и что писать в самом CLAUDE.md по содержанию, а не только про перечитывание - в отдельном подробном гайде структура проекта для Claude Code: папки и файл CLAUDE.md. Если проект достаточно большой, чтобы в нём появлялись дополнительные навыки-помощники под конкретные задачи - смотри скиллы для Claude: что это, как установить и 7 готовых под контент и как сделать свой Skill в Claude за 5 шагов: живой прогон 2026

Куда идти дальше на этом же сайте

Источники

Ниже страницы, которые я открывал сам при подготовке этой статьи 5 сентября 2026 года:

Памятка: 3 причины перечитывания и 3 починки

Три строки, по которым проходит проверка

Сохрани себе

  • Нет карты проекта - создай CLAUDE.md в корне с коротким списком папок и что в них не трогать без запроса
  • Широкая формулировка задачи - называй конкретный файл, функцию или строку вместо общего описания проблемы
  • Компакция перезагружает только 5 последних файлов - постоянные правила держи в корневом CLAUDE.md, а не в path-scoped rules
  • Отдельного файла .claudeignore нет (проверено по 6 официальным документам) - работает .gitignore через respectGitignore
  • После правки проверяй результат командой /context - она покажет, какие файлы памяти подгрузились на самом деле

Порог входа

Три причины перечитывания ты теперь видишь, структуру проекта - ещё нет

Дальше вопрос упирается не в контекст одной сессии, а в то, как вообще организован твой проект целиком - с чего начинать новый, куда класть файлы, когда их становится больше десятка

За три дня на Лагере из твоего собственного проекта собирается рабочая структура, при которой новые задачи не превращаются в разбор того, что где лежит

Забрать путёвку в ИИ-Лагерь

Это заявка в мой закрытый канал, не оплата. Впускаю сразу, дальше бот в личке отдаёт путёвку на три дня

Частые вопросы

Почему Claude Code перечитывает один и тот же файл несколько раз за сессию

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

Помогает ли просто более короткий CLAUDE.md

Да, но не сам по себе размер, а точность формулировок в нём. Документация Anthropic советует держать файл короче 200 строк: более длинные файлы занимают больше места в контексте и хуже соблюдаются моделью. Короткая карта с чёткими «что не трогать» работает надёжнее длинного описания всего проекта подряд

Что если задача действительно требует прочитать много файлов

Тогда перечитывание оправдано и не является проблемой - вопрос в том, читает ли агент лишнее сверх задачи. Для по-настоящему объёмных исследовательских задач в документации рекомендован отдельный приём: отправить чтение файлов в субагента с собственным контекстным окном, а в основной разговор вернётся только итоговый вывод

Правда ли, что .claudeignore существует в других похожих инструментах

В некоторых других инструментах кодогенерации подобный механизм действительно есть, и путаница возникает именно из переноса ожиданий с них. В Claude Code на сентябрь 2026 года такого отдельного файла нет - проверено прямым поиском по официальной документации, ноль совпадений по шести документам

Как узнать, сколько токенов прямо сейчас занимает мой открытый проект

Команда /context, введённая прямо в поле ввода открытого окна Claude Code, покажет живую разбивку по категориям: сколько токенов заняли CLAUDE.md, память, прочитанные файлы и остальное - это самый быстрый способ увидеть, что именно раздувает контекст в конкретной твоей сессии