Автоисправление тестов

Бывает, что сломался не сайт, а сам тест: объявление съёмки устарело, шаг ждёт кнопку, которую переименовали, прогон нестабилен. Чинить интерфейс в таком случае не нужно — нужно поправить тест. Это и есть автоисправление тестов: агент готовит изменение файла теста, но применяет его только с согласия человека.

Как включается

Начать починку можно не всегда. Её открывает вердикт ревьюера по группе падений — «тест требует доработки» или «нестабильный тест». Вердикт «реальная регрессия» дорогу закрывает: чинить надо интерфейс, а изменение теста только замаскирует поломку. Для проблем среды и неразобранных случаев починка тоже недоступна.

Запустить починку может рецензент или человек с более высокой ролью. Если по группе уже идёт кампания, вторую не начинают — вместо этого открывается текущая.

Предложение → одобрение → проверка → откат

Путь починки устроен так, что между предложением и файлом всегда стоит человек:

  1. Предложение. Агент изучает падения и готовит точное изменение файла теста. В файл при этом ничего не записывается — предложение просто ждёт решения, рядом написано, почему агент предлагает именно это.
  2. Одобрение. Человек читает изменение и одобряет его. При одобрении можно оставить причину, при отказе причина обязательна.
  3. Запись и проверка. Файл перезаписывается проверенным способом, а его прежнее содержимое сохраняется — до последнего байта. Затем запускается контрольная сборка, которая и решает судьбу починки: прошла успешно — починка принята.
  4. Откат. Если контрольная сборка не прошла, починка остаётся в состоянии «применено, ждёт проверки». Человек либо откатывает её, либо одобряет повторно. Автоматического отката не бывает — решение всегда за человеком.

По ходу кампании видны её состояния: «запрошено», «предложение», «предложение ждёт рассмотрения», «применено — идёт проверка», «проверено», «откачено». Отдельно бывают исходы без починки: «лечение не требуется», «бюджет исчерпан», «остановлено — нет прогресса», «раунд завершился ошибкой». Предыдущие кампании по этому тесту остаются в списке, чтобы история решений не терялась.

Откат возвращает точный прежний файл

Откат восстанавливает файл теста ровно таким, каким он был до применения починки — из того самого сохранённого содержимого. Если после починки в файл успели внести другие правки, они будут перезаписаны, и об этом продукт предупреждает прямо в окне отката. Причина отката попадает в журнал аудита, как и само применение: по журналу можно понять, что предлагал агент, кто одобрил и почему откатили.

Бюджеты и предохранители

Починки — самая дорогая часть работы агента, поэтому их ограничивают жёсткие предохранители. Обхода у них нет:

  • Потолок токенов на задачу — больше этого объёма агент в одной задаче не потратит.
  • Попыток починки на тест — сколько раз можно лечить один и тот же тест с его последнего успешного прогона.
  • Попыток починки на сборку — общий предел на одну сборку.
  • Одновременных кампаний — сколько починок разрешено вести в проекте разом.
  • Остановка на одинаковой ошибке — если ошибка повторяется, а предыдущая починка её уже пробовала исправить, кампания не запускается.

Отказ по бюджету никогда не исчезает молча: он записывается с причиной. Причины бывают такие: исчерпан потолок токенов задачи, исчерпаны попытки на тест или на сборку, уже идёт другая кампания, ошибка повторяется, визуальный ИИ выключен для проекта. Такой записью можно объяснить, почему агент «ничего не сделал», и решить, менять ли пределы. Напомню: бюджет только останавливает расход — одобрить починку он не может.

Дальше: как посмотреть, сколько задач выполнил ИИ, сколько это стоило и почему что-то не запустилось, — в разделе ИИ-журнал.

← Оглавление документации