Если бы токены были батарейками, кэш‑чтения могли бы украсть у вас телефонный заряд в самый ответственный момент — и это весёлая, но печальная правда. В реальности при работе кодирующих агентов именно чтения из кеша начинают незаметно съедать бюджет по мере роста контекстной истории.
Агенты в цикле отправляют в LLM всю историю диалога, получают вывод и, если есть вызовы инструментов, обрабатывают их и продолжают. Провайдеры считают токены на ввод, на вывод, на запись в кеш и на чтение из кеша. На диаграмме это выглядит как набор прямоугольников — и из‑за чтений формируется тревожный «треугольник», приводящий к квадратичной видимости роста затрат.
На практике это не просто теория. В одном примере общая сумма разговора была порядка $13, и к концу чтения кеша составляли 87% расходов; точка, где чтения стали половиной, наступила уже при ≈27 500 токенах. Эксперименты с выборкой разговоров Shelley подтверждают: кривые затрат разнообразны, но тренд ясен — чем длиннее история и чаще вызовы LLM, тем сильнее доминируют чтения. Симулятор с тарифами Anthropic даёт порог ≈20 000 токенов при стандартных настройках.
Что с этим делать? Есть несколько практических подходов:
- Уменьшать число обращений к LLM, когда это безопасно — но это компромисс с качеством навигации агента.
- Делать итерации вне основного контекста: субагенты и инструменты, которые сами обращаются к LLM, помогают снять нагрузку.
- При больших файлов читать их один раз целиком, а не дробить на множество мелких чтений.
- Периодически стартовать новый разговор — ре‑инициализация контекста часто дешевле, чем таящееся «чтение‑квадрат».
Эти вопросы — не только про экономию, но и про архитектуру агентов. Мы на exe.dev и в Shelley активно экспериментируем с ними; подробности и данные — в исходном разборе: https://blog.exe.dev/expensively-quadratic. Ваши наблюдения и идеи тоже очень кстати.
