O conteúdo deste site foi traduzido usando inteligência artificial (IA) ou tecnologia de tradução automática e pode conter erros.

Skip to content

Como dobramos a aceitação de código de IA ensinando modelos a pensar como os engenheiros da Roblox

Inteligência de código com reconhecimento de domínio

BuilderAI Figure 2.webp

Todos ficam entusiasmados com o próximo modelo revolucionário de IA, mas o segredo para dobrar a eficácia das ferramentas internas de IA na Roblox não foi um novo modelo. Ele estava incorporado na história de nossa base de código. Ao aproveitar anos de código e revisões de nossos especialistas na área, elevamos as taxas de aceitação de sugestões de pull requests (PRs) geradas por IA de aproximadamente 30% para mais de 60% em um conjunto de 10.000 PRs e aumentamos a precisão de avaliação de um projeto de limpeza de código autônomo para mais de 90% no mesmo período.

Preenchendo a lacuna de qualidade da IA

Em todo o setor, 50% a 60% do tempo de codificação é gasto com manutenção de software.1 A Roblox não é diferente. 

No papel, tarefas repetitivas de manutenção com requisitos bem definidos e um espaço de problemas restrito são candidatas perfeitas para a automação por IA. Na prática, nossos assistentes de IA enfrentaram dificuldades com a precisão da avaliação e a aceitação da engenharia.

Na Roblox, o problema não é a capacidade; é o contexto. Um modelo genérico não passou pelas duas décadas de engenharia da Roblox. Ele não viu as 700.000 solicitações de pull que mesclamos nos últimos três anos, nem aprendeu com os 1,7 milhão de comentários de revisão de código onde nossos engenheiros mais experientes definem e defendem nossos padrões de codificação.

Assistentes de IA que ignoram esse histórico não conseguem conquistar a confiança de engenheiros de nível mundial. Apesar de metade dos engenheiros da Roblox adotar assistentes movidos a IA, apenas cerca de 20% das sugestões geradas por IA são aceitas após revisão humana. Nossa pesquisa trimestral de produtividade de engenharia reflete essa realidade. Os engenheiros avaliam o impacto da IA na produtividade em 4,02 de 5, mas avaliam a confiança na qualidade do código da IA em apenas 3,09 de 5. Em resumo, a IA ajuda, mas a confiança permanece limitada, particularmente em C++ legado e em domínios de código mais complexos.

Para preencher essa lacuna de contexto, investimos em uma plataforma de inteligência de código autônoma, construída com o próprio histórico de engenharia da Roblox, alinhada a exemplos de especialistas e validada por meio de avaliação rigorosa. Essa plataforma de inteligência de código foi projetada não apenas para gerar sugestões de código, mas para iterar com a profundidade institucional de um engenheiro da Roblox.

Aprendendo com o melhor da experiência de engenharia da Roblox

O corpus de engenharia da Roblox abrange quase 20 anos de commits, documentos de design e telemetria de produção, um conjunto de dados excepcionalmente rico que captura como nossos sistemas evoluíram e como nossos engenheiros resolveram problemas complexos.

A plataforma de inteligência de código visa transformar esses dados em um gráfico de conhecimento estruturado, um desafio de engenharia significativo. Em um ambiente poliglota massivo, o código não é apenas arquivos de texto. É uma rede complexa de alvos de compilação, instanciações de modelos C++ e dependências dinâmicas de Lua. Simplesmente analisar o texto é insuficiente; o sistema deve compreender as relações semânticas profundas enterradas na própria base de código, específicas à nossa arquitetura única. 

Outro desafio é o rastreamento e o alinhamento temporal. Para raciocinar entre sistemas interconectados, um sistema agênico deve vincular repositórios de código estáticos a telemetria de tempo de execução ruidosa e mapear milhões de sinais de produção de volta à versão exata do código que os gerou, mesmo enquanto a base de código continua a evoluir.

undefined

Para resolver isso, nossa estratégia é unificar o controle de versão, a construção de gráficos e a telemetria de tempo de execução em uma representação híbrida simbólica-vetorial, preservando sintaxe, semântica e relações. Isso permite que a plataforma de inteligência de código compreenda o código da mesma forma que os engenheiros seniores: como sistemas interconectados moldados por fundamentos de design, compromissos e dados de desempenho, e não como arquivos de texto isolados.

Extraindo sinais de especialistas por meio do alinhamento de exemplos

A verdadeira expertise se esconde em padrões, comentários de revisão, históricos de commit e expressões sutis do código. A inteligência de código traz à tona essa sabedoria implícita por meio de um mecanismo de alinhamento de exemplos, que permite aos engenheiros selecionar exemplos “de ouro” de implementações ideais ou fundamentação de revisão.

Anteriormente, um engenheiro experiente poderia passar horas todas as semanas revisando PRs, sinalizando repetidamente o uso de uma chamada FetchData bloqueadora dentro de loops de alta frequência, um padrão que parece semanticamente correto, mas causa latência severa na escala da Roblox. Se o especialista estiver fora da cidade ou deixar passar um erro, seu conhecimento pode não ser aplicado, e um antipadrão poderia passar despercebido para a produção e causar uma interrupção para nossa comunidade.

Usando o mecanismo de alinhamento, esse engenheiro pode codificar seu julgamento em um exemplo em linguagem natural. Trata-se de uma definição estruturada que combina o padrão de código (o “o quê”) com o raciocínio (o “por quê”). Agora, o sistema detecta automaticamente a chamada bloqueante, a sinaliza, explica o risco de latência e vincula diretamente à documentação interna sobre as melhores práticas assíncronas:

O bloqueio dentro de um loop de alta frequência leva ao aumento da latência e ao esgotamento de threads. Quando uma chamada `FetchData` é feita em uma tarefa assíncrona, avise o autor sobre a latência e o esgotamento de threads. `FetchData` é aceitável desde que a tarefa já tenha sido aguardada. Forneça um link direto para as melhores práticas assíncronas em: internal_guidance/async.

Isso codifica efetivamente o conhecimento conquistado com muito esforço por um engenheiro ao longo de anos de experiência. O sistema transforma um comentário de revisão pontual em uma proteção permanente e automatizada.

“O que torna o mecanismo de alinhamento poderoso não é apenas o fato de ele elevar a qualidade do código — ele amplia a mentoria. Codificamos a experiência e a intuição de nossos especialistas mais experientes na própria plataforma. É como ter um especialista sênior em Roblox programando em dupla com você o dia todo, todos os dias.” —Tom Knych, Diretor Técnico Sênior

Mas nossos especialistas também têm muito o que fazer, e pedir que eles se lembrem e anotem todas as suas principais ideias é, na melhor das hipóteses, um processo demorado e propenso a perdas. Então, como podemos ajudá-los a registrar seus melhores conselhos ao longo de sua trajetória na Roblox?

Isso já está lá, escrito em seus meticulosos comentários de revisão de código e registrado em cada PR que chega à produção:

BuilderAI Figure 2.webp

Encaminhamos comentários históricos de RP por meio de um pipeline que limpa e extrai os temas de maior valor da experiência Roblox. Inicialmente, os dados ruidosos estão repletos de comentários não acionáveis, como elogios ou correções ortográficas, enquanto o feedback valioso é frequentemente escrito em linguagem abreviada que depende fortemente do contexto. Por exemplo, uma nota como “use o novo padrão aqui” não faz sentido sem a compreensão do arquivo específico e das diferenças. O sistema deve traduzir essas interações específicas em regras reutilizáveis e generalizáveis.

Para resolver isso, empregamos um algoritmo em múltiplas etapas que detecta temas recorrentes em milhares de PRs sem intervenção humana. O sistema incorpora comentários históricos em um espaço vetorial, usa agrupamento ganancioso para encontrar vizinhanças de feedback relacionado e aplica refinamento guiado por LLM para mesclá-los em padrões de alto valor.

O resultado é uma lista classificada de exemplos candidatos (ou aprendizados), priorizados pela frequência com que aparecem e pela amplitude com que são citados por diferentes revisores, acompanhada de citações aos comentários originais. Nossos especialistas na área então analisam os candidatos, fazem edições se necessário e decidem quais promover para a base de conhecimento como principais práticas recomendadas. Após as primeiras pré-visualizações desse fluxo de trabalho, os líderes de repositório ficaram entusiasmados ao ver seus tópicos favoritos surgirem como diretrizes-chave e imediatamente quiseram inscrever seus repositórios para análise.   

undefined

A etapa final é o agente de alinhamento, que auxilia tanto engenheiros humanos quanto agentes de codificação de IA, verificando todas as alterações em relação à base de conhecimento exemplar. Essa avaliação flexível pode ser aplicada ao longo de todo o ciclo de vida do desenvolvimento de software: no momento da codificação, no momento da fusão e até mesmo com um agente de melhoria contínua que aprimora autonomamente a base de código do Roblox à medida que a base de conhecimento cresce.  

Ao usar esse aprendizado contextual para alinhar o comportamento da IA aos padrões da Roblox, vimos a taxa de aprovação de um agente de codificação de IA em seu conjunto de dados de avaliação de referência saltar de 84% para 100%. Não estamos apenas ensinando a IA da Roblox a codificar; estamos ensinando à nossa IA como os engenheiros da Roblox pensam.

Aprendendo com sinais negativos

Embora o alinhamento exemplar tenha elevado significativamente nossa linha de base para a qualidade da base de código, nosso objetivo final é chegar ao ponto em que a primeira versão do código sugerido pela IA seja tão confiável quanto o trabalho de nossos engenheiros mais experientes. É por isso que usamos cada sugestão de IA rejeitada, refatoração malsucedida ou mesclagem que induz regressão como um sinal de alto valor que podemos realimentar no sistema. Isso cria um pipeline para que os agentes melhorem continuamente e aprendam com seus erros.

Resultados negativos podem ser filtrados e rotulados por especialistas na área com um raciocínio detalhado, uma cadeia de pensamento e qualquer contexto adicional em torno da falha. Esses dados são então incorporados semanticamente e indexados para recuperação. Quando nossa plataforma de inteligência de código propõe uma nova saída, ela realiza uma busca semântica por esses dados, relembrando erros passados e o feedback dos revisores para evitar repeti-los.

Esse ciclo fechado de feedback transforma cada revisão de código em dados de aprendizagem estruturados, refinando continuamente o comportamento futuro dos agentes por meio de treinamento adversarial e baseado em críticas.

Construindo uma Estrutura de Avaliação Robusta

A confiança é construída por meio de um comportamento confiável e previsível que começa com a medição. Projetamos um sistema de avaliação dedicado para acompanhar o desempenho de nossos agentes ao longo do tempo.

undefined

A estrutura inclui:

  • Benchmarks no nível da tarefa: Precisão e recall em milhares de atividades de engenharia do Roblox, como refatoração, testes e correção de bugs.
  • Arreios de simulação: PRs sintéticos com resultados determinísticos para pontuação reproduzível.
  • Painéis com participação humana: comparação especializada entre resultados de IA e implementações padrão-ouro.
  • Estrutura de execução: ao mesclar melhorias de agentes, as avaliações relevantes são paralelizadas e executadas como parte do conjunto de integração contínua (CI) pré-mesclagem, proporcionando aos engenheiros alta confiança em suas alterações. 
  • Métricas longitudinais: regressões pós-fusão, frequência de reversão e alterações de latência rastreadas ao longo das versões.
  • Observabilidade generalizada: rastreamento e visualização automáticos da atividade dos agentes para relacioná-los com o restante do Roblox e alimentar de forma integrada as avaliações online e offline.

Esse sistema produz uma pontuação de qualidade do agente que rastreia com precisão as mudanças de desempenho ao longo do tempo, permitindo comparações padronizadas entre revisões de agentes e versões de modelos. Desde que introduzimos o alinhamento exemplar e um conjunto completo de avaliações, a taxa de aceitação de sugestões de PR de um agente de inteligência de código do Roblox melhorou de aproximadamente 30% para mais de 60% em um conjunto de 10.000 PRs, uma indicação inicial de desempenho confiável e alinhado ao domínio. Por meio do mesmo processo, nosso agente de limpeza de sinalizadores de recursos aumentou sua precisão geral de 46% para mais de 90%.

O caminho a seguir: incorporando o julgamento de especialistas em todas as ferramentas 

Estamos aprimorando a utilidade de nossos sistemas internos estabelecidos ao construir uma camada de MCP e wrappers de ferramentas e evoluir a plataforma de inteligência de código de tarefas específicas para um sistema que mantém a base de código da Roblox saudável. 

Nossa visão é de um futuro da engenharia em que conhecimentos historicamente difíceis de escalar, como contexto de tempo de execução e julgamento especializado, sejam integrados a todas as ferramentas e fluxos de trabalho. Quando inteligência de código, alinhamento exemplar e observabilidade se unem, desbloqueamos uma vantagem duradoura: melhor qualidade, entrega mais rápida e uma base de código mais saudável e em evolução. O objetivo de longo prazo é dar a cada engenheiro o poder da memória institucional, a cada equipe a confiança para lançar produtos rapidamente e a cada engenheiro a liberdade de se concentrar na inovação, não na manutenção. 

1 Com base em dados do setor obtidos da Análise de Gastos com TI 2024 da Deloitte.