RTK не делает ИИ-кодинг дешевле: бенчмарк опроверг вирусные обещания об экономии токенов

RTK не делает ИИ-кодинг дешевле: бенчмарк опроверг вирусные обещания об экономии токенов

RTK (Rust Token Killer), популярный инструмент с более чем 79 тысячами звёзд на GitHub, который перехватывает вывод терминала ИИ-агента (хук для Bash в Claude Code, плагин для bash в OpenCode) и сжимает его перед тем, как агент его прочитает: например, из вывода команды ls -la RTK оставляет права доступа, имена файлов и размер, но убирает владельца и дату. В README самого RTK есть предупреждение: инструмент срезает до 90% байт вывода команд, но это не то же самое, что срезать счёт за токены на 90%. Несмотря на это, один пост в X с утверждением, что RTK сокращает расход токенов Claude Code до 60%, набрал 313 тысяч просмотров, хотя более ранний прогон бенчмарка SkillsBench от JetBrains экономии вообще не нашёл.

Блог Quesma решил проверить эффект RTK на реальных деньгах, а не на внутренней метрике самого инструмента. За несколько дней и больше $1500, потраченных на токены, там прогнали Terminal-Bench 2.1, версию бенчмарка, где агенты проходят большинство задач, в отличие от более новых 3.0 и 4.0, где ИИ пока справляется плохо, а стоимость непройденных задач не имеет значения. Тестировали две связки: Claude Code с моделью Fable 5.0 и OpenCode с DeepSeek V4 Pro 0813 через OpenRouter. Каждую задачу прогоняли пять раз без RTK и пять раз с ним, на одном и том же маршруте модели, платформе и тайм-ауте. После исключения четырёх задач на безопасность для Fable, где модель отказывалась их выполнять, в финальное сравнение попали 85 задач для Fable и 89 для DeepSeek, всего 1740 прогонов.

Итог оказался разным для двух моделей. Совокупные (сырые) расходы с RTK упали на 5% для Fable и выросли на 5% для DeepSeek, а доля пройденных задач с RTK снизилась, на 1% у Fable и на 2% у DeepSeek; оба сдвига авторы называют небольшими. Если разделить всю потраченную сумму, включая проваленные попытки, на число успешных прохождений, RTK для Fable оказался на 3% дешевле, а для DeepSeek, на 7% дороже. Второй способ измерения, усреднить изменение цены отдельно по каждой задаче (сравнить среднее по её прогонам с RTK и без RTK), а затем усреднить эти изменения по всем задачам, чтобы одна дорогая задача не перевешивала множество дешёвых. По этому способу Fable с RTK стал дороже всего на 1%, авторы называют это отсутствием чёткого отличия от нуля, а DeepSeek подорожал на 17% в среднем; даже среди 36 задач DeepSeek, где все десять попыток (пять базовых и пять с RTK) прошли успешно, рост стоимости остался на уровне 18%.

Почти вся экономия Fable с RTK обеспечена одной-единственной задачей, winning-avg-corewars: в обоих режимах модель прошла все попытки, но с RTK потратила примерно вдвое меньше ходов; на остальных задачах экономия была меньше 1%. На той же задаче у DeepSeek результат оказался обратным: обе версии прошли все попытки, но с RTK ушло больше ходов и денег; и даже без учёта этой задачи расходы DeepSeek с RTK остались выше.

Авторы отдельно разобрали внутреннюю метрику RTK, «rtk gain»: сам инструмент считает её как объём исходного вывода минус объём отфильтрованного, в байтах, делённый на 4, а вовсе не как число реально оплаченных токенов. На 445 прогонах DeepSeek с RTK эта метрика показала экономию в 349,2 млн токенов, заявленное снижение на 89%. Но крупные цифры «rtk gain» не означали более дешёвые задачи: в задаче train-fasttext модель дважды запросила head -1 train.txt, и RTK каждый раз засчитывал экономию в 120,5 млн токенов, сравнивая этот ограниченный запрос с чтением всего файла целиком, хотя команда никогда не вернула бы файл полностью. Эти два вызова дали 69% всей экономии по метрике «rtk gain» в сравнении. Считать «rtk gain» сэкономленными деньгами неверно: это предполагает, что остальная часть попытки не изменится, а RTK способен повлиять на последующие ходы агента, стоимость которых метрика не учитывает. Именно здесь, по словам авторов, ошибаются посты в соцсетях: «rtk gain» считает убранный вывод, а не сэкономленные деньги, и может представить более дорогую попытку как оптимизированную.

Авторы нашли и баг RTK: в одной попытке DeepSeek на задаче git-multibranch агент запустил find с флагом, который не поддерживала версия RTK 0.45.0; плагин переписал вызов в rtk find, тот упал с ошибкой «Use find directly» («используйте find напрямую»), и каждая повторная попытка агента переписывалась и падала снова, пока RTK не исправили это в версии 0.46.0, уже после проведённых тестов. В итоге агент накопил 339 подряд идущих ошибок до истечения тайм-аута; задачу он всё же прошёл, но эта попытка стоила примерно в 9 раз больше, чем совпадающая базовая попытка, которая тоже была успешной.

Без RTK вывод терминала занимал около 11% входных токенов у Fable и 40%, у DeepSeek. Но даже в прогонах с включённым RTK инструмент реально задействовался не во всех вызовах терминала: через RTK прошло 31% вызовов терминала у Claude Code и 51%, у OpenCode, потому что RTK переписывает только команды шелла (хук для Bash в Claude Code, плагин для bash-вызовов в OpenCode), а чтение и поиск файлов на обеих платформах вынесены в отдельные инструменты, Read, Grep и Glob, которые RTK не затрагивает; к тому же около половины Bash-вызовов Claude Code и так сами ограничивали свой вывод через head, tail или wc. Авторы также отмечают, что в агентном кодинге контекст кешируется после каждого хода, поэтому повторное чтение вывода терминала чаще всего превращается в чтение из кеша, а оно стоит 1/10 от цены обычных входных токенов для Fable и 1/30, для DeepSeek. У DeepSeek RTK сократил число символов вывода терминала на 9%, но токены в промпте всё равно выросли на 9%: некешированный ввод снизился на 1%, а кешированный вырос на 9%; доля стоимости, приходящаяся на вывод модели (включая рассуждения), составила 56% с RTK и 57% без него.

Дополнительные ходы агента съедали экономию: у DeepSeek с RTK число ходов выросло на 58 задачах, и на 44 из них стоимость тоже выросла; число ходов снизилось на 28 задачах, и на 23 из них стоимость снизилась. В среднем один ход DeepSeek с RTK получал на 7% меньше входных данных, но общее число ходов выросло на 18%, экономия на размере хода не окупила рост их количества. Авторы называют это той же проблемой, ростом расходов из-за увеличения числа ходов, просто в другой форме: JetBrains на SkillsBench увидела ту же картину, RTK добавлял ходы при низких настройках усилий и не снижал стоимость при высоких.

Итог авторов: на Terminal-Bench 2.1 экономия Fable с RTK держалась на одной задаче и не подтвердилась на остальных, поэтому RTK нельзя рекомендовать как универсальный инструмент экономии. По расшифровкам отдельных прогонов видно, что современные топовые модели и так эффективно работают с терминалом (только около 7% контекста Fable приходилось на вывод терминала) и сами используют приёмы вроде head -n и tail -n; вероятно, RTK давал больше пользы со старыми моделями, а сегодня это нишевая оптимизация, а не источник общей экономии. Тесты проводились на RTK 0.45.0, Claude Code 2.1.220, OpenCode 1.18.25 и Harbor 0.20; авторы благодарят за ревью и отзыв Пётра Мигдала, предлагают всем желающим запросить трассировки прогонов и анонсируют будущий пост с бенчмарком другого инструмента, Headroom.

Ключевые факты

  • Блог Quesma прогнал RTK на 1740 попытках Terminal-Bench 2.1: по пять прогонов без RTK и с ним на каждую из 85 задач для модели Fable 5.0 и 89 задач для DeepSeek V4 Pro 0813, потратив на токены больше $1500.
  • В пересчёте цены на успешный проход RTK сделал Fable 5.0 дешевле на 3%, а DeepSeek V4 Pro 0813, дороже на 7%; при равном весе каждой задачи DeepSeek подорожал на 17% в среднем (на 18%, среди задач, где прошли все попытки), а Fable, лишь на 1%, без чёткого отличия от нуля.
  • Почти вся экономия Fable держится на одной задаче, winning-avg-corewars, где RTK примерно вдвое сократил число ходов; на остальных задачах выигрыш был меньше 1%, а на этой же задаче у DeepSeek RTK, наоборот, увеличил и число ходов, и стоимость.
  • Собственная метрика RTK «rtk gain» (349,2 млн «сэкономленных» токенов на 445 прогонах DeepSeek, заявленное снижение на 89%) считает лишь убранные байты вывода, а не реально оплаченные токены: две команды head -1 train.txt в одной задаче дали 69% всей этой «экономии».
  • Баг RTK версии 0.45.0 (устранён в 0.46.0) довёл один прогон DeepSeek до 339 подряд идущих ошибок и подорожания попытки примерно в 9 раз; итог авторов, RTK не делает ИИ-кодинг дешевле, это нишевая оптимизация, а не универсальный способ сэкономить.

Почему это важно

RTK, популярный инструмент с более чем 79 тысячами звёзд на GitHub, а пост в X с обещанием сократить расход токенов Claude Code до 60% набрал 313 тысяч просмотров. При этом ранний прогон бенчмарка SkillsBench от JetBrains экономии вообще не нашёл. Блог Quesma решил проверить это на реальных деньгах: потратил больше $1500 на токены и прогнал 1740 попыток на Terminal-Bench 2.1. Вывод получился неоднозначным и по сути отрицательным: экономия для одной модели (Fable 5.0) почти целиком держалась на одной-единственной задаче, а для другой (DeepSeek V4 Pro 0813) расходы с RTK, наоборот, выросли. Материал, наглядный пример того, что вирусные заявления об экономии токенов у ИИ-агентов часто не проходят проверку контролируемым тестом на реальные деньги.

Кому это важно

Тем, кто пользуется ИИ-агентами для кодинга, Claude Code, OpenCode и похожими, и рассматривает RTK или подобные надстройки, сжимающие вывод терминала, как способ снизить счёт за токены. Разработчикам самого RTK: в тексте описан баг, который они уже устранили в версии 0.46.0. И авторам похожих бенчмарков, в статье явно упомянут независимый прогон JetBrains на SkillsBench, увидевший ту же картину: RTK добавляет ходы агента при низких настройках усилий и не снижает стоимость при высоких.

Как это применить

Прежде чем полагаться на инструмент вроде RTK ради экономии, стоит смотреть не на его собственную метрику («rtk gain», байты убранного вывода, делённые на 4), а на реальный счёт по конкретной задаче: эта метрика способна показать экономию в сотни миллионов «токенов», которая не отражается ни на цене, ни на числе ходов агента. RTK трогает только команды шелла и не затрагивает отдельные инструменты чтения и поиска файлов, так что эффект будет заметен лишь там, где вывод терминала, весомая доля контекста (в этом тесте у DeepSeek без RTK, 40%, у Fable, только 11%). Если агент и так сам ограничивает вывод через head, tail или wc (как около половины Bash-вызовов Claude Code в этом тесте), выигрыш от RTK будет меньше. И считать стоит не только объём вывода, но и число ходов агента: лишний ход способен перекрыть всю экономию на объёме.

Можно ли доверять

Тест независимый: Quesma, не разработчик RTK, а сторонний блог. Методология раскрыта подробно: 85 задач для Fable, 89 для DeepSeek, по пять прогонов на каждую конфигурацию, одинаковые модельные маршруты, платформа и тайм-ауты, больше $1500 реальных расходов на токены. Авторы сами называют часть своих разрывов небольшими и честно описывают баг в самом RTK, который на момент публикации уже был исправлен разработчиками инструмента. Вывод независимо перекликается с более ранним прогоном SkillsBench от JetBrains, который тоже не нашёл экономии. Из ограничений: это одна публикация в блоге без формальной проверки статистической значимости и без разбивки итоговых $1500 по моделям, но подход прозрачен и проверяем: авторы предлагают всем желающим трассировки прогонов по запросу.

Риски и подводные камни

Экономия от RTK неустойчива и легко оборачивается ростом расходов: у DeepSeek стоимость по задачам в среднем выросла на 17% (и на 18%, среди задач, где прошли все попытки), а собственная метрика RTK «rtk gain» вводит в заблуждение, на одном прогоне две команды head -1 train.txt дали 69% всей «экономии» по этой метрике, хотя реальных денег она не сэкономила. Инструмент к тому же может ломаться: баг в версии 0.45.0 довёл один прогон DeepSeek до 339 подряд идущих ошибок и подорожания попытки примерно в 9 раз (баг уже исправлен в 0.46.0, но иллюстрирует хрупкость таких надстроек). Дополнительные ходы агента, спровоцированные RTK, способны съесть всю экономию на объёме вывода: у DeepSeek число ходов выросло на 18% при том, что каждый отдельный ход стал легче лишь на 7%, по сути тот же эффект роста расходов из-за увеличения числа ходов, только в другой форме. И, как отмечают сами авторы, эффект RTK непостоянен: он может помочь, не дать никакого эффекта или, наоборот, ухудшить результат, больше ходов агента или ниже качество решения.