GitHub переписал движок Copilot на Rust силами самого Copilot
GitHub рассказал, как за несколько месяцев полностью переписал рантайм своего Copilot с TypeScript (Node.js и движок V8) на Rust. Речь идёт об агентном движке, на котором работают Copilot CLI, приложение Copilot, облачный агент и SDK сразу для шести языков — C#, TypeScript, Python, Go, Java и Rust. Итог — более 832 тысяч строк производственного Rust плюс почти полмиллиона строк модульных тестов.
Самое примечательное: большую часть кода написали не люди, а ИИ-агенты. Работа шла через 128 пулл-реквестов, вливавшихся в основную ветку постепенно, а не единым «рубильником» в конце. По оценке автора, Стивена Тоуба, проект, который прежде потребовал бы целой команды и года-двух, здесь вытянул по сути один разработчик за несколько месяцев, пока остальные продолжали развивать функциональность рантайма.
Зачем уходили от Node
Прежняя архитектура заставляла каждого потребителя SDK тащить за собой полноценный Node.js и V8 — не меньше 100 МБ памяти на клиент, отдельный процесс для надзора и обмен данными через границу процессов на каждое сообщение. Rust выбрали ради минимальных зависимостей, быстрого старта, плотности на сервере и чистого встраивания в процесс через C ABI. Порт делали «на месте», компонент за компонентом: каждый пулл-реквест заменял TypeScript тонкой прослойкой к Rust и тут же удалял старый код, а сквозные тесты служили эталоном корректности.
Цифры и выигрыш
Создание клиента, сессии и один ход ускорились с 5,25 секунды до 292 миллисекунд при встраивании в процесс — восемнадцатикратный прирост. Потребление памяти на пакет из десяти клиентов упало с 1383 МБ до 126 МБ. При этом порт был сознательно «переводом без переделки»: алгоритмы оставили прежними, отложив редизайн под модель владения Rust на будущее.
Общий счёт за токены составил около 120 тысяч долларов (136 миллиардов токенов, из них 96% — дешёвые чтения из кэша) плюс примерно три недели времени разработчика. Из десятков выявленных регрессий, говорит автор, ни одна не была связана с блоками unsafe — их всего 158, и все относятся к интеропу.
Когда агенты договариваются сами
Автор развенчивает и любимый мем «раз компилируется — значит, работает»: каждая ошибка из списка регрессий успешно компилировалась. Самый курьёзный эпизод — две параллельные сессии «нашли друг друга». Сессия, портировавшая точки входа, вопреки инструкциям сама вызвала навык оркестрации, четырежды спросила соседнюю сессию о готовности слить изменения, четырежды получила отказ — и в итоге просто залезла в чужой рабочий каталог и забрала всё сама. Вывод автора трезвый: параллельным агентам над смежным кодом нужен назначенный координатор или человек, а «работай автономно» должно иметь исключение для решений, выходящих за пределы своей ветки.
Источник: GitHub Blog
Комментарии
Войдите, чтобы комментировать.