Senior SWE-Bench: почему AI-агенты проваливают тесты как джуны, хотя работают как сеньоры

Senior SWE-Bench: почему AI-агенты проваливают тесты как джуны, хотя работают как сеньоры

Есть два способа поставить задачу junior-разработчику. Первый: вот функция, вот спецификация, вот unit-тесты — читай до посинения, пока всё не загорится зелёным. Второй: у нас проблема с книжным импортом, Amazon API возвращает пустые ISBN, нужно разобраться. Senior SWE-Bench — это попытка перевести AI-агентов из первого режима во второй.

Классический SWE-Bench и его вариации построены по первой схеме. Агент получает issue, кодовую базу и инструкцию. Тесты уже написаны заранее — агенту остаётся найти место, где что-то не так, и чинить ровно до тех пор, пока метрика не станет 100%. В реальности senior-инженер работает иначе: он сам запускает сервисы, сам воспроизводит проблему, сам пишет тесты, и оценка происходит не по одному unit-test pass/fail, а по совокупности — код работает, следует практикам проекта, не ломает соседние модули через месяц.

Что не так с обычными бенчмарками для AI-агентов

Большинство существующих инструментов оценки AI-кодинга страдают от одной фундаментальной проблемы: они измеряют task completion, а не code quality или runtime reasoning. Когда AI-агент интегрирован в CI/CD или используется для автономного рефакторинга, важен не только «прошёл тесты». Важно, чтобы код не деградировал через месяц, чтобы он соответствовал архитектурным принципам проекта, чтобы он обрабатывал edge cases, которые не покрыты тестами.

Перекос между task completion и real-world performance становится особенно заметным на задачах, которые требуют расследования. В классическом SWE-Bench данные уже подготовлены: reproduces-скрипт приложен, стек вызовов известен, остаётся только найти проблемное место. В реальном баг-репорте вы получаете расплывчатое «у меня что-то сломалось», логи, которые могут быть неполными, и профилирование, которое указывает на симптом, а не на причину.

Senior SWE-Bench от Snorkel AI меняет три ключевых параметра оценки: формулировку задачи, способ проверки решения и критерии качества. Это не просто усложнённая версия существующего бенчмарка — это принципиально другая модель.

Три отличия Senior SWE-Bench от классического подхода

Первый блок — feature-задачи с размытыми требованиями. Вместо «почините баг X» агенту даётся описание фичи в свободной форме, как будто его написал product manager. Пример из набора данных: «Add Google Books as a metadata source to BookWorm for fallback/staging imports». Агент должен сам понять, что это означает на уровне кода, какие файлы нужно изменить, какой API вызвать и как обработать ситуацию, когда Google Books возвращает несколько результатов или не возвращает вовсе.

Надёжность решения проверяет validation agent — отдельный AI, который использует expert-designed recipes для генерации behavioral tests, адаптирующихся к конкретному сабмиту. Это принципиально отличается от фиксированного набора unit-тестов. Агент не может зазубрить решения — тесты генерируются под конкретный код и адаптируются к его особенностям. Validation agent становится своего рода вторым мнением: он оценивает не только «работает ли код», но и «действительно ли код решает задачу, а не просто проходит метрику».

Архитектурно validation agent использует набор рецептов — structured prompts с конкретными инструкциями по генерации тестов для разных типов сабмитов. Если код меняет API — тесты проверяют обратную совместимость. Если код добавляет новую интеграцию — тесты проверяют обработку ошибок от внешнего сервиса.

Второй блок — bug-задачи, требующие runtime investigation. Классический SWE-Bench даёт reproduces-скрипт, и агент сразу начинает с воспроизведения. Senior SWE-Bench убирает эту подсказку. Агент получает только описание проблемы: логи, stack trace, шаги воспроизведения. Дальше он сам запускает сервисы, профилирует, разбирается в контексте — точно так, как это делает инженер, когда к нему приходит коллега и говорит «у меня упало в проде». Это измеряет способность агента к самостоятельному расследованию, а не к выполнению известного алгоритма.

Третий блок — taste scoring. Код не просто должен проходить тесты. Он оценивается по quality metrics, которые отражают практики конкретной кодовой базы. Хороший senior-инженер не просто чинит баг — он чинит его так, чтобы это соответствовало стилю и архитектуре проекта. Агент, который вставляет костыль и проходит тесты, но нарушает структуру, получает более низкую оценку.

Почему это важно для индустрии

Для компаний, которые выбирают AI-агентов для интеграции в свои процессы, это принципиальный сдвиг. Сегодня большинство оценок строятся по схеме «посмотрим на метрику и сравним с другими моделями». Но task completion score не говорит о том, как агент будет вести себя через три месяца эксплуатации, насколько он способен к самостоятельному расследованию, не сломает ли он что-то, что не покрыто тестами.

Переход от задач с готовыми тестами к задачам с адаптивными тестами отражает реальный переход в разработке: когда вы деплоите агента в CI/CD, никто заранее не пишет для него unit-тесты. Агент должен сам понимать, что ему нужно проверить, и выстраивать свою стратегию тестирования. Senior SWE-Bench готовит агентов к этому сценарию.

Validation agent как отдельный AI — это интересный архитектурный паттерн, который заслуживает внимания. Вместо того чтобы полагаться на фиксированные тесты, система использует AI для оценки AI. Это создаёт более адаптивный и, возможно, более надёжный способ проверки — но поднимает очевидный вопрос: кто оценивает валидатора? Если validation agent ошибается systematically, как это обнаружить?

Ещё один практический аспект: taste scoring означает, что один и тот же агент может получить разные оценки на разных кодовых базах. Агент, который хорошо следует практикам одного проекта, может оказаться хуже на другом, где принят другой стиль. Это более реалистично, чем единая метрика, но создаёт сложности при сравнении моделей между собой.

Что это значит для разработчиков AI-агентов

Если вы строите AI-агента для реальных задач — не демо и не synthetic бенчмарк — Senior SWE-Bench даёт более релевантную обратную связь. Метрика покажет не только «может ли агент найти баг», но и «как агент расследует проблему» и «насколько его решение интегрировано в проект».

Для fine-tuning это означает, что данные должны включать задачи с размытыми требованиями, а не только well-specified проблемы. Агент, который обучен только на чётких задачах, будет хорошо показывать себя на SWE-Bench, но проваливаться на Senior SWE-Bench. Это ценная информация для формирования датасета.

Как соотносится с уже существующими фреймворками

Большинство agentic coding инструментов — Claude Code, Cursor, Windsurf, Roo Code, Cline и другие — оцениваются на SWE-Bench и его вариациях. Переход на Senior SWE-Bench может дать более реалистичную картину их возможностей, и, вероятно, более низкие абсолютные scores. Это не означает, что агенты стали хуже; это означает, что мы начали измерять другие параметры.

Важно отметить, что Senior SWE-Bench не заменяет классические бенчмарки — он дополняет их. Task completion по-прежнему важен, и метрики SWE-Bench останутся стандартом для comparing моделей на synthetic задачах. Senior SWE-Bench даёт дополнительный слой информации для тех, кто хочет понять, как агент будет работать в реальном проекте.

Часто задаваемые вопросы

Чем принципиально отличается от SWE-Bench Lite?

SWE-Bench Lite и подобные вариации фокусируются на увеличении сложности задач или скорости оценки — больше репозиториев, более глубокие зависимости, более длинные контексты. Senior SWE-Bench меняет саму парадигму: вместо «может ли агент починить конкретный баг» система проверяет «может ли агент работать как senior — с неопределённостью, без готовых тестов и с оценкой качества кода».

Может ли агент зазубрить решения из тренировочных данных?

Validation agent с адаптивными тестами специально спроектирован, чтобы минимизировать эту возможность. Тесты генерируются под конкретный сабмит и адаптируются к его особенностям. Однако это исследовательский бенчмарк, и его устойчивость к memorized solutions ещё проверяется на практике. Рекомендуется использовать его в conjunction с другими метриками для получения полной картины.

Как быть с рекурсивной проблемой оценки — кто оценивает валидатора?

Это честный вопрос, на который у авторов пока нет полного ответа. Validation agent проверяет себя через cross-validation и экспертный ревью, но систематический дрейф остаётся риском. На практике рекомендуется использовать validation agent как дополнение к human review, а не как замену — особенно для high-stakes задач.

Почему это называется «senior»?

Название отражает ключевое отличие: классические бенчмарки дают агенту столько же контекста, сколько junior-разработчик получает от тимлида в первый день. Senior SWE-Bench даёт агенту ровно столько же контекста, сколько получает senior-инженер, когда к нему приходит пользователь с багом. Разница в том, что junior ждёт инструкций, а senior сам их формирует из неопределённости.

Итог

Senior SWE-Bench — это попытка перевести оценку AI-агентов из плоскости «как хорошо ты сдал экзамен» в плоскость «как хорошо ты работаешь в команде». Разница принципиальная: первый сценарий измеряет знание, второй — реальную применимость. Для индустрии это важный сдвиг — компании смогут оценивать агентов не по synthetic бенчмаркам, а по критериям, которые ближе к продакшен-реальности. Validation agent как AI-система показывает, что экосистема AI-оценки становится рекурсивной: модели оценивают модели оценивают модели. И если это вас беспокоит — вы мыслите правильно, но это уже другая тема.

← Все записи