Контекст на миллионы токенов: можно показать модели весь проект. Что это реально поменяло
Ещё совсем недавно главным препятствием в работе с моделью был не её интеллект, а окно контекста. Несколько тысяч токенов — это файл, а не проект. В такую форточку пролезает один кусок без связей, а связи между кусками и есть проект. Логично было предполагать, что окно вырастет, способы скармливать модели реальный код появятся, и тогда разговор станет другим. Что ж, разговор стал другим. Окна выросли до миллионов токенов. В модель сегодня помещается не файл и не модуль, а заметная часть кодовой базы целиком — со всеми её типами, транспортным слоем, утилитами и договорённостями, разъехавшимися по десятку директорий.
Самый честный вывод звучит так: окно перестало быть узким местом. Та конкретная боль — «я физически не могу засунуть в окно кодовую базу» — закрыта. Я действительно могу. Агентные инструменты сами обходят репозиторий, подтягивают нужные файлы, держат в памяти историю изменений в рамках сессии, и при желании я могу высыпать в модель почти весь проект и спросить про любой его угол. Технически барьер, об который я бился, исчез.
И вот тут начинается то, ради чего я сел писать снова. Потому что когда барьер исчез, обнаружилась неприятная вещь. Это не A, а B. Не «большой контекст решил мою проблему» — он решил совсем не ту проблему, которую обещал. Модель теперь видит весь проект. Но она по-прежнему не понимает его так, как инженер, который держит в голове историю решений, причины компромиссов и то, почему вот этот «костыль» — не невежество автора, а сознательная сделка с внешним сервисом, ведущим себя не по документации. Видеть и понимать — разные вещи, и легко было свести их в одну, пока узким местом казалось одно лишь окно.
Я хочу разобрать это предметно: что именно поменял большой контекст, что он не поменял, почему гигантское окно соблазняет вывалить туда всё подряд и почему это плохая идея, и какой навык на самом деле вырос в цене, пока окно росло в размере.
Окно действительно перестало быть стеной — это надо признать честно
Начну с похвалы, чтобы не выглядеть человеком, который не способен признать, что был неправ в части прогноза. Большой контекст — это настоящий, ощутимый сдвиг, а не косметика. Раньше, чтобы спросить модель про баг, я руками выбирал пять файлов из трёхсот, и в момент выбора уже делал девяносто процентов умственной работы — потому что чтобы выбрать правильные пять, надо понимать, как баг связан с системой. Модель вступала в игру после самого тяжёлого шага и поэтому экономила куда меньше, чем обещали треды.
Сегодня этот шаг частично снят. Агент сам ходит по репозиторию, читает соседние модули, видит, где объявлен тип и где он используется, прослеживает импорт до места определения. Галлюцинации API, которые в 2023-м были системным поведением — модель достраивала несуществующий client.fetchUserProfile(id) из статистики чужих проектов, — стали заметно реже именно потому, что у модели теперь есть возможность посмотреть, как этот клиент устроен на самом деле, а не догадываться по названию. Когда форма API лежит в контексте, модель чаще пользуется реальной формой, а не самой вероятной. Это честный прогресс, и отрицать его было бы тем же передёргиванием, в котором я упрекал восторженные треды три года назад, только с обратным знаком.
Так что зафиксируем сразу, без скидок: окно выросло, и это хорошо. Целый класс глупых ошибок ушёл. Целый класс ручной работы по обвязке контекста ушёл. Я был прав, что окно — узкое место, и был прав, что оно расширится. Ошибся я в другом — в молчаливом допущении, что как только окно перестанет быть узким местом, узким местом перестанет быть всё. А оно не перестало. Просто узкое место переехало.
Видеть — не значит понимать: куда переехала граница
Раньше казалось, что знания о проекте — история решений, компромиссы, договорённости — не попадают в модель просто потому, что окно мало и туда ничего не влезает. Они ведь живут в головах, в старых обсуждениях, в причинах, по которым код написан именно так. Объяснять всё одним лишь размером окна было удобно, но это было неполное объяснение. Симптом легко перепутать с причиной.
Теперь окно огромно, я могу влить туда хоть весь репозиторий — и выясняется, что история решений в код всё равно не записана. Модель видит результат компромисса, но не видит сам компромисс. Она видит, что здесь стоит ретрай с экспоненциальной задержкой, но не знает, что мы добавили его после трёх ночных инцидентов с конкретным провайдером, который молча отдаёт пятисотки под нагрузкой. Она видит, что вот этот селектор намеренно мемоизирован грубее, чем хотелось бы, но не знает, что это сознательная уступка ради производительности на слабых устройствах, которую мы обсуждали полгода и приняли скрепя сердце.
То есть барьер был не только в объёме. Барьер ещё и в том, что важная часть инженерного знания вообще не существует в виде текста, который можно показать. Большой контекст решил проблему «модель не видит код». Он не решил и не мог решить проблему «модель не знает, почему код такой». Это не вопрос количества токенов. Сколько ни увеличивай окно, в нём не появится того, чего нет ни в одном файле. Модель по-прежнему рассуждает как очень начитанный человек, которого пустили в проект и дали прочитать всё, — но не дали прожить с этим проектом два года. И совет такого человека всё так же бывает технически верным и контекстуально мимо, просто теперь «мимо» стало тоньше и оттого опаснее: его сложнее заметить, потому что модель ссылается на реальные файлы и звучит как свой.
Большое окно соблазняет вывалить туда всё — и это ловушка
Появилась новая, очень характерная для 2026-го ошибка, которой в 2023-м просто не могло быть: когда окно маленькое, ты вынужден отбирать, что показать. Когда окно гигантское, возникает соблазн не отбирать вообще. Зачем думать, какие файлы релевантны, если можно высыпать в модель весь репозиторий и пусть сама разбирается? Звучит логично. На практике это худшее, что можно сделать.
Релевантность побеждает объём. Это, пожалуй, главный практический урок последнего года. Мусорный контекст по-прежнему даёт мусорный ответ — просто теперь дороже и медленнее. Когда я заваливаю модель всем подряд, я не помогаю ей, а заставляю её саму искать иголку в стоге, который я же и насыпал. И она ошибается в этом поиске: цепляется за похожий, но не тот модуль, тащит устаревший код из ветки, которую давно никто не трогает, путает две версии одной функции, потому что обе лежат в контексте. Чем больше нерелевантного материала рядом с релевантным, тем выше шанс, что модель построит ответ вокруг шума.
Сюда же — вполне приземлённая цена, про которую не любят говорить в разговорах о «миллионах токенов». Большое окно — это не бесплатно. Каждый лишний файл в контексте стоит денег и времени. Ответ приходит медленнее, потому что модели надо прожевать гору. Стоимость прогона растёт пропорционально тому, сколько мусора ты затолкал. В мульти-агентных workflow, где один агент порождает контекст для другого, это умножается: раздутый контекст распространяется по цепочке, и расходы накапливаются. Соблазн «покажу всё, пусть само разберётся» оплачивается из двух карманов сразу — из бюджета и из качества.
Дисциплина отбора не отмерла — она стала важнее
Вот разворот, ради которого вся статья. Раньше контекст приходилось отбирать руками не по доброй воле, а по нужде: лишнее всё равно не влезало в окно. Это была дисциплина по принуждению. Логично было бы ждать, что с приходом гигантских окон эта дисциплина отомрёт за ненадобностью — раз можно показать всё, то и отбирать незачем. Случилось ровно обратное. Отбор перестал быть вынужденным и стал осознанным навыком, и именно потому, что он перестал быть обязательным, он стал признаком зрелости.
Раньше границу контекста за меня держало само окно. Теперь окно не держит ничего — границу должен держать я. И это не механическая работа, а та же самая инженерная: понимать, что в этой задаче важно, а что шум. Решить, какие три модуля реально определяют поведение бага, а какие двадцать только похожи на связанные. Сформулировать, какой кусок истории решений надо проговорить модели словами, потому что в коде его нет. По сути, это та же работа по выбору правильных пяти файлов из трёхсот — только теперь её никто не заставляет делать, и поэтому её легко не сделать.
И в этом главная инверсия трёх лет. Я думал, что большое окно избавит инженера от необходимости понимать систему, чтобы кормить ею модель. Оказалось наоборот: оно эту необходимость обнажило. Когда отбор был принудительным, можно было думать, что вся ценность инженера — в умении ужать контекст под лимит. Теперь лимита нет, а ценность осталась — значит, она была не в умении ужимать, а в умении понимать, что релевантно. Хороший контекст для модели в 2026-м собирает тот, кто и так держит систему в голове. Большое окно не заменило это знание. Оно сделало его единственным, что осталось дефицитным.
Где большой контекст реально помогает — и это немало
Чтобы меня снова не записали в брюзги, перечислю, где гигантское окно действительно изменило работу к лучшему. Этих мест хватает, и они весомее, чем казалось бы из всех оговорок выше.
- Навигация по незнакомой кодовой базе. Когда я прихожу в чужой большой проект, модель с доступом к репозиторию реально ускоряет вход: где точка входа, откуда течёт это состояние, какой модуль за что отвечает. Раньше это был день блужданий, теперь — разговор.
- Согласованные изменения через много файлов. Переименование по понятному правилу, протягивание нового поля через слой за слоем, приведение однотипных мест к общему виду — всё это модель делает заметно лучше, когда видит все затронутые файлы сразу, а не по одному.
- Проверка на согласованность. Спросить «где ещё в проекте мы делаем то же самое по-другому» стало реалистичным вопросом, потому что у модели в контексте лежат все эти места одновременно.
- Объяснение незнакомого в контексте. Не «что делает эта функция вообще», а «что делает эта функция именно здесь, с учётом того, как её вызывают в этих трёх местах». Это качественно другой уровень ответа, чем три года назад.
Заметьте общее: во всех пунктах модель сильна там, где задача про видимое — про структуру, связи, повторы, форму кода. И во всех пунктах она остаётся слабой там, где задача про невидимое — про то, почему код такой, какие ограничения за ним стоят, какой компромисс закопан в неприметной строке. Граница ровно по линии «видеть против понимать», и большое окно сдвинуло первое, не тронув второе.
Чего гигантское окно не оплачивает за вас
Соберу цену и границы в одном месте, потому что без этого получится та же однобокая агитация, от которой я и хочу держаться подальше. Большой контекст — мощный сдвиг, и не пользоваться им глупо. Но у него есть границы, которые в апреле 2026-го никуда не делись:
- Видеть проект и понимать проект — разное. История решений, компромиссы и причины не лежат в коде, и окно любого размера их туда не добавит.
- Объём не равен релевантности. Мусорный контекст даёт мусорный ответ — теперь просто дороже и медленнее. Шум рядом с сигналом портит сигнал.
- Большое окно — платная роскошь. Лишние токены стоят денег и времени, а в мульти-агентных цепочках раздутый контекст множится по дороге.
- Ответственность за то, что попадёт в репозиторий, осталась на инженере. Модель стала убедительнее, и её редкое «контекстуально мимо» теперь сложнее поймать на ревью именно потому, что она ссылается на реальные файлы.
Всё это не делает большой контекст бесполезным — ровно наоборот. Это делает его инструментом с понятной зоной применения, как и тремя годами раньше. Изменилось то, что зона стала шире, а навык, который от инженера требуется, — тоньше. Раньше нужно было уметь втиснуть контекст в окно. Теперь нужно уметь не утопить сигнал в океане, который тебе любезно предоставили.
Так что же на самом деле изменилось
Соберу мысль целиком. Долго казалось, что дело не в интеллекте модели, а в контексте: пока я не могу дать ей увидеть мой проект целиком, она остаётся ускорителем отдельных шагов, а не понимающим систему инженером. Половина этого рассуждения состарилась: я теперь могу дать модели увидеть проект целиком. Вторая половина устояла: увидев проект целиком, модель так и не стала понимающим систему инженером. Она стала очень хорошо видящим систему помощником. Это много, но это не то же самое.
Самая вредная реакция на рост окон — услышать «теперь в модель влезает весь проект» и решить, что отбор контекста, понимание системы и инженерная ответственность отмерли за ненадобностью. Это ровно та ловушка, в которую тянет большое окно: показать всё и расслабиться. Но релевантность побеждает объём, и человек, умеющий отобрать релевантное, не подешевел с ростом окна — он подорожал, потому что окно перестало делать эту работу за него.
Поэтому главный практический вывод я сформулирую совсем прямо. Контекст вырос, но дисциплина отбора того, что показывать модели, не отмерла, а стала важнее: окно перестало быть узким местом, и теперь узкое место — это инженер, который решает, что в этом океане токенов действительно относится к делу, а что только шумит, удорожает и сбивает ответ с цели.
Взрослеть в отношениях с этим инструментом — значит держать в голове сразу две вещи, не выбирая удобную половину: модель теперь видит весь проект, и при этом понимает его всё так же не до конца. Обе остаются правдой одновременно, и зрелость в том, чтобы держать их вместе, а не цепляться за приятную. Окно выросло до миллионов токенов. Привычка думать, прежде чем что-то в него класть, от этого не отмерла — ей просто стоит стать строже.