Доля успеха больше ничего не гарантирует
Чем дольше смотришь на современные бенчмарки и на то, как это делают в индустрии, тем очевиднее одна вещь: доля успешных запусков больше ничего не гарантирует. Агент может пройти все тесты — и всё равно оставить опасное изменение. Правильный ответ иногда получается только потому, что он подсмотрел будущее решение. Задачу он решает с первого раза — а на повторном прогоне уходит совсем в другую сторону. Бывает и так, что он выдаёт архитектурно убедительный текст, из которого не собрать ни одной задачи для команды. Или строит SQL, который формально возвращает число, — но джойнит таблицы с неверной гранулярностью.
Главный сдвиг для меня в том, что зрелую оценку агента бессмысленно сводить к таблице лидеров. Это скорее инженерная система качества, и считать в ней надо не отдельные вопросы и финальные ответы, а целые работы.
Единица оценки: воспроизводимый эпизод
Хороший сценарий оценки агента — это, по сути, маленькая замороженная копия реальной работы. В нём есть исходное состояние, контракт агента и набор разрешённых инструментов, , трейс действий и измеримая цель.
В бенчмарках разработки эта логика давно стала почти стандартом. SWE-bench берёт реальные задачи GitHub и смотрит, может ли модель починить репозиторий так, чтобы прошли тесты. FEA-Bench сдвигает фокус с ошибок на реализацию функций: не просто починить, а реализовать функцию из реальной истории PR. Шаг важный, потому что в рабочей среде работа агента почти никогда не выглядит как изолированная задачка — обычно это задача плюс весь контекст репозитория: ограничения, тесты, локальные команды, проверка и несколько итераций поверх.
Но и этого мало. У агента надо фиксировать не только финальное изменение, но и всю траекторию — как именно он к нему пришёл. GitHub в разборе офлайн-оценивания MCP Server отдельно оценивает выбор инструментов и корректность аргументов. Звучит как техническая мелочь, но именно здесь прячется куча риска: агент может дёрнуть не тот инструмент, вызвать его с опасными параметрами, случайно угадать правильный ответ или потратить десяток лишних шагов на элементарную задачу.
Минимальный эпизод оценки я бы описал примерно так:
episode_id: "feature-checkout-discount-014" start_state: "repo commit, tickets, docs, fixtures, test environment" input_bundle: "business goal, acceptance criteria, constraints" agent_contract: "allowed tools, permissions, time budget, write policy" hidden_judge: "tests, policy checks, expected state, review rubric" trace_checks: "tool choice, arguments, unsafe calls, unnecessary steps" release_gate: "pass threshold, repeatability, cost ceiling, safety stop"
За этим скелетом — несколько свойств, без которых эпизод оценки разваливается.
Первое — замороженное исходное состояние. Что именно замораживается, зависит от домена: для кода это коммит до PR, для инцидента — состояние на момент первого алерта, для платформы данных — целый снимок: данные, каталог, происхождение и версии моделей. Для архитектуры исходником будет набор требований, текущая система, правила компании и список управляемых сервисов, из которых вообще разрешено выбирать.
Контракт агента я держу явным всегда. Что он может читать, что менять, какими инструментами пользоваться, нужно ли ручное одобрение, есть ли сеть, сколько попыток ему дают. Без этих ответов мы оцениваем не агента, а случайный набор привилегий.
Скрытой остаётся проверка. Для кода это скрытые тесты, полный прогон и статические проверки и проверки безопасности; для агентов рабочих процессов — ожидаемые вызовы инструментов и конечное состояние; для архитектуры — проверки политик, полнота решения, прослеживаемость и пригодность для дальнейшей работы. Чем больше в проверке исполняемого, тем меньше места для красивой, но ничем не подтверждённой риторики.
Но даже исполняемая проверка ничего не стоит без повторяемости. τ-bench хорош именно этой мыслью про надёжность серии запусков: агент может иногда решать задачу — и всё равно быть скверным производственным инструментом. Один удачный прогон ещё не качество. Нужны повторные запуски, дисперсия, чувствительность к бюджету, стабильность траекторий и цена.
Остаётся свежесть. Статичные публичные наборы быстро загрязняются: задачи утекают в обучающие данные, вокруг них нарастает обвязка, подсказки, неявная подгонка. Поэтому нужны разбиения по времени и проектам и живой обновляемый набор. SWE-bench Live решает это для задач по коду, а Microsoft в работе про непрерывное обновление бенчмарков формулирует тот же принцип шире, для корпоративных агентов: бенчмарк должен обновляться вместе с рабочей средой.
SDLC: не только код
В SDLC удобно начинать с кода — там проще всего сделать исполняемую проверку. Но если агент претендует на автономность в разработке, мерить придётся весь путь, от требований до эксплуатации.
Начнём с требований. Единица оценки здесь — не команда «напиши PRD», а цепочка прослеживаемости: бизнес-описание, заметки исследования, разговор с заинтересованными сторонами, утверждённые требования, критерии приёмки, нефункциональные требования и то, что из всего этого затем собирается в реализацию. Хорошая проверка смотрит на полноту, корректность, тестируемость, выдуманные требования, покрытие нефункциональных требований и на то, годится ли результат следующему агенту или живой команде.
Дальше — реализация функции, и тут схема ближе всего к FEA-Bench: задача или спецификация, коммит до PR, скрытые функциональные и интеграционные тесты и безопасность на полном прогоне. С исправлениями ошибок тоньше: нужен коммит с ошибкой, задача, трейс стека или падающее поведение, а проверка обязана показать, что баг воспроизвёлся и исчез, а соседние сценарии не поехали. И тут опасно подменять качество одним публичным регрессионным тестом — слабая проверяющая программа почти неизбежно начинает пропускать неверные изменения.
Проверка кода — отдельная история. Оценивать надо не красоту комментария, а то, ловит ли агент дефекты, которые реально влияют на качество слияния. SWE-PRBench строит такую оценку вокруг настоящих PR и размеченных экспертами находок. А внутри компании ещё полезнее превращать часть замечаний проверки в исполняемые проверки: если замечание можно зафиксировать тестом, проверку политики или статическое правило, оно перестаёт быть вкусовщиной.
Генерация тестов хорошо ложится на принцип «от падения к успеху»: агент должен написать тест, который падает до исправления и проходит после. Ровно так устроен Microsoft TestExplora. Для обычной генерации модульных тестов одного покрытия мало — нужны доля успешной сборки, покрытие ветвей, мутационная оценка и способность ловить реальные классы дефектов.
Сложнее всего с инцидентами и SRE. Тут агенту нельзя скармливать один вопрос «что случилось?». Нужен пакет инцидента: оповещение на T0, топология, вся телеметрия — логи, метрики, трейсы, — плюс инструкции, временная шкала, разбор инцидента и список того, что агенту вообще позволено делать. AIOpsLab двигает как раз идею такой среды для оценки облачных агентов. И проверка должна смотреть на каждый шаг по отдельности: как агент провёл первичный разбор, оценил ли радиус поражения, дошёл ли до настоящего RCA, безопасны ли меры устранения — и, что важнее всего, аккуратно ли он передал управление человеку.
Так что оценка SDLC в конечном счёте проверяет одно: дотянул ли агент рабочий эпизод до состояния, которое реально можно проверить.
Архитектура: почему одной диаграммы мало
С архитектурным слоем всё сложнее. Одного правильного ответа тут почти никогда нет: у хорошего решения обычно есть целое семейство допустимых вариантов, свои компромиссы и свои сложные отрицательные примеры. Поэтому сверять результат агента с единственной эталонной диаграммой — заведомо слабая модель.
Публичный рынок бенчмарков здесь ещё молодой. Систематический обзор по LLM в программной архитектуре нашёл всего 18 релевантных работ и отдельно отметил, как слабо покрыты облачно-ориентированные системы, архитектура и проверка соответствия. ArchBench авторы позиционируют как единую платформу для архитектурных задач: генерация ADR, восстановление связей прослеживаемости, сборка бессерверных и динамических компонентов, вывод микросервисов прямо из требований. R2ABench ближе к связке «требования → архитектура»: настоящие PRD, экспертные PlantUML-диаграммы, метрики на структурных графах, многомерная оценка и обнаружение антипаттернов.
Но как только речь заходит про сценарий «идея функции → целевое архитектурное решение выше уровня репозитория → последующие задачи», готового открытого бенчмарка почти наверняка не хватит. Внешние наборы годятся как отправная точка, но основной набор оценивания придётся собирать из своих внутренних решений.
Оценивать я бы стал весь архитектурный пакет целиком. На вход кейса кладётся:
- идея функции и бизнес-цель;
- нефункциональные требования и ограничения продукта;
- текущая архитектура;
- каталог утверждённых управляемых сервисов;
- защитные ограничения организации и требования безопасности и соответствия;
- доменный словарь;
- интеграционные ограничения;
- текущие ADR и эталонные шаблоны.
А на выходе агент должен отдать не один артефакт, а пакет: целевую архитектуру и набор ADR, границы сервисов и потоки данных/событий, выбор платформенных сервисов, план выката и отката, план по наблюдаемости и безопасности — и разбивку всего этого на последующие задачи.
Проверку тут удобно делать трёхслойной. Нижний слой — жёсткие проверки: разрешённые управляемые сервисы, территориальное размещение данных, аутентификация по утверждённому шаблону, границы PII, SLO/SLA, владельцы, обязательные средства наблюдаемости. Над ним — структурное качество: полнота, антипаттерны, прослеживаемость от требований к компонентам, покрытие атрибутов качества, компромиссы и точки чувствительности. И самый верхний слой — пригодность к реализации: можно ли по этому решению нарезать задачи уровня репозитория, которые затем реализуются и проходят проверки.
Тут легко ошибиться в одном месте. Хранить нужно не единственный эталон, а целое семейство эталонных решений — с обязательными элементами, допустимыми альтернативами и явно запрещёнными вариантами. Это куда ближе к живой архитектурной проверке, чем сверка с одной канонической картинкой.
Платформа данных: аналитики и инженеры — разные агенты
С платформами данных картина зрелее. Тут уже есть бенчмарки на анализ с открытым ответом, многошаговую аналитику, ELT, управление и работу с данными на всём жизненном цикле. Если нужен один внешний ориентир, я бы начинал с DAComp — он удобен именно разделением на инженерию данных уровня репозитория и анализ данных с открытым ответом: DE-Architecture, DE-Implementation, DE-Evolution и отдельно аналитические задачи на отчёты, инсайты и рекомендации.
У аналитиков самый частый сценарий — бизнес-вопрос поверх семантического слоя или нескольких баз. Пользователь спрашивает «почему упала метрика», «какой сегмент просел», «сколько клиентов задело». И проверка должна оценивать не столько итоговое число, сколько то, как оно получено: правильны ли соединения, откуда взяты источники, что показывает трейс инструментов, воспроизводится ли SQL/Python на повторном прогоне, сходится ли происхождение данных. DAB полезен тем, что честно формализует боль агентов данных в рабочей среде: интеграцию нескольких баз данных, неверные ключи соединения, превращение неструктурированного текста в данные и доменное знание.
Иначе устроен исследовательский анализ: агент получает данные и должен выдать аналитическую записку, графики, рекомендации. Детерминированного ответа тут часто просто нет. Поэтому проверка смотрит на опору на данные, корректность вычислений, покрытие ключевых аналитических шагов, воспроизводимость артефактов и качество самих рекомендаций. Хорошо ложатся идеи BLADE: открытый анализ с экспертным эталоном и с поправкой на то, что допустимых подходов обычно несколько.
И почти всегда внутренним остаётся третий, самый неудобный случай — разрешение конфликтов семантического слоя. Агент должен выбрать между конкурирующими определениями одного KPI, объяснить расхождение, показать влияние на дашборды и предложить, что менять в семантическом слое или в документации. Публичных данных под это мало — такие конфликты завязаны на бизнес-логику конкретной компании. Лучшие кейсы лежат в истории самой аналитической команды: инциденты, постмортемы, споры в Slack и Jira.
У инженеров данных набор совсем другой. Бизнес-требование → схема данных: сначала гранулярность и ключевые сущности, затем ключи и контракты данных, а сверху происхождение, DAG и сопоставление с платформой. Дальше — сборка конвейера ELT/dbt по спецификации, где важны корректные модели, тесты, контракты и скрытые регрессионные проверки. Отдельная задача — эволюция: поменять существующий конвейер и не сломать последующие отчёты. Управление добавляет очистку, стандартизацию и соблюдение политик. А анализ влияния происхождения данных требует оценить радиус поражения по вышестоящим и нижестоящим зависимостям.
ELT-Bench тут хорошо отрезвляет. Авторы собрали 100 конвейеров, 835 исходных таблиц и 203 модели данных — и по их замерам лучший агент (Spider-Agent на Claude 3.7 Sonnet с расширенным анализом) корректно генерирует 3,9% моделей при средних 4,30 доллара и 89 шагах на конвейер. Отказываться от агентов данных из-за этого не стоит, но и выпускать их без скрытых проверок нельзя: как минимум схема, число строк, значения распределений, инварианты, происхождение и контроль, не поехали ли последующие отчёты.
Для задач управления данными стоит посмотреть на DataGovBench — он полезен не только задачами очистки и стандартизации, но и самой постановкой вопроса. Агента данных в компании надо оценивать не по тому, как складно он объяснил проблему с данными, а по простому факту: стало ли в итоге лучше и не нарушены ли политики.
Рабочая карта оценки
Когда сценарии такие разные, страшно хочется свести всё к одному универсальному баллу. Я бы не спешил. Лучше держать общую из пяти частей и менять веса от домена к домену.
Результат. Решена задача или нет: архитектуру приняли, ответ по данным верный, таблица собрана правильно, тесты зелёные, инцидент разобран, замечание проверки принято, политики соблюдены. Это фундамент — если тут не сошлось, на остальные метрики можно и не смотреть.
Трейс. Тот ли был план, те ли выбраны инструменты и с теми ли аргументами, были ли опасные или лишние действия, не подсмотрел ли агент будущий ответ там, где не должен. Это ровно тот слой, который отличает оценивание агента от обычной проверки текста.
Эксплуатация. Сколько это стоило и сколько заняло — задержка, стоимость, расход токенов, минуты сборки; сколько раз агент вызывал инструменты и повторял попытки; держится ли всё это стабильно от прогона к прогону. Агент, который решает задачу за непредсказуемые деньги и с огромной дисперсией, бывает исследовательски любопытным и совершенно неудобным в рабочей среде.
Безопасность. Нарушение прав, доступ к PII, попытка тронуть не те файлы, небезопасное исправление, обход политик, лишние операции записи, отсутствие плана отката. Для SRE, безопасности, платформ данных и архитектуры это должен быть стоп-критерий, а не мелкий штраф в общем балле.
Приёмка человеком. Приняли PR и замечания проверки, архитектурное решение прошло совет, RCA пригодился дежурному, аналитик подтвердил вывод, владелец данных согласился с исправлением. Каким бы автономным агент ни был, PR в конце концов принимает человек.
Два поставщика платформ публично описывают похожую форму процесса — это их практика, а не независимая проверка. Snowflake в Cortex Agent Evaluations описывает оценку «цель — план — действие» — с выбором и выполнением инструментов и проверкой корректности ответа на прогонах с трейсами. Databricks в coSTAR выстраивает цикл «сценарий → трейс → оценка → уточнение» и гоняет одни и те же проверки в разработке, в CI/CD и на выборке рабочего трафика. По-моему, это и есть правильная форма: оценивание не живёт отдельно от эксплуатации, а становится её регрессионным контуром.
Матрица для внутреннего каталога
Если свести всё это в один рабочий формат, получается матрица scenario family × input bundle × hidden judge × metrics × release gate.
| Семейство сценариев | Входной пакет | Скрытая проверка | Метрики | Допуск к выпуску |
|---|---|---|---|---|
| Требования | Описание, расшифровка, заметки исследования, ограничения | Утверждённые требования, рубрика, проверка пригодности для дальнейшей работы | Корректность, полнота, учёт нефункциональных требований, доля выдуманных требований | Не ухудшает утверждённую базовую линию и пригоден для дальнейшей реализации |
| Разработка функции | История или спецификация, коммит до PR, контракт API и UX | Скрытые функциональные и интеграционные тесты, полный набор, статические проверки | Доля решений, защита от регрессий, минимальность изменения, стоимость | Скрытые тесты пройдены, полный набор зелёный, опасных изменений нет |
| Исправление ошибки | Задача, журналы, трейс стека, коммит с ошибкой | Регрессионный тест от падения к успеху, полный набор, проверки безопасности и фаззинг | Доля исправлений, безопасность полного набора, время исправления, устойчивость повторов | Ошибка устранена, соседних регрессий нет |
| Проверка кода | Разница PR, изменённые файлы, выбранный контекст репозитория | Экспертные находки или исполняемые проверяющие программы | Полнота с учётом тяжести, точность, ложные срабатывания, принятые замечания | Находит серьёзные проблемы без потока шумных замечаний |
| Создание тестов | Пара версий до и после исправления, функция или модуль, требование | Тест падает до исправления и проходит после, покрытие, мутационная оценка | Переход от падения к успеху, покрытие ветвей, мутационная оценка, нестабильность | Тест ловит реальный дефект и работает устойчиво |
| Инцидент SRE | Оповещение, топология, телеметрия, инструкция, разбор инцидента | Рубрика анализа первопричины, безопасность исправления, ожидаемая передача | Точность разбора и первопричины, TTD/TTM, опасные действия | Верная первопричина или безопасная эскалация |
| Архитектура | Пакет инициативы, текущая архитектура, защитные ограничения, ADR | Проверки политик, семейство эталонных решений, рубрика проверки | Соблюдение ограничений, полнота, качество компромиссов, пригодность к реализации | Соблюдает жёсткие ограничения и раскладывается на задачи |
| Агент аналитика данных | Бизнес-вопрос, семантический слой, снимки БД, каталог | Проверяющий сценарий, проверки SQL и Python, происхождение данных, трейс | Корректность ответа и соединений, опора на данные, воспроизводимость | Верный ответ с прослеживаемым вычислением |
| Агент инженера данных | Спецификация данных, снимок репозитория, манифесты, контракты, происхождение | Сборка и тесты, скрытые проверки данных, инварианты схемы, строк и значений | Корректность модели, сохранность контрактов и происхождения, стоимость | Конвейер корректен, контракты целы, последующие отчёты не сломаны |
Эта таблица, честно говоря, важнее выбора конкретной модели: модель-то можно заменить в любой момент. А вот без каталога сценариев, своих входных пакетов, скрытых проверок и допусков к выпуску придётся каждый раз заново спорить, «стал агент лучше или нет».
Что обычно ломает оценивание
Теперь про то, на чём оценивание чаще всего ломается.
Самая частая ошибка — оценивать только финальный ответ. У автономного агента ответ может быть верным, а траектория — совершенно неприемлемой. Если он дошёл до решения через git log, внешний PR, слишком широкий SQL-доступ или опасный способ исправления — это не успех, как бы красиво ни выглядел итог.
Вторая ловушка — слепо верить одному эталонному ответу. Для кода иногда есть чёткая проверяющая программа, но в архитектуре, аналитике и реагировании на инциденты допустимых решений обычно много. Значит, нужны семейства решений, рубрики и сложные отрицательные примеры.
Отдельно вредит привычка не обновлять наборы. Старый бенчмарк потихоньку превращается из измерительного прибора в учебный материал. Лечится это статической отложенной выборкой для регрессии и живым обновляемым набором свежих задач.
Ещё один провал — принимать заявления поставщиков за независимую валидацию. Заявления вендоров о росте точности, экономии времени или качестве их агентной платформы полезны как указатель направления, но читать их надо именно как заявления, а не как доказательство для вашей среды.
И последнее — не различать автономную проверку и наблюдение в рабочем контуре. Автономная проверка нужна как быстрый допуск к выпуску. Проверка в рабочем контуре нужна, чтобы увидеть реальный эффект: приняли ли PR, сократилось ли время расследования, стало ли меньше переделок, доверяют ли команды ответам агента. Порознь они дают только половину картины.
С чего начать
Начинал бы я не с выбора лучшей модели. Первым делом собрал бы каталог из 30–50 внутренних эпизодов: несколько PR с новыми функциями, пара-тройка исправлений ошибок, несколько случаев проверки, немного требований, несколько задач с данными, две-три архитектурные инициативы и пара инцидентов. Под каждый эпизод надо восстановить начальное состояние, спрятать финальное решение, описать контракт агента и сделать проверку настолько исполняемой, насколько вообще позволяет домен.
Дальше — два набора. Статическая отложенная выборка, которую не трогаем и гоняем для регрессии между версиями агента. И живой обновляемый набор, который регулярно пополняем свежими PR, инцидентами, аналитическими запросами и архитектурными решениями. А метрик держим сразу пять слоёв: результат, трейс, эксплуатация, безопасность и приёмка человеком.
Если совсем ужать, весь конвейер сводится к одной цепочке:
исторический рабочий артефакт → замороженное исходное состояние → контракт агента → скрытая проверка → трейс действий → повторяемость → допуск к выпуску
На демке это, конечно, скучнее, чем история «агент сам взял и всё сделал». Зато именно так — через каталог замороженных эпизодов — агент перестаёт быть красивой демкой и становится инструментом, которому можно доверить рабочую среду.
Что стоит унести с собой
- 01Единица оценки агента — воспроизводимый эпизод: замороженное исходное состояние, явный контракт, скрытая проверка, трейс действий и допуск к выпуску.
- 02Оценивать надо траекторию, а не только финальный ответ: именно в трейсе живут опасные вызовы инструментов, подсмотренные решения и лишние шаги.
- 03Для архитектуры, аналитики и инцидентов нужен не один эталонный ответ, а семейство эталонных решений с рубриками и сложными отрицательными примерами.
- 04Карта оценки состоит из пяти слоёв: результат, трейс, эксплуатация, безопасность и приёмка человеком; безопасность работает стоп-критерием, а не штрафом.
- 05Каталог из 30–50 внутренних эпизодов с фиксированной контрольной и обновляемой рабочей выборками важнее конкретной модели: модель заменяется, каталог остаётся.
Бенчмарки и инженерные блоги
Эпизоды в коде
- SWE-bench: Can Language Models Resolve Real-World GitHub Issues?исходный набор задач из реальных обращений и патчей; с него начался жанр воспроизводимых инженерных эпизодов
- FEA-Bench: A Benchmark for Evaluating Repository-Level Code Generation for Feature Implementationзадачи на добавление возможности, а не на исправление ошибки: другой профиль изменения и другая приёмка
- SWE-bench Liveнепрерывно обновляемая версия набора — ответ на загрязнение статической выборки
- SWE-PRBenchоценка по запросам на слияние целиком, а не по одному патчу
Инструменты и диалог
- τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domainsвзаимодействие агента, инструментов и пользователя под политикой домена; проверяет и отказ от действия
- GitHub: How offline evaluation of GitHub MCP Server worksинженерный разбор офлайн-оценивания MCP-сервера: фиксируется траектория, а не только финальный ответ
Генерация наборов
- Microsoft Research: Continuous Benchmark Generation for Evaluating Enterprise-scale LLM Agentsкак выращивать корпоративный набор эпизодов непрерывно, вместо разовой ручной сборки
- Microsoft Research: TestExploraпоиск дефектов через генерацию тестов на уровне репозитория, а не через готовый список задач
Платформы и эксплуатация
- Microsoft Research: AIOpsLabсреда для оценки облачных агентов: разбор инцидента проверяется по шагам, а не по итоговому вердикту
Архитектура
- A Systematic Literature Review on LLMs for Software Architectureсистематический обзор по LLM в программной архитектуре — рамка для того, что вообще измеримо
- R2ABenchпуть от требований к архитектуре; компоненты восстанавливаются заметно лучше связей между ними
- ArchBenchплатформа архитектурных задач с общим протоколом прогона
Данные
- DACompсоревновательный набор задач для агентов данных
- DAB: Data Agent Benchmarkсквозные сценарии работы с данными от загрузки до отчёта
- BLADEоценка исследовательского анализа: важны опора на данные и воспроизводимость шагов, а не единственный правильный ответ
- ELT-Bench100 конвейеров, 835 исходных таблиц и 203 модели данных; лучший агент корректно строит 3,9% моделей
- DataGovBenchзадачи управления данными: классификация, стандартизация и соблюдение политик
Практика поставщиков
- Snowflake: Cortex Agent Evaluationsоценка «цель — план — действие» на прогонах с трейсами; описание собственной практики, не независимая проверка
- Databricks: coSTARпроцесс выпуска агентов с проверками перед релизом; тоже рассказ компании о себе