Язык

Код

Миграция среды Copilot на Rust обошлась в 120 000 долларов

GitHub завершила миграцию среды Copilot на Rust в сентябре 2026 года: ИИ-агенты написали большую часть из более чем 800 000 строк боевого кода на Rust за 14,5 недели. По данным The Register, перенос стоил около 120 000 долларов на токены ИИ и около трех недель работы разработчика, а GitHub говорит, что измеренный сценарий запуска сократился с 5,25 секунды до 292 миллисекунд. Для компаний с большими унаследованными кодовыми базами это измеренный пример того, как агенты выполняют переписывание, для которого раньше требовалась целая команда.

Автор: Mike Mozg4 минуты чтения

Почему GitHub пришлось уходить с TypeScript в среде выполнения

Среда выполнения агента Copilot это движок GitHub Copilot CLI, приложения Copilot, Copilot SDK и облачного агента Copilot. Она же стоит за VS Code, Visual Studio, Excel, Outlook, PowerPoint и Word. Ее написали на TypeScript на Node.js и движке V8, это стек для быстрой разработки, а не для быстрого запуска или плотных серверов.

Этот выбор дорожал по мере того, как среда распространялась. Каждому приложению с SDK приходилось запускать отдельный процесс для Node.js и V8. GitHub говорит, что это добавляло примерно 100 МБ рабочего набора на клиента, гнало каждое событие и сообщение через границу процессов и означало, что сбой в Node уносил сессию.

Что GitHub построила вместо этого

GitHub заменила среду нативной библиотекой на Rust, которую приложения-хосты могут встраивать напрямую через C ABI, при этом режим вне процесса остался доступным. Copilot SDK сохраняет интерфейсы под отдельные языки: TypeScript, Python, Go, .NET, Java и Rust.

«Это ни в коем случае не утверждение, что каждую большую программу на TypeScript нужно переписать на Rust». Стивен Тауб, выдающийся инженер Microsoft, о переносе

Тауб написал, что требованиями команды были встраивание через C ABI, низкие накладные расходы на запуск и в устойчивом режиме и предсказуемое использование ресурсов.

Как агенты работали изо дня в день

Перенос шел постепенно, а не одним большим переключением. Отдельные компоненты TypeScript заменяли на Rust, соединяя их временным слоем совместимости, чтобы существующие сквозные тесты проверяли новый код. Этот слой дорос до 2019 внутренних экспортов и 3356 мест вызова на TypeScript, прежде чем его убрали. Работа вошла в 128 запросов на слияние, а за время миграции GitHub выпустила 135 релизов: 35 стабильных и 100 предварительных.

Copilot переписывал Copilot, используя несколько моделей, включая GPT-5.6 Sol и Claude Opus 4.8, для разных частей работы. Агенты тратили больше времени на сбор информации, чем на написание кода. Самый трудный файл, session.ts, содержал более 30 000 строк на TypeScript. Сессия переноса заняла 25 часов: 56 минут ушло на чтение документации, было 122 вызова инструментов и запущено 15 дочерних сессий, которые координировались друг с другом. GitHub записала 4478 прямых проверок компиляции, 87,1% прошли чисто.

Что измерили при миграции

GitHub и The Register приводят такие результаты:

  • Размер: к 21 августа в среде было 832 378 строк боевого кода на Rust и 468 689 строк модульных тестов на Rust. Агенты преобразовали около 430 000 строк TypeScript, а в оценке начала мая 2026 года было примерно 130 000.
  • Запуск: запуск клиента, создание сессии и сценарий из одного хода сократились с 5,25 секунды до 292 миллисекунд при встроенной в процесс среде на Rust.
  • Пропускная способность: на 1000 однократных жизненных циклов сессии в 100 параллельных конвейерах TypeScript выполнил 7,55 в секунду, а Rust в процессе 120 в секунду, ускорение в 15,9 раза.
  • Память: пакет из 10 клиентов использовал 1383 МБ на TypeScript и 126 МБ на Rust.
  • Стоимость: около 120 000 долларов на токены ИИ и около трех недель работы разработчика.

Где агенты ошибались

Переписывание прошло не гладко. The Register сообщает о нескольких десятках регрессий: код компилировался, но вел себя иначе. Тауб связал их с неоднозначной семантикой, расхождением веток, функциями, которые не перенесли, и кодом-заменой, который вел себя по-другому. Он написал, что «если компилируется, значит правильно» полезно только как шутка.

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

Что это меняет для компаний с унаследованным кодом

Бизнес-задача здесь в переписывании, на которое некому выделить людей. GitHub говорит, что до агентов проект занял бы у целой команды разработчиков год или два, а его выполнил в основном один разработчик за несколько месяцев, пока остальная команда продолжала добавлять функции.

Метод важен не меньше агентов: маленькие запросы на слияние, временный мост между старым и новым кодом, существующие тесты и человек, проверяющий каждое изменение. Компания, которая взвешивает собственный перенос, может сравнить свои затраты с одной публичной цифрой: около 120 000 долларов на токены за эту работу.

Вопросы и ответы

Сколько занял перенос среды Copilot на Rust?

Около 14,5 недели, через 128 запросов на слияние, пока GitHub продолжала выпускать среду.

Сколько стоило переписывание с помощью ИИ?

По данным The Register, около 120 000 долларов на токены ИИ и около трех недель работы разработчика.

Поймал ли компилятор Rust ошибки агентов?

Только часть. Компилятор подтверждает, что код допустим на Rust, но не что он сохраняет прежнее поведение, поэтому регрессии, которые компилировались без ошибок, нашли тесты и проверка людьми.

Взгляд MOZGII

Как бы мы это построили

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

Если бы мы переносили большую кодовую базу с агентами, мы бы сначала зафиксировали нужное поведение в тестах на границах: входы, выходы, ошибки, отмена и повторы. Мы бы переносили по одному модулю за временным мостом, выпускали каждый кусок в обычном релизе и держали старый модуль готовым для возврата. Агенты читали бы, писали черновики и запускали проверки. Каждое слияние вел бы человек.

Система дала бы сбой там, где поведение никогда не записывали. Компилятор подтверждает, что код допустим, а не то, что он делает то же, что старый, и регрессии в этом случае возникли именно из таких пробелов. Мы бы воспроизводили записанные боевые запросы на обеих версиях и сравнивали ответы.

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

Источники

Откуда взяты факты этой новости.

  1. 01Github Migrates Copilot Runtime to Rust with AI-Assisted Rewrite - InfoQinfoq.com
  2. 02Microsoft agentically ports Copilot runtime to Rust for $120Ktheregister.com
  3. 03Migrating the GitHub Copilot runtime to Rust, using Copilot - The GitHub BlogLinkedIn iconInstagram iconYouTube iconX iconTikTok iconTwitch iconGitHub icongithub.blog

Мы используем файлы cookie

Мы собираем обезличенные данные об использовании сайта, чтобы улучшать MOZGII. Без вашего согласия данные не собираются. Политика конфиденциальности · Политика Cookie