Las evaluaciones completas (con build + tests) requieren un Windows Server con Docker/Hyper-V para ejecutar contenedores Business Central. BC-Bench incluye scripts para automatizar completamente el setup de la VM.
# Ejecutar como administrador en la VM
.\scripts\Setup-VM-Phase1.ps1
Que hace:
C:\bcbench, C:\ProgramData\BcContainerHelper.\scripts\Setup-VM-Phase2.ps1 `
-AnthropicApiKey "sk-ant-..." `
-GitHubToken "ghp_..." `
-ContainerPassword "BcBench2026!"
Que instala (14 pasos con verificacion):
npm install -g @anthropic-ai/claude-code)C:\bcbenchuv sync --all-groups (dependencias Python)Una vez la VM esta preparada, necesitas crear el contenedor BC y clonar el repositorio de evaluacion.
.\scripts\Setup-ContainerAndRepository.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-ContainerName "bcbench" `
-Username "admin"
Que hace:
$env:GITHUB_WORKSPACE\testbed)base_commit correctoNew-BCContainerSyncNota: El contenedor se reutiliza entre evaluaciones que compartan la misma
environment_setup_version. Solo se recrea cuando cambia la version de BC.
Este es el script principal para lanzar evaluaciones. Soporta multiples modos de operacion.
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Agent claude `
-Model claude-sonnet-4-6 `
-Category bug-fix
# Solo baseline (sin instrucciones personalizadas)
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Scenario baseline
# Solo con agente developer
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Scenario aldc-developer
# Solo con agente conductor (TDD)
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Scenario aldc-conductor
# Solo con agente bugfix firstline
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Scenario aldc-bugfix
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-CompareBaseline
Ejecuta dos rondas: primero baseline (sin configuracion personalizada), luego con la configuracion activa en config.yaml.
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-CompareAll `
-PauseBetweenScenarios 180
Ejecuta tres rondas: baseline, developer, conductor. El parametro -PauseBetweenScenarios (en segundos) permite esperar entre ejecuciones para evitar errores de API por sobrecarga.
| Parametro | Valores | Default |
|---|---|---|
-InstanceId |
ID del dataset | (todos si se omite) |
-Agent |
claude, copilot |
claude |
-Model |
Ver lista de modelos | claude-sonnet-4-6 |
-Category |
bug-fix, test-generation |
bug-fix |
-Scenario |
baseline, aldc-developer, aldc-conductor, aldc-bugfix |
(ninguno) |
-CompareBaseline |
Switch | $false |
-CompareAll |
Switch | $false |
-AlMcp |
Switch | $true |
-SkipContainerSetup |
Switch | $false |
-SkipRepoClone |
Switch | $false |
-TestRun |
Switch (solo 2 entradas) | $false |
-PauseBetweenScenarios |
Segundos | 0 |
Este script ejecuta todos los escenarios para ambos agentes (Claude + Copilot), recopila resultados, genera un informe y lo pushea al repositorio.
El script define 8 escenarios (4 por agente):
| # | Agente | Escenario | Directorio de salida |
|---|---|---|---|
| 1 | Claude Code | baseline | eval_claude_baseline_{model} |
| 2 | Claude Code | developer | eval_claude_aldc_developer_{model} |
| 3 | Claude Code | conductor | eval_claude_aldc_conductor_{model} |
| 4 | Claude Code | bugfix | eval_claude_aldc_bugfix_{model} |
| 5 | Copilot | baseline | eval_copilot_baseline_{model} |
| 6 | Copilot | developer | eval_copilot_aldc_developer_{model} |
| 7 | Copilot | conductor | eval_copilot_aldc_conductor_{model} |
| 8 | Copilot | bugfix | eval_copilot_aldc_bugfix_{model} |
.\scripts\Run-FullComparison.ps1 `
-InstanceIds "microsoft__BCApps-4822"
.\scripts\Run-FullComparison.ps1 `
-InstanceIds @("microsoft__BCApps-4822", "microsoft__BCApps-4699", "microsoft__BCApps-4766")
.\scripts\Run-FullComparison.ps1 `
-LlmFamily opus `
-InstanceIds "microsoft__BCApps-4822"
El parametro -LlmFamily deriva automaticamente los IDs de modelo:
claude-{family}-4-6 (ej: claude-opus-4-6)claude-{family}-4.6 (ej: claude-opus-4.6)# Primero actualizar scripts
git -C C:\bcbench pull origin main
# Ejecutar comparacion completa con auto-shutdown
.\scripts\Run-FullComparison.ps1 `
-InstanceIds @("microsoft__BCApps-4822") `
-LlmFamily sonnet `
-OnlyMissing `
-EmailTo "tu-email@gmail.com" `
-AutoShutdown
Parametros clave:
-OnlyMissing: Salta escenarios que ya tienen resultados (para reanudar ejecuciones fallidas)-EmailTo: Envia resumen por email al terminar (requiere $env:GMAIL_APP_PASSWORD)-AutoShutdown: Apaga la VM tras completar (ahorra costes en cloud)-SkipClaude / -SkipCopilot: Ejecutar solo un agente-PauseBetweenScenarios: Segundos de espera entre escenarios (default: 30)-AutoShutdown)Ejemplo de informe generado:
# Evaluation Report: BCApps-4822
**Date:** 2026-04-13
**Model:** claude-sonnet-4-6 (Claude) / claude-sonnet-4.6 (Copilot)
**Total time:** ~180 minutes
## Results
| Agent | Scenario | Resolved | Build | Turns | Time | Tokens (K) |
|-------|----------|:--------:|:-----:|------:|-----:|-----------:|
| Claude Code | Baseline | X | V | 15 | 180s | 450K |
| Claude Code | Developer | V | V | 12 | 145s | 380K |
| Claude Code | Conductor | V | V | 18 | 210s | 520K |
| Copilot | Baseline | X | V | 20 | 195s | 470K |
| Copilot | Developer | V | V | 14 | 155s | 400K |
# Paso 1: Asegurarse de que el contenedor existe
.\scripts\Setup-ContainerAndRepository.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-RepoPath "C:\bcbench\testbed"
# Paso 2: Ejecutar baseline
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Scenario baseline `
-Agent claude `
-Model claude-sonnet-4-6 `
-RepoPath "C:\bcbench\testbed" `
-OutputDir "C:\bcbench\eval_baseline"
# Paso 3: Ejecutar con configuracion personalizada (reusar contenedor)
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Scenario aldc-developer `
-Agent claude `
-Model claude-sonnet-4-6 `
-SkipContainerSetup `
-SkipRepoClone `
-RepoPath "C:\bcbench\testbed" `
-OutputDir "C:\bcbench\eval_developer"
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Category test-generation `
-Scenario aldc-conductor `
-Agent claude `
-Model claude-opus-4-6
.\scripts\Run-FullComparison.ps1 `
-InstanceIds @(
"microsoft__BCApps-4822",
"microsoft__BCApps-4699",
"microsoft__BCApps-4766"
) `
-SkipClaude `
-LlmFamily sonnet `
-Category bug-fix `
-OnlyMissing
Util cuando la API devuelve errores de sobrecarga (overloaded_error):
# Escenario 1: Baseline
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Scenario baseline `
-RepoPath "C:\bcbench\testbed"
# Esperar 5 minutos
Start-Sleep -Seconds 300
# Escenario 2: Developer
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Scenario aldc-developer `
-SkipContainerSetup -SkipRepoClone `
-RepoPath "C:\bcbench\testbed"
# Esperar 5 minutos
Start-Sleep -Seconds 300
# Escenario 3: Conductor
.\scripts\Setup-ALDCEvaluation.ps1 `
-InstanceId "microsoft__BCApps-4822" `
-Scenario aldc-conductor `
-SkipContainerSetup -SkipRepoClone `
-RepoPath "C:\bcbench\testbed"
Siguiente: Parte 5 - Obtencion, Analisis y Documentacion de Resultados