← Курс по Mastra · Урок 3
Урок 3 · ~8 минутОдна идея этого урока: workflow – это чек-лист, который выполняется всегда одинаково. И он умеет ставить процесс на паузу, пока человек не примет решение.
В прошлом уроке агент сам решал, что делать. Workflow – противоположность: вы заранее фиксируете шаги, их порядок, ветвления и параллельность. Нейросеть может работать внутри отдельных шагов, но маршрут ей не доверен.
| Агент | Workflow | |
|---|---|---|
| Маршрут | выбирает модель | задан вами жёстко |
| Результат | гибкий, но вариативный | предсказуемый |
| Подходит для | открытых задач, диалогов | бизнес-процессов, автоматизаций |
Кубики простые: шаг (createStep) – это одно действие со входом и выходом. Шаги соединяются методами-глаголами:
.then() – потом сделай это;.branch() – если/иначе (заявка горячая → менеджеру, холодная → в рассылку);.parallel() – делай одновременно;.foreach() – повтори для каждого элемента (например, для каждого урока курса).Каждый шаг описывает схему входа и выхода (через библиотеку zod) – поэтому конвейер нельзя собрать «криво»: несостыковка обнаружится ещё при написании кода, а не в продакшне.
Шаг может вызвать suspend() – и весь процесс замирает, сохраняясь в базу. Через час или через неделю вы нажимаете «одобрить» – и процесс продолжается с того же места через resume(). Это называется human-in-the-loop.
// Шаг "ждём одобрения"
execute: async ({ inputData, resumeData, suspend }) => {
if (!resumeData?.approved) {
return await suspend({ message: 'Одобрите рассылку: ' + inputData.summary })
}
return { output: 'Рассылка отправлена' }
}
Источник: документация Mastra, раздел Suspend & Resume.
1. Чем workflow принципиально отличается от агента?
2. Что происходит с процессом при suspend()?
💬 Спросите Claude Code: «нарисуй схему workflow для подготовки эфира к публикации» – и сравните с тем, как вы делаете это сейчас.