Ejecuciones
Descripción general
Ejecuciones es el núcleo operativo de Verifi. Es el módulo donde se lanzan corridas de prueba sobre un agente, se monitorea su avance en tiempo real y se obtienen reportes detallados con métricas, evidencia paso a paso y errores categorizados.
Una ejecución combina tres piezas:
- Un agente objetivo (el agente que se quiere evaluar).
- Un Agent Tester (un agente especial que actúa como evaluador).
- Una selección de casos de uso de la biblioteca.
La ejecución real de las pruebas no ocurre dentro de Verifi: la dispara un webhook al Agent Tester en HeyNow, que procesa los casos contra el agente objetivo y reporta los resultados de vuelta vía callbacks REST. Verifi funciona como orquestador, persiste el estado y presenta el reporte final. Esta arquitectura distribuida es relevante de conocer porque explica por qué algunas acciones tienen estados intermedios visibles (pending, en progreso, evaluando).
Para quién es este módulo
- QA que lanza corridas regulares y revisa reportes para detectar regresiones.
- Desarrolladores y prompt engineers que validan un cambio (prompt, modelo, base de conocimiento) ejecutando la misma batería antes y después.
- Responsables funcionales que evalúan la calidad del agente en términos de comportamiento esperado.
- Administradores técnicos que configuran el
Agent Testery supervisan la salud operativa de las pruebas.
Acceso al módulo
Desde el menú lateral, opción Ejecuciones (ruta /dashboard/ejecuciones).
Requiere sesión activa. La lista muestra únicamente las ejecuciones del cliente asociado al usuario; el aislamiento es automático y no hay selector de tenant.
Cómo funciona el módulo
Los tres actores
| Actor | De dónde viene | Qué hace |
|---|---|---|
| Agente objetivo | Lista de agentes principales del cliente en HeyNow | Recibe los pasos de cada caso como si fueran mensajes de usuario y responde. |
| Agent Tester | Agente en HeyNow con nombre exacto Agent Tester y isMainAssistant: true |
Ejecuta los pasos contra el agente objetivo, recoge las respuestas y emite un veredicto por paso. |
| Casos de uso | Biblioteca de Verifi | Aportan la secuencia de pasos y el comportamiento esperado contra el que se compara. |
El flujo de una corrida
- El usuario configura la ejecución desde el wizard (ver más abajo) y confirma.
- Verifi persiste una nueva ejecución con estado
pending, captura un snapshot del agente (modelos, capacidades) y snapshots de cada caso seleccionado con sus pasos. A partir de ese momento, cambios posteriores en el caso o en el agente no afectan esta corrida. - Verifi envía un webhook (fire-and-forget) al
Agent Testercon elexecutionIdy los datos mínimos para que lo recupere. No espera respuesta del webhook para considerar la corrida lanzada. - El
Agent Testerconsulta la ejecución, cambia su estado arunning, ejecuta paso a paso y va reportando evidencia incrementalmente. - Cuando termina la ejecución, pasa a
evaluatingpara emitir los veredictos finales. - Al cerrar, actualiza el estado a
completed,failedoerrorcon las métricas globales. - El frontend de Verifi hace polling cada 3 segundos mientras haya ejecuciones en estados intermedios y refresca la tabla automáticamente.
Estados de una ejecución
| Estado | Significado | Qué se puede hacer |
|---|---|---|
| Pendiente | Recién creada, el Agent Tester todavía no la tomó. |
Cancelar. |
| En progreso | El agente objetivo está procesando los pasos. | Ver ejecución, cancelar. |
| Evaluando | Se terminaron los pasos y el Agent Tester está emitiendo veredictos. |
Ver ejecución, cancelar. |
| Completada | Terminó y el reporte está disponible con métricas. | Ver reporte, reejecutar. |
| Fallida | Concluyó con fallos funcionales relevantes. | Ver reporte, reejecutar. |
| Error | No se completó por un problema técnico. Tiene mensaje de error asociado. | Ver reporte, reejecutar. |
| Cancelada | Detenida manualmente. Conserva los datos parciales. | Reejecutar. |
Una vez que una ejecución llega a un estado final (completed, failed, error, cancelled) sus datos son inmutables: ni la evidencia ni los errores aceptan modificaciones posteriores.
Tareas más comunes
Lanzar una nueva ejecución
El wizard se compone de cuatro pasos:
- Agente objetivo. Lista de agentes principales del cliente. Incluye buscador por nombre.
- Casos de uso. Multi-selección con contador de pasos por caso. Hay opciones
Seleccionar todosyDeseleccionar todos. - Configuración. Muestra la configuración actual del agente objetivo (modelo, capacidades) y del
Agent Tester(evaluador). Desde aquí se puede abrir HeyNow en una pestaña nueva para ajustar la configuración antes de lanzar. Si no existe unAgent Tester, aparece un banner bloqueante con el link directo para crearlo. - Resumen. Presenta el total de casos seleccionados, la suma de pasos que se van a correr y los agentes involucrados. Desde aquí se confirma con
Iniciar ejecución.
Al confirmar, la ejecución aparece inmediatamente en la tabla con estado Pendiente y empieza a actualizarse por polling cada 3 segundos.
Requisitos que bloquean el lanzamiento:
- Sin agente objetivo seleccionado.
- Sin al menos un caso de uso seleccionado.
- Sin
Agent Testerdetectado en HeyNow. El wizard muestra el avisoEvaluador no configurado — Crea el agente "Agent Tester" en HeyNow para ejecutar pruebas.
Ver el reporte de una ejecución
Desde el menú de tres puntos de la fila:
- Ver reporte (ejecuciones en estado final): abre la vista de detalle completa con métricas globales, desglose por caso, evidencia paso a paso y lista de errores.
- Ver ejecución (ejecuciones en curso): abre la misma vista pero con métricas parciales; se va completando a medida que el Agent Tester reporta avances.
La vista de detalle incluye:
- Encabezado con nombre del agente, estado y enlace para copiar el identificador de la ejecución.
- Tarjetas de métricas globales (detalladas en la sección siguiente).
- Configuración usada: modelo y proveedor del agente objetivo y del evaluador, más los parámetros operativos de la corrida.
- Casos de uso: cada caso es expandible; al abrirse muestra los pasos con su estado.
- Evidencia: por cada paso, input enviado, respuesta del agente, comportamiento esperado, veredicto del evaluador, feedback, tiempo de respuesta, desvíos detectados y, si aplica, código de error.
- Errores de la ejecución: lista de errores reportados por el Agent Tester, con código, mensaje, categoría y severidad, asociados (cuando corresponde) al caso y paso en los que se originaron.
Reejecutar
Permite volver a correr la misma configuración. Útil para comparar el mismo agente después de un cambio, o para confirmar que un fallo se reproduce.
- Abrir el menú de tres puntos y seleccionar Reejecutar.
- Aparece un diálogo de confirmación que resume agente, cantidad de casos, modelo del evaluador, modo de ejecución y (si la original estaba completada) las métricas originales.
- Confirmar con el botón Reejecutar.
Lo que se copia exactamente:
- Identificador del agente objetivo.
- Identificador del
Agent Testerque actuó como evaluador. - Lista de casos de uso seleccionados originalmente.
- Parámetros operativos (timeout, reintentos, modo paralelo, modo estricto).
- Snapshots de configuración (modelo y proveedor del agente y del evaluador).
Lo que no se copia y se genera nuevo:
- Evidencia, errores y métricas (la corrida parte vacía).
- Timestamps (
createdAt,startedAt,completedAt). - Snapshots de los casos (se vuelven a capturar, por lo que reflejarán cambios recientes en la biblioteca de casos).
Cancelar una ejecución
Disponible mientras la corrida esté en Pendiente, En progreso o Evaluando.
- Abrir el menú de tres puntos y seleccionar Cancelar.
- La ejecución pasa de inmediato a estado
Canceladacon el mensaje internoCancelled by usery un timestamp de cierre.
Los datos parciales (evidencia y errores ya registrados hasta ese punto) se conservan y son visibles en el reporte. El consumo de tokens ya realizado no se revierte.
Consultar estadísticas globales
La cabecera del módulo muestra cuatro tarjetas con el estado general de las ejecuciones del cliente:
- Total Ejecuciones: cantidad total registrada.
- En Ejecución: suma de ejecuciones en
Pendiente,En progresooEvaluando. - Completadas: cantidad en estado final exitoso.
- Fallidas: cantidad en estado final con fallos funcionales.
Las tarjetas se recalculan en cada polling; mientras haya corridas activas, se actualizan automáticamente.
Campos y configuraciones importantes
Configuración operativa de la corrida
Estos parámetros se persisten junto con la ejecución y se pasan al Agent Tester para que los respete:
| Parámetro | Descripción | Valor por defecto |
|---|---|---|
| Tiempo máximo | Segundos que el evaluador espera por paso antes de considerar la respuesta como fallida por timeout. | 30 |
| Reintentos | Cantidad de reintentos automáticos ante errores transitorios del agente. | 2 |
| Modo paralelo | Si los casos se ejecutan en paralelo o de manera secuencial. | Paralelo |
| Modo estricto | Endurece los criterios de evaluación: puntajes más bajos, más desvíos reportados. | Desactivado |
Actualmente estos parámetros se fijan en el backend al crear la ejecución desde el wizard; si se necesitan valores distintos a los por defecto, la ruta más directa es reejecutar una corrida previa cuyos parámetros ya estén ajustados, o usar la API directamente.
Métricas del reporte
Las métricas se emiten por el Agent Tester al finalizar la corrida, pero si faltan parcialmente, Verifi las recalcula en el cliente a partir de la evidencia. El valor mostrado prioriza lo calculado cuando hay datos suficientes.
| Métrica | Qué mide | Cómo se calcula |
|---|---|---|
| Pass Rate | Proporción de pasos considerados aprobados. | Porcentaje de pasos con score ≥ 70 sobre el total de pasos con puntaje. |
| Success Rate | Puntaje promedio del conjunto. | Promedio de los score de cada paso (solo valores válidos). |
| Containment Rate | Proporción de pasos que se mantuvieron dentro del comportamiento esperado sin desvíos. | Porcentaje de pasos con containmentOk = true sobre el total de pasos con ese campo presente. |
| Tiempo promedio de respuesta | Latencia media del agente objetivo por paso. | Promedio en milisegundos de responseTimeMs. |
| Duración | Duración total de la corrida. | Diferencia entre startedAt y completedAt, formateada como Xm Ys. |
| Tokens del evaluador | Consumo de tokens del Agent Tester al evaluar. | Suma de promptTokens + completionTokens. |
| Tokens del agente | Consumo total del agente objetivo. | Reportado por el evaluador en la finalización. |
Si la corrida no llegó a completarse o quedó cancelada, las métricas pueden mostrarse como -.
Evidencia por paso
Cada paso ejecutado genera un registro de evidencia con:
- Input enviado al agente.
- Output recibido del agente.
- Comportamiento esperado del paso (copiado del snapshot del caso).
- Resultado de evaluación y feedback emitidos por el Agent Tester.
- Estado del paso:
passed,failedoerror. - Puntaje numérico (0–100).
- Tiempo de respuesta en milisegundos.
- Containment ok: indicador booleano de si la respuesta se mantuvo dentro del comportamiento esperado.
- Desvíos: lista de motivos puntuales por los cuales la respuesta se apartó del esperado.
- Código de error (si aplica).
- Payload de la request usado para llamar al agente (útil para reproducibilidad).
La evidencia es única por combinación (ejecución, caso, número de paso) y es idempotente: si el evaluador reenvía un paso, se actualiza en lugar de duplicarse.
Errores de ejecución
Cada error registrado tiene:
- Código: identificador textual (por ejemplo
AGENT_TIMEOUT,MODEL_ERROR,MALFORMED_RESPONSE; el campo es libre y depende de lo que reporte el evaluador). - Mensaje: descripción legible.
- Categoría: una de
configuration,authentication,execution,evaluation,unknown. - Severidad:
error,warningoinfo. - Caso y paso asociados (opcionales).
- Detalles: payload JSON adicional con contexto técnico.
Las categorías ayudan a orientar la corrección:
configuration: problema de setup del agente o de la corrida.authentication: fallo al autenticar con servicios externos.execution: el agente objetivo no pudo responder correctamente.evaluation: el evaluador no pudo emitir un veredicto.unknown: sin clasificar.
Resultados esperados
Al completar una ejecución normal:
- La fila pasa a
Completada(oFallidasi hubo fallos funcionales) y el reporte queda disponible. - Las estadísticas globales de la cabecera se actualizan automáticamente.
- La evidencia y los errores quedan congelados: ni el evaluador ni el usuario pueden modificarlos retroactivamente.
- Se registra un evento de auditoría con el usuario, la ejecución y el resultado.
Al reejecutar:
- Se genera una corrida independiente con nuevo identificador.
- La corrida original permanece intacta, permitiendo comparar lado a lado.
- Los snapshots de casos se vuelven a capturar con la versión vigente, lo que puede explicar diferencias entre ambas corridas aunque el agente sea el mismo.
Al cancelar:
- La ejecución queda en estado
Canceladacon los datos parciales visibles. - No se libera el consumo ya hecho de tokens ni se recupera tiempo del evaluador.
Problemas comunes y soluciones
No puedo avanzar del paso 3 del wizard: aparece el banner Evaluador no configurado
- El
Agent Testerno existe o no es visible para el cliente. Crearlo en HeyNow con nombre exactoAgent Testery marcado como agente principal. El cache interno descarta los resultados negativos, así que al volver a entrar el wizard lo detectará sin necesidad de recargar.
No aparece el agente que quiero probar en el paso 1
- Revisar que sea un agente principal en HeyNow para ese cliente. Agentes de tipo flow o proactivos no aparecen.
- Revisar el buscador por si hay un filtro de texto aplicado.
La ejecución quedó mucho tiempo en Pendiente
- Significa que el
Agent Testerno llegó a tomar la ejecución. Puede deberse a que el webhook de disparo falló silenciosamente o que el Agent Tester no está operativo. - Recomendación: cancelar la corrida y relanzarla. Si persiste, verificar el estado del
Agent Testeren HeyNow.
Ejecución terminada en estado Error
- Abrir el reporte y revisar la sección de errores. La categoría orienta la causa:
configuration: revisar configuración del agente.authentication: revisar credenciales o permisos del canal.execution: revisar el agente objetivo.evaluation: revisar el Agent Tester.
Métricas bajas pero los pasos parecen correctos a simple vista
- Revisar la evidencia de cada paso: a veces el veredicto del evaluador depende más del
comportamiento esperadoredactado que de la respuesta efectiva. - Si el comportamiento esperado es ambiguo o poco específico, el evaluador tiende a marcar desvíos. Refinar el caso en la biblioteca y reejecutar.
Reejecuté una corrida antigua y el resultado cambió mucho
- La reejecución toma snapshots frescos de los casos. Si la biblioteca cambió entre la corrida original y la reejecución, el agente está siendo evaluado contra comportamientos esperados distintos.
- Si se quiere comparar contra exactamente los mismos casos, conviene hacerlo sin editar los casos en el medio.
Cancelé una ejecución pero los tokens se siguieron consumiendo
- La cancelación detiene la orquestación desde Verifi, pero el evaluador puede haber emitido ya requests al agente objetivo que se siguen contabilizando en HeyNow hasta terminar.
El polling no actualiza la tabla
- El polling solo se activa cuando hay al menos una ejecución en estado intermedio. Si todas están en estado final y el usuario lanza una nueva, la actualización debería reanudarse al verse la nueva corrida en estado
Pendiente.
Buenas prácticas
- Usar baterías representativas. Incluir siempre una muestra de casos felices y casos límite; evaluar solo sobre escenarios happy path da una visión sesgada.
- Ejecutar antes y después de cada cambio relevante. La forma más útil de detectar regresiones es tener una corrida base y comparar con la reejecución.
- Preferir
Reejecutarantes que crear manualmente una corrida nueva cuando se busca comparar la misma configuración. Garantiza que los parámetros operativos se mantengan idénticos. - Revisar la evidencia, no solo las métricas. Una tasa global alta puede ocultar problemas sistemáticos en un caso específico.
- Cancelar lo antes posible las corridas mal configuradas o que se lanzaron por error para evitar consumo innecesario de tokens.
- Documentar externamente las corridas clave (release, pre-producción) anotando el identificador de la ejecución. El identificador es estable y permite volver al reporte aun con alta rotación de corridas.
- Alinear el comportamiento esperado con lo que el agente realmente puede entender. Redacciones demasiado genéricas o demasiado específicas generan evaluaciones inestables.
Consideraciones importantes
- El Agent Tester es obligatorio. Sin un agente con ese nombre exacto y marcado como principal, no se pueden lanzar ejecuciones. El cache interno de Verifi solo persiste resultados positivos, por lo que crear el agente en HeyNow lo hace visible inmediatamente en el siguiente ingreso al wizard.
- Solo puede haber un Agent Tester por cliente. Si se necesitan variantes del evaluador, se debe cambiar la configuración del Agent Tester en HeyNow.
- Los snapshots son inmutables. Una vez creada la ejecución, los datos del agente y de los casos quedan congelados. Modificar la fuente no afecta la corrida.
- Los estados finales son inmutables. Completada, fallida, error o cancelada: después de eso ni el evaluador ni el usuario pueden modificar evidencia, errores o métricas.
- El disparo del webhook es fire-and-forget. Si el webhook falla silenciosamente, la ejecución quedará en
Pendientesin progresar. La mitigación actual es cancelar y relanzar. - El polling es cliente-side y cada 3 segundos. Si se tienen muchas pestañas abiertas del módulo con ejecuciones activas, habrá una consulta por pestaña cada 3 segundos.
- El reporte no es descargable en la UI actual. Se puede navegar online o capturar por otros medios. El identificador de la ejecución queda disponible para copiarlo.
- No hay versionado de ejecuciones más allá del orden cronológico. Cada corrida es independiente y se identifica por su ID UUID.
- Multi-tenant estricto. Una ejecución solo es accesible por usuarios del mismo cliente. Los endpoints validan tanto el JWT como, en el caso de callbacks externos, el
client idenviado por el evaluador.
Resumen rápido
Ejecuciones orquesta las corridas de testing: combina un agente objetivo, el Agent Tester (evaluador) y una selección de casos de la biblioteca. La corrida es disparada a HeyNow vía webhook y el evaluador reporta resultados por callbacks; Verifi persiste el estado, presenta métricas agregadas, la evidencia paso a paso y los errores categorizados. Cada corrida es un snapshot inmutable: editar un caso o el agente no afecta corridas anteriores. La función Reejecutar permite comparar escenarios contra la misma configuración para validar cambios.