← Últimos artículos
💻 computer science

Generating Complex Code Analyzers from Natural Language Questions

Este artículo presenta a Merlin, un sistema que combina modelos de lenguaje grandes con el marco de análisis de programas CodeQL mediante un enfoque novedoso de generación iterativa y autoprueba basado en RAG para responder eficazmente a preguntas complejas en lenguaje natural sobre grandes bases de código, mejorando significativamente la precisión y la eficiencia de las tareas de los desarrolladores.

Autores originales: Amirmohammad Nazari, Sadra Sabouri, Wang Bill Zhu, Robin Jia, Souti Chattopadhyay, Mukund Raghothaman

Publicado 2026-05-12
📖 4 min de lectura☕ Lectura para el café

Autores originales: Amirmohammad Nazari, Sadra Sabouri, Wang Bill Zhu, Robin Jia, Souti Chattopadhyay, Mukund Raghothaman

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Imagina que tienes una biblioteca masiva que contiene millones de libros (la base de código) escritos en un lenguaje muy específico y técnico. Tú eres el bibliotecario (el desarrollador) que necesita encontrar un patrón muy concreto: "Encuentra cada libro donde un personaje se presenta antes de nacer completamente".

Hacer esto a mano es imposible. Usar una barra de búsqueda simple para buscar la palabra "nacido" (como grep) es inútil porque pasa por alto el significado de la frase. Pedirle a un asistente de IA superinteligente (un Modelo de Lenguaje Grande o LLM) que lea toda la biblioteca y te diga la respuesta suele fallar porque la biblioteca es demasiado grande para que la IA la mantenga en su memoria de una sola vez, o porque la IA simplemente adivina mal.

Aquí es donde entra Merlin.

Merlin es un nuevo sistema que actúa como un traductor y detective potenciado. Se sitúa entre tú (que hablas inglés natural) y un motor de base de datos muy estricto y potente llamado CodeQL (que entiende la estructura técnica del código perfectamente).

Así es como funciona Merlin, usando analogías simples:

1. El Traductor (De lenguaje natural a CodeQL)

Le haces una pregunta a Merlin en inglés sencillo: "Muéstrame todos los lugares donde un constructor llama a un método que puede ser modificado más tarde".
Merlin no adivina la respuesta. En su lugar, traduce tu pregunta en una consulta precisa para la base de datos CodeQL. Piensa en CodeQL como una gigantesca hoja de cálculo estructurada de todo tu código. Merlin escribe un comando específico similar a SQL para pedirle a esa hoja de cálculo los datos exactos que necesitas.

2. La "Autoevaluación" (La prueba de fuego)

Aquí está la parte complicada: incluso si Merlin escribe una consulta que parece gramaticalmente correcta, podría seguir siendo lógicamente errónea. Podría pedir "manzanas" cuando tú querías decir "fruta", o podría ser demasiado exigente y no encontrar nada.

Para solucionar esto, Merlin tiene una función de autoevaluación. Antes de buscar en tu biblioteca masiva, le pide a la IA que cree un ejemplo pequeño y ficticio (un escenario "mock") para ver si la consulta funciona.

  • La Analogía: Imagina que estás probando un detector de metales. Antes de recorrer una ciudad entera, caminas por un pequeño jardín con unas pocas monedas enterradas. Si el detector de metales emite un pitido por las monedas, sabes que funciona. Si permanece en silencio, sabes que el detector está roto y lo reparas antes de perder tiempo buscando en la ciudad.
  • El Resultado: Si la consulta falla esta pequeña prueba, Merlin sabe que está rota y lo intenta de nuevo.

3. La "Consulta Asistida" (La linterna del detective)

A veces, la consulta es sintácticamente perfecta pero aún así no encuentra nada porque la IA malinterpretó un detalle sutil.
Merlin utiliza una técnica llamada Consultas Asistidas.

  • La Analogía: Imagina que buscas un tipo específico de pájaro en un bosque, pero tus prismáticos están empañados. En lugar de mirar más fuerte, le pides a un ayudante que grite todo lo que ve en los árboles en este momento ("Veo un pájaro rojo, un pájaro azul, una ardilla...").
  • Cómo ayuda: Al ver esta lista de "testigos", la IA se da cuenta: "¡Ah! Estaba buscando pájaros rojos, pero el bosque está lleno de pájaros azules. Necesito cambiar mi búsqueda". Esto ayuda a la IA a depurar su propia lógica y encontrar la respuesta correcta.

4. Los Resultados: Por qué importa

Los investigadores probaron Merlin frente a otras herramientas y desarrolladores humanos.

  • Encontrar la aguja: Merlin encontró casi todos los errores que las herramientas profesionales existentes encontraron, pero también encontró muchos más que las otras herramientas pasaron por alto.
  • Velocidad humana: En un estudio donde programadores reales tuvieron que encontrar y corregir errores:
    • Aquellos que usaban Merlin fueron 3,8 veces más precisos que aquellos que no lo usaban.
    • Terminaron las tareas un 31% más rápido.
  • El "Por qué": Sin Merlin, los programadores a menudo se quedaban atascados haciendo búsquedas manuales tediosas o confiaban en una IA que les daba respuestas incorrectas. Merlin les proporcionó una lista clara y auditable de ubicaciones y la lógica exacta utilizada para encontrarlas, para que pudieran confiar en los resultados.

Resumen

Merlin es como tener un traductor que habla tanto "inglés humano" como "lógica de máquina", un inspector de control de calidad que prueba las instrucciones antes de enviarlas y un detective que usa linternas para averiguar por qué falló una búsqueda. Permite a los desarrolladores hacer preguntas complejas sobre enormes bases de código y obtener respuestas fiables y precisas sin necesidad de ser expertos en el lenguaje de consulta técnica ellos mismos.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →