Suite reproducible de 50 tareas para evaluar la fiabilidad del motor de edición de SnapContext de forma objetiva y comparable.
Medir el porcentaje de éxito del editor de SnapContext al realizar tareas típicas de edición de código: corrección de bugs, refactorizaciones, adición de features y cambios complejos.
Los resultados permiten comparar con otros agentes (Aider, Claude Code, Cline) en condiciones reproducibles.
benchmarks/
├── README.md # Este archivo
├── runner.py # Ejecutor del benchmark
├── results.json # Resultados de la última ejecución
└── tasks/
├── 001_corregir_bug_suma/
│ ├── input.py # Código con el problema
│ ├── expected.py # Código corregido esperado
│ └── task.json # Metadatos (descripción, tipo, dificultad)
└── ... (50 tareas)
# Modo light (sin LLM, usa el motor de edición directamente)
python benchmarks/runner.py --modo=light
# Modo deep (con Ollama local si está disponible)
python benchmarks/runner.py --modo=deep
# Ejecutar una sola tarea
python benchmarks/runner.py --task=001
| Métrica | Resultado |
|---|---|
| Tareas completadas | 50/50 (100%) |
| Tiempo total | ~0.5s |
| Tiempo medio | ~0.01s |
| Tipo de tareas | 20 bug fixes, 15 refactorizaciones, 10 features, 5 complejos |
El modo light mide el motor de edición de SnapContext (búsqueda y reemplazo, parches unificados, fallback difuso). No usa LLM: verifica que el editor aplica correctamente cambios deterministas.
| Métrica | Resultado |
|---|---|
| Estado | ⏳ Pendiente (requiere descargar modelo Ollama) |
| Modelo recomendado | qwen2.5:0.5b o llama3.2:1b |
Para ejecutar el modo deep:
ollama pull qwen2.5:0.5b
python benchmarks/runner.py --modo=deep
Nota importante: Los números de Aider y Claude Code provienen de SWE-bench (issues reales de GitHub, ~300 tareas), mientras que los nuestros son tareas sinteticas reproducibles (50 tareas). No son directamente comparativos, pero dan una idea del orden de magnitud.
| Benchmark | Tareas | % Éxito | Modelo |
|---|---|---|---|
| SnapContext (light) | 50 | 100% | Determinista (motor de edición) |
| SnapContext (deep) | 50 | ⏳ Pendiente | Qwen2.5-0.5B (previsto) |
| Aider (SWE-bench Lite) | 300 | ~74% | GPT-4o |
| Claude Code (SWE-bench) | 500 | ~77% | Claude Opus |
Diferencias metodológicas:
| Tipo | Cantidad | Dificultad |
|---|---|---|
| Bug fixes | 20 | 15 fácil, 5 medio |
| Refactorizaciones | 15 | 15 medio |
| Features | 10 | 10 medio |
| Complejos | 5 | 5 difícil |
benchmarks/tasks/NNN_nombre/ (ej. 051_nueva_tarea/).input.py (código con el problema) y expected.py (código esperado).task.json con los metadatos:{
"id": "051",
"nombre": "Descripción corta",
"tipo": "bug_fix | refactorizacion | feature | complejo",
"dificultad": "facil | medio | dificil",
"descripcion": "Descripción del problema.",
"instruccion": "Instrucción para el agente."
}
# Clonar el repo
git clone https://github.com/NicolasBruna24/snapcontext
cd snapcontext
# Instalar dependencias
pip install -e ".[all]"
# Ejecutar benchmark (modo light, sin API key)
python benchmarks/runner.py --modo=light