Как тестировать ИИ-агентов: метод Trust Layer от GitHub
Почему классические тесты не работают с ИИ-агентами
Обычный CI заточен под детерминированное ПО: данные на входе, ожидаемый результат на выходе, строгая последовательность шагов. Агент с функциями Computer Use работает с настоящими интерфейсами: кнопка может «уехать», одну и ту же задачу он решит разными путями. Тесты падают не из-за бага, а из-за ложной посылки: они считают «правильность» точным совпадением последовательности состояний. Assertion-тесты не терпят альтернативных путей, record-and-replay ломается от задержек сети, визуальные регрессии сравнивают скриншоты без контекста. CI «краснеет» по чужой вине, и команды привыкают игнорировать падения.
Что предлагает GitHub: Trust Layer
GitHub предложил внешний слой валидации Trust Layer, который не верит агенту на слово и не требует ручных сценариев. Вместо повтора записанного пути он проверяет, достиг ли агент обязательных результатов. Поведение делится на три категории: essential states — этапы, без которых успех невозможен; optional variations — шум вроде спиннеров загрузки; convergent paths — разные пути к одному итогу. Идея пришла из теории компиляторов: через dominator analysis выделяются состояния, через которые проходит любой путь к успеху, — они и становятся чекпоинтами.
Как устроен Trust Layer
Сначала собираются 2–10 успешных выполнений задачи. Каждое представляется графом: узлы — наблюдаемые состояния, рёбра — действия агента. Трассы объединяются в Prefix Tree Acceptor, сохраняющий общие префиксы и ветвящийся там, где пути расходятся.
Сложнее всего — понять, эквивалентны ли два состояния. GitHub применяет визуальные метрики, семантический анализ через мультимодальную LLM и консервативное слияние состояний. Новый прогон не сравнивается с эталоном побуквенно: если эталон A → B → C, а агент прошёл A → X → B → Y → C, тест зелёный. Пропуск обязательного состояния фиксируется как ошибка.
Результаты эксперимента
На кастомном расширении VS Code метод показал accuracy 100% против 82,2% у самооценки агента, recall 100% против 60%, F1 100% против 69,8%. Метрику «не баг, а шум» агент не распознал вовсе (F1 0%), тогда как структурный анализ достиг F1 52,2%.
Что можно применить уже сейчас
- Копите «золотые» трассы: 2–10 успешных прогонов критичного сценария как эталон.
- Фиксируйте чекпоинты «должен быть», а не каждый шаг: авторизация прошла, данные сохранены.
- Делайте тесты толерантными к порядку: проверяйте результат и обязательные промежуточные состояния.
Идеи Trust Layer переносятся в любой CI/CD.
Хорошо, что GitHub выложил подход открыто, а не оставил его внутренней кухней. А есть уже готовая реализация Trust Layer, которую можно поднять у себя в CI, или пока только описание метода?