ИИ-агенты и автоматизация

HarnessTax: обвязка агента может стоить вдвое дороже

HarnessTax: обвязка агента может стоить вдвое дороже

Исследователи Беркли прогнали 21 пару «модель плюс обвязка» — семь моделей и три обвязки — на SWE-bench Lite и Terminal-Bench 2.0. Результат неожиданный: обвязка почти не меняет долю решённых задач, эффект держится в пределах ±2 %, зато меняет счёт до пяти раз. Одна и та же модель в Claude Code стоила вдвое дороже, чем в минимальной открытой обвязке Pi, при разнице в успехе в 1,1 процентного пункта.

Работа вышла из лаборатории Sky Lab в Беркли, среди авторов Ион Стойка и Матей Захария. Для тех, кто платит за агента по факту, это не академический сюжет, а прямая статья расходов. Разберём, что намерили и что из этого переносится на обычную команду.

Что такое обвязка и почему её обычно не выбирают

Кодинг-агент состоит из двух частей. Модель даёт способность рассуждать и писать код. Обвязка выдаёт ей инструменты, собирает контекст и ведёт выполнение задачи от постановки до результата. Claude Code, Codex CLI, Pi — это обвязки.

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

Как мерили

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

ПараметрЗначение
Пар «модель плюс обвязка»21
Моделей7
Обвязок3 — Claude Code, Codex CLI, Pi
БенчмаркиSWE-bench Lite и Terminal-Bench 2.0
Задач на бенчмарк30, выбраны случайно
Прогонов на задачу3
Ограничение на прогон100 ходов агента
Настройка усилиявысокая, у каждой обвязки своя
Цена токеновфиксированный прайс от 01.09.2026, одинаковый для всех обвязок

Доверительные интервалы считали бутстрэпом на десять тысяч пересэмплирований. На SWE-bench Lite внешнюю сеть в контейнерах задач отключали, веб-инструменты в Claude Code и Codex выключали, а объявления размещённых инструментов отбивали на уровне запроса к API — то есть обвязки сравнивали в одинаковых условиях, а не как есть.

Первый вывод: обвязка бьёт по счёту, а не по качеству

Средний эффект обвязки на долю решённых задач остался в пределах ±2 % на SWE-bench Lite и около ±5 % на Terminal-Bench 2.0. То есть с точки зрения «решит или не решит» выбор обвязки почти не важен.

А вот со стоимостью иначе. Одна и та же модель показывала сопоставимый успех при разнице в цене до пяти раз. Конкретный пример из работы: Fable 5 решила 97,8 % попыток в Claude Code, 96,7 % в Codex и 96,7 % в Pi — а стоила в Claude Code примерно вдвое дороже, чем в Pi. Полтора процентных пункта успеха за двойную цену.

По усреднённым отношениям картина та же: на SWE-bench Lite Claude Code обходился примерно вдвое дороже Pi и в 1,6 раза дороже Codex, на Terminal-Bench 2.0 — в полтора раза дороже Pi.

Откуда берётся разница

Здесь самое интересное наблюдение работы, и оно объясняет механику.

Число ходов у разных обвязок почти одинаковое. Для Fable 5 на SWE-bench Lite это 15,4 хода у Pi против 15,3 у Claude Code — разница в пределах погрешности. То есть агент делает столько же шагов, а платите вы вдвое больше.

Разница набегает с первого же вызова. Средний стартовый контекст у Claude Code оказался больше чем в десять раз объёмнее, чем у Pi, — за счёт более длинных инструкций и более объёмных схем инструментов. И так на всех семи моделях.

При этом Pi — минимальная открытая обвязка с четырьмя инструментами: чтение, запись, правка, командная строка. Этого набора хватило, чтобы выйти на границу эффективности по обоим бенчмаркам.

Второй вывод: модель часто лучше работает не в своей обвязке

Вендоры оптимизируют модели под свои среды разработки — OpenAI, например, прямо описывала GPT-5-Codex как заточенную под Codex. Логично ожидать, что своя пара окажется лучшей.

Замер говорит иначе. На шести моделях Anthropic и OpenAI и двух бенчмарках чужая обвязка давала наибольшую наблюдаемую долю успеха в девяти сравнениях из двенадцати. Примеры из работы: Sonnet 4.6 решила 68,9 % попыток в Codex против 66,7 % в Claude Code при сопоставимой цене; GPT-5.6 Sol на Terminal-Bench 2.0 показала 83,3 % в Pi против 78,9 % в Codex — примерно вдвое дешевле.

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

Что значит «простая обвязка оказалась конкурентной»

Этот вывод стоит развернуть, потому что он противоречит здравому смыслу.

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

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

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

Где это касается не кодинг-агентов

Механика переносится на любой агентский сценарий, не только на работу с кодом.

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

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

Чего мы не утверждаем

Четыре оговорки, и первую называют сами авторы.

Результат может быть ограничен двумя открытыми бенчмарками. Авторы прямо пишут, что модели могли видеть эти задачи при обучении и на других нагрузках картина может отличаться.

Тридцать задач — небольшая выборка. Отсюда и доверительные интервалы в работе. Различия в пару процентов на таком объёме не стоит принимать за истину.

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

Мы не утверждаем ничего про свою обвязку. У KeyDealer есть собственный кодинг-агент, и в это исследование он не входил. Раз его не мерили — сказать нам нечего, и подставлять сюда свои цифры мы не будем.

Что с этим делать

Порядок из четырёх шагов, и он повторяет методику работы в уменьшенном виде.

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

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

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

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

Проверить такое проще всего там, где все модели живут под одним ключом и по одной понятной ставке: KeyDealer даёт доступ к 55 позициям каталога, 42 из них доступны сейчас, с оплатой российской картой в рублях и ставками от 1 ₽ за миллион токенов. Сравнение двух обвязок на одной модели превращается в два прогона с одинаковой ценой токена, а расход виден по каждому запросу.

Почему это перекликается с прошлым сюжетом

Три дня назад мы разбирали обратный случай: NVIDIA выпустила расширение к обвязке кодинг-агента и срезала расход токенов, не трогая модель. Тогда вывод звучал как «обвязка решает» в положительном смысле — правильная обвязка экономит.

Сегодняшняя работа показывает ту же монету с другой стороны: неправильная обвязка стоит денег молча. Обе истории про одно — обвязка перестала быть технической деталью и стала статьёй расходов, которую надо мерить. Первый сюжет разобран в материале обвязка решает: NVIDIA SoL-Pi.

Что держать в голове

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

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

Третье. Смотрите на стартовый контекст как на первый признак. Разница в десять раз на первом вызове видна за пять минут и сразу говорит, стоит ли копать дальше. Что мы за проект — на странице о проекте, ключ заводится на keydealer.ru/login.

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

Что такое обвязка кодинг-агента?

Программная часть вокруг модели: та, что выдаёт ей инструменты, собирает контекст и ведёт выполнение задачи. Claude Code, Codex CLI и Pi — это обвязки. Выбирая кодинг-агента, вы выбираете и модель, и обвязку, даже если думаете только о модели.

Что именно намерили в исследовании?

Двадцать одну пару «модель плюс обвязка»: семь моделей и три обвязки на двух бенчмарках, SWE-bench Lite и Terminal-Bench 2.0. Тридцать случайно выбранных задач на каждом, по три прогона на задачу, ограничение в сто ходов агента. Стоимость считали по фиксированному прайсу от 1 сентября 2026 года, одинаковому для всех обвязок.

Насколько обвязка влияет на успех?

Почти не влияет. Средний эффект обвязки на долю решённых задач остался в пределах ±2 % на SWE-bench Lite и около ±5 % на Terminal-Bench 2.0. На счёт она влияет намного сильнее: одна и та же модель показывала сопоставимый успех при разнице в стоимости до пяти раз.

Откуда берётся разница в деньгах?

Заметная часть — со стартового контекста. У Claude Code средний контекст первого вызова оказался больше чем в десять раз объёмнее, чем у минимальной обвязки Pi, за счёт более длинных инструкций и более объёмных схем инструментов. Число ходов при этом было почти одинаковым.

Правда ли, что модель лучше работает не в своей обвязке?

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

Что с этим делать на практике?

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

Источники