Сюжеты (Storylines): агенты с состоянием, оркестрируемые графом и выполняющие целый процесс
Сюжет — это направленный граф, по которому агент ведёт каждого конечного пользователя: каждый узел — это шаг (со своей задачей, знаниями и инструментами), переходы несут условия, а прогресс, профиль и заметки по каждому человеку сохраняются и возобновляются между сессиями и каналами. Он превращает агента из ассистента, выполняющего отдельные задачи, в того, кто сам может оказывать многошаговую услугу.
Большинство агентов выполняют отдельные задачи: отвечают на вопрос, бронируют слот, собирают деталь. Они находятся вокруг бизнеса и делают его быстрее. Само обучение, сам коучинг, сама консультация — суть того, что бизнес продаёт, — по-прежнему требует человека. Сюжет — это то, что позволяет агенту взять на себя эту суть: многошаговый процесс с состоянием, который он ведёт с каждым человеком, помня, где тот находится, и адаптируясь по ходу дела. Сюжет языковой школы не просто бронирует урок — он проводит его.
Сюжет — это не «агент с бо́льшим числом навыков»
Это первое, что нужно уяснить, потому что эти две вещи выглядят похоже, но таковыми не являются. Навык — это способность, к которой модель может обратиться; сюжет — это порядок, в котором всё происходит.
| Агент с несколькими навыками | Агент, выполняющий сюжет | |
|---|---|---|
| Последовательность | Любой навык, в любой момент — без порядка | «Ты не доберёшься до B, пока не завершён A» |
| Состояние | Не помнит, где вы были | Прогресс каждого человека сохраняется и возобновляется |
| Что им движет | Модель решает на каждом шаге | Решают граф и его условия |
| Детерминизм | Порядок живёт в «голове» модели | Порядок нарисован в виде графа — версионированного, измеримого |
Навыки отвечают на вопрос что агент умеет делать. Сюжет управляет тем, что происходит и в каком порядке и где именно сейчас находится этот конкретный человек. Эти две вещи не соперники — сюжет является слоем над навыками: каждый узел по-прежнему навешивает свои навыки, знания и инструменты. И поскольку последовательность живёт в явном графе, а не в рабочей памяти модели, сюжет остаётся надёжным по мере удлинения процесса — модели нужно справляться лишь с текущим шагом, а не помнить двенадцатишаговую процедуру, не сбиваясь.
Сюжет против рабочего процесса
Поскольку сюжет — это тоже граф шагов, его легко положить рядом с конструкторами рабочих процессов — всеми этими Dify, n8n и Zapier. Это вещи другого рода. Рабочий процесс автоматизирует процесс между системами: фиксированный конвейер, который срабатывает по триггеру и каждый раз выполняется одинаково, перемещая данные из одного инструмента в другой. У него нет памяти о том, для кого он выполнялся, потому что он выполняется не для кого-то — это машинно-машинная «сантехника».
Состояние сюжета и есть человек. Прогресс, профиль и место в процессе каждого человека сохраняются и возобновляются, поэтому один и тот же граф производит разный, возобновляемый путь для каждого конечного пользователя, и агент ведёт беседу на каждом шаге, а не перекладывает данные между приложениями. Рабочий процесс автоматизирует задачу; сюжет оказывает услугу человеку и помнит его.
| Рабочий процесс (Dify, n8n, Zapier) | Сюжет | |
|---|---|---|
| Что проходит через него | Данные, между системами | Человек, через процесс |
| Состояние | Без состояния — один и тот же прогон каждый раз | С состоянием — по одному сохранённому пути на человека |
| Для кого выполняется | Ни для кого; запускается событиями | Конкретный конечный пользователь, помнимый между сессиями и каналами |
| Единица работы | Шаг автоматизации («вызови этот API») | Шаг беседы («агент ведёт этот этап») |
| Вы берётесь за него, когда | Двум системам нужно поговорить друг с другом | Услугу нужно оказать людям в масштабе |
Граница проста: если задача — «когда происходит X, сделай Y с данными», это рабочий процесс. Если задача — «проведи каждого человека через это и адаптируйся к тому, где он находится», это сюжет. Вы по-прежнему можете использовать оба — узел сюжета может обратиться к рабочему процессу, чтобы выполнить машинно-машинную работу за шагом.
Составные части
- Узлы — это шаги. Каждый узел перенастраивает того же агента под этот шаг: свой промпт задачи, базы знаний, навыки и инструменты (добавленные поверх базового набора агента или заменяющие его). Личность и границы безопасности агента никогда не меняются между узлами.
- Переходы — это то, как узел продвигается вперёд, и каждый несёт условие: правило на профиле
(
listening ≥ 70), нажатие пользователем кнопки, суждение ИИ о нечётком критерии («когда он может составить предложение без подсказки»), сигнал от внешней системы или переход к другому сюжету. - Профиль путешествует с человеком — измерения, которые вы определяете под предмет (listening, speaking, reading, writing для языка; нечто совсем иное для истории), накопленные по всем сюжетам, плюс свободная «черновая доска» заметок для передачи, идущих от одного узла к следующему.
- Сцепление связывает сюжеты друг за другом — первый класс перетекает во второй — чтобы вы могли выращивать большой путь, не строя его весь сразу, и ветвиться к другому сюжету по итогу (пользователь, не сдавший экзамен, попадает на линию доработки, а не в следующий класс).
Прогресс — по человеку, а не по чату, поэтому кто-то может уйти на полпути и продолжить ровно с того места, где был — в вебе, в Telegram или WhatsApp, где бы он ни вернулся.
Паттерны оркестрации
Сюжет выполняется как единый токен, идущий по графу, и эта одна модель выражает любую распространённую форму управления потоком. Порядок живёт в графе — версионированный и доступный для проверки, — а не в кратковременной памяти модели, поэтому он остаётся надёжным по мере того, как процесс становится длиннее и ветвистее.
Ветвление — if / else / switch. Узел с несколькими правило-переходами, проверяемыми сверху вниз; выигрывает первый, чьё условие выполняется. Детерминированно, оценивается на сохранённом состоянии, без угадывания моделью.
Цикл — повтор с ограничением. Обратное ребро и счётчик: каждая попытка увеличивает измерение, а правило ограничивает его и направляет дальше. Повторы ограничены состоянием, которое граф записал сам, а не надеждой на то, что модель ведёт счёт.
Параллель — сделать всё / AND-объединение. Несколько под-потоков, которые человек проходит в любом порядке, каждый со своими отдельными шагами; сюжет продвигается только после того, как завершена каждая ветвь.
Что делает всё это детерминированным — это то, что переход может установить или увеличить часть профиля в момент, когда он совершается: флаг завершения, счётчик повторов, итог маршрутизации. Ветви и объединения затем читают из состояния, которое сам граф записал шагом ранее, а не из воспоминания LLM о том, что произошло. Модель ведёт беседу на текущем шаге; граф ведает тем, что происходит дальше.
Шаги, которые разворачиваются в планы
Некоторые шаги слишком зависят от ситуации, чтобы прописать их целиком. Шаг «собрать документы», например, — это разный чек-лист для китайского основателя, живущего в США, и для немецкого, живущего у себя дома. Пометьте такой шаг как разворачиваемый — и когда пользователь до него дойдёт, агент предложит развернуть его — для этого пользователя, прямо на месте — во временный под-план, сгенерированный динамическим планировщиком: со своими шагами, чек-листами и видимым прогрессом. План выполняется вложенно: ваш сюжет приостанавливается на этом шаге, план отрабатывает, и по его завершении сюжет продолжается ровно с того места, где остановился. Роли разделяют два правила: созданный вами сюжет всегда имеет приоритет над чем-либо сгенерированным, и любое разворачивание предлагается, а не навязывается — пользователь сначала подтверждает. (Динамический планировщик — возможность уровня Pro, у неё есть собственная страница, где описано и то, как планы запускаются вне сюжетов.)
Подключение внешних систем
Узел может передать управление третьей стороне и действовать на основе того, что вернётся: оценённое тестирование, KYC-проверка, встроенная мини-игра. Этот результат — балл, вердикт, подтверждение платежа — может обновить профиль или удовлетворить условие перехода. Две формы: бэкенд-передача (данные уходят в инструмент, и результат возвращается, невидимо) и передача с редиректом-и-ожиданием (беседа показывает ссылку, блокируется и возобновляется, когда внешний шаг завершается — как это делает платёжный поток).
Где это уместно
Сюжеты подходят любому бизнесу, чья основная услуга и есть структурированная, поэтапная, персональная беседа: репетиторство и языковая практика, коучинг и программы подотчётности, поэтапный консалтинг и управляемые продажи, приём заявок и предварительная квалификация, сертификация и обучение. Везде, где ценность сегодня ограничена часами человека, сюжет позволяет одному агенту вести этот процесс для тысяч людей одновременно — при этом части, которым действительно нужен человек, остаются за человеком.
Сюжеты — это возможность уровня Pro, включаемая по каждому арендатору. Они создаются как граф в консоли (или через API, чтобы мастер или ассистент мог построить сюжет), версионируются и публикуются, причём пользователи «в пути» закреплены за той версией, на которой начали.
Частые вопросы
- Чем это отличается от того, чтобы просто написать более длинный системный промпт?
- Промпт описывает всё сразу и надеется, что модель за всем уследит; сюжет даёт агенту только тот шаг, на котором человек сейчас находится, и хранит его прогресс вне модели. Именно поэтому сюжет ведёт себя правильно и на двадцатом ходу, и когда человек возвращается неделю спустя в другом канале.
- Что происходит, если клиент посреди сюжета уходит в сторону от темы?
- Агент отвечает на вопрос и остаётся на том же шаге — уход в сторону не продвигает сюжет и ничего не помечает как собранное. Когда человек возвращается к задаче, сюжет продолжается ровно с того места, где был.
- Можно ли менять сюжет, когда люди уже находятся внутри него?
- Да. Прогон каждого человека закреплён за той опубликованной версией, на которой он начал, поэтому редактирование и повторная публикация никого не потревожат на полпути. Когда переводить действующие прогоны на новую версию, решаете вы.
- Видят ли конечные пользователи, что находятся внутри сюжета?
- Это ваш выбор, отдельно для каждого сюжета: он может быть полностью невидимым, показывать только название, показывать сокращённую карту с местом, где человек сейчас, или показывать полную карту шагов с прогрессом. В сокращённых режимах ничего о будущих шагах и непройденных ветвях в браузер не отправляется.
- Что если клиент так и не дойдёт до конца?
- Его прогресс просто ждёт — он принадлежит человеку или делу, а не сессии браузера. Вы видите, кто застрял и на чём, и обычно в этом и смысл: незаконченная заявка — это лид, с которым можно работать, а не молчаливый уход.
Почти всё, что агенту нужно знать, уже где-то записано — на вашем сайте и в тех PDF, которые ваша команда и так рассылает клиентам. Импорт по URL закрывает публичную половину, загрузка файлов — остальное.
Структурированный индекс — это небольшая таблица, которую агент формирует на основе полей, уже содержащихся в ваших документах (название, цена, уровень, ссылка, изображение), вместе с векторным поиском, используемым для понимания смысла. Векторный поиск находит фрагменты, которые по смыслу похожи на вопрос; он не умеет считать, фильтровать по числовым значениям или группировать. Структурированный индекс отвечает на такие вопросы и позволяет агенту точно цитировать ссылку или идентификатор, вместо того чтобы восстанавливать их из фрагмента.
Динамический планировщик следит за разговором и, когда пользователь решает действительно многошаговую задачу внутри предметной области агента и заметно не понимает, как к ней подступиться, предлагает развернуть эту задачу во временный сюжет — пошаговый план на чек-листах, который агент затем выполняет по одному сфокусированному шагу за раз, показывая пользователю прогресс. Планирование происходит один раз и проходит валидацию; выполнение детерминировано.
Длинное письмо — это агент, создающий полный многосекционный документ — заявление, отчет о выходе на рынок, меморандум по проверке благонадежности — путем предварительного планирования структуры, запроса всего необходимого перед началом, исследования каждой секции на основе ваших материалов и открытых источников и написания секции за секцией в рамках задачи, которая сохраняется после перезапуска. Вы редактируете его в холсте рядом с чатом, переписываете любой фрагмент, выделяя его, и каждая версия сохраняется.