Comparing AI Coding Agents: A Task-Stratified Analysis of Pull Request Acceptance (Рубрика AI4SDLC)
Прочитал этот paper, который показывает почему ranking агентов без учета типа задачи не очень и полезен. Эта статья показывает, что правильным ответом на привычный вопрос "какой coding agent лучший?" является it depends:) Для своего анализа они взяли набор PR с GitHub под названием AIDev, про который я рассказывал недавно. А дальше они анализировали merge rate, но не просто общий, а учитывая, что один агент может чаще получать документационные задачи, другой - багфиксы и features. В итоге, их нельзя сравнивать как будто они получали одинаковую нагрузку.
Саму работу выполнили Giovanni Pinna, Jingzhi Gong, David Williams и Federica Sarro из University of Trieste, King's College London и University College London. Сама статья была принята в MSR '26 Mining Challenge Track и по сути это наблюдательное исследование, а не эксперимент с рандомизацией, поэтому здесь мы можем увидеть корреляции, а не причинно-следственные связи.
Методология выглядела так 1️⃣ Авторы взяли подмжество AIDev-POP, то есть AI-generated pull request'ы из GitHub-репозиториев с 100+ звезд. Из 33 596 PR оставили 7 156: только закрытые PR, только MIT/Apache-2.0 репозитории, и только те PR, где перед закрытием был хотя бы один ревью или коммент не от автора. Успех определили как acceptance rate: PR был merged или не был merged. 2️⃣ Дальше началось самое полезное. Авторы не просто сравнили OpenAI Codex, GitHub Copilot, Devin, Cursor и Claude Code одной таблицей. Они разложили PR по типам задач: docs, feat, fix, test, refactor, chore, build, ci, perf и т.д. Потом отдельно смотрели динамику по неделям, task distribution и pairwise-сравнения внутри типов задач.
Какие получились результаты 1️⃣ Глобальные цифры выглядят соблазнительно: OpenAI Codex - 77.9% acceptance, Cursor - 74.5%, Claude Code - 71.9%, GitHub Copilot - 68.0%, Devin - 61.6%. Правда, без контекста эту таблицу правильно не прочитать. У Claude Code в выборке всего 139 PR, у Devin - 2 252, у Copilot - 2 194. Нагрузки тоже разные: Copilot чаще сидит в fix-задачах, Claude Code - в features, Cursor имеет более короткий концентрированный период наблюдения. 2️⃣ Главный результат для меня не в победителе, а в масштабе вмешивающегося фактора (confounding variable). Тип задачи дает разницу сильнее, чем многие различия между агентами. Chore-задачи в их выборке принимают в 84.0% случаев, perf - в 55.4%; между категориями получается 29 п.п. Среди массовых задач docs дают 82.1%, а features - 66.1%. То есть агент, которому чаще достаются docs, может выглядеть "умнее" просто потому, что у него легче workload. 3️⃣ По временной динамике заметнее всего Devin: авторы видят у него единственный устойчивый положительный тренд, +0.77% acceptance rate в неделю за 32 активные недели, примерно от 60% к 80%. Но сами же осторожно пишут, что причинность отсюда не следует: это может быть улучшение модели, обучение пользователей, изменение типов задач, концентрация в других репозиториях или все вместе. 4️⃣ По task-stratified сравнению картина становится менее удобной для leaderboard-а. Codex стабильно силен по категориям: от 59.6% до 88.6%, особенно fix и refactor. Claude Code лидирует в docs и features, но часть этих клеток маленькая, поэтому обобщать рискованно. Cursor хорошо выглядит в fix/test-сценариях. Значимые различия после Bonferroni-коррекции (учета множественных сравнений) в основном всплывают именно в fix и feat, а не во всех задачах подряд.
Отдельно стоит обсудить ограничения Acceptance rate - это не качество кода. Merged PR может принести баг, техдолг или security issue. Public GitHub не равен enterprise-разработке. Репозитории с разной культурой review могут принимать или отклонять PR по своим правилам. Repository-level clustering в Chi-square тестах явно не моделируется. Task labels приходят из AIDev pipeline, а не из ручной разметки каждого PR. И выборки по агентам несимметричны по времени и размеру. Но именно поэтому paper полезная. Она учит не выбирать агента по общей красивой цифре, а строить метрики внедрения правильно.
Если команда внедряет coding agents, я бы забрал отсюда практическое правило: любая внутренняя аналитика должна быть разбита по задачам (task-stratified). Сравнивайте не "агент A против агента B", а docs к docs, bugfix к bugfix, tests к tests, feature к feature. Отдельно смотрите review load, число комментариев, размер diff, CI, rollback, static analysis, найденные дефекты и поддержку после merge.
#AI #AI4SDLC #Engineering #Research #Agents #Software #Evals