Разбор отличий и сбоев оплачивает владелец, поэтому должно быть видно, за что именно он платит. ИИ-журнал показывает три вещи: какие задачи выполнил ИИ, сколько они стоили и почему какая-то задача вообще не была запущена. Заодно он отвечает на главный вопрос — «а мы точно не платим на каждом прогоне?».
Нет, не платим. Повторные прогоны сравнивают картинки по отпечатку и попиксельно, детерминированно и бесплатно. Агента спрашивают только тогда, когда появилось что-то новое или сломалось. Поэтому пустой журнал — это хороший знак: значит, набор тестов стабилен и лишних обращений не было.
Таблица задач
Каждый запрос к ИИ — одна строка. В ней видно тип задачи, её состояние, цель (какой снимок, сборка или тест), время и задержку, израсходованные токены — отдельно входные и выходные — и стоимость. У задач, где ИИ оценивал важность, рядом стоит его уверенность в ответе.
Типы задач в журнале такие:
- Классификация отличия — понять, что это: ошибка, шум или намеренное изменение.
- Разбор сборки и пояснение сборки — собрать падения в группы и объяснить их словами.
- Разбор группы сбоев — уточнить причину внутри уже собранной группы.
- Генерация покрытия — предложить тест для непокрытого места.
- Починка теста — подготовить изменение файла теста.
- Разбор замечания, предложение действия, правка правила или действия — работа по экранам и замечаниям.
Строку можно отфильтровать по типу и раскрыть: видно, что агент читал и что ответил. Тела входных данных открыты только администраторам — в них может попадать текст ваших страниц. Полный запрос живёт в чате с агентом, а здесь хранится его служебная копия.
Итоги и бюджеты
Над таблицей — сводка: общий расход, разбивка по типам задач, средняя задержка и доля сборок, на которых ИИ вообще вызывался. Отдельная полезная цифра — расход на один найденный дефект: считаются только дефекты, подтверждённые человеком из групп сбоев. Так видно реальную цену пользы, а не просто счёт за токены.
У бюджета есть лестница состояний, и она честно называет своё положение:
- Израсходовано меньше половины — всё в порядке.
- Израсходовано от половины до 80 % — предупреждение.
- Израсходовано от 80 до 100 % — критично, пора смотреть расход.
- Лимит превышен — новые задачи ИИ отклоняются, пока не изменят пределы.
Если предел не задан вовсе, продукт так и пишет — предела нет, а не подставляет ноль или бесконечность. Пределы меняются здесь же: потолок токенов на задачу, попытки починки на тест и на сборку, число одновременных кампаний и предохранитель на повторяющуюся ошибку. Это те же предохранители, что останавливают починку тестов, — и точно так же они ничего не одобряют, а только ограничивают расход.
Инструменты модели
Отдельной строкой показана работа внешних инструментов, которыми пользуется модель: сколько было вызовов, сколько описаний инструментов ей передали и сколько ответов она получила. Это накладные расходы, которые обычно не видны: описания инструментов тоже занимают место во входных данных и стоят денег. Если они начинают перевешивать саму задачу, это заметно здесь, а не в общем счёте.
Почему отказано
Бывает, что задача не запустилась. Это не ошибка, а сработавший предохранитель, и причина записывается в журнал. Причины такие:
- Потолок токенов на задачу исчерпан.
- Бюджет починок этого теста исчерпан с его последнего успешного прогона.
- Бюджет починок этой сборки исчерпан.
- В проекте уже идёт другая кампания починки.
- Ошибка повторяется — предыдущая починка уже пробовала её исправить.
- Визуальный ИИ выключен для этого проекта.
Каждый отказ остаётся в журнале с причиной — он не исчезает молча. По нему видно, стоит ли поднимать пределы или дело в том, что агент и правда не нужен.
Дальше: как понять, какие места приложения не защищены тестами, — в разделе Покрытие.