Qué es un agente de IA y qué puede hacer hoy (sin humo)
Un agente de IA no es un chatbot con otro nombre: qué es exactamente, qué hace bien hoy con casos reales, dónde falla y cómo saber si te sirve.
Qué mide SWE-bench: si un agente de IA resuelve issues reales de GitHub con un patch que pasa los tests, y por qué la contaminación falsea resultados.
INTELIGENCIA ARTIFICIAL · AGENTES · INGENIERÍA DE SOFTWARE
Qué se evalúa
Un parche real: aplicar cambios y pasar tests, como en un PR de GitHub.
Por qué duele
No basta con “generar código”: hay que encontrar el bug en un repo grande y no romper nada.
La trampa
Si el modelo ha visto la solución en entrenamiento, el “benchmark” se convierte en examen con chuleta.
Si una IA “arregla bugs”, la pregunta no es si escribe código bonito. Es si puede entregar un parche que pase CI en un proyecto real.
SWE-bench nació para eso: medir si un modelo (o un agente con herramientas) puede enfrentarse a issues de repos reales y producir un patch que funciona. No es glamour. Es ingeniería. Y por eso se ha convertido en el filtro rápido para distinguir demos impresionantes de sistemas que empiezan a ser útiles de verdad.
Si te interesa el salto de “copiloto” a sistemas que ejecutan tareas completas, este tema encaja perfecto con copilotos a agentes autónomos en empresas. SWE-bench es, literalmente, el tipo de prueba que te obliga a ser honesto con ese salto.
SWE-bench (Software Engineering Benchmark) es un conjunto de tareas construidas a partir de issues y pull requests reales de repositorios populares (sobre todo en Python). La idea es simple de explicar y difícil de ejecutar:
Te dan un repositorio en un estado concreto + la descripción del problema (issue). Tu sistema debe proponer un parche (un diff) que arregle el bug o implemente el cambio… y que pase los tests que definen “arreglado”.
Es un benchmark que suena aburrido hasta que te das cuenta de lo que implica: navegar una base de código, entender contexto, tocar lo mínimo, no introducir regresiones y, encima, encajar con el estilo del proyecto. O sea: el trabajo real.
La mayoría de demos de “IA programadora” se ven así: le pides una función, te devuelve algo razonable, lo pruebas con dos inputs y listo. Eso sirve para empezar… pero no te dice si el sistema puede actuar como ingeniero.
SWE-bench mete al modelo en el barro:
Por eso, cuando alguien presume de “mi agente arregla bugs”, la pregunta buena es: ¿en qué benchmark lo has probado? Y SWE-bench suele ser el primer nombre que aparece.
En términos prácticos, un intento típico en SWE-bench se parece a esto:
1) Contexto: issue + repo (código fuente) en un commit “antes del fix”.
2) Acción: el sistema genera un patch (diff) con cambios en archivos del repo.
3) Validación: se aplica el patch en un entorno reproducible y se ejecuta la batería de tests definida para esa tarea.
4) Resultado: pasa/falla. Sin interpretación humana, sin “me parece que está bien”.
Esto tiene una consecuencia incómoda (y muy sana): un modelo puede darte una explicación brillante… y aun así fallar estrepitosamente. SWE-bench no puntúa la retórica. Puntúa el patch.
La métrica principal suele ser directa: qué porcentaje de tareas quedan “resueltas”. Resuelta, en la práctica, significa que el patch propuesto hace que la tarea pase los tests requeridos.
Pero aquí viene el matiz importante: no todas las “variantes” de SWE-bench son iguales, y no todos los resultados son comparables si no miras la letra pequeña. En muchos leaderboards se separan conjuntos como:
Si estás montando un proyecto serio y quieres medirlo con cabeza, te va a ayudar pensar en métricas como si fueran KPIs de producto/ingeniería, no solo “una cifra bonita”. En esa línea, puedes apoyarte en KPIs para proyectos de IA: te obliga a definir qué es éxito, bajo qué condiciones y con qué riesgos.
Hay tres motivos por los que SWE-bench suele bajar a tierra expectativas:
Muchos bugs no se arreglan con una idea genial, sino con una investigación paciente: seguir el rastro, entender dónde se rompe, identificar el caso límite. Un agente necesita buenas estrategias de exploración: “¿qué archivos tocar?”, “¿qué función controla esto?”, “¿qué test está fallando y por qué?”
Estilo, arquitectura, convenciones, dependencias, compatibilidad hacia atrás… En repos grandes, un cambio “lógico” puede ser inaceptable porque rompe una abstracción o contradice decisiones previas. SWE-bench te castiga justo ahí: tocar algo que funciona puede matar el score aunque tu solución “tenga sentido”.
El mundo real tiene CI, entornos, versiones y tests que fallan por detalles tontos. SWE-bench replica esa sensación: no premia “casi”. Premia “pasa”.
Ahora el tema delicado: SWE-bench se construye con material público (issues/PRs). Eso es buenísimo para realismo… y peligrosísimo para evaluación, porque los modelos modernos se entrenan con muchísimo contenido público.
¿Qué significa “contaminación” aquí?
Que el modelo (o sus datos de entrenamiento) ya haya visto el issue, el PR, el diff o discusiones que prácticamente contienen la solución. En ese caso, el benchmark mide memoria/recuperación… no capacidad de ingeniería.
¿Cómo se nota? Señales típicas:
¿Qué se puede hacer para mitigarla (si estás evaluando tú)?
Y ojo: la contaminación no solo afecta a benchmarks. También afecta a la seguridad y al comportamiento de agentes con herramientas. Si estás construyendo agentes que interactúan con sistemas reales, te conviene tener muy presentes riesgos y controles. Un buen puente conceptual es Model Context Protocol (MCP), porque te obliga a pensar qué herramientas expones, con qué permisos y con qué trazabilidad.
Además de la contaminación, hay trucos más mundanos que inflan números si no vigilas:
Por eso, cuando veas un resultado, intenta hacerte esta pregunta simple: ¿qué evidencia tengo de que este sistema entiende y diagnostica, y no solo adivina?
Si tu objetivo es mejorar un agente (no ganar un leaderboard), aquí tienes una forma práctica de usar SWE-bench sin autoengañarte:
Checklist rápido
• Separa “dev set” y “eval set” como si fuera sagrado (porque lo es).
• Registra trazas: qué archivos leyó, qué comandos ejecutó, qué hipótesis probó.
• Mide más que pass/fail: tiempo, número de iteraciones, cambios tocados, estabilidad.
• Si puedes, añade un set interno propio para detectar contaminación o sobreajuste.
La idea es sencilla: SWE-bench es un termómetro. Te dice “tienes fiebre” o “no”. Pero para curarte necesitas diagnóstico: trazas, patrones de fallo, y mejoras en la estrategia del agente (búsqueda, test-driven, minimización del diff, etc.).
SWE-bench se ha vuelto popular porque hace una cosa que nos cuesta: poner una prueba dura donde la demo se acaba. Y eso es sano. Si un sistema saca buen score con reglas claras, entorno reproducible y poca contaminación, probablemente hay capacidad real ahí.
Pero el número, por sí solo, no te compra confianza. La confianza viene de entender qué mide, cómo se mide, y qué trampas pueden falsearlo. Si te quedas con eso, ya estás por delante de la mitad del hype.
Evalúa si un modelo o agente puede tomar un repositorio real con un issue descrito y producir un patch que pase los tests que definen el problema como resuelto, igual que ocurriría con un pull request real en GitHub.
Porque el bug está escondido entre cientos o miles de archivos, hay que encontrarlo, entender las convenciones del repo, no romper tests existentes y superar una validación automática que no admite casi: o el patch pasa los tests, o falla.
Ocurre cuando el modelo ya ha visto en su entrenamiento el issue, el PR o el diff que resuelve la tarea, de modo que el benchmark mide memoria en vez de capacidad real de ingeniería, inflando artificialmente el score obtenido.
Separando tareas por fecha de creación respecto al cutoff de entrenamiento del modelo, deduplicando ejemplos parecidos si entrenas, usando un holdout privado con issues propios, y auditando las trazas de búsqueda en vez de aceptar el diff como magia.
Un agente de IA no es un chatbot con otro nombre: qué es exactamente, qué hace bien hoy con casos reales, dónde falla y cómo saber si te sirve.
Por qué “más parámetros” no gana si faltan tokens. Resumen claro del paper de entrenamiento compute-óptimo y sus implicaciones hoy.
Lo bueno, lo malo y lo peligroso: feedback loops, degradación por recursividad y reglas para usar sintéticos sin cargarte el modelo.