Как переложить нагрузку по code review с разработчиков на LLM

Авито описала внутреннюю систему, которая снимает часть нагрузки по code review с разработчиков: ревью запускается комментарием ai_review в Stash, а замечания генерирует self-hosted LLM-пайплайн. Практическая ценность кейса — в раздельной архитектуре генерации, фильтрации и дедупликации комментариев.

В Авито создаётся около 1000 pull request в неделю, а в пиковые часы нагрузка доходит до 300 PR в час. Чтобы ускорить доставку кода и снизить переключение разработчиков на рутинные проверки, ревью запускают прямо в Stash: разработчик оставляет комментарий ai_review, событие попадает в Data Bus, Go-сервис забирает diff, метаданные и структуру репозитория, а затем передаёт задачу в Python ML Pipeline service.

Для ревью выбрали Qwen3-Coder-30B-Instruct-FP8: по бенчмарку MERA-RuCodeReviewer она заняла второе место после Gemini 2.5 Flash, но подходит для self-hosting. Это важно из-за безопасности кода и экономики: небольшие PR требуют около 2000 токенов, крупные — до 10 000, поэтому API-модель при такой нагрузке становится дорогой, а код не должен уходить во внешние системы.

ML-пайплайн работает в несколько этапов. Сначала diff аннотируют, потому что обычный git diff не даёт абсолютных номеров строк и полного контекста файла; затем RuleChecker генерирует потенциальные проблемы по классам безопасности, дефектов разработки, перфоманса и поддержки кода; ReviewFilter отсеивает false positives и нерелевантные замечания; CommentAggregator строит эмбеддинги через BAAI/bge-m3 и объединяет похожие комментарии при cosine similarity выше 0.85. Малые PR обрабатываются за 10–20 секунд, большие — примерно за 60 секунд; лимит параллельных ревью установлен на уровне 650, precision комментариев достиг 85%, общий outdated rate — 32%, а в Infra и DevOps — до 60%.

Коротко

  • Авито обрабатывает около 1000 PR в неделю, а в пиковые часы нагрузка на code review достигает 300 PR в час.
  • LLM-ревью запускается из Stash комментарием ai_review, после чего Go-сервис оркестрирует процесс через Data Bus и ML-сервис.
  • Для self-hosting выбрали Qwen3-Coder-30B-Instruct-FP8: код остаётся во внутреннем контуре, а API-расходы не растут на токеноёмких PR.
  • Пайплайн разделён на RuleChecker, ReviewFilter и CommentAggregator, чтобы сначала повысить полноту, затем точность и убрать дубли.
  • Текущие метрики: precision 85%, outdated rate 32% по всем репозиториям и до 60% в Infra и DevOps.

FAQ

Зачем Авито автоматизировала code review с помощью LLM, если разработчики всё равно должны контролировать результат?

Цель — снять рутинную нагрузку, ускорить прохождение PR и унифицировать качество комментариев. При этом процесс не отдают модели полностью: люди сохраняют контроль над ревью.

Почему для автоматического code review оказалось недостаточно обычного git diff без дополнительной подготовки?

Обычный git diff не содержит абсолютных номеров строк и полного состояния файла. Поэтому перед генерацией замечаний diff аннотируют и передают модели расширенный контекст.

Как система снижает риск лишних или галлюцинированных комментариев от LLM при ревью кода?

Генерация и валидация разделены: RuleChecker ищет максимум потенциальных проблем, а ReviewFilter отбрасывает нерелевантные замечания. Затем CommentAggregator удаляет семантические дубли.

Читайте также

  1. Hybrid RAG для бизнеса: умный поиск по документам без облака и утечки данных
  2. Как научить LLM исправлять код без лишних изменений
  3. Автоматизация процессов на open source: n8n и Ollama
  4. Как тимлид заменил десятки вкладок на файловую систему и Claude Code
  5. От хаоса к системе: как выстроить процесс Discovery (часть 1)
Ключевые инсайты из новости (по версии ChatGPT)
  • LLM-review как отдельный асинхронный сервис: Автоматическое code review лучше выносить в отдельный ML-сервис, а не выполнять внутри основного приложения. Оркестратор должен быстро принимать событие, фиксировать состояние задачи и передавать долгую генерацию в фон, чтобы не блокировать пользовательский интерфейс и RPC-соединения.
    [AI-инструменты для разработки]
Для получения полного доступа оформите подписку PubMag PRO.
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Инсайты автоматически генерируются с помощью искусственного интеллекта на основе текста статьи.
← Назад в лентуЧитать оригинал →
✈️ Подписывайтесь на мой Telegram-канал — там еще больше интересного про AdTech, MarTech, AI и многое другое!