Cómo duplicamos la aceptación del código de IA enseñando a los modelos a pensar como los ingenieros de Roblox
Inteligencia de código con reconocimiento de dominios

Todo el mundo se entusiasma con el próximo modelo revolucionario de IA, pero el secreto para duplicar la eficacia de las herramientas internas de IA en Roblox no fue un nuevo modelo. Estaba integrado en la historia de nuestro código base. Al aprovechar años de código y revisiones de nuestros expertos en la materia, aumentamos las tasas de aceptación de las sugerencias de pull requests (PR) generadas por IA de aproximadamente un 30 % a más del 60 % en un conjunto de 10 000 PR y elevamos la precisión de evaluación de un proyecto de limpieza de código autónomo por encima del 90 % durante el mismo periodo.
Reducir la brecha de calidad de la IA
En todo el sector, entre el 50 % y el 60 % del tiempo de programación se dedica al mantenimiento de software.1 Roblox no es una excepción.
Sobre el papel, las tareas de mantenimiento repetitivas con requisitos bien definidos y un espacio de problemas limitado son candidatas perfectas para la automatización mediante IA. En la práctica, nuestros asistentes de IA tuvieron dificultades con la precisión de la evaluación y la aceptación por parte de los ingenieros.
En Roblox, el problema no es la capacidad; es el contexto. Un modelo genérico no ha vivido dos décadas de ingeniería en Roblox. No ha visto las 700 000 solicitudes de incorporación de cambios que hemos fusionado en los últimos tres años, ni ha aprendido de los 1,7 millones de comentarios de revisión de código en los que nuestros ingenieros más experimentados definen y defienden nuestros estándares de codificación.
Los asistentes de IA que ignoran este historial no logran ganarse la confianza de ingenieros de talla mundial. A pesar de que la mitad de los ingenieros de Roblox adoptan asistentes impulsados por IA, solo alrededor del 20 % de las sugerencias generadas por IA son aceptadas tras la revisión humana. Nuestra encuesta trimestral sobre productividad de ingeniería refleja esta realidad. Los ingenieros valoran el impacto de la IA en la productividad con un 4,02 sobre 5, pero solo otorgan un 3,09 sobre 5 a la confianza en la calidad del código generado por IA. En resumen, la IA ayuda, pero la confianza sigue siendo limitada, especialmente en el C++ heredado y en ámbitos de código más complejos.
Para cerrar esta brecha de contexto, invertimos en una plataforma de inteligencia de código agentiva construida a partir del historial de ingeniería propio de Roblox, alineada con ejemplos de expertos y validada mediante una evaluación rigurosa. Esta plataforma de inteligencia de código está diseñada no solo para generar sugerencias de código, sino para iterar con la profundidad institucional de un ingeniero de Roblox.
Aprendiendo de lo mejor de la experiencia de ingeniería de Roblox
El corpus de ingeniería de Roblox abarca casi 20 años de commits, documentos de diseño y telemetría de producción, un conjunto de datos excepcionalmente rico que captura cómo evolucionaron nuestros sistemas y cómo nuestros ingenieros resolvieron problemas difíciles.
La plataforma de inteligencia de código tiene como objetivo transformar esos datos en un grafo de conocimiento estructurado, lo que supone un importante reto de ingeniería. En un entorno masivo y poliglota, el código no es solo archivos de texto. Es una compleja red de objetivos de compilación, instanciaciones de plantillas C++ y dependencias dinámicas de Lua. No basta con analizar el texto; el sistema debe comprender las profundas relaciones semánticas ocultas en el propio código base, específicas de nuestra arquitectura única.
Otro reto es el rastreo y la alineación temporal. Para poder razonar a través de sistemas interconectados, un sistema de agentes debe vincular repositorios de código estáticos con telemetría de tiempo de ejecución ruidosa y mapear millones de señales de producción a la versión exacta del código que las generó, incluso mientras el código base sigue evolucionando.

Para resolver esto, nuestra estrategia consiste en unificar el control de versiones, la creación de gráficos y la telemetría en tiempo de ejecución en una representación híbrida simbólica-vectorial, conservando la sintaxis, la semántica y las relaciones. Esto permite que la plataforma de inteligencia de código comprenda el código tal y como lo hacen los ingenieros sénior: como sistemas interconectados moldeados por la lógica de diseño, las compensaciones y los datos de rendimiento, y no como archivos de texto aislados.
Extracción de señales de expertos mediante la alineación de ejemplos
La verdadera experiencia se esconde en los patrones, los comentarios de revisión, los historiales de confirmaciones y los sutiles modismos del código. La inteligencia de código saca a la luz esta sabiduría implícita a través de un motor de alineación de ejemplos, que permite a los ingenieros seleccionar ejemplos «de oro» de implementaciones ideales o revisar la lógica.
Anteriormente, un ingeniero con experiencia podía pasar horas cada semana revisando PR, señalando repetidamente el uso de una llamada FetchData bloqueante dentro de bucles de alta frecuencia, un patrón que parece semánticamente correcto pero que causa una latencia grave a la escala de Roblox. Si el experto está fuera de la ciudad o pasa por alto un error, es posible que su conocimiento no se aplique, y un antipatrón podría colarse en producción y causar una interrupción del servicio para nuestra comunidad.
Mediante el motor de alineación, ese ingeniero puede codificar su criterio en un ejemplo en lenguaje natural. Se trata de una definición estructurada que combina el patrón de código (el «qué») con el razonamiento (el «por qué»). Ahora, el sistema detecta automáticamente la llamada bloqueante, la señala, explica el riesgo de latencia y enlaza directamente con la documentación interna sobre buenas prácticas asíncronas:
El bloqueo dentro de un bucle de alta frecuencia provoca un aumento de la latencia y el agotamiento de subprocesos. Cuando se realiza una llamada `FetchData` en una tarea asíncrona, avisa al autor sobre la latencia y el agotamiento de subprocesos. `FetchData` está bien siempre que la tarea ya haya sido esperada. Proporciona un enlace directo a las mejores prácticas asíncronas en: internal_guidance/async. |
Esto codifica de manera efectiva el conocimiento que un ingeniero ha adquirido con esfuerzo a lo largo de años de experiencia. El sistema transforma un comentario de revisión puntual en una barrera de seguridad permanente y automatizada.
«Lo que hace que el motor de alineación sea tan potente no es solo que mejore la calidad del código, sino que amplía la tutoría. Codificamos la experiencia y la intuición de nuestros expertos más veteranos en la propia plataforma. Es como tener a un experto sénior en Roblox programando contigo todo el día, todos los días». —Tom Knych, director técnico sénior
Pero nuestros expertos también tienen mucho entre manos, y pedirles que recuerden y anoten todas sus ideas clave es, en el mejor de los casos, un proceso que lleva mucho tiempo y en el que se pierden datos. Entonces, ¿cómo les ayudamos a plasmar sus mejores consejos a lo largo de su trayectoria en Roblox?
Ya está ahí, escrito en sus meticulosos comentarios de revisión de código y plasmado en cada una de las PR que llegan a producción:

Canalizamos los comentarios históricos de relaciones públicas a través de un proceso que limpia y extrae los temas de mayor valor de la experiencia de Roblox. Inicialmente, los datos ruidosos están llenos de comentarios no procesables, como elogios o correcciones ortográficas, mientras que los comentarios valiosos suelen estar escritos en forma abreviada que depende en gran medida del contexto. Por ejemplo, una nota como «usa el nuevo patrón aquí» no tiene sentido sin comprender el archivo específico y las diferencias. El sistema debe traducir estas interacciones específicas en reglas reutilizables y generalizables.
Para resolver esto, empleamos un algoritmo de varias etapas que detecta temas recurrentes en miles de PR sin intervención humana. El sistema integra los comentarios históricos en un espacio vectorial, utiliza agrupamiento codicioso para encontrar vecindades de comentarios relacionados y aplica un refinamiento guiado por LLM para fusionarlos en patrones de alto valor.
El resultado es una lista clasificada de ejemplos candidatos (o aprendizajes), priorizados según la frecuencia con la que aparecen y la amplitud con la que son citados por diferentes revisores, junto con citas de los comentarios originales. A continuación, nuestros expertos en la materia revisan los candidatos, realizan modificaciones si es necesario y deciden cuáles ascender a la base de conocimientos como mejores prácticas fundamentales. Tras las primeras vistas previas de este proceso, los responsables de los repositorios se mostraron entusiasmados al ver que sus temas favoritos surgían como directrices clave y quisieron inscribir inmediatamente sus repositorios para su análisis.

El paso final es el agente de alineación, que ayuda tanto a los ingenieros humanos como a los agentes de codificación de IA al comparar todos los cambios con la base de conocimientos de referencia. Esta evaluación flexible se puede aplicar a lo largo de todo el ciclo de vida del desarrollo de software: en el momento de la codificación, en el momento de la fusión e incluso con un agente de mejora continua que acondiciona de forma autónoma el código base de Roblox a medida que crece la base de conocimientos.
Al utilizar este aprendizaje en contexto para anclar el comportamiento de la IA a los estándares de Roblox, observamos que las tasas de aprobación de un agente de codificación de IA en su conjunto de datos de evaluación de referencia pasaron del 84 % al 100 %. No solo estamos enseñando a la IA de Roblox a codificar; estamos enseñando a nuestra IA cómo piensan los ingenieros de Roblox.
Aprender de las señales negativas
Si bien la alineación con ejemplos ha elevado significativamente nuestro nivel de referencia en cuanto a la calidad del código, nuestro objetivo final es llegar al punto en que el primer borrador del código sugerido por la IA sea tan fiable como el trabajo de nuestros ingenieros más experimentados. Por eso utilizamos cada sugerencia de IA rechazada, cada refactorización fallida o cada fusión que provoca regresiones como una señal de gran valor que podemos retroalimentar al sistema. Esto crea un proceso para que los agentes mejoren continuamente y aprendan de sus errores.
Los resultados negativos pueden ser filtrados y etiquetados por expertos en la materia con un razonamiento detallado, una cadena de pensamiento y cualquier contexto adicional en torno al fallo. A continuación, estos datos se integran semánticamente y se indexan para su recuperación. Cuando nuestra plataforma de inteligencia de código propone un nuevo resultado, realiza una búsqueda semántica a través de estos datos, recordando errores pasados y los comentarios de los revisores para evitar repetirlos.
Este bucle de retroalimentación cerrado transforma cada revisión de código en datos de aprendizaje estructurados, refinando continuamente el comportamiento futuro de los agentes a través de un entrenamiento adversarial y basado en la crítica.
Creación de un marco de evaluación sólido
La confianza se construye a través de un comportamiento fiable y predecible que comienza con la medición. Hemos diseñado un sistema de evaluación específico para realizar un seguimiento del rendimiento de nuestros agentes a lo largo del tiempo.

El marco incluye:
- Puntos de referencia a nivel de tarea: precisión y recuperación en miles de actividades de ingeniería de Roblox, como refactorización, pruebas y tareas de corrección de errores.
- Herramientas de simulación: PR sintéticas con resultados deterministas para una puntuación reproducible.
- Paneles con participación humana: comparación por parte de expertos entre los resultados de la IA y las implementaciones de referencia.
- Marco de ejecución: al fusionar mejoras de agentes, las evaluaciones relevantes se paralelizan y se ejecutan como parte del conjunto de integración continua (CI) previo a la fusión, lo que proporciona a los ingenieros una gran confianza en sus cambios.
- Métricas longitudinales: regresiones posteriores a la fusión, frecuencia de reversión y cambios de latencia seguidos a lo largo de las versiones.
- Observabilidad generalizada: seguimiento y visualización automáticos de la actividad de los agentes para relacionarlos con el resto de Roblox e integrarlos sin problemas en la evaluación en línea y fuera de línea.
Este sistema genera una puntuación de calidad de los agentes que realiza un seguimiento preciso de los cambios de rendimiento a lo largo del tiempo, lo que permite comparaciones estandarizadas entre revisiones de agentes y versiones de modelos. Desde que introdujimos la alineación de ejemplos y un conjunto completo de evaluaciones, la tasa de aceptación de sugerencias de PR de un agente de inteligencia de código de Roblox mejoró de aproximadamente el 30 % a más del 60 % en un conjunto de 10 000 PR, lo que constituye un indicio temprano de un rendimiento fiable y alineado con el dominio. Mediante el mismo proceso, nuestro agente de limpieza de indicadores de funciones aumentó su precisión general del 46 % a más del 90 %.
El camino por delante: integrar el criterio experto en cada herramienta
Estamos mejorando la utilidad de nuestros sistemas internos consolidados mediante la creación de una capa de MCP y envoltorios de herramientas, y haciendo evolucionar la plataforma de inteligencia de código desde tareas específicas hacia un sistema que mantenga sana la base de código de Roblox.
Imaginamos un futuro de la ingeniería en el que el conocimiento históricamente difícil de escalar, como el contexto de tiempo de ejecución y el criterio experto, se integre en cada herramienta y flujo de trabajo. Cuando la inteligencia de código, la alineación con ejemplos y la observabilidad se unen, desbloqueamos una ventaja duradera: mejor calidad, entrega más rápida y una base de código más saludable y en constante evolución. El objetivo a largo plazo es dotar a cada ingeniero del poder de la memoria institucional, a cada equipo de la confianza para lanzar productos rápidamente y a cada ingeniero de la libertad para centrarse en la innovación, no en el mantenimiento.


