Яндекс открыл инструмент на базе LLM для миграции iOS-кода на Swift

Яндекс открыл инструмент на базе LLM для миграции iOS-кода на Swift
Все права принадлежат AInDev.ru

«Яндекс» открыл доступ к инструменту на базе большой языковой модели (LLM), предназначенному для автоматизированной миграции iOS-кода с Objective-C на Swift. Инструмент ориентирован на крупные Enterprise-проекты, где накоплен значительный «технический долг» из сотен тысяч строк кода, а ручной перевод превращается в долгосрочную рутину.

Практическое применение и производительность

Изначально методология создавалась для нужд «Яндекс Браузера». Масштаб задачи был внушительным: за пятилетний период ручной миграции команде удалось обработать лишь половину накопленного кода. Переход на LLM-ассистируемую модель позволил изменить процесс: разработчики переключились с механического переписывания файлов на валидацию и сложный рефакторинг. За два месяца интенсивной работы система обеспечила интеграцию 106 пул-реквестов, охватив 97,5 тыс. строк кода и более двух тысяч файлов. На практике это значит, что объем задач, требующий при обычном подходе более года работы, был закрыт в разы быстрее.

Техническая реализация и архитектура промптов

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

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

Второй этап — приведение полученного кода в соответствие с актуальными best practices языка Swift.

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

Четвертый этап — финальная очистка от избыточных аннотаций, которые становятся неактуальными после завершения преобразований.

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

Интеграция и масштабирование

Метод был проверен на стороннем проекте — приложении Wikipedia для iOS. Авторы успешно перенесли компонент, отвечающий за форматирование wiki-разметки, что подтвердило отсутствие привязки к внутренней инфраструктуре «Яндекса».Интеграция решения в проект требует минимальной настройки: разработчику необходимо подготовить конфигурационный шаблон. В него вносятся данные об архитектуре, системе сборки, стандартах кода, структуре тестов, а также словарь для замены паттернов. Важным техническим требованием остается очередность: миграцию следует начинать с «листьев» графа зависимостей — компонентов, которые не полагаются на устаревший код. Это исключает появление временных прослоек совместимости между языками.Решение совместимо с большинством современных агентских IDE, которые поддерживают подгрузку промптов в контекст диалога. Наработки, включая скрипты и конфигурационные шаблоны, опубликованы на GitHub и SourceCraft.