Обзор изменений в Cursor существует в трёх слоях, и они не заменяют друг друга. Локальный обзор в агенте смотрит на ветку или незакоммиченные правки и отдаёт находки прямо в разговор - до того, как что-то ушло в общий репозиторий. Автоматический обзор работает на пул-реквесте, учитывает обновления и уже оставленные комментарии и оставляет замечания с предложениями правок. Человек остаётся владельцем архитектуры, продуктового замысла и принятия риска - того, чего в коде не написано.
Наивная модель - считать эти слои конкурирующими и выбрать один. На практике они закрывают разные окна времени, и цена находки в каждом окне разная. Локальный обзор дешевле всего: правка ещё не опубликована, история не переписана, никто не потратил время на чтение. Автоматический обзор ловит то, что видно только на цельном изменении: несогласованность между файлами, забытую ветку логики, случайно попавший в набор мусор. Человек видит то, чего не видит ни один из них: соответствие замыслу и приемлемость риска для продукта.
Полезно один раз свести слои в таблицу: что подаётся на вход, что получается на выходе и когда слой уместен. Ниже такая карта - от локального обзора до человеческого. Она отвечает на частый вопрос зачем нам и то, и другое: затем, что вход и момент у них разные, и находки поэтому тоже разные.
| Слой | Вход | Выход | Лучший момент |
|---|---|---|---|
| Локальный обзор агента | Ветка или незакоммиченные изменения | Находки в разговоре | До отправки в общий репозиторий |
| Автоматический обзор | Изменения пул-реквеста и комментарии | Замечания по строкам и статус проверки | На каждое обновление или по запросу |
| Проверка безопасности | Пул-реквест или кодовая база целиком | Находки безопасности и задачи | До слияния или по расписанию |
| Человек | Замысел, изменения, доказательства и контекст | Одобрение, запрос правок, осознанное исключение | Перед слиянием и выкатом |
У автоматического обзора есть детали, которые надо знать до того, как строить на нём процесс. Его можно запустить вручную комментарием, а результат по умолчанию нейтрален - то есть сам по себе он не блокирует слияние по находкам. Чтобы обзор действительно останавливал слияние, нужна отдельная организационная настройка, включающая провал проверки при неразрешённых замечаниях. Без неё зелёная или нейтральная отметка не означает, что всё чисто; она означает только, что проверка отработала.
Это и есть главное предупреждение: зелёная проверка не равна полноте. Успех автоматического обзора означает отсутствие новых и неразрешённых замечаний по его собственным правилам. Он не доказывает, что прошли все тесты, что модель угроз рассмотрена, что производительность не просела и что продукт согласен с изменением. Принимать его за общий признак готовности - самый распространённый способ пропустить проблему, которую никто и не искал.
Практическая последовательность выстраивается сама. Локальный обзор до отправки - чтобы не выносить в общий репозиторий очевидное. Автоматический обзор на пул-реквесте - чтобы получить свежий взгляд на цельное изменение. Специализированная проверка безопасности там, где меняются авторизация, границы доверия или обработка данных. И человек перед слиянием - всегда, потому что решение принять риск не автоматизируется.
На одном изменении это выглядит буднично. Вы правите обработку загруженных файлов, прогоняете локальный обзор и получаете две находки: не закрытый поток и обработчик ошибок, который глотает исключение. Обе исправляются за минуту, и в общий репозиторий они не попадают вовсе. На пул-реквесте автоматический обзор замечает третье - что новая ветка кода обошла общую точку проверки прав, потому что видит изменение целиком. А человек задаёт четвёртый вопрос, которого не задал никто: нужна ли эта загрузка вообще, если рядом уже есть похожий механизм. Четыре находки, три разных слоя, и ни один не нашёл того, что нашли другие.
Отсюда способ понять, какого слоя вам не хватает: посмотреть, где находят дефекты. Если замечания на пул-реквесте в основном мелкие и очевидные, локальным обзором никто не пользуется, и человеческое внимание уходит на то, что должно было отсеяться раньше. Если проблемы всплывают уже после слияния и это ошибки понимания задачи, а не кода, - формален человеческий слой: изменения одобряют, не сверяясь с замыслом. Если же в проде всплывает то, чего не искал ни один слой, значит, отсутствует специализированная проверка, и её отсутствие стоит признать явно, а не считать, что обзор её заменяет.
Инженерный вывод простой: слои складывают, а не выбирают. Каждый из них дешёвый по отдельности, и вместе они дают разное покрытие. Отказ от любого слоя стоит того, что этот слой ловил, - и обычно это выясняется не в момент отказа, а через несколько месяцев, на конкретном инциденте, когда связь с решением уже не очевидна.
Типичные провалы предсказуемы. Заменить человеческий обзор автоматическим и считать вопрос закрытым. Принять нейтральный результат проверки за подтверждение чистоты. Гонять тяжёлый обзор там, где хватило бы локального до отправки. Разбирать на пул-реквесте то, что ловится за минуту на своей машине. И не включить организационную настройку, ожидая от проверки блокировки слияния.