Agentic-бенчмарки для кода: что они реально измеряют
SWE-bench, Terminal-bench и Aider Polyglot стали стандартом для оценки ИИ-агентов, которые пишут код. Но цифра «70% решённых задач» почти никогда не значит то, что вы думаете.

Каждый релиз новой модели теперь сопровождается строчкой вроде «73% на SWE-bench Verified». Anthropic, OpenAI и Google соревнуются именно на этих числах, а не на классических тестах вроде HumanEval, где модели давно упёрлись в потолок. Проблема в том, что за одинаково выглядящими процентами прячутся разные условия запуска, разные подмножества задач и разные определения слова «решено». Разберём, что именно измеряют главные agentic-бенчмарки и почему сравнивать их между собой напрямую нельзя.
Чем agentic-бенчмарк отличается от старых тестов кода
HumanEval и MBPP проверяли одно: даёшь модели описание функции — она пишет тело, ты гоняешь юнит-тесты. Одна задача — один вызов модели. Реальная разработка так не устроена: нужно прочитать чужой репозиторий, найти нужный файл среди сотен, внести правку в нескольких местах, запустить тесты, увидеть ошибку и переписать.
Agentic-бенчмарки моделируют именно это. Модель работает как агент¹: получает задачу, сама решает, какие файлы открыть, какие команды выполнить в терминале, и итеративно доводит решение. Оценивается не текст ответа, а результат — прошли тесты или нет.
Три бенчмарка, которые все цитируют
SWE-bench и SWE-bench Verified
Самый известный. Задачи взяты из реальных issue и pull request'ов на GitHub в популярных Python-репозиториях (django, sympy, matplotlib и других). Агенту дают issue и слепок репозитория до фикса; он должен внести правку так, чтобы прошли тесты из соответствующего PR.
Оригинальный SWE-bench содержит около 2 294 задач, но у него репутация зашумлённого: часть задач нерешаема в принципе, часть имеет некорректные тесты. Поэтому OpenAI совместно с авторами бенчмарка выпустила SWE-bench Verified — вручную отфильтрованное подмножество из 500 задач, которые люди-инженеры признали корректными и решаемыми. Когда лаборатория называет высокий процент, чаще всего речь именно о Verified — он проще исходного.
Terminal-bench
Проверяет способность агента работать в чистом окружении командной строки: собрать проект, настроить окружение, разобраться с зависимостями, выполнить многошаговую задачу через shell. Здесь ближе к работе DevOps и системного инженера, чем к правке прикладного кода.
Aider Polyglot
Бенчмарк от проекта Aider на основе задач Exercism. Ключевое отличие — многоязычность: задачи на Python, JavaScript, Rust, Go, C++, Java. Проверяет не навигацию по большому репозиторию, а точность правок и умение работать за пределами Python, где остальные бенчмарки сосредоточены.
Сравнение по сути, а не по цифрам
Проценты из разных бенчмарков несопоставимы напрямую — у них разный набор задач, разный язык и разное, что считается успехом. Сравнивать имеет смысл сами условия теста.
| Бенчмарк | Что проверяет | Языки | Единица задачи | Слабое место |
|---|---|---|---|---|
| SWE-bench Verified | Фикс реального бага в большом репозитории | Python | Issue + PR c GitHub | Только Python, задачи прошли ручной отбор |
| SWE-bench (full) | То же, но без фильтрации | Python | Issue + PR c GitHub | Часть задач нерешаема или с битыми тестами |
| Terminal-bench | Работа в shell, сборка, окружение | Язык-агностичен | Задача в терминале | Мало про прикладной код |
| Aider Polyglot | Точность правок на разных языках | 6+ языков | Упражнение Exercism | Изолированные задачи, не большой репозиторий |
Почему одинаковый процент не значит одинаковый результат
Даже внутри одного бенчмарка две цифры «70%» могут стоять за очень разными прогонами. На результат влияет то, что редко попадает в пресс-релиз:
- Скаффолдинг (обвязка). Модель почти никогда не решает SWE-bench в одиночку — вокруг неё работает агентский каркас: поиск по файлам, запуск тестов, ретраи. OpenHands, разные внутренние гарнесы лабораторий и минимальные обвязки дают разные числа на одной и той же модели.
- Число попыток. pass@1 и лучший из нескольких прогонов — совсем разные метрики. Иногда в сноске к цифре стоит усреднение по нескольким запускам.
- Бюджет на рассуждение и на инструменты. Разрешено ли модели долго «думать», сколько раз она может вызывать терминал, есть ли лимит токенов — всё это двигает результат.
- Загрязнение обучающей выборки. Задачи SWE-bench взяты из публичного GitHub. Часть из них с высокой вероятностью попала в обучающие данные модели, и тогда бенчмарк меряет память, а не рассуждение.
Высокий процент на SWE-bench Verified говорит, что модель хорошо чинит изолированные баги в популярных Python-библиотеках. Он ничего не говорит о том, справится ли она с вашим легаси на PHP без тестов и с невнятным тикетом.
Кому это пригодится и кому нет
Пригодится, если вы:
- выбираете модель под конкретную задачу — например, автоматический фикс багов в Python-сервисе с хорошим покрытием тестами; тогда SWE-bench Verified релевантен напрямую;
- строите CI-агента, который сам собирает и разворачивает окружение — смотрите на Terminal-bench, а не на SWE-bench;
- пишете на Rust, Go или C++ и хотите понять, не проседает ли модель вне Python — тогда единственный из трёх полезный ориентир это Aider Polyglot.
Не стоит опираться только на бенчмарки, если вы:
- оцениваете модель для повседневного парного программирования, где важнее скорость ответа, качество объяснений и цена токенов, а не процент автономных фиксов;
- работаете в кодовой базе без тестов — ни один из этих бенчмарков не моделирует ситуацию, где успех нельзя проверить автоматически;
- собираете внутренний инструмент под нишевый домен — тут надёжнее собрать собственный небольшой набор реальных задач и прогнать кандидатов на нём.
Как читать цифру в релизе
- Уточните, какой именно бенчмарк: SWE-bench full или Verified — это разные вещи, и Verified даёт числа выше.
- Найдите, какая обвязка использовалась и сколько попыток разрешено. Без этого процент не воспроизводим.
- Проверьте, есть ли ссылка на leaderboard с одинаковыми условиями для всех моделей, а не только внутренний прогон вендора.
- Соотнесите язык и тип задач бенчмарка со своим сценарием. Python-фиксы не предсказывают качество на вашем стеке.
¹ Агент в контексте ИИ — модель, которая не просто выдаёт один ответ, а действует в цикле: сама выбирает инструменты (чтение файлов, запуск команд, тесты), анализирует их вывод и продолжает, пока не достигнет цели или не упрётся в лимит шагов.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: SWE-bench — официальный сайт и leaderboard, Introducing SWE-bench Verified — OpenAI
Частые вопросы
Какой бенчмарк считать главным при выборе модели для кода?
Почему SWE-bench Verified даёт числа выше, чем полный SWE-bench?
Что такое загрязнение обучающей выборки и почему это проблема?
Можно ли сравнивать проценты моделей из их пресс-релизов?
Заменяет ли высокий балл на бенчмарке тестирование на своих задачах?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.