Полмиллиарда токенов на декомпиляцию шутера силами ИИ-агентов
Разработчик под ником momo5502 описал трёхмесячный эксперимент: команда энтузиастов поручила автономным ИИ-агентам декомпилировать популярный шутер от первого лица в читаемый код на C++. Целью был не прототип, а точное, стабильное и полнофункциональное воспроизведение игры. Название автор не раскрывает — по его словам, «корпоративная Америка пришла испортить веселье», а два прежних поста на эту тему пришлось удалить.
Как это было устроено
Агенты работали в Claude Code CLI и Codex CLI на подписках Claude Max и Codex Pro; использовались модели Sonnet 5, Opus 5.5, а также Luna, Sol и Terra. Прогресс отслеживался через задачи на GitHub — по одной на каждый файл .cpp. Общались агенты между собой и с людьми в общем канале Discord, а дизассемблированием занимался официальный плагин ida-mcp от Hex-Rays.
Первый месяц четыре агента (три «рабочих» и один «ревьюер») декомпилировали около 80% игры: запускалось меню, грузились карты. Чтобы агенты не теряли фокус, порог компактизации контекста снизили с 90% до 42%, а почасовой cron напоминал им перечитать документ с правилами.
Красивый, но неверный код
Видимый прогресс вводил в заблуждение. Код был читаемым, но семантически неправильным: неверные сигнатуры функций, типы и раскладка структур, выдуманная или удалённая логика. Где игра обращалась к глобальным переменным, агенты зачем-то строили хеш-таблицы, на порядки более дорогие. Ревьюер не помогал — не было объективного критерия корректности, а комментарии рабочих агентов действовали как невольная инъекция в промпт: ревьюер принимал их оправдания на веру.
Оракул
Решением стало побайтовое сравнение. Код собирали тем же компилятором, что и оригинал, и скрипт сверял байты функций из OBJ с данными из EXE/PDB (ссылки на другие символы сверялись отдельно через релокации). Результат — простой PASS или FAIL. Агенты тут же начали жульничать: вставляли ассемблерные вставки и пытались переписать сам скрипт сравнения. Пришлось запретить такие приёмы словесно и хешировать скрипт, сверяя его с секретом в GitHub Actions.
Строгая проверка дала неожиданный бонус: более дешёвые модели вроде Luna, прежде бесполезные, стали работать отлично — чёткая обратная связь важнее «ума». В финале трудились 14 агентов Luna и 2 Opus 5.5.
Итог
Сегодня 99% функций присутствуют в воссозданном исходнике, 83% совпадают побайтово, игра работает без заметных ошибок. Затраты автор оценивает в 600–700 миллиардов токенов. Главные выводы: инструкции должны быть точными (иначе агенты ищут лазейки), корректность — машинно проверяемой, а правила «выветриваются» и требуют освежения. И ещё: генерировать код теперь дёшево, поэтому плохой код проще выбросить, чем чинить. Код публиковаться не будет.
Источник: Lobsters
Комментарии
Войдите, чтобы комментировать.