Capítulo 9: Manejo de Errores

9.1 Descripción General

El protocolo define un mecanismo unificado de manejo de errores para asegurar que los consumidores de skills puedan comprender con precisión las causas de error y tomar medidas de recuperación apropiadas.

9.2 Clasificación de Errores

Categoría de ErrorCódigo de ErrorCódigo HTTPEscenario
Error de validaciónVALIDATION_ERRORN/A (local)Schema Validator detecta un Skill Descriptor inválido
Fallo de autenticaciónAUTH_REQUIRED401Sin credenciales válidas al invocar un skill protegido
Permisos insuficientesPERMISSION_DENIED403Credenciales válidas pero sin acceso al skill
Skill no encontradoSKILL_NOT_FOUND404ID de skill o URL de Descriptor solicitado no existe
Timeout de ejecuciónEXECUTION_TIMEOUT408 / 504Ejecución del skill excede el timeout configurado
Endpoint inalcanzableENDPOINT_UNREACHABLE502 / 503Punto de invocación no puede ser alcanzado
Versión incompatibleVERSION_INCOMPATIBLE422Versión del protocolo del Skill Descriptor incompatible con el consumidor

9.3 Formato Unificado de Respuesta de Error

{
  "error": {
    "code": "ERROR_CODE",
    "message": "Descripción de error legible por humanos",
    "details": {},
    "retry": { "suggested_delay_ms": 0, "max_attempts": 0 }
  }
}

Descripción de Campos

CampoTipoObligatorioDescripción
error.codestringCódigo de error legible por máquina
error.messagestringDescripción de error legible por humanos
error.detailsobjectNoInformación contextual detallada del error
error.retryobjectNoSugerencias de reintento
error.retry.suggested_delay_msnumberNoRetraso de reintento sugerido (milisegundos)
error.retry.max_attemptsnumberNoMáximo de intentos de reintento sugerido

9.4 Descripciones Detalladas de Errores

Error de Validación

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Skill descriptor validation failed",
    "details": {
      "violations": [
        { "field": "/capability_type", "expected": "one of: plugin, api, knowledge, task", "actual": "unknown_type", "message": "Invalid enum value" },
        { "field": "/endpoint/url", "expected": "string (URI format)", "actual": null, "message": "Required field is missing" }
      ]
    }
  }
}

Timeout de Ejecución

{
  "error": {
    "code": "EXECUTION_TIMEOUT",
    "message": "Skill execution exceeded the configured timeout of 30000ms",
    "details": { "timeout_ms": 30000, "elapsed_ms": 30001 },
    "retry": { "suggested_delay_ms": 5000, "max_attempts": 3 }
  }
}

9.5 Estrategias de Reintento

Backoff Exponencial

retraso = initial_delay × 2^(attempt - 1)

Ejemplo (initial_delay = 1000ms): 1000ms → 2000ms → 4000ms → 8000ms

Errores No Reintentables

  • VALIDATION_ERROR: El Descriptor necesita ser corregido
  • AUTH_REQUIRED: Se necesitan credenciales
  • PERMISSION_DENIED: Se necesitan permisos
  • VERSION_INCOMPATIBLE: El consumidor necesita ser actualizado