GitHub построил Trust Layer для Copilot-агентов: валидация по ключевым состояниям вместо жёстких скриптов. Узнайте, как снизить ложные падения CI.— Читать дальше «Как тестировать ИИ-агентов, если «правильно» не детерминировано»
Если ваш CI падает не из-за бага в коде, а потому что ИИ-агент выбрал другой путь к правильному результату — пора менять подход к тестированию. Классические тесты заточены под детерминированное ПО: на входе X, на выходе Y, посередине строго определённая последовательность шагов. Но агенты с функцией Computer Use работают с настоящими интерфейсами, где загрузка может длиться на полсекунды дольше, а кнопка оказаться в другом месте. GitHub недавно предложил способ отличать реальные ошибки от такого «шума» — независимый Trust Layer, который учится на примерах успешных запусков.
В этой статье разберём, почему стандартные assert-тесты и record-and-replay плохо справляются с автономными агентами, как теория графов помогает выделить обязательные этапы задачи и что из этого следует для российских команд, которые уже пробуют GitHub Copilot или собственных агентов в CI/CD.
Исследование, опубликованное 6 мая 2026 года в блоге GitHub, описывает метод валидации агентского поведения, который не требует ручного написания скриптов для каждого сценария и не верит агенту на слово. Вместо этого он строит модель «ground truth» из 2–10 успешных выполнений и проверяет новые запуски по структуре, а не по совпадению шагов.
Ключевые выводы
Computer Use недетерминированы: один и тот же задача может решаться разными путями.Современная разработка всё чаще сталкивается с ситуацией, когда «правильно» нельзя описать одной последовательностью действий. Агент может открыть поиск в VS Code через горячую клавишу или через меню, подождать загрузки или успеть до неё, кликнуть мышью или использовать клавиатуру. Для человека результат одинаков. Для классического теста — разные выполнения, одно из которых рискует быть отмечено как регрессия.
Почему классические тесты сдаютсяПривычные инструменты тестирования хороши, пока путь выполнения фиксирован. Как только поведение начинает ветвиться, они начинают ломаться не от плохой инженерии, а от неверной посылки: «правильность = точное совпадение последовательности состояний».
В России эта проблема особенно актуальна для команд, которые используют self-hosted runners или зеркала репозиториев. Сетевые лаги, доступ к зарубежным API и особенности локальной инфраструктуры добавляют ещё больше «шума», не связанного с качеством кода. В результате CI начинает «краснеть» по чужой вине, а разработчики привыкают игнорировать падения.
GitHub предлагает переформулировать определение корректности: не «агент повторил записанный сценарий», а «агент достиг обязательных результатов». Это разделяет поведение на три категории.
Ключевой инсайт: если состояние «спиннер загрузки» можно пропустить в быстром прогоне, оно не может быть обязательным. А вот состояние «диалог поиска открыт» доминирует результат: без него невозможно получить список найденного. Эта идея напрямую заимствована из теории компиляторов — dominator analysis.
Как устроен Trust LayerМетод GitHub состоит из трёх шагов: собрать успешные выполнения, построить из них единую модель и выделить в ней обязательные состояния.
От трасс к графуВместо линейного скрипта каждое выполнение представляется как направленный граф. Узлы — наблюдаемые состояния: скриншоты интерфейса, снапшоты кода или структуры DOM. Рёбра — действия агента: клики, нажатия клавиш, вызовы API. Несколько успешных трасс объединяются в Prefix Tree Acceptor (PTA) — дерево, которое сохраняет общие префиксы и разветвляет пути там, где выполнения действительно расходятся.
Три уровня эквивалентностиСамая сложная часть — понять, когда два разных состояния на самом деле одно и то же. GitHub использует трёхуровневую проверку.
После слияния к графу применяется dominator analysis. Состояние A доминирует состояние B, если любой путь от начала к B проходит через A. Те состояния, которые доминируют успешное завершение задачи, становятся обязательными. Всё остальное автоматически классифицируется как опциональный шум.
При проверке нового прогона алгоритм не ищет точное совпадение. Он проверяет, что обязательные состояния появились в правильном порядке. Если эталонная последовательность A → B → C, а агент выполнил A → X → B → Y → C, тест проходит: X и Y считаются случайными вставками. Если пропущено B или нарушен порядок — фиксируется конкретная ошибка с пояснением, какое состояние не достигнуто.
Цифры: насколько это лучшеАвторы сравнили свой метод PTA (Dominator Tree) с самооценкой агента Computer-Use Agent (CUA) на наборе тестов кастомного расширения VS Code. Разница оказалась впечатляющей.
Ещё важнее метрика «не баг, а шум» (not-a-bug). Сам агент не смог корректно классифицировать такие сценарии: F1 оказался 0%. Trust Layer на основе структурного анализа достиг F1 52,2%. Это означает, что разработчики тратят меньше времени на разбор ложных падений.
Как это применить в своём CI/CDWe don’t need black-box models to judge other black-box models. We need structural guarantees developers can inspect, reason about, and trust.
Gaurav MittalPrincipal Researcher, Microsoft Code | AI
Полноценная реализация Trust Layer требует исследовательского прототипа, но идеи можно перенести и в повседневную работу команд.
Для российских команд, работающих с ограниченным доступом к зарубежным API, важный вывод: если агент зависит от внешнего сервиса, валидация должна уметь отличать проблему сети от проблемы продукта. Иначе любой transient timeout будет превращаться в красный CI.
Часто задаваемые вопросы
1
Что такое Trust Layer в контексте ИИ-агентов?
Это независимый слой валидации, который проверяет, достиг ли агент обязательных состояний, не опираясь на точное повторение записанного сценария и не веря агенту на слово.
2
Почему обычные unit-тесты не подходят для агентов?
Unit-тесты предполагают детерминированность: на один вход — один выход и один путь. Агенты в реальных интерфейсах могут выбирать между равнозначными действиями, поэтому проверять нужно результат и ключевые этапы, а не каждый шаг.
3
Сколько успешных запусков нужно для построения модели?
По данным GitHub, достаточно 2–10 успешных трасс, чтобы алгоритм выделил обязательные состояния и отличил их от случайного шума.
4
Как доминаторы помогают в тестировании?
Dominator analysis из теории компиляторов показывает, какие состояния неизбежно встречаются на всех путях к успеху. Такие состояния становятся обязательными; всё остальное — опционально.
5
Какие у метода ограничения?
Он учится только на успешных примерах, зависит от мультимодальной LLM для семантической проверки и пока не отслеживает временны́е ограничения вроде «загрузка должна завершиться за 5 секунд».
ИИ-агенты переходят из демо в production, и вместе с ними должно эволюционировать тестирование. Проверять агента жёстким скриптом — всё равно что проверять водителя по тому, всегда ли он переключает передачи одной и той же рукой. Важно не это, важно — доехал ли он до пункта назначения и не нарушил ли правил.
Подход GitHub с Trust Layer, PTA и dominator analysis даёт объяснимую и лёгкую модель корректности, которую можно встроить в CI/CD. Она не требует тысяч примеров и не превращается в чёрный ящик. А главное — снижает количество ложных падений, за которыми теряются настоящие баги.
Источник: Validating agentic behavior when “correct” isn’t deterministic — The GitHub Blog.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | На выходных в Воронеже сохранится теплая погода | 0 | 0 | 28-02-2020 |
| 2 | Различия между материей и антиматерией не найдены | 0 | 0 | 22-02-2020 |
| 3 | Потепление до 25 градусов придет в Москву 7-8 августа | 0 | 0 | 05-08-2019 |
| 4 | Жена отдается другу мужа с его разрешения | 0 | 0 | 28-02-2025 |
| 5 | "The Crow Girl" She Shoots for the King - румунски (1CD ) - титлови | 0 | 0 | 02-03-2025 |
| 6 | 0 | 0 | 26-02-2025 | |
| 7 | В Кирово-Чепецком районе грузовой поезд сбил табун лошадей | 0 | 0 | 02-03-2020 |
| 8 | Declaran emergencia fitosanitaria en 8 departamentos de Colombia por bacteria que amenaza cultivos | 0 | 0 | 06-03-2025 |
| 9 | Обнаружена отсутствующая часть материи Вселенной | 0 | 0 | 23-06-2018 |
| 10 | Gård i Trehörningsjö tas över av ny ägare | 0 | 0 | 26-02-2025 |