Авторевью кода: архитектура системы Avito и внедрение на LLM в 2026 | AiManual
AiManual Logo Ai / Manual.
20 Апр 2026 Гайд

Автоматизация Code Review с помощью LLM: как Avito перестал тратить 40 часов в неделю на рутину

Как Avito обрабатывает 1000 PR в неделю с помощью LLM. Полный разбор архитектуры, пошаговое внедрение и нюансы, о которых молчат.

Когда ревью превращается в пытку

Представьте понедельник. Вас ждет 27 пул-реквестов. Половина - это правка опечаток в комментариях, треть - банальный рефакторинг, и только два PR действительно требуют вашего мозга. Вы тратите 40 минут на поиск контекста, еще 20 - на формальные замечания о нейминге, и к концу дня понимаете, что сделали ровно ноль полезных ревью. Знакомо? В Avito это было ежедневной рутиной для 300+ разработчиков.

В 2025 году команда Avito публично заявила: мы теряем 15% рабочего времени senior-инженеров на тривиальные ревью. При 1000 PR в неделю это 400+ человеко-часов. Месяц - 1600 часов. Год - почти 20 тысяч часов, или 10 senior-разработчиков, которые могли бы создавать продукт, а не ставить лайки на чужие коммиты.

Автоматизация не там, где вы думаете

Большинство команд начинают с тупых правил в linters: 'максимальная длина функции - 50 строк', 'используй camelCase'. Avito прошел этот этап в 2023. Проблема в том, что статические анализаторы ловят 20% проблем, а остальные 80% - это архитектурные решения, контекст бизнес-логики, нарушение абстракций. Именно здесь нужен мозг. Или его цифровая копия.

Архитектура, которая работает на 1000 PR в неделю

💡
Ключевой инсайт Avito: не пытайтесь заменить человека полностью. Автоматизируйте только те ревью, которые человек делает плохо - поиск шаблонных ошибок, проверка соглашений, базовые code smells.

Система построена на трех слоях:

  1. Сборщик контекста: агрегирует не только diff, но и связанные тикеты в Jira, историю изменений файла, документацию микросервиса. Без этого LLM слепа.
  2. Оркестратор задач: разбивает ревью на атомарные проверки - безопасность, перформанс, соглашения кода, архитектурные принципы. Каждую проверку выполняет отдельный агент.
  3. Мульти-модельный движок: здесь самое интересное. Avito использует кастомную модель, дообученную на 500k своих PR, но с важной фичей - роутинг запросов. Простые проверки идут на GPT-4o-mini (дешево), сложные архитектурные вопросы - на Claude-3.5-Sonnet, security - на специализированной модели типа DeepSeek-Coder-V2.
КомпонентТехнологии (2026)Зачем нужен
Event CollectorKafka, GitLab WebhooksЛовит создание PR, пуши в ветки, комментарии
Context BuilderPython, GraphQL к Jira/ConfluenceСобирает максимум контекста о задаче
Task RouterFastAPI, Redis для кешированияРешает, какую модель и промпт использовать
LLM OrchestratorOpenAI API, Anthropic API, vLLM для своих моделейВыполняет запросы, управляет тарификацией
Feedback LoopPostgreSQL, векторное хранилище QdrantСохраняет, какие замечания разработчики приняли/отклонили

1Что НЕ работает: наивный промптинг

Типичная ошибка - скормить diff в ChatGPT с просьбой 'сделай ревью'. Результат предсказуем: модель не знает ваших конвенций, не видит связанных файлов, не понимает бизнес-контекста. В Avito первые эксперименты дали 70% ложных срабатываний - разработчики просто игнорировали систему.

# КАК НЕ НАДО ДЕЛАТЬ
import openai

def naive_review(diff):
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[
            {"role": "system", "content": "You are a code reviewer"},
            {"role": "user", "content": f"Review this diff: {diff}"}
        ]
    )
    return response.choices[0].message.content

# Результат: общие фразы, пропущенные баги, раздражающие разработчиков

2Что работает: контекст - это все

Avito собирает 15 типов контекста для каждого PR:

  • Полная история изменений файла (последние 20 коммитов)
  • Связанный тикет в Jira с описанием бизнес-требования
  • Архитектурная документация сервиса (если ее нет, система помечает это как риск)
  • Результаты статических анализаторов (SonarQube, CodeClimate)
  • Тесты, связанные с изменяемым кодом
  • Комментарии из предыдущих ревью по похожим изменениям

Этот подход резко снижает процент ложных срабатываний - с 70% до 12%. Если интересно, как автоматизировать документирование архитектуры, чтобы ее понимали и люди, и ИИ, у меня есть подробный разбор в статье про архитектуру как код.

3Секретная деталь: двухэтапный промптинг

Вместо одного большого промпта система использует каскад:

  1. Анализ типа изменений: модель классифицирует PR - 'новый фич', 'багфикс', 'рефакторинг', 'обновление зависимостей'.
  2. Выбор специализированного промпта: для security-правок активируется чеклист OWASP Top 10 2026, для рефакторинга - проверка на сохранение поведения.

Например, для проверки безопасности используется такой промпт:

SYSTEM_PROMPT = """You are a security expert reviewing code for vulnerabilities.
You have access to: 
1. Full git diff of changes
2. List of changed dependencies with versions
3. This service's data classification (PII level 3)

Focus on:
- SQL injection in new query strings
- Hardcoded credentials or secrets
- Missing validation of user input
- Unsafe deserialization
- Cross-service authentication bypass

Return ONLY JSON with format: {"risk_level": "high|medium|low", "issues": [{"line": 42, "description": "...", "suggestion": "..."}]}
"""

Ключевой момент: модель возвращает структурированные данные, а не текст. Это позволяет автоматически создавать комментарии в GitLab/GitHub, помечать PR метками (security-risk), и даже блокировать мердж при высоком риске.

Пошаговый план внедрения (без бюджета Avito)

Вы не Avito с их 500k датасетом PR. Но внедрить рабочую систему можно за 2-4 недели с бюджетом $500/месяц.

1Начните с одного типа проверок

Не пытайтесь охватить все. Выберите самую частую и болезненную проблему в вашей команде. У 80% команд это:

  • Проверка нейминга переменных и функций
  • Поиск забытых console.log / debug-кода
  • Проверка формата коммитов
  • Обнаружение захардкоженных конфигов

Напишите простой GitHub Action, который на каждый PR:

name: Auto Code Review
on: [pull_request]

jobs:
  code-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run AI Code Review
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          # Собираем контекст
          git diff ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} > diff.txt
          
          # Запускаем Python скрипт с промптом
          python review.py diff.txt ${{ github.event.pull_request.number }}

2Собирайте feedback loop с первого дня

Каждый комментарий ИИ должен иметь кнопки 'Полезно' / 'Бесполезно'. Сохраняйте эти голоса. Через месяц у вас будет датасет из 200-500 размеченных примеров. Этого достаточно, чтобы fine-tune небольшую модель (например, CodeLlama-13B) под ваш кодстайл. У меня есть гайд, как это сделать без PhD в ML - QuillCode: разбор архитектуры своего кодинг-агента.

3Интегрируйте с существующим workflow

Разработчики ненавидят новые инструменты. Особенно если они требуют действий вне привычной среды. Ваша система должна:

  • Работать внутри GitHub/GitLab UI
  • Комментировать прямо в diff, а не присылать отчет в Slack
  • Иметь механизм suppress - возможность пометить 'это ложное срабатывание, не показывать в будущем'
  • Учитывать, что некоторые PR уже были просмотрены человеком (не спамить повторными комментариями)

Ошибки, которые сломают вашу систему

Самая частая ошибка - дать ИИ право вето на мердж. Это превратит разработчиков против системы. В Avito AI только рекомендует, а человек принимает решение. Исключение - критические security issues, но их список строго ограничен.

Другие грабли:

  • Игнорирование false positives: если 30% комментариев ИИ - мусор, разработчики перестанут читать все остальные 70%.
  • Отсутствие контекста: без доступа к Jira, Confluence, дизайн-документам ИИ будет делать элементарные ошибки.
  • Попытка заменить человека: ИИ хорош для шаблонных проверок, но бесполезен для оценки архитектурных решений, где нужен опыт конкретного домена.
  • Неучет стоимости: GPT-4 за $0.03/1K токенов на 1000 PR в неделю съест ваш бюджет. Начинайте с дешевых моделей (GPT-4o-mini, Claude Haiku).

Что дальше? Авторевью 2027

Avito уже экспериментирует с системой, которая не только комментирует, но и предлагает конкретные правки через Pull Request. ИИ анализирует замечания, делает локальный коммит с исправлениями, и создает новый PR с префиксом 'ai-fix:'. Разработчик просто мерджит его в основную ветку.

Еще более интересное направление - превентивный анализ. Система сканирует feature-ветки до создания PR и отправляет разработчику уведомление: 'В твоей ветке обнаружены потенциальные проблемы с безопасностью. Вот фикс, примени его перед созданием PR'.

Параллельно растет спрос на специалистов, которые умеют работать в симбиозе с ИИ. Если хотите прокачаться в этом направлении, посмотрите мой гайд Как стать незаменимым программистом с AI-ассистентами.

Стоит ли игра свеч?

После 6 месяцев эксплуатации системы Avito получил такие метрики:

  • Время на первое ревью уменьшилось с 8 часов до 45 минут
  • Количество security incidents, пропущенных на код-ревью, упало на 60%
  • Разработчики тратят на 30% меньше времени на формальные замечания
  • Но самое главное - senior-инженеры перестали ненавидеть понедельники

Система окупилась за 4 месяца просто за счет экономии времени разработчиков. И это без учета предотвращенных багов и security-дыр.

Если вы только начинаете - не копируйте Avito целиком. Начните с одного микросервиса, одной проверки, дешевой модели. Добавляйте контекст. Собирайте фидбэк. Через месяц у вас будет работающий прототип, через три - система, которая экономит часы каждый день.

А самое интересное впереди. Когда авторевью станет стандартом, следующая битва разгорится на уровне автотестирования. Кстати, если хотите подготовиться, у меня есть материал про автоматическую генерацию тестов с помощью RAG и LLM. Но это уже совсем другая история.

Подписаться на канал