Codex получил охотника за багами. Bug Reproducer отбрасывает ложные срабатывания
Для Codex выпустили Bug Reproducer - скилл, который ищет вероятные ошибки в кодовой базе, ранжирует их и пытается доказать с помощью минимальных тестов.
Главное правило инструмента:
Подозрительное место в коде ещё не считается багом.
Ошибка получает статус REPRODUCED только тогда, когда специально созданный тест стабильно падает по заранее предсказанной причине.
Это должно сократить количество нейросетевых ревью в стиле: «Здесь теоретически может возникнуть проблема», после которых кожаному разработчику приходится самостоятельно выяснять, существует она вообще или нет.
Как проходит охота
Если конкретная ошибка заранее неизвестна, Bug Reproducer изучает проект в режиме hunt-and-prove.
Скилл проверяет:
- контракты и публичные интерфейсы;
- граничные значения;
- переходы между состояниями;
- обработку ошибок;
- пустые и null-значения;
- сортировку и дедупликацию;
- работу с датами и часовыми поясами;
- асинхронные операции;
- проверки разрешений;
- реальные пути вызова кода.
Для каждого кандидата он должен показать точный сценарий запуска, ожидаемый результат, вероятное фактическое поведение и место в исходниках.
Затем проблемы ранжируются по четырём критериям:
- Насколько хорошо ожидаемое поведение подтверждено документацией, тестами или типами.
- Можно ли реально добраться до проблемного участка.
- Получится ли воспроизвести ошибку небольшим детерминированным тестом.
- Насколько серьёзными будут последствия.
Если убедительных кандидатов нет, скилл обязан вернуть NO_BUG_PROVEN, а не сочинять ошибку ради красивого отчёта.
Два подтверждения вместо самодеятельности
Bug Reproducer использует два отдельных этапа согласования.
Сначала Codex показывает найденные кандидаты, файлы будущих тестов, команды запуска и признаки, которые должны подтвердить баг. До получения разрешения он не создаёт файлы и не меняет проект.
После запуска теста возможны разные результаты:
- REPRODUCED — ошибка подтверждена;
- NOT_REPRODUCED — предполагаемый баг не воспроизвёлся;
- INCONCLUSIVE — окружение или нестабильность не позволяют сделать вывод;
- NO_BUG_PROVEN — доказанных ошибок не найдено.
Если баг подтвердился, Codex отдельно показывает причину, точные production-файлы и план исправления. Только после второго разрешения он может менять рабочий код.
Даже первоначальная команда «найди и исправь всё» не считается разрешением на неизвестные заранее изменения.
Красный тест должен стать зелёным
После исправления Bug Reproducer запускает ту же команду, которая использовалась для подтверждения ошибки.
Если тест проходить начал, но сломалась основная тестовая сборка, результат получит статус FIX_REGRESSION.
Если точечный тест стал зелёным, но более широкие проверки не запускались, исправление останется FIX_UNVERIFIED.
Статус FIX_PROVEN появляется только тогда, когда первоначальный тест проходит и связанные проверки проекта тоже не обнаруживают проблем.
Скилл также умеет работать с уже известными ошибками: описанием неправильного поведения, логами, stack trace, скриншотами и обращениями пользователей. Для плавающих багов предусмотрен отдельный режим с повторными контролируемыми запусками.
Установка
После установки необходимо перезапустить Codex и вызвать скилл:
Для поиска без исправления production-кода предусмотрен режим reproduce-only.
После завершения проверки создаются два файла:
В отчёте сохраняются найденные кандидаты, минимальные тесты, причины ошибок, разрешённые изменения, результаты до и после исправления, ограничения и оставшиеся риски.
Разумеется, инструмент не гарантирует, что найдёт все баги. Результат зависит от доступного окружения, контрактов проекта и возможности запустить тесты. Но подход правильный: меньше уверенного гадания по коду — больше воспроизводимых доказательств.
Репозиторий и инструкция 👉 Codex Bug Reproducer на GitHub
Доверили бы Codex самостоятельную охоту за неизвестными багами в рабочем проекте?
Не отставайте от технологий! Подписывайтесь на Telegram-канал, чтобы быть в курсе последних трендов и лайфхаков.