Началось с того, что коллега написал в чат: «Перехожу на Cursor, VS Code уже не торт». Я отнёсся скептически — Copilot работал, всё было привычно, зачем что-то менять. Но потом споткнулся на задаче: нужно было переписать три связанных модуля с учётом новой архитектуры, и Copilot предлагал строчку за строчкой, совершенно не понимая общей картины. Провозился полдня. Тогда и решил — ладно, проверю сам.
Потратил примерно три месяца на то, чтобы поработать с каждым инструментом всерьёз, а не пощупать пять минут и написать пост. Вот что вышло.
GitHub Copilot: старожил с синдромом близорукости
С Copilot я провёл больше всего времени — просто потому что начал раньше. Встроен в VS Code, JetBrains, Neovim, стоит $10 в месяц, и на автодополнении он реально хорош. Когда пишешь что-то типовое — функция сортировки, парсинг JSON, регулярки — угадывает с первого раза, и это приятно.
Проблема вылезает ровно тогда, когда задача выходит за пределы одного файла. Я попросил помочь с рефакторингом сервиса аутентификации — нужно было протянуть изменения через четыре файла и сохранить логику. Он предложил правки только для открытого файла, игнорируя всё остальное. Я уточнил в чате — он сгенерировал что-то, что не компилировалось, потому что не видел зависимости из соседнего модуля.
Это не баг — это архитектурная особенность. Copilot изначально строился как автодополнение, а не как агент, который понимает проект целиком. Chat-режим появился позже и ощущается как пристройка, а не как родная функция. Можно с этим жить, но надо понимать, что за инструмент у тебя в руках.
Для кого это работает: если задачи в основном локальные и нужно просто умное автодополнение — Copilot справляется. Я сам его оставил на одном из рабочих ноутбуков именно для такого режима.
Cursor: когда редактор понимает проект, а не файл
Cursor — форк VS Code, так что переезд занял минут двадцать. Все расширения перенеслись, шорткаты привычные. Первые пару дней я даже не почувствовал большой разницы.
А потом попробовал Cmd+K с контекстом нескольких файлов.
Я описал задачу текстом: «У меня есть UserService и AuthMiddleware, они используют разные форматы токенов, нужно унифицировать». Cursor прочитал оба файла, предложил конкретный план с диффами, и когда я сказал «применяй» — применил корректно в обоих местах. Не идеально, одно место пришлось поправить руками, но общая логика была схвачена правильно.
Фича @codebase — отдельная история. Можно буквально написать «найди все места, где мы не обрабатываем ошибку таймаута» — и Cursor пройдётся по проекту. Я делал так несколько раз: процентов семьдесят находок были реальными проблемами. Остальное — ложные срабатывания, но это уже прогресс по сравнению с grep вручную.
Главная претензия — скорость. Когда Cursor думает над большим контекстом, он реально думает: секунд десять-пятнадцать. Для простых задач раздражает. И ещё он иногда уверенно предлагает решение, которое не работает, причём объяснение выглядит убедительно — начинаешь искать ошибку у себя, а не в его ответе.
Стоит $20 в месяц на Pro-плане. Бесплатный уровень есть, но там лимиты на быстрые модели, и это сильно чувствуется.
Windsurf: тот случай, когда новичок удивляет
Честно говоря, взял Windsurf почти из любопытства — Codeium выпустил его в конце 2024-го, все начали обсуждать. Поставил, думал покрутить неделю и вернуться к Cursor.
Остался на месяц.
Дело в том, что Windsurf устроен иначе. Их агентный режим — Cascade — сам инициирует действия, сам открывает нужные файлы, сам запускает тесты если есть конфиг, сам проверяет, что изменения не сломали соседний код. Cursor тоже умеет в агентный режим, но у Windsurf это работает плавнее. Меньше ручных подтверждений, больше ощущения, что он реально ведёт задачу, а не ждёт пинка.
Один раз я попросил: «Добавь логирование запросов во все эндпоинты API, используй уже существующий logger». Windsurf нашёл logger, нашёл все одиннадцать эндпоинтов, добавил логирование с правильным форматом и написал: «проверь вот эти два эндпоинта — там нестандартная обработка». Я проверил — он был прав насчёт обоих.
Слабое место — UI. Cursor всё-таки более полированный, и некоторые мелочи в Windsurf до сих пор ощущаются как версия 0.9, а не 1.0. Плюс меньше интеграций: Copilot подключается к GitHub, пул-реквестам, ишьюсам, а у Windsurf этого пока нет.
По цене — бесплатный план с приличным лимитом, Pro стоит $15 в месяц.
Что в итоге
Три месяца спустя нет ощущения, что есть один правильный ответ. Всё зависит от задачи сильнее, чем я ожидал.
Copilot — для быстрых задач в знакомом стеке, когда не хочется менять рабочий процесс и важна скорость автодополнения. Плюс он работает там, где другие не работают: в JetBrains, в Neovim.
Cursor — для серьёзных проектов, где нужно понимание архитектуры. @codebase реально меняет то, как ищешь и исправляешь проблемы. Я использую его на основной машине.
Windsurf неожиданно понравился для задач типа «сделай это по всему проекту». Агентный режим у них продуман чуть лучше, и если бы не шероховатости в интерфейсе — мог бы спокойно стать основным.
На практике у меня сейчас стоит и Cursor, и Windsurf — переключаюсь в зависимости от задачи. Copilot отключил. Это, наверное, и есть честный итог.
