Devin vs Getzilla: бенчмарк на 10 задачах
Итог
В 10 мелких задачах в одном репозитории Devin и Getzilla сделали одинаково верный код. Devin работал примерно в 2,5 раза быстрее и написал чуть лучшие тесты. Getzilla добавил контроль, который этот бенчмарк не измеряет: точный grant на каждый push и pull request и проверку тестов мутантами.
Полный прогон тестов ещё идёт. Поэтому результаты предварительные.
Условия
Обе стороны получили одни и те же 10 задач (B1–B10) в одном приватном репозитории. На каждую задачу — один pull request.
- Репозиторий: приватная копия дерева Getzilla, 2 коммита, без тегов.
- Задачи: разбор дат, проверка аттестаций, распознавание записи в MCP, изоляция и покрытие тестов.
- Размер: 2–86 изменённых строк на pull request.
- Сторона Getzilla: Claude Code под управлением Getzilla (маршруты, точные grants, проверка мутантами).
- Сторона Devin: Devin с GitHub-приложением, усилие normal, сессии запускал владелец.
- Дата: 26 октября 2026.
- Верность: проходит ли тест одной стороны на фиксе другой?
- Регрессии: есть ли новые падения в полном наборе тестов относительно main?
- Раунды: сколько push понадобилось на pull request?
- Время от первого до последнего pull request.
CI-workflow репозитория не запустился на этих pull request. Те же тесты мы запустили локально.
Результаты
В 8 из 10 задач тесты каждой стороны прошли на фиксе другой. Исключения: хрупкий тест (B1) и реальная разница в политике (B2).
- B1, даты только ASCII (17 / 13 строк). Тест Devin проходит на фиксе Getzilla. Тест Getzilla падает на фиксе Devin: он читает приватную константу. Лучше: Devin.
- B2, строгие даты (78 / 86). Каждый падает на чужом фиксе: Devin блокирует битую дату, Getzilla отдаёт её человеку и сообщает о битых legacy-датах. Ничья.
- B3, тесты форм дат (19 / 18). Оба проходят везде. Ничья.
- B4, пробелы в идентификаторах (4 / 11). Одинаковый фикс в одну строку. Ничья.
- B5, очистка модулей (9 / 18). Оба проходят везде. Ничья.
- B6, тесты без зависимости от хоста (19 / 13). Новых падений нет. Ничья.
- B7, тест без bandit (34 / 27). Новых падений нет. Ничья.
- B8, даты в примерах (38 / 51). Оба падают на main, проходят на чужом фиксе. Ничья.
- B9, точный список чтений GitHub (35 / 33). Оба падают на main, проходят на чужом фиксе. Ничья.
- B10, серии подчёркиваний (10 / 18). Оба проходят на чужом фиксе. _{2,} у Getzilla лишнее. Лучше: Devin.
- Pull requests: 10 у Getzilla, 10 у Devin.
- Push: 11 у Getzilla (B2 понадобилась правка стиля), 10 у Devin.
- От первого до последнего pull request: 28 мин по одному у Getzilla, 11 мин параллельно у Devin.
- Полный набор на базе main: 11 падений, все от окружения, у обеих сторон одинаково.
11 падений на базе дают отсутствие истории git и тегов (6) и отсутствие bandit (5). Они заведены как issues Getzilla #202 и #198.
Выводы
На мелких задачах процесс Getzilla не дал код лучше. Он дал больше накладных расходов. Ценность Getzilla — в контроле, а этот бенчмарк контроль не проверяет.
- Скорость: он работал над 10 задачами параллельно.
- Тесты: они проверяют поведение, а не приватные имена. В B1 он ещё заметил похожие \d вне задачи.
- Аккуратность: один push на задачу, без дефектов стиля.
- B2: он сообщает и о битых legacy-датах. Devin пропускает их молча.
- Каждый тест проверен мутантом. Все мутанты убиты.
- Каждый push и pull request шёл через точный grant с ограничением по времени. Секреты не затронуты.
- Задачи писала сторона Getzilla, и она знала контекст. Это перекос в пользу Getzilla, но итог всё равно ничья.
- 10 мелких задач — маленькая выборка.
- Время старта сессий Devin не записано. Его время измерено только между pull requests.
- CI не запустился в приватном репозитории.
- Ревью отклоняет тесты, которые читают приватные имена вместо поведения.
- Lint ловит пропущенные пробелы вокруг операторов (#202).
- Независимые задачи идут параллельно по умолчанию.
Getzilla — AI-скорость и инженерная дисциплина: https://getzilla.app