В мире программирования существует множество инструментов и технологий, которые автоматизируют процесс написания кода, но создание искусственных интеллектов, способных кодировать как человек, по-прежнему остается сложной задачей. Основная причина этого заключается в отсутствии качественных и репрезентативных данных, которые отражают настоящие методы и поведение разработчиков. Именно здесь на помощь приходит краудсорсинг — метод совместного сбора данных, который позволяет формировать полноценные наборы данных из реальных действий программистов в их привычной среде работы. Проект Crowd-code, представленный группой исследователей из Технического университета Мюнхена, предлагает уникальное решение, позволяющее собирать такие данные непосредственно в интегрированной среде разработки (IDE). Crowd-code – это расширение для VS Code и Cursor, которое работает незаметно, записывая действия программиста и периодически загружая их на сервер для анонимной обработки и последующего использования в обучении моделей искусственного интеллекта.
Благодаря установке расширения достаточно всего один раз, после чего оно автоматически фиксирует широкий спектр операций, характерных для реальной разработки: ввод и удаление символов, перемещения курсора, переключение между файлами, использование терминала, взаимодействие с системами контроля версий и многое другое. Такой детальный и обширный сбор данных позволяет моделям искусственного интеллекта учиться не на заготовленных шаблонах или идеализированных примерах кода, а на реальных сценариях программирования, где присутствуют ошибки, отладки и различные перемещения по проекту. Именно этот уровень достоверности и глубины данных поможет сделать программных агентов максимально приближенными к человеческим разработчикам. Авторы проекта подчеркивают важность новаторской концепции «open-engineering» — парадигмы, в которой ценность разработчика не ограничивается только конечным кодом, а распространяется и на сам процесс инженерной деятельности. Предоставляя возможность разработчикам встраивать систематическую запись своих действий, Crowd-code превращает каждое их движение, каждое исправление и каждое исследование кода в ценный ресурс для сообщества и машинного обучения.
При этом приватность пользователей не игнорируется: все данные анонимизируются, пользователя информируют о записи и дают полный контроль над тем, какие данные сохраняются и отправляются. Если разработчик случайно ввел конфиденциальную информацию, предусмотрена функция немедленного удаления последних действий — «panic button». Такая прозрачность и забота о безопасности делают проект удобным и этичным для массового внедрения. Интересно отметить, что в дальнейшем разработчики Crowd-code планируют использовать набор данных для более масштабных и инновационных задач. Например, они намерены применить полученные данные для автоматической разметки видео-скринкастов работы с IDE с помощью обратной модели динамики, что позволит извлекать новые обучающие данные из огромного количества существующих учебных и демонстрационных видео в интернете.
Это открывает совершенно новые перспективы для обучения программных ассистентов, способных не только писать код, но и понимать человеческие жесты и контекст работы с программным обеспечением. Влияние подобных разработок на индустрию разработки программного обеспечения может быть огромным. Во-первых, интеграция таких моделей в привычные среды разработки позволит снизить барьеры для новичков и повысить продуктивность опытных программистов. Во-вторых, развитие поведенческих моделей кода поможет создавать инструменты, которые не просто предлагают синтаксически корректные фрагменты, а понимают логику и стиль конкретного разработчика, адаптируясь под его индивидуальные особенности. И наконец, с точки зрения научных исследований, уникальные краудсорсинговые наборы данных дадут возможность создавать более точные и универсальные модели, которые способны решать гораздо более сложные задачи — от оптимизации кода до автоматического исправления ошибок и написания документов.