Как выявить использование Cursor и Copilot на собеседованиях по кодированию
Почему стандартная защита от ChatGPT не работает для Cursor и Copilot
Стандартные методы выявления обмана на собеседованиях по кодированию построены на одном предположении: кандидат переключается на окно чата, просит решение и вставляет его обратно. Размер вставки, длительность переключения окна и скорость печати — всё это служит сигналом этого рабочего процесса.
В 2026 году это предположение неверно для AI-инструментов, которые кандидаты используют на самом деле. Cursor, GitHub Copilot, Windsurf, Continue и новое поколение невидимых инструментов вроде Cluely не вставляют код. Они встроены в редактор, принимают предложения нажатием Tab и добавляют символы в буфер так, что это похоже скорее на печать, чем на вставку. Кандидат, хорошо владеющий Cursor, никогда не вызовет алерт вставки в вашей системе и не переключится на другую вкладку ни разу. Отчёт о целостности от простого инструмента проверки будет выглядеть чистым.
Это другая проблема, требующая другого набора сигналов. Этот пост разберёт поведенческий отпечаток встроенных в редактор AI-ассистентов, конкретные моменты, где они дают сбой, и как спроектировать раунд так, чтобы честный пользователь этих инструментов всё ещё давал интерпретируемый сигнал.
Как встроенные в редактор AI-ассистенты выглядят для платформы
Три категории инструментов, три разных следа:
- Агенты дополнения кода (Copilot, Cursor Tab, JetBrains AI). После короткой паузы появляется предложение «призрачного текста»; кандидат нажимает Tab; 40–300 символов попадают в буфер за один тик. Для регистратора клавиш этот тик может выглядеть как всплеск быстрых нажатий либо как одно событие вставки, в зависимости от того, как редактор отправляет ввод.
- Агентные редакторы (Cursor Composer, Windsurf Cascade, Claude Code, Aider). Кандидат печатает или говорит естественное высказывание в боковой панели; агент переписывает часть файла. Извне это выглядит как серия многострочных редактирований без соответствующих нажатий клавиш между ними.
- Невидимые инструменты-оверлеи (Cluely, Interview Solver, Interview Coder). Отдельный процесс читает экран и показывает кандидату ответ в оверлее, скрытом от API захвата экрана. Затем кандидат переводит или переписывает это. След на платформе — «кандидат сам это напечатал», но ритм не тот.
Кандидат не вставляет. Он принимает, переписывает или отдаёт инструкцию. Каждое из этих действий оставляет свой след.
Сигнал 1: всплески Tab-принятия внутри потока печати
Самый чистый отпечаток инструмента дополнения с Tab — это форма потока нажатий клавиш. Отпечатанный вручную код на строке из 30 символов выглядит как 30 нажатий клавиш с интервалом 80–250 мс, с occasional пауз в 1–2 секунды. Принятие Tab в Copilot на той же строке выглядит как одно событие при +0 мс, за которым следуют 30 символов при +1 мс каждый — или в некоторых редакторах как одна вставка в буфер без всякой синхронизации символов.
Регистратор нажатий ClarityHire классифицирует любую непрерывную последовательность ввода, где задержка между клавишами падает ниже ~5 мс, как блок, созданный машиной. Блок регистрируется отдельно от напечатанных символов и появляется в отчёте о целостности как отдельный тип события — не вставка, не нажатие клавиши, а принятие.
На что смотреть в отчёте:
- Серия из 5–10 событий принятия в минуту, каждое 40–250 символов длиной, чередующихся с обычной печатью. Это канонический ритм Copilot/Cursor.
- Блоки принятия, завершающие целые функции за одно событие (300+ символов). Это поведение агентного редактора, а не дополнение с Tab.
- Ноль вставок, ноль переключений вкладок, но кандидат выдал рабочее решение из 200 строк за 22 минуты. Сам объём — это сигнал.
Ни один из этих признаков не является неопровержимым доказательством. Все они вместе, применительно к задаче, которую кандидат никогда не видел, — вот это да.
Сигнал 2: прыжки курсора, которые кандидат не может сделать вручную
Когда человек пишет код, курсор движется так, как движутся человеческие курсоры: клавиши со стрелками, Home/End, occasional клик на другую строку. Когда агентный редактор переписывает регион, курсор телепортируется — следующее редактирование на две функции дальше от предыдущего, без промежуточной навигации. Когда инструмент рефакторит файлы, активный файл меняется без поиска нечёткого совпадения Cmd-P.
Совместный редактор, используемый в живых раундах кодирования, записывает позицию курсора и активный документ при каждом изменении. На временной шкале «редактирования с телепортацией» выделяются: редактирование на строке 80, сразу же следуемое редактированием на строке 12 другого файла, без видимой навигации и скролла. Человек может сделать это с помощью горячих клавиш, но кластер таких ходов на протяжении раунда — вот что важно. Два-три — норма. Двадцать за 20 минут — агент в деле.
Сигнал 3: ритм печати, не совпадающий с собственным базовым уровнем кандидата
Tab-принятие даёт кандидату готовую строку. Но ему всё ещё нужно напечатать инструкцию, которая её вызвала, или напечатать следующую строку сам. Так что поток нажатий клавиш становится бимодальным: длинные участки кода, созданного машиной, разделённые короткими участками человеческой печати.
Биометрия нажатий клавиш на напечатанных участках по-прежнему полезна — отпечаток времени нажатия и времени полёта пальца кандидата должен быть последовательным на протяжении сессии. Но соотношение — вот новый сигнал: кандидат, активно использующий Cursor, печатает может быть 15–25% символов в финальном файле. Не использующий печатает 95%+. Соотношение видно в отчёте и не зависит от корректной классификации любого одного события.
Это также сигнал, который ловит невидимые инструменты-оверлеи. Кандидат, читающий с оверлея Cluely и переписывающий ответ, печатает необычайно ровно, с очень немногими исправлениями, потому что переписывает, а не создаёт. Расстояние редактирования между потоком нажатий клавиш и финальным файлом стремится к нулю. Настоящее авторство имеет Backspace-ы, переименования и отменённые попытки; переписывание — нет.
Сигнал 4: отправка более связна, чем процесс
Запустите анализ связности кода на финальном файле и получите отдельное заключение. Cursor Composer и Claude Code создают высоко связные файлы — равномерно идиоматичные, последовательные имена, оборонительная обработка ошибок для случаев, которые кандидат не тестировал. Это другой режим отказа, чем код, сшитый из ChatGPT, который обычно несвязный. Код Cursor слишком чистый для видимого процесса.
Диагностический вопрос — это вопрос, который судья связности уже задаёт: похоже ли, что это писал один человек, с начала до конца, за 30 минут, разговаривая со мной на видео? Человек под давлением интервью создаёт файл с хотя бы одной шероховатостью — оставшийся console.log, функция, которую он хотел переименовать, комментарий, противоречащий коду. Файл Cursor Composer редко имеет хоть что-то из этого. Отсутствие беспорядка — вот сигнал.
Что спросить в комнате
Выявление — это половина ответа. Другая половина — это вопрос, который пользователь агента не может отклонить:
- Выберите неочевидную строку и спросите почему. «Вы использовали здесь
Mapвместо объекта — какой был компромисс?» Настоящий автор выбирает один. Пользователь, который просто принимает и движется дальше, пожимает плечами. - Заставьте сделать небольшое расширение. «Добавьте флаг, который делает это без учёта регистра.» Пять строк, никакого принятия Tab не допускается. Кандидат либо пишет это бегло, либо зависает. Оба — сигнал.
- Спросите об ошибке, которую вы видите. Предварительно заложите тонкую проблему в подсказку или скаффолдинг. Агентные инструменты обычно это «исправляют» без подтверждения. Попросите кандидата проходить вас через то, что они изменили и почему. Честный пользователь объясняет; пользователь агента рассказывает дифф.
Эти дополнительные вопросы — это тот же инструмент, который вы бы использовали для AI-вставленной домашней работы. Суть не в том, чтобы поймать инструмент — это в том, чтобы узнать, есть ли у кандидата отношение к коду, которое требует роль.
Как спроектировать раунд, чтобы сигнал был интерпретируемым
Два структурных выбора облегчают чтение всего вышеперечисленного:
- Установите правило перед началом раунда. «Вы можете использовать любой инструмент, который хотите. Cursor, Copilot, ваши собственные сниппеты. Мы попросим вас расширить и защитить то, что вы написали.» Это открытая книга фреймворк, и он преобразует проблему выявления в проблему интерпретации. Кандидат, который заявляет об использовании Cursor с самого начала и объясняет свою работу, в порядке. Кандидат, который это скрывает и не может объяснить, — это тот, кого вы хотите отфильтровать.
- Зарезервируйте пять минут раунда для редактирования без помощи. Скажите кандидату заранее: последние пять минут — это небольшое расширение, без AI-инструментов. Смотрите, как они печатают, когда помощника нет. Этот один блок даёт вам чистый базовый уровень для сравнения с остальным раундом.
Эти два правила дают вашему отчёту о целостности что-то, на что можно опереться. Без них вы выводите ритм по пустой априори; с ними у вас есть участок с известным базовым уровнем в каждом интервью.
Что делать дальше
Если вы проводите технические собеседования и ваш текущий отчёт о целостности отслеживает только вставки и переключения вкладок:
- Добавьте детектор блока принятия в вашу регистрацию нажатий клавиш или выберите платформу кодирования, которая его поставляет. Без этого пользователи Cursor для вас невидимы.
- Добавьте блок из пяти минут без помощи в каждый живой раунд на этой неделе. Это почти ничего вас не стоит и даёт вам базовый уровень для каждого кандидата, не только подозрительных.
- Обновите инструкции для кандидатов, чтобы сказать, что разрешено, а что нет. Большинство кандидатов будут соблюдать чёткое правило; немногие, кто нет, скроют это плохо.
- Перестаньте полагаться на количество переключений вкладок как на основной сигнал. В 2026 году инструмент обмана, который использует кандидат, не требует от него покидать редактор.
Гонка вооружений против встроенного в редактор AI не выигрывается выявлением одним. Она выигрывается дизайном собеседования, который делает честное использование инструмента неотличимым от неиспользования, а нечестное использование невозможным защитить в комнате. Сигнал, который вам нужен, — это не «использовал ли он Cursor» — это «знает ли он, что делает его собственный код». Спроектируйте раунд вокруг этого вопроса и проблема выявления решит себя сама.