Як влаштоване флоу
Флоу — це вузли й зв'язки між ними. Виконання починається з тригера й іде за зв'язками, поки вони є.
Зв'язки й гілки
Зв'язок виходить із вузла й веде до наступного. Вузол, до якого не веде жоден зв'язок, ніколи не виконається — крім тригера.
Деякі вузли мають кілька виходів:
Condition—trueіfalseSwitchCase— по одному виходу на випадок- будь-який вузол — окрема гілка
error, якщо він упаде
Гілка error — це те, що відрізняє надійне флоу від крихкого. Без неї падіння вузла зупиняє весь прогін.
Повтори й таймаути
У кожного вузла є власні налаштування: скільки разів повторити спробу, з якою паузою й через скільки вважати зависанням. Повтор має сенс для мережі й зовнішніх API; для вузла, який пише дані, повтор може створити дубль — тут краще upsert із ключем.
Скільки вузлів вміщає флоу
У флоу може бути до 200 вузлів. Це не про швидкість, а про те, що з більшим уже неможливо працювати: його не охопиш оком, не перевіриш і не полагодиш, коли зламається. Якщо впираєтесь у межу — винесіть завершену частину в окреме флоу і викличте його вузлом SubFlow: так кожен шматок можна запускати й перевіряти окремо. Змінних — до 100 на флоу.
Межа одного прогону
Один прогін не може виконати більше 1000 кроків — це захист від нескінченного циклу. Ліміт спільний для флоу і всіх сабфлоу, які він викликає, тож обійти його вкладеністю не вийде. Сабфлоу не можуть викликати одне одного колом, а вкладеність обмежена трьома рівнями.
Історія
Кожен прогін пишеться в історію: вхід, виходи вузлів, час, помилка. Зберігаються останні 10 тисяч прогонів на флоу.
Повторити на поточній версії
У картці прогону є кнопка «Повторити». Вхід того прогону проходить через флоу таким, яким він є зараз, а потім вихід кожного вузла порівнюється з початковим: без змін, змінився (з переліком полів, що відрізняються), новий, зник, впав, виправився, заглушка (у сухому повторі вузол не мав записаного виходу). Виходи для сухого повтору беруться насамперед із самого повторюваного прогону. Поля, що змінюються самі по собі, як timestamp, id, messageId чи durationMs, не рахуються за зміну. За замовчуванням повтор іде в сухому режимі, тож зовнішні системи не чіпаються; справжній повтор треба ввімкнути окремо. Якщо у вході того прогону були замасковані поля, діалог повтору їх перелічить: впишіть значення, щоб повторити зі справжнім, або лишіть порожнім — маска піде як є. Повторні прогони позначені в історії.
Перенесення з n8n
Експорт n8n (JSON із nodes і connections) можна імпортувати тією ж кнопкою «Імпорт» на сторінці флоу: формат розпізнається автоматично. Переносяться вебхук, розклад, HTTP-запит, IF з гілками true/false, Set, Slack, Telegram, лист, Google Sheets, Postgres і MySQL, Wait, Merge, Split in Batches, відповідь вебхука; No Operation пропускається зі зв'язком наскрізь. Вирази $json.x, $node["Назва"].json.x і $('Назва').item.json.x перетворюються на input.x і outputs.<id>.x. Вузли без відповідника, як Code і Function, замінюються на заглушку TextFormatter з нотаткою; облікові дані не переносяться, натомість у флоу з'являються секретні змінні SLACK_TOKEN, TELEGRAM_TOKEN, DB_URL тощо, які треба заповнити. Перед створенням показується список нотаток, флоу створюється вимкненим.
Радар дрейфу
Після кожного справжнього прогону запам'ятовується форма відповіді зовнішніх вузлів: HttpRequest, Database, SqlQuery, GoogleSheets, VectorSearch. Зберігаються лише назви полів і їхні типи, не значення. Щоночі форма за вчора порівнюється з формою за попередній тиждень. Якщо поле, яке читає якийсь наступний вузол, зникло або змінило тип, у панелі перевірок з'являється попередження з назвами обох вузлів, а на вебхук сповіщень (якщо він увімкнений) іде повідомлення з позначкою drift. Попередження закривається само, коли поле повертається, або кнопкою «Позначити вирішеним». Порівняння потребує хоча б трьох відповідей за минулий тиждень, тож для нового флоу тривога може з'явитись не раніше ніж за добу.
Що сталось і що змінилось словами
У картці прогону є кнопка «Що сталось?». Асистент читає кроки прогону і переказує їх кількома реченнями звичайною мовою: що прийшло, що вирішилось, куди пішло, де зупинилось. Відповідь зберігається разом із прогоном, тож повторний клік нічого не коштує. У панелі версій біля кожної версії є «Що змінилось»: спочатку список змін відносно попередньої версії (вузли, налаштування, зв'язки, змінні без значень), а кнопка «Пояснити словами» перетворює його на короткий текст. Обидва пояснення пишуться мовою інтерфейсу й рахуються як виклики асистента.
Виправлення збоїв асистентом
Біля прогону з помилкою є кнопка «Запропонувати виправлення». Асистент бачить вузол, що впав, його налаштування, дані, які він отримав, текст помилки й опис цього типу вузла, і повертає виправлені налаштування з поясненням звичайною мовою. Він міняє лише один вузол і не бачить секретів: значення змінних йому не показуються, а замасковані поля входу доходять до нього масками. «Застосувати як нову версію і перевірити» зберігає окрему версію флоу й одразу повторює той самий вхід насухо, тож видно, чи допомогло. Якщо ні, можна попросити ще раз, до трьох разів на прогін. Кожен запит рахується як звичайний виклик асистента.
Еталонні прогони
Вдалий прогін можна позначити еталоном кнопкою в історії. Зберігаються його вхід і виходи всіх вузлів. Після кожного збереження флоу еталони проганяються насухо на новій версії, і кнопка «Еталони» в редакторі показує підсумок: скільки без змін, скільки змінилось, скільки впало. Клік по еталону в панелі відкриває той самий diff по вузлах, що й у повторі. Еталоном не може стати сухий прогін або прогін з помилкою. До 10 еталонів на флоу. Перевірка іде в сухому режимі й списує квоту прогонів так само, як звичайні сухі прогони. Виходи вузлів з побічними ефектами беруться з самого еталона, тож перевірка порівнює лише те, що робить сам флоу.
Сухий прогін
У формі тестового запуску є перемикач «Сухий прогін». У такому прогоні вузли, що виходять у зовнішній світ, не виконуються: HttpRequest з методом, відмінним від GET, записи в Database, SqlQuery і GoogleSheets, FileWriter, Email, Telegram, Slack, а також LlmPrompt і Agent, які коштують токенів. Замість дії кожен такий вузол повертає вихід, записаний на останньому справжньому прогоні цього ж вузла, і крок у результатах позначається ⟲. Береться останній завершений крок цього вузла з будь-якого справжнього прогону, навіть якщо той прогін загалом упав далі. Якщо вузол ще ніколи не завершувався по-справжньому, приходить заглушка з полем dryRun: true, тож наступні вузли можуть впасти на відсутніх полях. Це очікувано: спершу один справжній прогін, далі скільки завгодно сухих. Delay у сухому прогоні не чекає, вкладені флоу теж виконуються насухо. Сухі прогони позначені в історії, не шлють сповіщень і не потрапляють в аналітику.
Перевірки
Внизу редактора є вкладка «Діагностика» — вона показує те, що ми змогли знайти у флоу самі: зламані вирази, читання вузла, який не виконався, порожні обов'язкові поля, вузли без зв'язків. Це та сама перевірка, якою ми перевіряємо флоу, побудовані ШІ.