Переписывание рантайма GitHub Copilot с TypeScript на Rust силами самого Copilot
Инженер GitHub Стивен Тауб перевёл рантайм Copilot с TypeScript на Rust с помощью приложения и CLI GitHub Copilot. Большую часть кода написали агенты, вышло около 832 000 строк за 128 PR и примерно 14,5 недели.
Что сделали
Один разработчик, Стивен Тауб, переносил рантайм на месте через приложение Copilot и Copilot CLI, по одному компоненту на PR. Каждый PR заменял код на TypeScript тонкой прослойкой, которая вызывает Rust, а существующие сквозные тесты продолжали работать. Родительские сессии запускали дочерние, каждую в своём worktree, и ещё субагентов. Сам Тауб проверял результат, спорил с решениями агентов и следил за порогами качества.
Что получилось
Рантайм теперь на 100% написан на Rust, это около 832 000 строк рабочего кода, 128 PR и примерно 14,5 недели. Несколько регрессий быстро исправили, а производительность, по словам авторов статьи, выросла на порядки.
На что обратить внимание
Пятнадцать агентов, собиравших проект одновременно, повесили ноутбук разработчика. Сначала он разрешил сборку только родительской сессии, а потом сделал отдельную чат-сессию, которая выдаёт право на сборку одной сессии за раз.
Пояснение
Worktree это отдельная рабочая копия репозитория в git, чтобы параллельные сессии не мешали друг другу. Прослойка (shim) сохраняет старый интерфейс, а внутри вызывает новый код, поэтому остальная система не замечает подмены.
Кому пригодится
Командам, которые собираются переписать большой проект на другой язык и хотят понять, как разделить работу между агентами.
Попробуйте сами с GitHub Copilot
Хочу перенести [модуль или компонент] в [владелец/репозиторий] с [текущий язык] на [целевой язык]. Сначала составь план, который делит работу на небольшие PR, каждый из которых можно проверить отдельно, и покажи его мне до начала работы. Потом проходи их по одному, следи, чтобы каждый PR проходил существующие тесты, и перечисли все найденные различия в поведении.
Нужна помощь с запуском? Вступайте в сообщество AI Pack ↗
Источник: github.blog ·