RU
Налог на холодный старт: почему агент перечитывает репозиторий каждую сессию

Налог на холодный старт: почему агент перечитывает репозиторий каждую сессию

2026-08-11

Откройте свежую сессию Claude Code или Cursor в репозитории, в котором работаете месяцами, и посмотрите, что агент делает до того, как напишет первую строку.

Он листает директории. Грепает символ и получает сорок совпадений. Открывает шесть файлов целиком, чтобы понять, какие из сорока важны. Руками идёт по цепочке импортов. Читает конфиг, чтобы разобраться, как это вообще связано. Где-то посередине задаёт вопрос, на который вы отвечали во вторник.

Ничего из этого не является задачей. Всё это в счёте. И завтра это повторится точно так же, потому что ничего из того, что агент сегодня выяснил, конец сессии не пережило.

Я называю это налогом на холодный старт, и как только начинаешь его мерить, а не ощущать, выясняется, что это крупнейшая единичная статья расходов в большинстве агентских процессов — крупнее, чем само редактирование, часто с большим отрывом.


Куда реально уходят токены

Разберите пару десятков транскриптов агента на то, что исследовалось, а не менялось, — и почти в каждой сессии возвращаются одни и те же четыре вопроса:

  1. Какой формы эта штука? Раскладка директорий, границы модулей, что где лежит. Выводится заново листингом и открыванием файлов.
  2. Где определён X и кто его вызывает? Отвечает греп, который возвращает каждое строковое совпадение, включая комментарии, тесты и не относящуюся к делу переменную с похожим именем. Дальше агент открывает файлы, чтобы разобраться.
  3. Что эта библиотека делает именно в этой версии? Отвечают тренировочные данные, которые часто на мажорную версию позади, — а потом это исправляется тяжёлым способом, когда сигнатура вызова оказывается не той.
  4. Что здесь было решено и почему? Обычно не отвечает никто. Агент предлагает то, что пробовали и отвергли полгода назад, и либо вы ловите это на ревью, либо нет. Отвечаемым это делает граф решений.

Каждый из этих вопросов дёшев один раз. Проблема в том, что ни один из них не один раз. Они на сессию, на агента и — если вы гоняете несколько агентов параллельно — на воркера. Пять агентов на одном репозитории платят налог на холодный старт пять раз, параллельно, за одну и ту же информацию.

Почему большое окно контекста это не чинит

Интуитивный ответ — закинуть весь репозиторий в модель с большим контекстом и перестать переживать. Не работает, по трём отдельным причинам.

Стоимость масштабируется тем, что вы отправили, а не тем, что было нужно. Загрузить 400 000 токенов репозитория ради вопроса, которому хватило бы 3 000, — это не основательность, это счёт. Умножьте на каждую сессию и каждого воркера.

Внимание деградирует раньше, чем кончается окно. Модель с очень большим окном не одинаково хороша по всей его длине. Материал в середине огромного контекста обрабатывается менее надёжно, чем материал у краёв, — то есть ответ получается одновременно менее точным и более дорогим, что худший из возможных исходов.

Он устарел по построению. Дамп репозитория — снимок. В момент, когда другой воркер закоммитил или вы переключили ветку, контекст описывает дерево, которого больше нет, — и ничто в промпте модели об этом не сообщает. Уверенные ответы про изменившийся код хуже, чем отсутствие ответов.

Чинит это не больший контекст. Чинит правильный контекст, разрешённый, в момент, когда он нужен, — а для того, что не меняется от задачи к задаче, чинит вообще не выводить его заново.

Три слоя, которые действительно снимают налог

Слой 1 — инструкционный (самый дешёвый, делать первым)

Большинство репозиториев не сообщают агенту ничего о том, как в них работать. Всё, что знает команда — где что лежит, какие конвенции, какие директории несущие, а какие архивные, — живёт в головах и в комментариях на ревью.

Записать это скучно и даёт лучшую отдачу из всего списка, потому что это чистый текст, который модель читает один раз за сессию за смешную цену:

  • AGENTS.md / CLAUDE.md в корне с правилами, которые действительно важны: конвенции коммитов, что нельзя трогать никогда, какие команды проверяют изменение, политика языка и форматирования.
  • Навигационные индексы — по одному на директорию любого размера, с описанием, что там лежит. Это заменяет рефлекс «полистать и открыть шесть файлов» одним чтением.
  • Правила на уровне директорий там, где у поддерева свои конвенции, с явным правилом приоритета (ближайший предок выигрывает).
  • Манифест чтения для типовых задач: «прежде чем трогать биллинг, прочитай эти четыре документа».

Полезная дисциплина: держите жанры раздельно. Файл, который говорит что здесь лежит, — не тот файл, который говорит как здесь работать, и ни один из них не человеческий README. Смешение производит документ, который никто не поддерживает и который агент читает наполовину.

Слой 2 — слой выборки

Греп — это сопоставитель строк, притворяющийся инструментом кодовой интеллектуальности. Он не отличает определение от упоминания в комментарии, не знает, что метод является реализацией интерфейса, и возвращает сорок результатов там, где верен один.

Замените типовые расследования структурными операциями: go-to-definition, find-references, иерархия вызовов, структура проекта. Это разрешённые ответы, а не строковые совпадения, и они возвращают за десятки токенов то, на что цикл «грепнуть и открыть» тратит тысячи.

Для нечётких вопросов, где вы не знаете точной строки, слою выборки нужен бюджет, а не top_k. Это отдельная тема — см. выборку под бюджет токенов: как строится и как измеряется отбор под потолок по токенам.

Слой 3 — слой памяти

Слои 1 и 2 делают расследование дешёвым. Слой 3 его убирает — для всего, что не меняется от задачи к задаче: решения и их обоснование, грабли, за которые уже заплатили, конвенции, которых код не показывает, и текущее состояние того, что в работе.

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

А если вы гоняете больше одного агента, отказы координации — отдельная категория: двойные claim'ы, тихие зависания, вывод, потерянный вместе с процессом. Это много агентов, один репозиторий.


Измерьте до того, как чинить

Аргументация всего этого рассыпается без чисел, а числа собираются легко. Возьмите десять представительных задач и зафиксируйте по каждой:

МетрикаКак читать
Токены до первой полезной правкиСобственно налог на холодный старт. Разрыв между началом сессии и первой строкой настоящей работы.
Всего токенов на выполненную задачуГлавная стоимость. Должна падать вместе с первой метрикой, и сильнее.
Правки не в тот файлКак часто агент менял то, что менять не следовало. Проблема структуры, а не модели.
Повторные вопросыВопросы, которые агент уже задавал. Прямо меряет, работает ли память.
Настенное время до первого готового к ревью диффаТо, что вы реально ощущаете. Включает расследование, которое счётчик токенов прячет.

Дальше примените только Слой 1 — день письма, без всякого тулинга — и прогоните те же десять задач. По моему опыту первые две метрики двигаются сразу и заметно, и обычно этого достаточно, чтобы обосновать Слои 2 и 3 перед тем, кто держит бюджет.

Порядок, который работает

  1. Написать инструкционный слой. День. Никаких новых зависимостей. Наибольшая отдача на потраченный час.
  2. Измерить. Десять задач, до и после. Бэйзлайн нужен, чтобы аргументировать что угодно дальше.
  3. Добавить структурную кодовую интеллектуальность. Определение, ссылки, иерархия вызовов по MCP, чтобы агент перестал грепать.
  4. Добавить память. Решения, грабли, конвенции, состояние — читается автоматически, пишется осознанно.
  5. И только потом параллелить. Веерный запуск до починки холодного старта умножает налог на число воркеров.

Порядок не произвольный. Каждый шаг удешевляет следующий, а прыжок сразу к пятому — что делает большинство команд, потому что параллельные агенты выглядят самой интересной частью, — покупает вам пять агентов, каждый из которых платит полную цену за одно и то же переоткрытие.


Откуда это

Три слоя выше — это форма Hilum Tools, MCP-платформы, которую я строю и ежедневно гоняю против мультирепозиторного воркспейса: девять доменов инструментов на одном сервере, дающих агенту разрешённую структуру, выборку под бюджет, долговременную память, происхождение решений и координацию — вместо грепа и догадки.

Под всеми тремя слоями лежит одно правило, которое стоит прочитать отдельно: когда потребитель сервиса — агент, а не человек, ответ обязан заявлять собственную надёжность. Всё сказанное выше — следствие того, чтобы отнестись к этому всерьёз.

Если вы предпочли бы, чтобы это сделали с вашей кодовой базой, а не строить самому, — для этого есть направление AI-разработка: аудит того, как агенты сейчас падают на вашем репозитории, написанный инструкционный слой, подключённый тулинг и письменная передача того, что изменилось и почему.

Связаться

Прямая связь с инженером — Telegram, Email, Calendly или структурированный бриф.

Бесплатный 30-минутный звонок — без обязательств, без агентской воронки.