RunBoth сравнивает две версии Python-кода. Что именно он может поймать после правки ИИ

Когда ИИ меняет одну функцию, ревью обычно смотрит на diff, а тесты — на заранее придуманные сценарии. RunBoth предлагает ещё одну проверку: запустить старую и новую версии кода на одних входных данных и показать конкретный случай, в котором результаты разошлись.

Концептуальная иллюстрация к статье «RunBoth сравнивает две версии Python-кода. Что именно он может поймать после правки ИИ»
Поясняющая иллюстрация: проверка сопоставляет две версии и ищет конкретный вход, на котором их поведение расходится.

Внедрим ИИ в работу вашей компании

Бесплатно разберём процессы и подготовим план запуска ИИ.

Портрет девушки на лаймовом фоне

Что здесь проверяется

По описанию в публичном репозитории RunBoth берёт две версии из Git, подбирает входы для изменённых Python-функций и сравнивает не только возвращаемое значение. В список наблюдений входят исключения, предупреждения, стандартный вывод и ошибки, изменение аргументов и состояние объекта.

Если различие найдено, инструмент должен вывести «свидетеля»: аргументы, старый результат и новый результат. Такой вход можно обсудить в pull request, превратить в регрессионный тест или признать ожидаемым следствием правки.

Инструмент ищет не «хороший код», а конкретный вход, на котором старое и новое поведение расходятся.

Это полезно и для косвенных изменений: функция total может не меняться в diff, но начать считать иначе, потому что вызывает изменённую rate. Именно такие эффекты проект заявляет как цель сравнения.

Как читать результат

В README описаны три исхода. changed означает, что найден свидетель различия. no_change at budget N означает только то, что среди N сгенерированных входов по семи каналам различий не обнаружилось. abstained означает, что проверку нельзя было выполнить, и причина должна быть показана.

  1. Changed

    Разберите вход-свидетель: это ожидаемое изменение или регрессия.

  2. No change at budget N

    Зафиксируйте предел проверенной выборки; это не доказательство отсутствия различий.

  3. Abstained

    Проверьте причину: нестабильность, время работы или невозможность сгенерировать вход.

Различие между «не нашли» и «не смогли проверить» — главная полезная деталь подхода. Зелёный результат с ограниченным budget нельзя читать как гарантию безопасности изменения.

Почему это не замена тестам

Авторы прямо пишут, что RunBoth выполняет настоящий код на конкретных значениях и не доказывает отсутствие различий. Функциональная проверка в текущем описании относится к Python; изменённые файлы на других языках проект обещает явно назвать, а не молча пропустить.

Среда выполнения ограничивает сеть и запись в файловую систему для защиты от случайностей, но README отдельно предупреждает: это не граница безопасности для враждебного кода. У инструмента есть Git hook и GitHub Action, но установка в процесс не отменяет обычное ревью.

Что проверить до применения

README проекта заявляет отсутствие зависимости от тестового набора, сети, ИИ-модели и внешних зависимостей, а также приводит собственные результаты red-team проверки. Это сведения автора проекта: редакция не устанавливала RunBoth и не воспроизводила эти измерения.

  1. Покрытие

    Какие Python-функции инструмент сумел проверить, а от каких воздержался.

  2. Время PR

    Укладывается ли выбранный budget генерации в привычное время ревью.

  3. Полезность

    Похожи ли найденные свидетели на реальные регрессии, которые команда готова обсуждать.

  4. Ограничения

    Не запускается ли непроверенный код там, где sandbox проекта не является достаточной защитой.

Как вам?
О материале и источниках

Технические свойства сверены по README публичного репозитория RunBoth. Show HN служил только сигналом обнаружения; редакция не запускала инструмент и не подтверждает его собственные измерения.

  • RunBoth — GitHub README

    Первичный источник проекта: заявленные функции, семь каналов сравнения, результаты и ограничения.

Опубликовано

Лили · Агент по работе с клиентами

Начните внедрение ИИ
с бесплатного аудита

Расскажите Лили о компании. Команда бесплатно разберёт процессы, подготовит план запуска ИИ и оценит стоимость внедрения.