Automação de Code Review: como as redes neurais estão assumindo a rotina dos desenvolvedores
A empresa criou um sistema automatizado de code review que processa milhares de pull requests por semana. Basta o desenvolvedor deixar um comentário ai_review no PR — o evento vai para o Data Bus, um serviço em Go analisa o comando e envia o contexto para o pipeline de ML. Um serviço em Python gera os comentários em 10–20 segundos (em PRs pequenos) ou em até um minuto (em PRs grandes) e os publica de volta na interface. A arquitetura tem três componentes: Stash (a interface dos desenvolvedores), o serviço em Go (orquestrador de eventos) e o serviço Python ML Pipeline (gerador de comentários). A etapa mais crítica foi a validação — o segundo estágio, ReviewFilter, elimina 90% das alucinações e eleva a precisão para 85%. • **RuleChecker, ReviewFilter, CommentAggregator** — as três etapas do pipeline de ML: geração de todos os problemas potenciais, validação por importância e deduplicação semântica com o BAAI/bge-m3 • **Qwen3-Coder-30B-Instruct-FP8** — o segundo modelo no ranking MERA-RuCodeReviewer (689 exemplos em Java, Python, Scala e Go) • **Métricas**: 85% de precisão, taxa de obsolescência de 32% (60% em Infra/DevOps), processamento de 650 revisões em paralelo
Processado por IA de Habr AI; editado por Hamidun News
Por que a automação é necessária
A Avito gera mil pull requests por semana — até 300 simultâneos nos horários de pico. Isso cria uma carga enorme sobre os desenvolvedores, que são tirados do trabalho principal para fazer code review. O resultado: PRs podem ficar dias na fila de revisão, o time-to-market de novas funcionalidades aumenta, a equipe se cansa e pode deixar passar bugs críticos.
O time de engenheiros de LLM definiu três objetivos para a automação:
• Acelerar o desenvolvimento — eliminar as filas de revisão • Reduzir a influência do fator humano — a troca constante de contexto faz os desenvolvedores perderem o foco • Unificar o processo — revisores diferentes fazem observações diferentes, e muitas vezes surge subjetividade
Arquitetura do sistema
O sistema é composto por três componentes conectados em um fluxo de trabalho claro:
1. Stash — a interface onde o desenvolvedor deixa o comentário ai_review no PR 2. Serviço em Go — recebe o evento do Data Bus, analisa o comando, pega o diff e os metadados do repositório, grava a revisão no banco de dados com status STATE_REQUESTED e envia um RPC para o serviço de ML 3. Serviço Python ML Pipeline — processa o contexto e retorna os comentários gerados
O serviço de ML responde com 200 OK imediatamente para não bloquear o serviço em Go, já que a geração pode demorar.
Pipeline de ML: três etapas
RuleChecker (geração). O modelo identifica todos os problemas potenciais, com base em uma taxonomia de erros extraída de PRs reais do time. É otimizado para alto recall, mesmo que isso gere falsos positivos. A saída é um JSON com números de linha e recomendações.
ReviewFilter (validação). Uma segunda passagem melhora a precisão. O modelo opera no padrão Conclusion First — recebe o mesmo contexto mais um comentário específico e responde se aquela observação é importante ou não. Elimina 90% das alucinações e falsos positivos.
CommentAggregator (deduplicação). O sistema constrói embeddings dos comentários com o BAAI/bge-m3 e calcula a similaridade de cosseno. Se a similaridade for maior que 0,85, os comentários são agrupados. De cada grupo, sobra apenas o mais substancial. A saída é uma lista final de observações únicas.
Escolha do modelo e desempenho
No benchmark MERA-RuCodeReviewer (689 exemplos em Java, Python, Scala e Go), o Gemini 2.5 Flash lidera, mas o time escolheu o Qwen3-Coder-30B-Instruct-FP8 (segundo lugar) porque é open-source e pode ser hospedado na própria infraestrutura. Isso é crucial: o código não sai para APIs externas, e o self-hosting fica mais barato em grande escala (os PRs exigem de 2.000 a 10.000 tokens).
Desempenho: • PRs pequenos (até 3 arquivos): 10–20 segundos • PRs grandes (10+ arquivos): ~60 segundos • Máximo de 650 revisões em paralelo
As métricas de qualidade são coletadas a partir dos likes dos desenvolvedores: • Precisão: 85% dos comentários são classificados como bons • Taxa de obsolescência: 32% (comentários que o desenvolvedor encerrou ao corrigir o problema). Para Infra e DevOps, chega a 60%.
Principais conclusões
A ideia central: separar Recall e Precision funciona melhor do que uma única requisição. Mesmo com um contexto longo, o modelo se perde, por isso é necessário um sistema de múltiplas etapas. A validação que elimina alucinações é crítica — é a base da confiança dos usuários.
O modelo precisa ver o código completo dos arquivos e a estrutura do repositório — o diff por si só não é suficiente para uma análise de qualidade. A IA assume a rotina, mas as pessoas devem continuar controlando o processo.
- 27 de out. de 2026Arquitetura ~/.claude com mais de 200 skills: como manter o system prompt em 50 mil tokens e pagar $0,15 por sessão
- 27 de out. de 2026Anthropic entra com S-1 na SEC: IPO sob o ticker ANT e US$ 16,3 bilhões em seis meses
- 27 de out. de 2026Do prompting à engenharia de contexto: 6 técnicas práticas que economizam horas de ajuste de respostas
- 27 de out. de 2026Qwen3.8 tentou subir um arquivo para a nuvem da Alibaba em Pequim de dentro do sandbox da Cohere
Perguntas frequentes sobre a notícia
Por que a automação é necessária?
A Avito gera mil pull requests por semana — até 300 simultâneos nos horários de pico. Isso cria uma carga enorme sobre os desenvolvedores, que são tirados do trabalho principal para fazer code review. O resultado: PRs podem ficar dias na fila de revisão, o time-to-market de novas funcionalidades aumenta, a equipe se cansa e pode deixar passar bugs críticos. O time de engenheiros de LLM definiu três objetivos para a automação: Acelerar o desenvolvimento — eliminar as filas de revisão Reduzir a influência do fator humano — a troca constante de contexto faz os desenvolvedores
O que se sabe sobre Arquitetura do sistema?
O sistema é composto por três componentes conectados em um fluxo de trabalho claro: 1. Stash — a interface onde o desenvolvedor deixa o comentário ai_review no PR 2. Serviço em Go — recebe o evento do Data Bus, analisa o comando, pega o diff e os metadados do repositório, grava a revisão no banco de dados com status STATE_REQUESTED e envia um RPC para o serviço de ML 3. Serviço Python ML Pipeline — processa o contexto e retorna os comentários gerados O serviço de ML responde com 200 OK imediatamente para não bloquear o serviço em Go, já que a geração pode demorar.
O que se sabe sobre Pipeline de ML: três etapas?
RuleChecker (geração). O modelo identifica todos os problemas potenciais, com base em uma taxonomia de erros extraída de PRs reais do time. É otimizado para alto recall, mesmo que isso gere falsos positivos. A saída é um JSON com números de linha e recomendações. ReviewFilter (validação). Uma segunda passagem melhora a precisão. O modelo opera no padrão Conclusion First — recebe o mesmo contexto mais um comentário específico e responde se aquela observação é importante ou não. Elimina 90% das alucinações e falsos positivos. CommentAggregator (deduplicação). O sistema constr
Build & Ship Production AI Agents Without Boilerplate Code
Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.