BLUEPRINT
Глава 9: Обработка Ошибок
9.1 Обзор
Протокол определяет унифицированный механизм обработки ошибок для точного понимания причин ошибок и принятия мер восстановления.
9.2 Классификация Ошибок
| Категория | Код Ошибки | HTTP-код | Сценарий |
|---|---|---|---|
| Ошибка валидации | VALIDATION_ERROR | N/A (локально) | Schema Validator обнаружил невалидный Skill Descriptor |
| Ошибка аутентификации | AUTH_REQUIRED | 401 | Нет валидных учётных данных |
| Недостаточные права | PERMISSION_DENIED | 403 | Учётные данные валидны, но нет доступа |
| Навык не найден | SKILL_NOT_FOUND | 404 | Запрошенный ID или URL не существует |
| Таймаут выполнения | EXECUTION_TIMEOUT | 408 / 504 | Превышено время выполнения |
| Endpoint недоступен | ENDPOINT_UNREACHABLE | 502 / 503 | Невозможно подключиться |
| Несовместимая версия | VERSION_INCOMPATIBLE | 422 | Версия протокола несовместима |
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: Нужно исправить DescriptorAUTH_REQUIRED: Нужно предоставить учётные данныеPERMISSION_DENIED: Нужно получить праваVERSION_INCOMPATIBLE: Нужно обновить потребителя
