PPПётр ПашкуровCursor · наставничество · заказы

Руководство · Cursor

Как проверять код от ИИ: чек-лист до merge

Не принимайте правки от ИИ без diff, понимания scope и прогона проверок из вашего репозитория. Минимум до merge: просмотр каждого изменённого файла, поиск секретов и лишних зависимостей, npm test или lint из package.json, ручной прогон критического сценария. Agent ускоряет черновик, ответственность за merge остаётся у вас.

Как проверять код от ИИ: чек-лист до merge

Почему код от ИИ нельзя принимать вслепую

Модель оптимизирует «правдоподобный ответ», а не ваш прод. Она может добавить пакет, которого нет в lockfile, захардкодить токен «для примера», поменять сигнатуру функции, от которой зависят десять файлов, или удалить проверку, которую вы не просили трогать. На практике это не злой умысел - просто контекст обрезан, а задача сформулирована широко.

РискКак проявляетсяПочему ИИ так делает
Лишние зависимостиpackage.json +3 строки«Так проще решить задачу»
Секреты в кодеAPI_KEY = "sk-..."Пример из обучающих данных
Сломанный контрактизменён export без миграцииНе видит всех вызовов
Тихое удаление проверокубран if / try/catch«Упростил» без запроса
Неверный стекExpress в Next-проектеОбобщённый шаблон

Я не говорю «не используйте Agent». Я говорю: Agent пишет черновик, вы - редактор с правом veto. Один merge без ревью может стоить больше, чем неделя аккуратных diff. Запрос «проверка кода ии» в поиске обычно означает именно это: как не слепо доверять генерации.

Схема: код от ИИ проходит через diff и тесты до merge

Чек-лист ревью до Apply и до merge

Разделяю два момента: до Apply в сессии Agent и перед merge в git. Оба обязательны, если правки затрагивают больше одного косметического файла.

До Apply в Cursor

  1. 01

    Прочитайте список файлов, которые агент собирается менять - не только итоговый diff последнего шага.

  2. 02

    Сверьте scope с исходным промптом: если просили «поправить валидацию email», а в списке config и deploy - Stop.

  3. 03

    Отклоните правки в .env, ключах, CI-секретах, production-конфигах без явного запроса.

  4. 04

    Применяйте по файлам или небольшими группами, не Apply All на 40 файлов с первого раза.

Перед merge (git)

#ПроверкаКоманда / гдеPASS если
1Diff просмотренgit diff main...HEADПонимаете каждое изменение
2Нет секретовrg "sk-API_KEYpassword"Только плейсхолдеры
3Lockfile согласованpackage-lock / pnpm-lockОсознанные изменения
4Lintnpm run lintexit 0
5Тестыnpm testexit 0 или задокументирован skip
6Buildnpm run buildexit 0
7Ручной сценарийбраузер / curlКритический путь работает

Фрагмент .cursor/rules или project rule, который я добавляю в учебные репозитории:

```markdown

Перед merge после Agent

- Запусти: npm run lint && npm test && npm run build - Не коммить .env, ключи, токены - Любая новая зависимость - отдельным коммитом с обоснованием - Scope: только файлы из задачи; лишнее - revert ```

В Agent я часто прошу явно: «покажи план изменений по файлам до правок» - это снижает сюрпризы. Режим Plan из документации Cursor для multi-file задач тоже про согласование до правок.

Тесты, линтер и build: что запускать после Agent

ИИ редко знает ваш полный CI. Она может написать «тесты прошли», не запуская их, или запустить урезанную команду. Единственный источник правды - скрипты из вашего package.json и pipeline.

Типичный минимум для JS/TS-проекта:

npm run lint
npm test -- --runInBand
npm run build

Для Python - ruff check, pytest, для Go - go test ./.... Главное - те же команды, что на CI, а не «что-нибудь зелёное».

Тип измененияМинимум проверокЗачем
UI / CSSlint + visual smokeAgent ломает классы и импорты
API routeunit + integrationКонтракты и статусы
Рефакторингполный test suiteСкрытые регрессии
Новая зависимостьaudit + buildSupply chain
Миграция БДmigrate dry-runНе катить вслепую

Если тестов в проекте нет - честно зафиксируйте это как риск, а не как «раз ИИ сказал OK». На наставничестве первым делом добавляем хотя бы один тест на критический сценарий, иначе каждый Agent-сеанс - лотерея.

Таблица проверок после Agent: lint, test, build

Матрица: что можно мержить с минимальным ревью

Не всё требует одинаковой глубины. Я использую матрицу, чтобы не тратить час на правку комментария и не пропустить опасный refactor.

ИзменениеРевьюТестыКто мержит
Комментарии, typo в READMEdiff 1 файлаопциональноавтор
Форматирование prettierdifflintавтор
Одна функция с тестомdiff + тестобязательноавтор
Новый endpointполный diffunit + e2eавтор + второй взгляд
Auth / paymentsпострочнополный CI + ручнойтолько после ревью человека
Зависимостиlockfile + changelogbuild + auditотдельный PR

Красная зона - всё, что трогает аутентификацию, биллинг, персональные данные, деплой на прод. Agent туда не пускаю без Plan, отдельной ветки и второго ревьюера, если работаете в паре.

Cursor Rules и контекст: как упростить ревью

Rules не заменяют diff, но сужают пространство ошибок. Если в Rules прописаны команды npm run lint, запрет на .env в коммитах и стек (Next 15, не Express), агент реже «улетает в сторону». Подробнее - в Cursor Rules.

Что я держу в Rules для учебных и клиентских репо:

{
  "scripts": {
    "verify": "npm run lint && npm test && npm run build"
  },
  "agent": {
    "never_edit": [".env", ".env.local", "secrets/*"],
    "require_tests_for": ["src/api/*", "src/lib/*"]
  }
}

Это псевдоструктура - в реальном .cursor/rules или AGENTS.md пишите текстом, как принято в вашем репо. Плюс project brief: одна страница «что это за проект, как запустить, где опасные зоны».

Перед сложной задачей в Agent я делаю Ask: «какие файлы затронет изменение X» - без правок. Потом Agent с узким промптом и списком разрешённых путей. Так diff предсказуемее.

Типовые ошибки и как исправить

Здесь симптом → причина → действие, как в тикетах после Agent.

СимптомВероятная причинаЧто сделать
Apply All, потом 500 на продеНе смотрели diffgit revert, пофайловый Apply в следующий раз
В diff появился .envПример «для локалки»Удалить из коммита, rotate ключ
«Тесты зелёные» без выводаAgent не запускалаnpm test вручную в терминале
+5 dependenciesБиблиотека «для одной строки»Откат, решить без deps или обосновать
Сломался import pathМассовый renamegit diff --name-only, grep вызовы
Удалён auth middleware«Упростил код»Restore из git, сузить промпт

Слепой Apply All. Самая частая ошибка новичков. Лечится дисциплиной: ветка agent/feature-x, Apply по частям, commit после каждого зелёного npm run verify.

Секрет в коммите. Даже если ключ «тестовый» - удалить из истории (git filter или новый commit + rotate), не пушить «ну потом уберу».

Ложная уверенность агента. Фразы «готово, всё работает» в чате - не артеfact. Артеfact - зелёный CI или ваш ручной прогон.

Чек-лист статусов: diff, lint, test, merge

Что делать дальше

Проверка кода от ИИ - привычка, не разовая статья.

  1. 01

    Закрепите Cursor Agent mode - матрица «что поручать агенту».

  2. 02

    Напишите Cursor Rules с командами verify и запретами на секреты.

  3. 03

    Один раз пройдите сценарий: ветка → Agent на маленькую задачу → diff → lint → test → merge.

  4. 04

    Если ревью процесса нужно под ваш репозиторий - наставничество или Telegram.

На разборе я смотрю не «умеете ли промпт», а есть ли у вас обратимый цикл: git checkpoint до Agent, verify после, понятный rollback. Без этого любой гайд по проверке кода от нейросети останется теорией.

По теме в блоге: связка промпты для Cursor + Rules + этот чек-лист закрывает 80% рисков на маленьких задачах. Для бизнес-автоматизации с webhook и CRM - другой контур, но принцип тот же: diff, секреты, тест на реальных данных.

Проверено 2026-08-21. Источники: cursor.com/docs/agent, cursor.com/docs/agent/security, практика ревью на разборах.

FAQ

Частые вопросы

Нужно ли проверять каждый diff от Cursor Agent?

Да, если правки больше косметики в одном файле. Agent может добавить зависимости, секреты или сломать контракт. Минимум: просмотр diff, lint и test из вашего package.json, ручной прогон критического сценария. Apply All на десятки файлов без ревью - частая причина отката.

Как проверить, что в коде от ИИ нет секретов?

Перед merge прогоните поиск по diff: API_KEY, sk-, password, token в открытом виде. Не коммитьте .env и secrets/**. Если ключ уже попал в коммит - rotate и уберите из истории, не оставляйте «на потом». В Cursor Rules можно явно запретить правки env-файлов.

Agent пишет «тесты прошли», но я не видел вывода - что делать?

Запустите тесты сами в терминале теми же командами, что на CI: npm test, pytest, go test. Чат агента - не лог CI. Зелёный merge только после реального exit code 0 у ваших скриптов.

Можно ли мержить код от ИИ без unit-тестов в проекте?

Можно только с повышенным риском: тогда обязательны lint, build и ручной прогон критического пути. Я рекомендую добавить хотя бы один тест на главный сценарий - иначе каждый Agent-сеанс лотерея. На наставничестве часто начинаем с этого.

Чем проверка кода от ИИ отличается от обычного code review?

Те же принципы: diff, scope, регрессии, секреты. Отличие - ИИ чаще добавляет лишние зависимости, «упрощает» проверки и уверенно ошибается. Плюс риск Apply All без пофайлового контроля. Rules и узкий scope снижают сюрпризы.

Какие команды запускать после Agent в JavaScript-проекте?

Ориентир: npm run lint, npm test, npm run build - те же, что в CI. Зафиксируйте их в Cursor Rules как verify. Для UI добавьте visual smoke в браузере. Не доверяйте словам агента без exit code.

Что делать, если Apply All уже сломал проект?

git status и git diff, затем git checkout -- . или git reset --hard на последний хороший commit, если не коммитили. В следующий раз - отдельная ветка, Apply по файлам, checkpoint до Agent. Опишите симптом в Telegram, если застряли на откате.

Помогают ли Cursor Rules при ревью кода от ИИ?

Да, как ограничитель: стек, команды verify, запрет на .env, список опасных путей. Rules не заменяют diff, но уменьшают число «случайных» правок. Подробнее в гайде Cursor Rules на сайте.

Дальше

Связанные страницы

Птенец в капюшоне печатает сообщение в телефоне
Telegram

Обсудить вашу задачу

Напишите в Telegram цель, что уже сделано и где стопор.

Отвечаю сам — без бота и «оставьте заявку».