Senior SWE-Bench: benchmark open source para evaluar agentes al nivel de ingenieros senior
(senior-swe-bench.snorkel.ai)- Senior SWE-Bench es un benchmark que busca evaluar a los agentes de código no con tareas junior excesivamente ordenadas, sino de una forma más cercana al desarrollo de funciones, corrección de bugs y problemas de rendimiento que normalmente asume un ingeniero senior
- Las tareas de funcionalidad usan instrucciones realistas que se leen como mensajes en lenguaje natural, y aumentan la confiabilidad de la evaluación con un agente de validación que crea pruebas de comportamiento según la solución enviada
- Las tareas de bugs se toman de PR que parten de reportes de usuarios y exigen investigación en tiempo de ejecución como levantar servicios, revisar logs, usar datos de profiling y seguir pasos de reproducción
- La puntuación evalúa un tasteful solve combinando consistencia en tiempo de ejecución con métricas de calidad basadas en las prácticas del codebase, y también puede validar prácticas importantes aunque no estén mencionadas en las instrucciones
- Incluso Claude Opus 4.8, el mejor modelo del leaderboard, apenas logra pass@1 de 24.0% con la configuración Mini-SWE-Agent max, lo que muestra que incluso los modelos punteros fallan en más del 75% de los casos al resolver problemas con la consistencia y el criterio esperados de un senior
Diseño de tareas más cercano a PR reales
- Senior SWE-Bench es un benchmark que busca reducir la brecha entre el uso real de los agentes de código como si fueran ingenieros senior y una evaluación que todavía suele parecerse a tareas para juniors
- Las tareas se toman de PR de varios repositorios, desde librerías hasta aplicaciones con múltiples servicios, y se enfocan en PR creados por ingenieros que escribieron cientos de commits en cada repositorio
- Los tipos principales de tareas se dividen en dos ramas
- PR de funcionalidad con múltiples pasos y que abarcan varios stacks
- PR de bugs y rendimiento que requirieron una investigación importante en tiempo de ejecución
- Hay 50 tareas públicas y otras 50 privadas
- Algunos repositorios incluidos son los siguientes
- posthog 8
- electric 6
- gitea 6
- better-auth 4
- harbor 4
- además de otros 7 repositorios
Tareas de funcionalidad: instrucciones más cercanas al lenguaje natural
- Las tareas de funcionalidad usan instrucciones realistas que se leen como mensajes en lenguaje natural, en lugar de requisitos excesivamente desglosados
- Para evaluar este tipo de tareas de forma estable, introducen un agente de validación (validation agent)
- usa recetas diseñadas por expertos
- escribe pruebas de comportamiento de acuerdo con la solución enviada
- Las instrucciones reflejan una comunicación natural con agentes, y la longitud mediana es de 31% de la de SWE-Bench Pro
Tareas de bugs: de reportes de usuarios a investigación en runtime
- Las tareas de bugs reflejan reportes de usuarios complejos, y exigen más investigación de causa raíz y reproducción que una simple corrección de código
- Las tareas pueden incluir trabajos como los siguientes
- iniciar servicios
- depurar problemas sutiles en runtime
- revisar logs
- usar datos de profiling
- seguir pasos de reproducción
- Su origen son PR cuya resolución requirió una investigación considerable en tiempo de ejecución
Criterios de evaluación: medir consistencia y taste al mismo tiempo
- Senior SWE-Bench califica el tasteful solve combinando pruebas de consistencia en runtime con varias métricas de calidad
- Las métricas de calidad se basan en prácticas observadas del codebase
- Los verificadores y el agente de validación pueden probar prácticas importantes del codebase aunque no estén escritas en las instrucciones
- La condición de solve en el leaderboard incluye los siguientes puntos
- Verifiers pass
- Validation pass
- Rubric > 0.5
- Bloat < 2×
- Practice > 2/5
- Rel. taste > 2/5
Leaderboard: incluso el mejor modelo tiene un pass@1 bajo
- El leaderboard muestra los resultados según Tasteful solve rate(pass@1)
- Los principales resultados son los siguientes
- Claude Opus 4.8, Mini-SWE-Agent max: 24.0%
- Claude Sonnet 5, Mini-SWE-Agent max: 19.4%
- GPT-5.5, Mini-SWE-Agent xhigh: 16.0%
- Claude Opus 4.7, Mini-SWE-Agent max: 14.1%
- GPT-5.4, Mini-SWE-Agent xhigh: 14.0%
- GLM-5.2, Mini-SWE-Agent max: 12.5%
- Kimi K2.6, Mini-SWE-Agent default: 8.2%
- Claude Sonnet 4.6, Mini-SWE-Agent high: 8.2%
- Gemini 3.1 Pro, Mini-SWE-Agent high: 6.1%
- Gemini 3.5 Flash, Mini-SWE-Agent medium: 3.0%
- Incluso los modelos de frontera más fuertes no logran completar más del 75% de las tareas que exigen la consistencia y el criterio esperados de un ingeniero senior
Alcance de las tareas y características del benchmark
- Los tipos de tarea se indican como feature, bug, perf y migrat
- Los stacks incluyen Py Svc, Elixir, Go, SQL, TS Lib, Py Lib, Rust, TS FE y otros
- Las tareas de funcionalidad pueden abarcar varios servicios y tocan en promedio 11 archivos por tarea
- Están diseñadas para exigir flujos de trabajo largos, por lo que incluso los agentes más fuertes necesitan cientos de pasos
- El SLOC y la cantidad de archivos de las soluciones de referencia se miden de la misma forma en los tres benchmarks
- La longitud de las instrucciones excluye el boilerplate del harness
- El número de tokens y de pasos de otros benchmarks se basa en las métricas reportadas por cada uno
1 comentarios
Opiniones de Hacker News
Por lo que vi en Twitter, en una clase de machine learning de Tsinghua University hubo un examen en el que les pidieron a los estudiantes crear cuestionarios en los que fallara la mayor cantidad posible de LLM.
Me pregunto qué tal sería crear un benchmark de este tipo y asignarle puntajes ELO. Los modelos se enfrentarían entre sí proponiendo preguntas, bugs o implementaciones incompletas, y el rival tendría que responder, corregir o completar.
https://en.wikipedia.org/wiki/Generative_adversarial_network
En una clase se podría poner la regla de que al menos un LLM debe poder responder, pero no sé cómo resolverlo en un duelo uno contra uno.
Me pregunto cómo mantendrá este benchmark su relevancia con el paso del tiempo.
Si el benchmark consiste en implementar funcionalidades de proyectos open source, es posible que los LLM ya tengan esos cambios en sus datos de entrenamiento y puedan dar una respuesta igual o ligeramente modificada.
Por el contrario, si solo se incluyen en el benchmark cambios de código posteriores al corte de conocimiento del modelo, los problemas de los momentos T y T+1 serán distintos, reduciendo la comparabilidad a lo largo del tiempo.
Si fuera Staff SWE Bench, creo que el LLM empezaría por cuestionar si realmente debería hacer eso, pondría en duda todo el proyecto y se negaría a fusionar el código, aunque aceptaría encantado borrarlo.
Creo que un LLM también podría hacerlo bien, quizá incluso mejor que nosotros, pero tendría que entrenarse específicamente para eso. El problema es que no se me ocurre de dónde sacar esos datos de entrenamiento.
Esto explica por qué siempre he sentido que Opus 4.8 está muy por delante de GPT 5.5. Es realmente bueno recibiendo requisitos incompletos y rellenando los huecos de una forma razonable para el proyecto.
Creo que ninguno de los dos métodos de evaluación incentiva lo suficiente a los modelos a cuestionar todos los supuestos y hacer preguntas. Quizá sea porque a los usuarios les puede molestar, pero creo que esa etapa es casi indispensable.
Toda la familia GPT-5 fue muy meticulosa, lo que me resultó útil para revisiones de código y matemáticas. Es importante para mi trabajo, pero parece estorbar en el código “estético”; por ejemplo, tiende a defenderse incluso contra casos límite muy poco probables.
También parece haber un compromiso entre flexibilidad y seguimiento de instrucciones. En mi experiencia, Opus a veces ignora instrucciones pero rellena mejor los huecos, mientras que GPT-5.5 sigue mejor las instrucciones, pero por eso mismo parece más rígido.
En mi experiencia, Opus no estuvo abrumadoramente por delante ni fue claramente mejor. En todo caso, GPT 5.5 tiene Instant, Medium, High, Extra High y Pro; en la tabla parece que lo comparan con Extra High, así que me pregunto si no deberían compararlo con Pro.
Hay tareas específicas en las que Opus es mejor, como desarrollo frontend y diseño, pero fuera de eso 5.5 simplemente lo supera por mucho.
4.8 también necesita más de un prompt a veces, pero la calidad de salida es mucho mayor y aporta más insights.
Eso sí, Fable 5 es otra cosa.
La mejor tasa de resolución actual es 24% con Opus 4.8; ¿qué puntaje debería obtener un humano competente?
Por otro lado, me pregunto si el modelo obtendría una puntuación más alta si pudiera dirigir humanos a voluntad.
Creo que compararlo con una persona acostumbrada a trabajar en el producto es justo.
Me interesa más ver cómo le va a Fable.
El valor de un rol senior está en aplicar soluciones y estrategias conocidas a problemas nuevos. No sé si un benchmark que nunca cambia puede seguir siendo un desafío nuevo por mucho tiempo.
Un buen benchmark debería usar todo TRIZ para generar primero una enorme masa de problemas y luego ver si la AI infiere la solución óptima.
Me alegra ver un nuevo benchmark público de Snorkel. Están haciendo cosas bastante sofisticadas por allá.
Es interesante que Sonnet 5 esté bastante cerca de Opus 4.8.
Si este enfoque funciona, ¿no significa que también se podrían automatizar las entrevistas técnicas?
El enfoque de hacer que un LLM emita juicios subjetivos con algo como “You are a senior SWE-Bench reviewer, make no mistakes.” parece fundamentalmente defectuoso.
No sé cuál sería una mejor forma manteniendo la viabilidad.
Es una práctica común en prompts de sistema y ayuda a enmarcar la respuesta.
Por ejemplo, si dices “un pirata que escribe una canción marinera sobre programación”, “un periodista que escribe un artículo de física” o “un ingeniero de software senior que conoce PostgreSQL a la perfección”, obtendrás respuestas distintas.
En el primer caso podría salir algo al estilo de Wellerman como “There once was a program that was set to C ...”.
Pero la parte de “make no mistakes” me parece sospechosa. Sería interesante comparar los resultados con y sin esa frase, y probar otras formas de obtener el mismo comportamiento deseado.
Claro que no parece haber lugares que hagan públicamente este tipo de mediciones comparativas y permitan llegar a una conclusión razonable.