Claude Code: рефакторинг снизил расход токенов на 83%, эксперимент Thoughtworks

Автор материала (публикация в блоге Thoughtworks «Exploring Gen AI» на сайте Мартина Фаулера) построил рабочее приложение примерно на 150 000 строк кода, около 120 000 строк на Rust, остальное на TypeScript и Terraform. Приложение написано полностью ИИ-агентами: в основном Claude Code, отчасти Cursor, код почти не читался и не проверялся человеком. Слой доступа к данным (data access layer) со временем разросся до 17 155 строк в одном Rust-файле: каждый запрос повторял одну и ту же настройку HTTP-запроса, одно и то же кодирование и декодирование JSON, без выделения общих функций или классов.
На этом файле поставили эксперимент. Перед каждым шагом рефакторинга свежему агенту (без памяти о предыдущих шагах) давали одну и ту же тестовую задачу, добавить новый асинхронный trait для наблюдения за объектами (watch/unwatch/список), и просили агента сообщить, сколько токенов ушло на выполнение. Изменение затем отбрасывалось, применялся следующий шаг рефакторинга, и цикл повторялся. Так измерили, как рефакторинг влияет на стоимость одной и той же будущей задачи.
Результат: входные токены на выполнение тестовой задачи упали с 159 564 (базовый замер) до 27 360 (после всех шагов рефакторинга), экономия 132 204 токена, то есть 83%. При цене Sonnet 5 в 3 доллара за миллион входных токенов это 39,7 цента экономии на одном прогоне, сумма небольшая, но она повторяется на каждом будущем изменении, которое затрагивает этот слой кода. Выходные токены (объём сгенерированного кода) почти не изменились, экономия целиком объясняется тем, что агенту приходится читать меньше кода для той же задачи, хотя общий объём кода в слое остался примерно тем же (просто распределился по 19 файлам вместо одного). То есть агент научился находить и читать только нужный узкий фрагмент кода, а не бессистемно наращивал количество мелких файлов.
Эксперимент занял около восьми часов, шёл почти без присмотра человека; один раз потребовалось вмешательство, агент решил, что закончил, хотя пропустил шаг. Сам Claude, по наблюдению автора, плохо справлялся с планированием рефакторинга (не мог сам понять, какие рефакторинги применимы, нужен человек, который укажет направление) и с механическим применением правок: скрипты на Python с grep и sed регулярно путались в отступах. При составлении общего плана рефакторинга чат-интерфейс Claude.ai сработал лучше интерфейса Claude Code: увидел целый класс-клиент для выделения, тогда как Claude Code заметил лишь первый шаг, выделение функции. Автор отдельно оговаривает: сам процесс рефакторинга не бесплатен, на весь эффект (включая двукратное составление плана и проектирование самого эксперимента) могло уйти до пяти миллионов токенов, и эта сумма не входит в расчёт 83%-ной экономии.
Ключевые факты
- Приложение ~150 000 строк кода (из них ~120 000 на Rust) написано полностью ИИ-агентами, в основном Claude Code, отчасти Cursor, без построчного ревью человеком.
- Слой доступа к данным разросся до 17 155 строк в одном Rust-файле, что и стало объектом эксперимента по рефакторингу.
- На одной и той же тестовой задаче входные токены упали с 159 564 до 27 360, экономия 132 204 токена (83%); выходные токены почти не изменились.
- При цене Sonnet 5 $3/млн входных токенов экономия на одном прогоне, 39,7 цента, но она повторяется на каждом будущем изменении в этом слое кода.
- Claude плохо справлялся с самим планированием рефакторинга и с механикой правок (скрипты на grep/sed путались в отступах), требовалось активное руководство человека.
Почему это важно
Материал впервые количественно показывает, что рефакторинг кода, написанного ИИ-агентами, не косметика, а прямая экономия на использовании самих агентов. На реальном приложении, полностью созданном Claude Code и отчасти Cursor, автор поставил контролируемый эксперимент: перед каждым шагом рефакторинга свежему агенту давали одну и ту же тестовую задачу и замеряли расход токенов. Итог, падение входных токенов на 83% (со 159 564 до 27 360) при том, что объём кода в слое почти не изменился. Экономия появилась не потому, что кода стало меньше, а потому, что агенту приходится читать меньше кода для той же задачи.
Кому это важно
Материал адресован тем, кто строит продукты почти целиком через агентное кодирование (Claude Code, Cursor и аналоги) и считает расход токенов как реальную статью затрат: техническим руководителям, соло-разработчикам на «вайб-кодинге», командам, которые оценивают, стоит ли закладывать время на рефакторинг в проектах, где основную часть кода пишет агент, а не человек.
Как это применить
Если агент регулярно работает с одним и тем же большим файлом или модулем, периодический рефакторинг снижает стоимость каждого будущего изменения в этом месте. Важно не просто дробить файл на части: экономия в эксперименте появилась только тогда, когда рефакторинг убрал дублирование и выделил чёткую внутреннюю структуру, так агент смог находить и читать только нужный узкий фрагмент, а не перебирать много мелких файлов без системы. В самом эксперименте план рефакторинга лучше составлял чат-интерфейс Claude.ai, чем интерфейс Claude Code; а механическое применение правок через Python-скрипты на grep и sed оказалось хрупким и путалось в отступах, потребовалась проверка человеком.
Можно ли доверять
Это один эксперимент на одном приложении с одним разработчиком, без внешнего рецензирования, материал опубликован в блоге Thoughtworks «Exploring Gen AI» на сайте Мартина Фаулера, что для инженерной практики считается авторитетной площадкой. Автор сам оговаривает ограничение метода: Claude не даёт надёжного способа считать токены в реальном времени, поэтому их оценивали приблизительно, по числу символов, делённому на четыре, через библиотеку tiktoken. Абсолютная денежная экономия на одном прогоне (39,7 цента) невелика, вывод работает прежде всего как объяснение механизма, а не как готовая финансовая модель, и требует проверки на других задачах и кодовых базах.
Риски и подводные камни
Сам Claude, по наблюдению автора, плохо справлялся с рефакторингом на уровне идей, не мог сам определить, какие рефакторинги применимы, и нуждался в пошаговом руководстве человека. Механическая часть (скрипты на grep/sed) регулярно ломалась на отступах, а один из самых ценных шагов рефакторинга пришлось повторно применять отдельным этапом. Весь эксперимент шёл около восьми часов почти без присмотра, и один раз потребовалось вмешательство человека, агент решил, что закончил, хотя пропустил шаг. Автор также предупреждает: сам рефакторинг не бесплатен, на весь эффект (включая двукратное составление плана и проектирование эксперимента) могло уйти до пяти миллионов токенов, и эта сумма не включена в расчёт 83%-ной экономии.
«Claude не способен посмотреть на код, оценить возможные рефакторинги и определить, какие из них стоит применить: человеку приходится активно им руководить.»
— автор эксперимента, блог Thoughtworks «Exploring Gen AI»