Что это решает
Классическое автодополнение подсказывает имя метода. Дальше человек сам пишет тело, сам ставит обработку ошибок, сам меняет вызывающий код. Модель в отдельном окне пишет всё это целиком, но её ответ надо переносить руками и сверять с текущим состоянием файла.
Cursor убирает окно посередине. Дополнение предсказывает не следующее слово, а следующую правку — включая многострочную и в другом месте файла. Выделенный кусок переписывается по описанию прямо на месте, с подсветкой изменений. Агент правит несколько файлов сразу и показывает результат в привычном виде diff, который принимают или отклоняют по кускам.
Вторая закрытая боль — контекст. Модели в чате приходится объяснять словами, как устроен проект. Здесь на проект собран индекс, и в запрос подтягиваются нужные файлы, документация библиотеки и правила репозитория без ручного копирования.
Как устроено
Основа
Cursor собран как форк VS Code. Отсюда сразу знакомые сочетания клавиш, дерево файлов, встроенный терминал, отладчик, настройки в JSON и поддержка расширений. Перенос настроек и раскладки с VS Code делается импортом при первом запуске. Модельная часть встроена в само приложение, а не прикручена расширением, поэтому она достаёт до diff-вьюера, терминала и истории правок.
Tab: предсказание следующей правки
Основной режим повседневной работы. Курсор стоит в коде, редактор предлагает продолжение серым текстом, Tab принимает. Отличие от старых автодополнений — предсказывается связная правка: переименовали переменную в объявлении, редактор предлагает подхватить её ниже; поменяли одно поле в структуре, редактор ведёт по остальным местам того же файла. Приём подсказки часто перепрыгивает курсор к следующему месту, которое надо изменить.
Модель дополнения отдельная и оптимизирована на скорость: задержка здесь важнее глубины рассуждений.
Инлайн-правка
Выделяется кусок кода, вызывается инлайн-режим, пишется описание — «вынеси в отдельную функцию», «добавь обработку пустого ответа». Правка накладывается на месте с зелёно-красной подсветкой, принимается или отклоняется. Тот же режим работает в терминале: описание словами превращается в команду, которую перед запуском видно целиком.
Чат и явный контекст
Панель чата рядом с кодом. Контекст добавляется явными @-ссылками: конкретный файл, папка, кусок кода, документация библиотеки, веб-страница, изменения в git. Явная ссылка сильнее автоматического подбора: когда ответ мимо, первая проверка — что именно попало в контекст, это видно списком над ответом.
Агент
Режим, где модель работает сама: ищет файлы, правит их, запускает команды в терминале с подтверждением, читает вывод, чинит упавшее и идёт дальше. Всё сделанное складывается в diff по файлам. Состояние сохраняется контрольными точками, к которым можно откатить всю сессию правок целиком — единственный удобный способ отменить десяток изменений, разъехавшихся по проекту.
Индекс кодовой базы
При открытии проекта файлы режутся на куски, для кусков считаются векторные представления, поиск идёт по смыслу, а не только по подстроке. За счёт этого вопрос «где здесь валидируется телефон» находит нужное место, даже если слово «телефон» в коде не встречается.
Что исключить из индекса и из контекста, задаётся файлом .cursorignore в корне — синтаксис как у .gitignore. Туда кладут всё, что не должно уезжать наружу: конфиги с секретами, дампы, выгрузки клиентских данных. В настройках есть режим повышенной приватности, ограничивающий хранение кода на стороне сервиса; для закрытого контура его состояние проверяют до начала работы, а не после.
Правила
Постоянные инструкции для модели живут в репозитории, в папке .cursor/rules. Правило бывает всегда активным, подключаемым по маске файлов (например, только для тестов или только для миграций), вызываемым по требованию модели или вручную. Внутри — конвенции проекта: какой слой за что отвечает, чем запрещено пользоваться, как именовать, куда класть новый файл.
Правила коммитятся вместе с кодом, поэтому вся команда получает одинаковое поведение помощника. Ранний формат — один файл .cursorrules в корне — до сих пор поддерживается, но новые правила удобнее держать раздельно по темам.
Модели и внешние инструменты
Модель выбирается из списка в интерфейсе, включая режим с более длинным размышлением для сложных задач. Есть поддержка MCP: подключение внешних систем — трекера, базы, документации — описывается конфигом в проекте, после чего агент вызывает их как обычные инструменты.
Полезные сценарии
- Механическая правка по всему файлу под диктовку: смена стиля обработки ошибок, вынос повторов в функцию, разбор длинного метода на части.
- Первое погружение в чужой проект: вопросы к индексу вместо ручного обхода дерева файлов.
- Каркас новой фичи: агент создаёт файлы по принятой в проекте структуре, потому что структура описана в правилах.
- Тесты по существующему коду с прогоном прямо в терминале редактора и починкой упавших.
- Разбор ошибки прямо из терминала: вывод команды передаётся в чат ссылкой, без копирования в браузер.
- Правка вёрстки, когда результат видно в соседнем окне браузера — цикл «изменил, посмотрел» короче, чем в терминальном агенте.
Ограничения
Код уходит на сторону. Индексация и запросы отправляют содержимое файлов на серверы сервиса. Для проектов под NDA и для регулируемых отраслей это отдельное согласование, а не галочка в настройках. .cursorignore заполняют до первого открытия проекта, иначе секреты уедут раньше, чем кто-то вспомнит про исключения.
Форк отстаёт от апстрима. Обновления VS Code приезжают с задержкой. Часть расширений Microsoft недоступна или ставится обходными путями — их лицензия привязана к официальной сборке. Это бьёт по стекам, где основной инструментарий именно от Microsoft.
Tab приучает соглашаться. Подсказка приходит быстрее, чем успевает включиться критическое чтение. Через неделю привычка принимать её не глядя формируется сама. Особенно опасно на граничных условиях: подсказанная проверка выглядит правильной, но проверяет не то поле.
Ревью тяжелеет. Агент за один заход трогает десяток файлов. Такой diff читается хуже, чем свой собственный, а ответственность за него остаётся на авторе коммита.
Монорепа. На большом репозитории индексация долгая и заметно ест ресурсы машины. Без аккуратного .cursorignore в индекс попадают сборки, зависимости и выгрузки, а качество поиска от этого падает.
Лимиты тарифа. В подписке заложен объём запросов; сверх него работа переходит в ограниченный режим или требует доплаты. Планировать бюджет по ощущениям не выйдет — расход зависит от того, насколько длинные задачи и большие файлы уходят в модель.
Смена редактора — командное решение. Половина команды в VS Code, половина в Cursor означает два набора конфигов, два набора расширений и споры о форматировании.
Как проверить результат
Смотреть список источников над ответом. Если нужного файла там нет, ответ построен на догадке; правильная реакция — добавить файл явной ссылкой и переспросить.
Проверить статус индексации в настройках проекта. Свежеоткрытая монорепа отвечает плохо просто потому, что индекс ещё не собран.
Проверить исключения делом: открыть файл, который должен быть скрыт, и убедиться, что дополнения по нему не приходят, а чат его не цитирует. Наличие строки в .cursorignore без такой проверки ничего не гарантирует.
Принимать правки агента по кускам, а не кнопкой «принять всё». Кнопка «принять всё» существует для сгенерированного с нуля файла, не для правки живого модуля.
Проверять правила экспериментом. Ставится задача, заведомо нарушающая правило, и смотрится, отказывается ли модель. Правило, которое не влияет на поведение, лежит в неправильной папке или сформулировано как пожелание.
Замерять не количество принятых подсказок, а число возвратов из ревью и время до зелёного пайплайна. Первая метрика растёт всегда, вторая показывает реальную пользу.
Перед коммитом смотреть diff в отдельном окне git, а не в панели редактора: там видно то, что накопилось за всю сессию, включая правки, о которых уже забыли.
Правило: перед принятием правки проверяют список файлов, попавших в контекст, — ответ без нужного файла всегда догадка.
