Привет, Хабр!
На днях я послушала подкаст Лекса Фридмана с основателями стартапа Cursor. Ребята занимаются созданием среды разработки с интеграцией искусственного интеллекта. Идея перспективна и обещает совершить революцию в мире программирования. Однако, конечно же, Cursor не единственные, кто работает в этом направлении.
В 2021 году Microsoft и OpenAI представили нейросетевого ассистента для программистов GitHub Copilot. Яндекс разработал собственного помощника для работы с кодом — Yandex Code Assistant. OpenAI представила новый интерфейс Canvas для работы с ChatGPT для программистов. В декабре 2024 OpenAI официально анонсировали o3 — новую улучшенную версию o1, заявляя, что эта модель способна работать на уровне опытного сеньора. Грядущий год обещает много перемен. Мы видим, как на наших глазах постепенно зарождается новая парадигма создания кода, в которой ИИ-ассистенты становятся партнерами программистов: помогают им создавать, редактировать и отлаживать код, генерируют новый по промпту на естественном языке, ищут ошибки и предлагают улучшения, конвертируют код из одного языка в другой.
Предлагаю рассмотреть, что из себя представляет Cursor, и как появление ИИ-ассистентов меняет будущее разработки ПО. Статья будет интересна как разработчикам, так и всем, кто следит за прогрессом ИИ.
Что такое Cursor
Cursor позиционируется как «ИИ-усиленная среда разработки» или «IDE нового поколения». По сути, это форк популярного редактора VS Code, дополненный набором интеллектуальных фич на базе обученной языковой AI-модели. Главная фишка Cursor — это продвинутое автодополнение. Стоит только начать набирать код, как Cursor тут же предлагает вероятные варианты его продолжения на уровне конструкций и даже блоков.
В отличие от привычных инструментов автодополнения, которые основаны на синтаксическом анализе и шаблонах, Cursor опирается на семантику и контекст. Этот редактор кода «понимает» намерения программиста и генерирует фрагменты кода с учетом контекста проекта, структуры классов и функций, стека технологий и конкретной предметной области. Cursor своего рода «автопилот» для программирования — позволяет писать вдвое-втрое меньше строчек кода вручную и получать более качественный результат.
За кулисами Cursor кипит непрерывная работа ансамбля ИИ-моделей. Он анализирует код на предмет типовых ошибок, проблем производительности, нарушений принципов проектирования (SOLID, DRY, KISS и др.) — и строит полносвязную семантическую модель проекта «на лету». Далее модель проходит проверку — сличается с базой знаний, антипаттернов и типовых ошибок.
Работа в Cursor — это как программирование с напарником, который не только мгновенно понимает твой замысел, но и может сам написать большую часть кода, причем в твоем уникальном стиле. Cursor становится источником новых идей и подсказывает оптимальные решения задач. Он генерирует предложения по оптимизации кода (вплоть до автоматических исправлений). Программист может принимать или отклонять их одним кликом.
Заглянем под капот Cursor
Теперь можно поговорить о технологиях, которые приводят в движение ИИ-ассистента Cursor. Основа основ — это, конечно же, большие языковые модели (LLM), натренированные на огромных массивах кода из открытых репозиториев вроде GitHub. Cursor использует несколько моделей разного размера и архитектуры, каждая из которых заточена под свою задачу — генерацию, анализ, объяснение кода. Один из сооснователей Cursor сравнил эти модели с «коллективным разумом» всего мирового сообщества программистов.
Тренировка моделей на готовых датасетах — лишь первый этап их подготовки. Далее модели Cursor начинают «дообучаться» в реальном времени на основе «живого» фидбека от пользователей. Каждый принятый или отклоненный совет, каждое взаимодействие разработчика со средой — это сигналы, на основе которых ИИ непрерывно совершенствуется. Одна из ключевых метрик, по которой «дрессируют» модели Cursor — это соотношение принятых и отклоненных автодополнений. Если разработчик принимает предложенный код — значит, модель справляется, и ее поведение в подобных ситуациях закрепляется. Если же отклоняет — модель пытается понять, что именно не понравилось пользователю, и корректирует алгоритмы. «Обучение с подкреплением» (reinforcement learning) в действии.
Компания активно вкладывается в настройку моделей под нужды разработчиков. Для этого регулярно генерируются синтетические датасеты и задачи, имитирующие реальные сценарии разработки. Например, чтобы обучить модель находить уязвимости в коде, его сначала «портят», вносят в него ошибки, а потом «скармливают» примеры модели-детектору. Еще один любопытный прием, который используют в Cursor — «соревновательное» обучение моделей. Например, одна модель может генерировать код по описанию задачи, а другая — пытаться найти в нем ошибки или уязвимости. В процессе такого ИИ-противостояния обе модели совершенствуются (Generative Adversarial Networks).
Наконец, важный аспект обучения моделей Cursor — сбор «живых данных». В проектах «из реальной жизни» моделям приходится сталкиваться с уникальными стеками технологий, бизнес-доменами, командными практиками. Без учета этой специфики даже самая «умная» модель рискует давать советы, оторванные от реалий конкретной компании. Разумеется, передача внутреннего кода компаний «на сторону» для обучения — вопрос чувствительный. Чтобы снять связанные с этим риски, в Cursor реализована целая система сохранения приватности и безопасности данных. В частности, код попадает в модель лишь после деперсонализации и «замыливания» (obfuscation) чувствительных артефактов — токенов доступа, ключей, персональных данных.
В этом году о себе громко заявил лондонский стартап Human Native AI. Эти ребята строят маркетплейс для лицензирования данных под обучение ИИ-моделей. Создатели проекта хотят обеспечить прозрачный и честный обмен между компаниями, разрабатывающими языковые модели (LLM), и правообладателями контента. Human Native AI фактически создает площадку, где издатели и другие правообладатели могут предлагать свои данные, а ИИ-разработчики — легально их приобретать для тренировки моделей. Human Native AI помогает правообладателям подготовить и оценить контент, следит за соблюдением авторских прав, предлагает разные форматы сделок — от разделения доходов до подписки, а также берет на себя все нюансы по транзакциям и мониторингу. В общем, стартап закрывает потребность индустрии ИИ в Big Data для машинного обучения, не забывая об интересах тех, кто этот контент создавал и имеет на него права. В апреле 2024 года ребята запустились, привлекли £2.8 млн от британских фондов LocalGlobe и Mercuri, а теперь занимаются развитием платформы — заключают первые сделки, набирают обороты. В общем, если тема откликается, дайте знать: расскажу подробнее, но уже в другой статье. Суть в том, что идет формирование нового рынка — маркетплейса датасетов для ИИ, возможного перспективного источника прибыли для компаний.
UX кроется в деталях
Отдельное внимание в Cursor уделяется работе с фидбеком от разработчиков. Команда стремится сделать общение программиста с ИИ максимально естественным, интуитивным и ненавязчивым. Все подсказки, автокомплиты, объяснения и предупреждения от моделей должны появляться ровно в тот момент, когда они нужны, и в той форме, которая не отвлекает, а помогает. Чтобы отточить UX, команда Cursor работает в тесном контакте с сообществом. Ребята стараются как можно раньше выкатывать новые фичи, пусть даже «сырые», ограниченному кругу пользователей. И наблюдают, как разработчики взаимодействуют с новыми возможностями продукта.
Анализируя паттерны использования, точки фрустрации, команда может быстро тестировать гипотезы, отбросить нерабочие истории или улучшать функционал именно так, как нужно людям. К примеру, первые версии продвинутого автокомплита вызывали у некоторых разработчиков ощущение, что они перестают контролировать процесс создания кода. В общем — это мешало. Команда существенно доработала UX автокомплита. Теперь он более точно угадывает намерения разработчика и деликатно предлагает варианты с помощью всплывающих окон, не изменяя код без согласия человека. Все предложенные ИИ-фрагменты легко отличить визуально и «откатить» при необходимости.
Часто разработчики Cursor, как активные пользователи своего же детища, становятся источником идей по улучшению продукта. Например, фича «умного» автоимпорта недостающих зависимостей родилась из «боли» инженера вручную добавлять нужные библиотеки при копировании кода из старого проекта.
Этические и технические вызовы на пути
При всех успехах и перспективах ИИ-разработки, Cursor, как и другим подобным компаниям, приходится решать множество непростых инженерных, продуктовых и даже философских проблем на своем пути. В числе главных задач — обеспечение стабильности, предсказуемости и надежности ИИ-систем. Не секрет, что нейросети подвержены «причудам» и ошибкам, природа которых не всегда очевидна. Как сделать так, чтобы ИИ-ассистент давал разумные советы и не предлагал опасные или некорректные действия с кодом? Как исключить «токсичные» рекомендации, которые могут привести к утечке данных, падению производительности, поломке билда?
В Cursor все ИИ-рекомендации проходят многоступенчатую фильтрацию на предмет потенциального вреда и нарушений безопасности. Модели «дообучаются» на базе обратной связи от разработчиков, которые отклоняют некорректные предложения. Наконец, все генерируемые ИИ фрагменты кода специально размечаются и могут быть легко отключены. В планах — интеграция с системами CI/CD для автоматического тестирования и отката небезопасных коммитов.
Другой серьезный вопрос — обеспечение приватности при сборе данных и дообучении моделей на клиентском коде. Компании щепетильно относятся к собственной интеллектуальной собственности, кодовым базам. Утечка проприетарного кода, особенно с описанием внутренних систем и бизнес-логики, это «страшный сон» для любой технологической компании.
Чтобы развеять связанные с этим опасения, в Cursor реализовали продвинутую систему хранения конфиденциальности на основе концепций федеративного обучения и приватных вычислений. В двух словах, модели дообучаются на клиентских данных без передачи самого кода — вместо этого пересылаются лишь промежуточные «мета-обновления» моделей, из которых в принципе невозможно восстановить исходный код. Кроме того, все персональные данные и чувствительные артефакты удаляются из кода еще на клиентских машинах с помощью специальных алгоритмов «размывания» (obfuscation).
Со стороны среды разработки тоже присутствуют важные ограничения, не позволяющие ИИ-системам «зайти слишком далеко». В частности, в Cursor заложено, что все действия ИИ-ассистента носят рекомендательный характер и должны быть подтверждены разработчиком. Модели могут предлагать изменения кода, но не могут вносить их самовольно без одобрения программиста. Это принципиальная позиция, призванная оставить человека «в контуре» принятия решений.
Как будет трансформироваться профессия программиста под воздействием ИИ-инструментов?
Уже сейчас часть рутинных задач вроде рефакторинга, форматирования и добавления документации автоматизируются «интеллектуальными помощниками». Что, если завтра ИИ научится самостоятельно реализовывать целые фичи по текстовой спецификации от менеджера продукта? Обсуждая будущее Cursor, его создатели склоняются к тому, что их детище не отнимет работу у программистов. Совсем наоборот, ее станет больше. Арвид Луннемарк, отвечающий в компании за долгосрочную стратегию, приводит вариант возможного взаимодействия из сферы авиации. Так, современные автопилоты берут на себя огромное количество рутинных задач — от удержания высоты и курса до навигации и даже посадки. Однако ни один здравомыслящий человек не предлагает убрать из кабины пилотов и целиком положиться на ИИ.
Благодаря ИИ-ассистентам программисты смогут делегировать машинам часть рутинной «механической» работы — поиск и исправление банальных ошибок, рефакторинг, форматирование, базовую оптимизацию. Но при этом в их руках останутся по-настоящему творческие задачи — придумывать новые программные решения, проектировать инновационные архитектуры, улучшать UX, производительность и масштабируемость. Сложный вопрос — поиск баланса между «автономией» ИИ и контролем со стороны человека. По мере развития технологий и роста доверия разработчиков к ИИ, баланс может постепенно сдвигаться от «ассистирования» к полноценному «партнерству».
В общем, нам обещают, что профессия программиста выйдет на новый уровень. Разработчики будущего будут все меньше погружаться в низкоуровневые детали реализации и синтаксис и все больше думать на уровне архитектур, абстракций и моделей предметных областей. Их первичной «суперсилой» станет эффективное управление ИИ-инструментами. А еще будет цениться способность быстро собирать работающие решения из «кубиков» ИИ-сгенерированного кода и сервисов. Кроме того, важную роль будут играть soft skills программиста — умение погружаться в проблемную область, понимать потребности конечных пользователей, общаться с менеджерами продукта и даже клиентами. Ведь если ИИ возьмет на себя львиную долю рутины кодирования, разработчикам придется подниматься на уровень выше — активно участвовать в продуктовой дискуссии, дизайне, функциональности, проработке пользовательских сценариев.
Еще одна проблема: если инструменты на базе ИИ сделают написание кода настолько легким, быстрым и увлекательным, возрастет вероятность «подсесть» на автоматизацию и постепенно утратить фундаментальные навыки программирования. Чтобы не допустить такого сценария, в Cursor изначально закладывают «защиту от дурака», ограничивающую долю кода, которую можно автоматически сгенерировать. Они также планируют активно сотрудничать с образовательными платформами и сообществами, чтобы сформировать у молодых программистов навык ответственного использования ИИ-инструментов. ИИ должен восприниматься как «калькулятор», а не «костыль» для разработчика.
По мнению фаундеров Cursor, в перспективе 10 лет граница между «интеллектуальными инструментами разработки» вроде Cursor и «полноценными ИИ-программистами» будет постепенно стираться. Уже сейчас Copilot может генерировать вполне осмысленный код по текстовому описанию задачи. Что, если завтра системы уровня GPT-6 или PaLM научатся общаться с менеджером на естественном языке, задавать уточняющие вопросы, прояснять требования, а затем самостоятельно разбивать задачу на подзадачи, проектировать архитектуру и писать 80% кода для реализации задачи? И при этом оставлять лишь небольшую долю по-настоящему нетривиальных инженерных решений человеку?
На горизонте 20-30 лет ИИ-системы вполне могут освоить не только рутинную разработку, но и продуктовое проектирование, и даже позволить «программировать реальность» с помощью естественного языка. Менеджер сможет описать желаемый продукт, а ИИ сам «додумает» детали, подберет стек, сгенерирует код, развернет и будет поддерживать его. Тем не менее, как отмечают сами разработчики интеллектуальных решений, пока до «ИИ, который всех уволит» нам еще очень далеко. В реальности прогресс будет постепенным, местами болезненным, с откатами и разочарованиями. Меняться будут не только инструменты, но и культура, процессы, методологии разработки. Уже сейчас Cursor наблюдает зачатки этих изменений — размывание границы между программированием и использованием ИИ-инструментов, «ускорение» цикла написания и проверки кода, фокус на интерактивной отладке вместо классического отложенного тестирования.
Пока еще не до конца понятно, во что все это выльется. Совет от фаундеров Cursor: не бояться экспериментировать с ИИ, но и не терять скептицизм, ставить под сомнение рекомендации моделей. Нужно разумно «дозировать» автоматизацию в своей работе, не терять хватку в фундаментальных навыках. И главное — развивать в себе способность эффективно «дирижировать» оркестром ИИ-инструментов.
Один из их клиентов Cursor, крупный банк, провел эксперимент — устроил «соревнование». Команда разработчиков-людей и ИИ-система на базе Cursor состязались в решении реальной бизнес-задачи. ИИ показал отличный результат: превзошел людей по скорости и качеству кода. Однако финальный продукт все равно собрала команда разработчиков-людей. Причем некоторые из ее находок были позаимствованы из решений ИИ. Получился как раз тот синергетический эффект «кентавра», о котором мечтают в Cursor.
Бонус: список инструментов
Вот, кстати, небольшой список актуальных ИИ-инструментов в помощь разработчикам, которые собрали коллеги.
Cursor.com: IDE с интегрированным ИИ.
v0.dev: инструмент для разработки фронтенда.
replit.com: онлайн IDE с ИИ-агентом.
bolt.new: инструмент для быстрого создания приложений.
Copilot от Microsoft: помощник для кода, который стал стандартом для многих разработчиков.
Недавно OpenAI выпустила новое поколение моделей искусственного интеллекта — o3 (самый умный ИИ в мире), и результаты впечатляют. По данным тестирования SWE-bench, модель показала существенный прирост в способности находить и исправлять ошибки в коде. А в рейтинге Codeforces o3 достигла уровня международного гроссмейстера. Подробный анализ возможностей новой модели и её влияния на будущее разработки ПО читайте в материале профессора математики Владимира Крылова — рекомендую.
Заключение
Подкаст с Cursor был познавательным. Конечно, многое в ИИ-ассистентах для разработчиков еще «сырое» и далекое от идеала. Где-то модели ошибаются, где-то раздражают навязчивостью, где-то напротив — недорабатывают. Но прогресс стремителен.
Суперсилы, которые дают ИИ-инструменты вроде Cursor — это классный бонус. И будущее, похоже, за теми, кто научится виртуозно управлять этими инструментами: комбинировать их возможности, подбирать оптимальные решения под каждую задачу. По сути, формируется новая специализация — своего рода «DevOps для ИИ в разработке». В то же время прогресс ИИ порождает справедливые опасения у программистов. Никому не хочется, чтобы его навыки в одночасье оказались ненужным из-за машины, которая выполняет эту же работу в 10 раз быстрее и дешевле.
Но я верю в другой сценарий: будущее за гибридными системами, где ИИ возьмет на себя рутину, а программист станет настоящим технокреатором, стратегом и немного волшебником. Рекомендую послушать подкаст, познакомиться с Cursor и похожими инструментами, поэкспериментировать с ними. Только не забывайте про критическое мышление — именно способность контролировать и направлять технологии отличает нас от машин.
Поделитесь в комментариях, как вы относитесь к ИИ-ассистентам для разработчиков? Уже пользуетесь чем-то подобным в своей работе? Какие плюсы и минусы видите?»
ссылка на оригинал статьи https://habr.com/ru/articles/869880/
Добавить комментарий