Что делать, если…
Страница собрана по симптому, а не по подсистеме: вы видите на экране что-то непонятное — находите это здесь, читаете причину и уходите на подробную страницу. Диагноз почти всегда даёт одно из трёх мест, и стоит знать их заранее:
| Где смотреть | Что там видно | Когда полезно |
|---|---|---|
| Панель проверки в редакторе | Ошибки и предупреждения схемы с кодами | До запуска: форма графа |
| Вкладка «Тест», панель Debug | Отрендеренные шаблоны, вход и выход каждой ноды | Сразу после запуска: что именно ушло в ноду |
| Раздел «Запуски» | Статус, причина пропуска, ошибка, кредиты | Постфактум, в том числе по чужим ходам |
Названия кнопок и вкладок дальше приведены так, как они выглядят в интерфейсе.
Правка ничего не изменила
Видно: вы поменяли промпт или условие, отправили сообщение на вкладке Тест — и поведение прежнее.
Почему: канвас показывает текущий холст, включая несохранённые правки, а запуск исполняет последнюю сохранённую версию. Граф для запуска берётся из версии воркфлоу, а не из того, что нарисовано на экране, — иначе один и тот же запуск означал бы разное у двух вкладок браузера, открытых на одном воркфлоу.
Что делать: нажмите Сохранить и повторите. Если в тесте всё верно, а живой чат отвечает по-старому — это второй слой того же: публичный чат, виджет и остальные каналы обслуживают опубликованную версию, а не последнюю сохранённую. Нужна публикация.
Кнопка публикации серая и написано «Актуально»
Видно: на вкладке Публикация кнопка не нажимается, на ней Актуально вместо Опубликовать версию 7.
Почему: публиковать нечего — опубликованная версия совпадает с текущей, и настройки каналов тоже не менялись. Кнопка гаснет и по второй причине: выбранный набор каналов неполон, и публикация была бы бессмысленной.
| Состояние | Что делать |
|---|---|
| Надпись «Актуально» | Изменений нет. Сохраните правку графа или измените настройку канала — надпись сменится на номер версии. |
| Не выбран ни один канал | Включите переключатель хотя бы одного канала в списке слева. |
| Включён Telegram, бот не выбран | Выберите бота в детали канала — без него публиковать некуда. |
| Включено расписание, выражение пустое | Задайте расписание; пустое поле блокирует публикацию молча. |
Подробнее — вкладка «Публикация».
Публикация отклонена
Видно: внизу вкладки Публикация появилась красная плашка с текстом ошибки.
Почему: причин три, и они из разных слоёв.
① Валидация на публикации строже редакторской. Пять кодов проверки в редакторе —
предупреждения, а на публикации и запуске — ошибки: exec.multi_exit_race,
exec.no_execution_edges, node.config_invalid, wire.required_port_not_wired,
wire.resource_no_source. Так сделано намеренно: черновик имеет право быть недоделанным,
а граф, уходящий в движок, — нет. Полный список — коды валидации.
② Канал не разрешён тарифом. На бесплатном тарифе публикация возможна только в публичный чат и виджет; Telegram, вебхук и расписание — платные. Текст ошибки называет отклонённые каналы.
③ Превышен лимит опубликованных воркфлоу. На бесплатном тарифе одновременно опубликован может быть один воркфлоу. Снимите публикацию с другого — или переходите на платный тариф.
Проверить, какой воркфлоу занимает слот, можно в списке воркфлоу: номер версии стоит у каждого, а занятый слот выдаёт бейдж Активен — у остальных там Черновик.
Запуск отклонён — «Недостаточно кредитов»
Видно: сообщение не отправляется, приходит ошибка о кредитах или о бюджете рабочего пространства.
Почему: баланс кредитов на нуле. На бесплатном тарифе работа сверх баланса запрещена, поэтому запуск отбивается до первой ноды, а не посреди хода: платформа не начинает работу, за которую нечем заплатить.
Отдельно от баланса существует бюджет рабочего пространства — самоограничение владельца на период. Его сообщение говорит, сколько кредитов из бюджета израсходовано. Баланс при этом может быть не пуст: это два независимых потолка.
Что делать: дождаться начисления в новом периоде, поднять бюджет рабочего пространства (это делает владелец) или перейти на тариф с большим включённым объёмом.
Куда уходят кредиты — кредиты и стоимость и лимиты тарифа.
Нода помечена пропущенной
Видно: в запуске на вкладке Выполнение нод (12) нода серая. Кликните по ней, вкладка Инфо, строка Почему пропущен.
Почему: пропуск — не ошибка. Нода исполняется, только если её активировало входящее
ребро; всё остальное честно помечается пропущенным, и причин ровно шесть. В интерфейсе
показывается фраза, а в API и MCP (get_execution) — короткий код. Ниже они рядом,
потому что это одно и то же значение:
| Фраза в интерфейсе | Код | Что это значит и что делать |
|---|---|---|
| Условие выше выбрало другую ветку | branch_not_taken | Штатная работа: условная нода пошла второй ногой, переключатель совпал с другим случаем. Ничего чинить не надо. |
| Все пути сюда оборвались из-за ошибки выше | upstream_failed | Нода выше упала, и ошибку никто не перехватил. Смотрите её ошибку; если падение допустимо — нарисуйте ветку on_error. |
| Не дождался входов: N | unmet_in_degree:N | Часть входов сработала, N остались неразрешёнными. Это дефект схемы: обычно два независимых пути сходятся в ноду без барьера. |
| Ни один предшественник не выполнялся | upstream_not_run | Вся ветка выше не запускалась. Ищите причину у её головы — она тоже будет пропущена. |
| Тело цикла ни разу не выполнялось | loop_body_not_entered | Нода лежит внутри тела цикла или итерационной ноды, а тело не выполнилось ни разу: пустой список, условие цикла ложно с самого начала. |
| Нечем запустить: нет входящей связи | no_exec_trigger | У ноды нет ни одной зависимости планировщика и её никто не посеял: положили на холст, но не подключили ребром. |
Седьмое значение — unknown («Причина неизвестна») — встречается крайне редко и означает
состояние, которое классификатор не смог объяснить; сохраните ссылку на запуск.
Механика активации разобрана в как исполняется граф, список статусов — в статусах.
Запуск «завершён», а ответа нет
Видно: статус зелёный, но чат молчит или результат пуст.
Почему: завершён (completed) означает «ни одна нода не упала необработанной ошибкой» — и не
означает «граф прошёл целиком». Пустой ответ в чат не отправляется вовсе: платформа не
шлёт пустое сообщение и не пишет его в историю, поэтому «успешный запуск без ответа»
выглядит именно так.
Две типичные причины:
- Взятая ветка не дошла до
exit. Найдитеexitв списке нод запуска: он будет пропущен, с причиной из таблицы выше. Обычно виноватif, у которого одна нога никуда не ведёт. exitотработал, но вернул пусто. Значение на его вход не пришло — смотрите вкладку выходов предыдущей ноды.
Форму «exit недостижим из входа» валидатор ловит до запуска и отбивает как ошибку
exec.exit_no_exec_trigger; недостижимые ноды без exit — предупреждение
node.not_activated. Если запуск дошёл до движка с такой формой, значит граф сохранён
раньше, чем правило появилось: прогоните Проверить ещё раз.
Подробности — вход и выход.
Поле шаблона пустое
Видно: в промпт ушёл текст с дырой, HTTP-нода отправила пустой параметр.
Почему: неизвестное имя в шаблоне не роняет ноду — оно рендерится пустой строкой. Это защита от падения всего хода из-за одного опечатанного идентификатора, но платят за неё тем, что опечатка не видна.
Где увидеть:
- В редакторе — панель проверки:
ref.unknown_node(ссылка на несуществующую ноду) иref.undefined_var(неизвестная переменная). Оба — предупреждения, они не блокируют сохранение. - После запуска — вкладка Тест, панель
Debug, секцияRendered templates: там видно, что реально ушло в ноду, а ключ__undefined_refs__перечисляет все пути, которые не разрешились. Это единственный точный след опечатки.
Частая ловушка: | default(0) подставляет запасное значение только вместо отсутствующего
имени — зато на любой глубине, включая variables.review.score. Пустую строку, которая реально
пришла, он не заменяет: для этого нужна форма | default(0, true).
Разбор — шаблоны.
Ответ приходит целиком, а не по словам
Видно: в чате долгая пауза, потом весь ответ разом.
Почему: стрим — отдельный презентационный канал, и он есть не на каждом ребре.
| Причина | Что делать |
|---|---|
| Ребро не стримящее | Кликните по ребру от модели к exit: у ребра типа «исполнение + данные + стрим» есть переключатель, отключающий стрим-канал. Если он снят — ответ придёт целиком. |
| Между моделью и exit есть обычная нода | Она переписывает значение, и токены перестали бы совпадать с ответом. Стрим до конца доходит только по цепочке прозрачных для него звеньев. |
| Ответ заведён в барьер wait_all | Вход барьера не стрим-порт, поэтому по умолчанию не стримится вовсе. Валидатор скажет об этом кодом wire.stream_swallowed_by_barrier; проброс включается опцией барьера и работает, когда за барьером сразу exit. |
| Стримов два одновременно | Два потока попадают в один пузырь и перемешиваются — предупреждение wire.concurrent_stream_merge. Мультиплекса нет: оставьте один первичный поток. |
Типы рёбер и переключатель — связи между нодами.
Telegram-бот молчит в группе
Видно: в личке бот отвечает, в группе — нет, или отвечает только на прямые обращения.
Почему: ограничения на стороне Telegram, а не платформы. Bot API по умолчанию отдаёт боту в группе только команды, ответы на его сообщения и упоминания.
Что проверить — по порядку:
- Режим приватности у @BotFather. Отключите privacy mode и перезаведите бота в группе (выйти и добавить заново) — иначе старое ограничение остаётся в силе.
- Права администратора. Часть возможностей (модерация, удаление сообщений) требует прав админа; без них вызовы отклоняет Telegram.
- Подписка на типы обновлений. Событий, не отмеченных в списке получаемых обновлений на вкладке Публикация, бот не получает вовсе — например, входы и выходы участников.
- Триггерные фразы. Если задан список фраз, всё остальное бот игнорирует осознанно.
В детали Telegram-канала есть кнопка Проверить бота: она спрашивает у Telegram, что бот видит на самом деле, и показывает несовпадения — включённый privacy mode, недостающие права, неподписанные типы обновлений, последнюю ошибку вебхука. Начинайте с неё. Подробности — Telegram.
Модель пропала из списка
Видно: модель, которой вы пользовались, отсутствует в поле выбора у ноды.
Почему: списки фильтруются строго, и фильтров два.
- Назначение модели. У своей модели (интеграция OpenAI-совместимого провайдера) есть назначение — чат, эмбеддинги или rerank. Модель с назначением «эмбеддинги» не появится в поле модели LLM-ноды, а попытка использовать её как чат-модель завершится ошибкой «модель объявлена как embedding». Проверьте назначение в интеграции — свои модели и ключи.
- Видимость. В разделе Настройки → Модели видимость каждой модели переключается отдельно; выключенная не попадает в выпадающие списки. Загруженные у провайдера модели по умолчанию выключены — каталог моделей.
На бесплатном тарифе свои модели запрещены целиком — и не «создадутся, но не покажутся»: сама интеграция с ключом провайдера не сохранится, добавление вернёт отказ по тарифу.
Запуск висит в очереди
Видно: статус в очереди (queued) держится дольше, чем обычно занимает ход.
Почему: ходы одной сессии чата выполняются строго по одному. Пока предыдущий ход не завершился, следующий ждёт — иначе два хода одного разговора писали бы в общую память одновременно и перемешивали события в потоке. Это нормальное состояние, а не сбой.
Что делать:
- Посмотрите на предыдущий ход той же сессии: если он выполняется, всё в порядке. Если он завис на медленной ноде — ограничения времени описаны в лимитах и бюджетах.
- Слишком много накопившихся ходов в одной сессии отбиваются заранее — вы получите ошибку на отправке, а не бесконечное ожидание.
- Отправка в разные сессии параллельна, но тариф ограничивает число одновременных запусков владельца: на бесплатном это один.
Разные разговоры — разные сессии; проверить, в какую попало сообщение, можно на странице запуска.
«Внутренняя ошибка. Код обращения: …»
Видно: ошибка без подробностей, с длинным идентификатором.
Почему так и задумано. Ответ стороннего сервиса, полученный на ключе платформы, наружу не показывается: он ничего не говорит о том, могли ли вы поступить иначе, и при этом умеет протаскивать в текст лишнее — адреса, фрагменты ключей, имена внутренних классов. Поэтому у сообщения два уровня: осмысленный текст там, где сервис ваш, и непрозрачная формулировка с кодом обращения там, где он не ваш.
Подробности видны, когда сервис принадлежит вам: ваш HTTP-запрос, ваша база, ваша интеграция рабочего пространства, ваша модель по своему ключу. Если модель платформенная, её ответ вы не увидите — назовите код обращения в поддержке, по нему находится запись в логе.
Что делать: попробуйте повторить, если ошибка похожа на временную; если повторяется —
код обращения плюс ссылка на запуск. Классификация кодов ошибок и ветка on_error —
ошибки нод.
Что дальше
Статусы и пропуски
Что означают завершён, частично и с ошибкой.
Запуски
Где смотреть вход, выход, ошибку и кредиты каждой ноды.
Коды валидации
Полный список проверок и что каждая означает.
Как исполняется граф
Почему нода запускается или не запускается.
Ошибки нод
Ветка on_error, коды и повторы.
Первый чат-бот
Пройти путь заново на маленьком примере.