Глава 9: Обработка Ошибок

9.1 Обзор

Протокол определяет унифицированный механизм обработки ошибок для точного понимания причин ошибок и принятия мер восстановления.

9.2 Классификация Ошибок

КатегорияКод ОшибкиHTTP-кодСценарий
Ошибка валидацииVALIDATION_ERRORN/A (локально)Schema Validator обнаружил невалидный Skill Descriptor
Ошибка аутентификацииAUTH_REQUIRED401Нет валидных учётных данных
Недостаточные праваPERMISSION_DENIED403Учётные данные валидны, но нет доступа
Навык не найденSKILL_NOT_FOUND404Запрошенный ID или URL не существует
Таймаут выполненияEXECUTION_TIMEOUT408 / 504Превышено время выполнения
Endpoint недоступенENDPOINT_UNREACHABLE502 / 503Невозможно подключиться
Несовместимая версияVERSION_INCOMPATIBLE422Версия протокола несовместима

9.3 Унифицированный Формат Ответа об Ошибке

{
  "error": {
    "code": "ERROR_CODE",
    "message": "Описание ошибки, читаемое человеком",
    "details": {},
    "retry": { "suggested_delay_ms": 0, "max_attempts": 0 }
  }
}

9.4 Подробные Описания Ошибок

Ошибка Валидации

{
  "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" }
      ]
    }
  }
}

Таймаут Выполнения

{
  "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 Стратегии Повтора

Экспоненциальный Backoff

задержка = initial_delay × 2^(attempt - 1)

Ошибки Без Повтора

  • VALIDATION_ERROR: Нужно исправить Descriptor
  • AUTH_REQUIRED: Нужно предоставить учётные данные
  • PERMISSION_DENIED: Нужно получить права
  • VERSION_INCOMPATIBLE: Нужно обновить потребителя