Перейти к основному содержимому

Отладка выполнений

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

Чтение трассировки выполнения

Техническая шкала (Technical Timeline)

Во время и после выполнения правая часть панели выполнения показывает хронологию событий. Каждое событие содержит:

Выполнение ноды:

  • Имя и тип ноды
  • Статус: running (выполняется), completed (успешно), failed (ошибка)
  • Длительность (в миллисекундах)
  • Входные данные, поступившие на ноду
  • Выходные данные, которые нода отдала

Вызовы инструментов (Tool Calls):

  • Имя инструмента (функция, MCP-сервер, поиск по базе знаний и т.д.)
  • Аргументы, с которыми инструмент был вызван
  • Результат выполнения инструмента
  • Статус (успех или ошибка)

Ошибки:

  • Текст ошибки
  • Нода, на которой произошел сбой
  • Время возникновения

Визуальные индикаторы на холсте

Во время выполнения ноды на холсте меняют внешний вид:

СостояниеВизуальный индикатор
ВыполняетсяОранжевая рамка с пульсирующим свечением
ЗавершенаСерая рамка
ОшибкаКрасная рамка
ОжиданиеБез рамки (нода ещё не достигнута)

Связи между нодами также анимируются: активная связь подсвечивается фиолетовым цветом.

Журнал шагов (Execution Steps)

Каждый запуск рабочего процесса создает запись Execution с набором ExecutionStep. Каждый шаг соответствует одной ноде и содержит:

  • node_id -- идентификатор ноды
  • node_name -- человекочитаемое имя
  • node_type -- тип (agent, function, http и т.д.)
  • status -- pending, running, completed, failed, skipped
  • input -- данные на входе ноды
  • output -- данные на выходе ноды
  • error -- текст ошибки (при наличии)
  • step_metadata -- метаданные (модель, количество токенов, стоимость и т.д.)
  • started_at / completed_at -- временные метки начала и окончания

Сессии выполнений

Запуски группируются в сессии по thread_id. Для каждой сессии доступна сводка:

  • Количество запусков в сессии
  • Статус последнего запуска
  • Общее количество шагов
  • Количество провалившихся шагов
  • Время первого и последнего запуска

Это помогает анализировать серию взаимодействий в рамках одного диалога.

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

Платформа классифицирует все ошибки на три категории, которые определяют стратегию обработки:

Повторяемые ошибки (Retryable)

Сетевые и инфраструктурные ошибки, которые могут быть устранены автоматическим повтором:

Тип ошибкиОписание
api_timeoutТайм-аут при обращении к API
rate_limitПревышен лимит запросов к API
connection_errorОшибка сетевого соединения
service_unavailableСервис временно недоступен
internal_server_errorВнутренняя ошибка сервера

Исправляемые ошибки (Correctable)

Ошибки логики и валидации, при которых модель может самостоятельно исправить свой ответ:

Тип ошибкиОписание
validation_errorОтвет не прошел валидацию
json_parse_errorНевалидный JSON в ответе
schema_mismatchОтвет не соответствует заданной схеме
tool_call_errorОшибка при вызове инструмента
output_format_errorНеверный формат вывода
context_length_exceededПревышена длина контекста модели

Фатальные ошибки (Fatal)

Ошибки, которые невозможно исправить автоматически:

Тип ошибкиОписание
authentication_errorНеверные учетные данные API
authorization_errorНет доступа к ресурсу
resource_not_foundРесурс не найден (например, удаленная функция)
invalid_inputНекорректные входные данные
configuration_errorОшибка конфигурации ноды

Конфигурация повторных попыток (Retry)

Уровни настройки

Повторные попытки можно настроить на двух уровнях:

  1. Уровень проекта -- настройки по умолчанию для всех рабочих процессов в проекте.
  2. Уровень рабочего процесса -- переопределение настроек проекта для конкретного процесса.

Параметры

ПараметрОписаниеПо умолчанию
ВключеноАктивировать повторные попыткиВыключено
Максимум повторовОт 0 до 102
Стратегияexponential, fixed, immediateexponential
Базовая задержкаЗадержка перед первым повтором (секунды)1
Действие при исчерпанииstop_workflow, error_branch, continue_anywaystop_workflow
Максимальное время повторовОбщий лимит времени на все повторы (секунды)60
JitterДобавление случайного смещения к задержкеВключен
Учитывать Retry-AfterСоблюдать заголовок Retry-After от APIВключен

Стратегии

  • Exponential -- экспоненциальный рост задержки: 1с, 2с, 4с, 8с... Рекомендуется для rate limit.
  • Fixed -- фиксированная задержка между попытками. Подходит для временных сетевых ошибок.
  • Immediate -- немедленный повтор без задержки. Используйте с осторожностью.

Действие при исчерпании попыток

  • Остановить процесс (stop_workflow) -- процесс завершается с ошибкой.
  • Ветка ошибки (error_branch) -- процесс продолжает выполнение по ветке ошибки ноды (если она существует).
  • Продолжить в любом случае (continue_anyway) -- игнорировать ошибку и продолжить по основной ветке.

Самокоррекция (Self-Correction)

Для исправляемых ошибок доступна функция самокоррекции, при которой модель получает описание своей ошибки и пытается исправить ответ:

ПараметрОписаниеПо умолчанию
ВключеноАктивировать самокоррекциюВыключено
Максимум попытокОт 1 до 52
Шаблон промптаПромпт, отправляемый модели вместе с описанием ошибкиСтандартный шаблон
Включить ошибку в историюДобавить сообщение с ошибкой в контекст чатаВключено
Когда использовать самокоррекцию

Самокоррекция наиболее эффективна, когда агент должен вернуть ответ в определенном JSON-формате (структурированный вывод). Если модель сгенерировала невалидный JSON, она получит ошибку парсинга и попробует исправить ответ.

Глобальный обработчик ошибок

Через меню настроек рабочего процесса (значок шестеренки > Обработчик ошибок) можно задать действие, которое выполнится при любой необработанной ошибке в процессе. Это «последний рубеж обороны» после исчерпания всех повторных попыток.

Типичные сценарии отладки

Агент не отвечает или отвечает пустым сообщением

  1. Проверьте техническую шкалу -- есть ли ошибка authentication_error или configuration_error.
  2. Убедитесь, что у агента настроена модель и API-ключи.
  3. Проверьте, не установлен ли тихий режим (Silent Mode) -- он скрывает вывод ноды из потока.

HTTP-нода возвращает ошибку

  1. Посмотрите код ответа в выходных данных ноды на технической шкале.
  2. Проверьте подстановку переменных в URL -- откройте выходные данные и убедитесь, что URL сформирован корректно.
  3. Убедитесь, что заголовки настроены правильно.

Условие If/Else всегда идет по одной ветке

  1. Проверьте текст условия на панели настроек ноды.
  2. Посмотрите входные данные ноды на технической шкале -- убедитесь, что переменные, используемые в условии, содержат ожидаемые значения.
  3. Обратите внимание на типы данных: строка "70" и число 70 -- разные значения.

Функция не выполняется

  1. Проверьте, что в ноде выбрана функция (functionId).
  2. Убедитесь, что функция активна (is_active = true).
  3. Посмотрите логи на технической шкале -- ошибки JavaScript отображаются в поле error.

ForEach обрабатывает пустой массив

  1. Проверьте поле «Путь к массиву» (inputPath) -- оно должно указывать на массив во входных данных.
  2. Посмотрите выходные данные предыдущей ноды -- убедитесь, что они действительно содержат массив.
  3. Если массив вложен в объект, укажите путь через точку: data.items, results.
Просмотр JSON рабочего процесса

В меню настроек (шестеренка) есть пункт Показать JSON. Он отображает полную структуру рабочего процесса в формате JSON, включая все ноды и их конфигурации. Это полезно для глубокой диагностики.