waiting_for_human) o una condición de parada (stopped) no es un error: ambas devuelven un resultado normal. Qué fallos envían además un evento run.failed varía según el lenguaje, así que no dependas solo del evento para detectar un fallo.
Cómo se manifiesta una ejecución fallida
Qué eventos se emiten cuando algo falla
En Hooks del ciclo de vida se enumeran todos los eventos.
Encuentra la causa de un error
Tipos de error de TypeScript
AgentGatewayError tiene status, statusText, headers, body, requestId, generationId, reason, errorType, errorOrigin, failedProviders, failedStatuses y diagnósticos de enrutamiento. Las ejecuciones y los pasos fallidos guardan los mismos detalles en errorDetails. Un fallo a mitad de una respuesta en streaming es un AgentStreamError, una subclase con code y retryable.
AgentSchemaValidationError tiene un target que es tool_input, tool_output, tool_event o agent_output, y details con el error del validador. Trátalos como incumplimientos del contrato, no como fallos pasajeros del modelo.
Para clasificar cualquier error, por ejemplo en modelRetry.retryOn, usa agentErrorIsRetryable(error), agentRetryAfterMs(error) y agentErrorIsContextOverflow(error).
Tipo de error de Rust
Todos los fallos del runtime son unAgentError; léelo con message(). Los valores PhaseoError del gateway se convierten en AgentError, así que si necesitas el estado y el cuerpo originales del gateway, llama directamente al cliente phaseo o implementa un ModelClient personalizado que los conserve.
Recupérate de errores de herramientas
Por defecto, un error de herramienta hace fallar la ejecución. Establece la política de errores de la herramienta enreturn-to-model cuando tenga sentido que el modelo pruebe otra cosa: el error se convierte en el resultado de la herramienta {"error": "..."} y la ejecución continúa. Mantén el valor predeterminado, fail-run, para los fallos inseguros o irrecuperables.
Gestiona la cancelación y los tiempos de espera
El tiempo de espera agotado o la cancelación de una herramienta no siempre detiene el trabajo de la propia herramienta. Da a las llamadas HTTP, de base de datos y de procesos dentro de las herramientas sus propios plazos, y trata una ejecución cancelada o con el tiempo agotado como terminada, a menos que tu aplicación inicie una nueva.Recupera una ejecución de TypeScript interrumpida
Si una ejecución se bloqueó o se canceló a mitad de un paso, su historial puede contener llamadas a herramientas sin resultado, que los proveedores rechazan. ElcontinueRun() de TypeScript las responde como no ejecutadas y envía history.repaired. Llama tú mismo a repairToolHistory(messages) si reutilizas los mensajes en otro lugar.
Comprueba esto primero
PHASEO_API_KEYllega al proceso y se pasa al cliente de gateway.- Cada herramienta tiene un ID único y estable.
- Las aprobaciones, los rechazos y las salidas de herramientas usan IDs exactos de llamada a herramienta, y un mensaje de entrada humana nunca sustituye a la salida de una herramienta.
- El resultado completo de la ejecución se guarda antes de mostrar una interfaz de aprobación o de pasar el control a otra solicitud o a otro worker.
- Los validadores son deterministas y no tienen efectos secundarios, así que una comprobación fallida se puede reintentar con seguridad.
- Los reintentos del modelo están acotados; los fallos de validación y de aprobación no deben reintentarse a ciegas.
step.started, model.requested y tool.failed con hooks del ciclo de vida, y consulta Observabilidad para ver los IDs que relacionan un paso con los registros del gateway.