Anthropic выпустила code-modernization v1.0.0, плагин для Claude Code, который берётся за старые кодовые базы. Те самые, которые все боятся трогать, потому что работают, а почему работают — уже никто толком не помнит)
Переписать код нейросеть умела и раньше. Здесь меня зацепило другое: плагин пытается доказать, что новая версия ведёт себя точно так же, как старая.
Порядок примерно такой. Сначала он разбирает старую систему и вытаскивает из неё бизнес-правила. Потом составляет план и отдаёт его человеку на утверждение. Дальше переписывает, при необходимости даже на другой язык. А потом начинается самое интересное: старую и новую реализации гоняют на одинаковых входных данных и сравнивают результаты. Сверху плагин генерирует тесты на пограничные случаи и, кстати, специально вносит в код ошибки, чтобы проверить, поймают ли их тесты. Если не поймают, значит такие тесты ничего не стоят.
В конце выходит отчёт с вердиктом: PROVEN, PARTLY PROVEN или NOT PROVEN. Мне прям нравится, что «частично доказано» вынесено в отдельную категорию, а не спрятано под «всё отлично».
Исходный код при этом остаётся нетронутым, а на критичных шагах решение принимает человек.
Надо признать, в модернизации всегда пугала не сама переписка. Пугало, что через полгода выяснится: старая система в каком-то редком случае округляла иначе, и на этом держалась половина отчётности. То ли это и есть главная боль легаси, то ли я просто слишком часто на такое натыкался.
Раньше я считал, что «переписать с нуля» — почти всегда авантюра. Сейчас допускаю, что с такой проверкой это становится нормальной инженерной задачей. Насколько хорошо оно работает на реальном монстре лет двадцати от роду, не знаю. Посмотрим)
https://github.com/anthropics/claude-plugins-official/blob/main/plugins/code-modernization/README.md