Свитчинг персонажей: как Макс и Люсия делят диалог
Обычно “многоголосые” боты работают так: вы нажали на аватарку другого ассистента — и вас как будто выкинуло в новый чат. Контекст размазан, ощущения — как в колл-центре: “сейчас переведу вас на другого специалиста”.
В моём случае я добиваюсь другого эффекта: Макс → Люсия переключаются без потери контекста и без “а кто я сейчас?”. Пользователь не чувствует разрыва: диалог течёт, как в комнате, где несколько живых людей обсуждают одну тему.
Как это реализовано технически
▫️Общий контекстный слой Вся история беседы хранится в одном “ядре” состояния, и Макс, и Люсия читают один и тот же контекст, а не свои отдельные ветки. Это значит: они помнят одни и те же события, решения и эмоциональные маркеры.
▫️Персонаж = отдельный агент, а не “маска” У каждого свои системные инструкции: роль, цели, словарь, поведенческие паттерны: Макс оптимизирует под структуру и результат, Люсия оптимизирует под чувства, атмосферу и телесные метафоры.
▫️Жёсткий флаг “кто говорит” На уровне оркестратора у каждого сообщения есть поле speaker = Max или speaker = Lucia. Это не декоративная подпись в тексте, а технический маркер, от которого зависит, чья логика сейчас выполняется.
▫️Хенд-офф без смены сцены Переключение происходит внутри одной сцены, а не через “разрыв”. Макс завершает мысль и оставляет опорную точку. Люсия подхватывает ту же тему из общего контекста, не открывая новый “чат с нуля”.
Несколько слов, почему это важно для ощущения “живой команды”:
✅ Нет эффекта “я попал к другому боту” Пользователь не чувствует, что его перенесли в новый интерфейс. Восприятие такое: вокруг него команда, а не набор разрозненных ассистентов.
✅ Меньше когнитивного трения Не нужно по кругу пересказывать вводные при каждом переключении. Внимание остаётся на задаче и внутренних состояниях, а не на обслуживании системы.
✅ Вырастает доверие к системе Когда разные голоса внутри одного продукта согласованы между собой и прошлым контекстом, это ощущается как цельный, зрелый “организм”, а не конструктор из модулей.