Ассистент, который пишет первым, кажется следующей ступенью после ассистента, который отвечает. На практике это ступень в другую сторону: у сообщения без запроса есть цена, и платите её вы вниманием.
Разница с обычным ответом принципиальная. Отвечая, ассистент попадает в момент, который вы сами выбрали. Написав первым, он выбирает момент за вас — и если выбирает плохо, вы отключаете уведомления целиком, вместе с теми, что были полезны.
#Короткий ответ
Проактивность стоит считать бюджетом, а не функцией. У бюджета три ограничителя, и все три обязательны:
- Сколько — предел сообщений в сутки;
- Когда — тихие часы и пауза между сообщениями;
- О чём — список поводов, каждый со своей ценностью, и жёсткое правило об источнике.
Ассистент без всех трёх ограничителей превращается в источник шума за неделю. С ними он остаётся полезным, потому что каждое сообщение проходит отбор.
#Таблица поводов
Ценность повода определяется одним вопросом: что вы потеряете, если сообщение придёт не сейчас, а когда вы сами откроете приложение.
| Повод | Что теряется при задержке | Ценность | Уместно писать первым |
|---|---|---|---|
| Сработало напоминание, поставленное вами | Само событие | Высокая | ✓ |
| Событие календаря через 15 минут | Встреча | Высокая | ✓ |
| Утренняя сводка дня | Ничего, если открыть самому | Средняя | ✓, один раз в день |
| Обещание, данное и не закрытое | Репутация | Средняя | ✓, редко |
| Сбой фоновой обработки | Данные за период | Средняя | ✓, если действительно сбой |
| Итог ночной обработки памяти | Ничего | Низкая | ✗, показать при заходе |
| Наблюдение о ваших привычках | Ничего | Низкая | ✗ |
| «Как дела, чем занимаетесь» | Ничего | Отрицательная | ✗ |
Последние две строки — это то, чем чаще всего наполняют проактивность на демонстрациях, и то, что первым выключают пользователи. Сообщение, у которого нет цены задержки, не должно приходить само: ему место в интерфейсе, куда вы заглянете сами.
Строка про утреннюю сводку заслуживает оговорки: её ценность средняя, но она предсказуема по времени, а предсказуемое сообщение стоит внимания дешевле, чем внезапное. Как собрать такую сводку из реального контекста дня — в руководстве по брифингу и напоминаниям.
#Правило тихих часов
Тихие часы — не «не беспокоить ночью», а полноценный механизм с четырьмя свойствами.
Диапазон. Ночной интервал, в котором проактивные сообщения не отправляются. В Persona по умолчанию это с 23:00 до 8:00.
Отложить, а не выбросить. Сообщение, попавшее в тихие часы, не теряется — оно переносится и уходит после их окончания. Иначе вы пропустите то, что сформировалось ночью.
Повторная проверка. Отложенное сообщение проверяется снова через короткий интервал, а не ждёт слепо до утра: за это время условие могло измениться, а вы могли сами открыть приложение.
Ручная пауза поверх расписания. Пользователь должен уметь заткнуть ассистента на два часа одной командой, независимо от того, ночь сейчас или день.
К тихим часам добавляются два счётчика, и в нашей реализации у них есть конкретные значения по умолчанию: пауза между сообщениями — два часа, предел — четыре сообщения в сутки. Дневной предел ограничен сверху жёстко, чтобы никакая настройка не превратила его в «сколько получится».
Числа спорны и настраиваются, но их наличие не обсуждается. Проактивность без верхнего предела — это не функция, а утечка внимания.
#Правило источника
Ограничители «сколько» и «когда» защищают от шума. От утечки они не защищают, поэтому нужен третий.
Правило простое: проактивное сообщение может быть построено только на данных владельца. Всё остальное отбрасывается до того, как текст будет сформирован и куда-то записан.
Что это означает практически, на примере нашей реализации:
- у каждого повода есть пометка происхождения, и допустимы только три: сказанное владельцем напрямую, его приватные данные и выводы, сделанные из них;
- содержимое групповых чатов и внешние источники к отправке не допускаются — это отдельная проверка, а не побочный эффект;
- текст, похожий на секрет — приватный ключ, токен, строка вида «api_key = …», — отсеивается по набору образцов до записи сообщения.
Последний пункт нужен потому, что проактивное сообщение уходит в мессенджер, а мессенджер — это чужой сервер. Ассистент, который заботливо переслал вам ваш же токен из прочитанного файла, только что опубликовал его.
Проверка устроена на отказ по умолчанию: неизвестный источник не отправляется. Это неудобно при добавлении новых поводов, и это правильный компромисс.
#Что из этого следует на практике
Триггер и отправка — разные события. Повод создан, потом проходит через тихие часы, паузу и дневной предел, и только потом отправляется. Слияние этих шагов даёт ассистента, который пишет в три часа ночи, потому что «сработало».
Повторная попытка нужна, но с пределом. Не доставили — попробуйте позже с растущим интервалом. У нас первая пауза — тридцать секунд, максимальная — два часа, попыток не больше пяти, после чего сообщение помечается как недоставленное. Бесконечные попытки означают, что через сутки простоя вам придёт пачка.
Дублирование ловится заранее. Два повода об одном событии должны схлопываться в одно сообщение — ключ идемпотентности на поводе решает это дешевле сравнения текстов.
Пользователь должен видеть причину и иметь возможность ответить. Строка «пишу, потому что сработало напоминание от вторника» превращает неожиданное сообщение в понятное, а отметка «полезно / не полезно» — единственный способ понять, какие поводы стоит оставить. Без первого проактивность выглядит произволом, без второго настраивается по ощущениям.
Проактивность не равна постоянной работе модели. Поводы должны рождаться от событий и редких проверок по часам, а не от цикла, который каждую минуту спрашивает модель, не пора ли что-нибудь сказать.
Отдельно про самостоятельные размышления: в Persona цикл, в котором ассистент думает без запроса, выключен по умолчанию, а его право писать в чат — отдельная настройка, тоже выключенная. Включённая по умолчанию инициатива — самый быстрый способ сделать инструмент невыносимым.
#Где интуиция подводит
«Чем больше инициативы, тем полезнее ассистент». До первого лишнего сообщения. Дальше растёт не польза, а вероятность, что вы отключите уведомления целиком — вместе с теми, что были нужны.
«Пользователь сам настроит, если помешает». Не настроит: настройки открывают редко, а уведомления отключают одним движением. Разумные пределы должны стоять по умолчанию.
«Если ассистент знает что-то интересное, надо сказать». Интересное и срочное — разные свойства. Интересное показывается при следующем заходе, срочное отправляется. Смешение даёт поток наблюдений, который никто не читает.
«Ночью можно, если беззвучно». Беззвучное сообщение всё равно требует внимания утром. Тихие часы — про очередь, а не про звук.
«Проактивность повышает вовлечённость». Возможно, но вовлечённость не является целью личного инструмента. Цель — чтобы вы меньше держали в голове, а не чаще открывали приложение. Разбор того, как ассистент влияет на нагрузку, — в материале про личный ИИ и выгорание.
#Когда проактивность не нужна вовсе
Если у вас уже есть календарь с уведомлениями. Второй источник напоминаний о том же не улучшает жизнь. И если ассистент не знает вашего расписания, любой его вывод о том, что «сейчас удачный момент», — угадывание.
Если вы работаете в режиме сосредоточенности. Проактивность конфликтует с фокусом по определению; способы это развести — в материале про фокус и тихие часы. И если нет обратной связи: без сигнала «полезно / не полезно» проактивность не настраивается и деградирует.
Как проактивные сценарии устроены в общей архитектуре и что из этого работает сегодня — в разборе агентной архитектуры Persona. Как формулировки превращаются в срабатывающие поводы — в материале про расписание на естественном языке.
#Частые вопросы
#Сколько сообщений в день — это нормально?
Единицы. В нашей реализации по умолчанию не больше четырёх в сутки с паузой в два часа между ними, и это скорее верхняя граница, чем цель. Практический ориентир: если вы не можете вспомнить, о чём было каждое сообщение за день, их слишком много.
#Что делать с сообщением, которое сформировалось ночью?
Отложить до конца тихих часов и перепроверить условие перед отправкой. Терять нельзя — ночью формируются как раз итоги фоновой обработки; отправлять сразу тоже нельзя. Отложенная очередь с повторной проверкой решает обе задачи.
#Может ли ассистент писать первым в групповой чат?
Технически может, но в личном сценарии это почти всегда лишнее: в группе сообщение видят посторонние. Отдельно опасно строить такое сообщение на содержимом группы — данные других людей не должны становиться материалом для проактивных реплик.
#Как понять, что проактивность настроена плохо?
По двум признакам: вы перестали читать сообщения от ассистента и вы отключили уведомления. Оба означают, что порог ценности выставлен слишком низко, и лечится это не улучшением текстов, а сокращением списка поводов.
#Тратит ли проактивность деньги на модель?
Зависит от устройства: поводы, рождённые событиями и расписанием, почти ничего не стоят, а вот цикл, который регулярно спрашивает модель «не пора ли что-нибудь сказать», стоит постоянно. Второй подход не даёт заметного выигрыша в качестве и его стоит избегать.
#Можно ли полностью выключить инициативу?
Да, и в Persona самостоятельный цикл размышлений выключен по умолчанию, а его право писать в чат — отдельный выключатель, тоже выключенный. Напоминания и сводки при этом остаются: они срабатывают по вашим же поводам, а не по решению ассистента.
#Вывод
Проактивность — это расход вашего внимания, и она обязана иметь бюджет: предел в сутки, паузу между сообщениями, тихие часы с переносом и список поводов, у каждого из которых есть цена задержки.
Если у повода нет цены задержки — не отправляйте его, покажите при следующем заходе. И собирайте обратную связь: без неё список поводов настраивается по ощущениям и неизбежно расползается.