Обсудить проект →

Как мы убрали очередь из советов в Консьерже здоровья

Советов было столько, что человек переставал на них отвечать.

В этой статье — о том, как мы собрали рекомендации ИИ-агентов в одну утреннюю сводку, ограничили поток сообщений и сохранили планы разных тренеров от случайной отмены.

Отдельные агенты присылали полезные наблюдения по одному. Каждое вроде стоит прочитать. Но когда сообщения копятся, человеку приходится разбирать уже не только свою задачу, но и саму ленту: искать повторы, вспоминать контекст, решать, что ещё актуально. В какой-то момент даже хороший совет становится ещё одним непрочитанным пунктом.

Когда полезное превращается в рутину

Консьерж здоровья — личная команда ИИ-агентов: тренеры, врачи-наблюдатели и аналитики. Она каждый день читает данные с часов — сон, пульс, нагрузку и тренировки, — ведёт планы и подсказывает, что стоит сделать сегодня. Человек задаёт цели и принимает решения.

Для бизнеса, который автоматизирует работу, задача знакомая. Отдельные агенты могут создавать поток полезных сообщений: каждый отвечает за свою часть и замечает что-то важное в своих данных. Но если общей сводки и правил внимания нет, человеку достаётся ещё одна рутина. Надо самому собрать картину из сообщений, понять, где повтор, а где действительно нужен ответ.

Здесь важна не только полезность каждого отдельного сообщения. Важно, чтобы команда не перекладывала на человека сортировку собственной работы. И чтобы было понятно, какое предложение требует решения сейчас, а что можно спокойно оставить к сведению.

Одна сводка вместо ленты

Мы свели советы в утренний «Брифинг дня». Это одна сводка с выжимкой по темам, а не десяток отдельных карточек, которые нужно открывать по очереди. В ней — до трёх пунктов, требующих решения; остальное идёт к сведению и не ждёт ответа.

Добавили квоты на советы, дедупликацию по всей команде и сроки жизни карточек. Квоты ограничивают поток, дедупликация не даёт разным агентам размножать одну тему, а срок жизни помогает не держать предложения открытыми месяцами. Фоновая информация тоже остаётся доступной, но не требует от человека отдельного решения.

Решений в день — до трёх плюс срочные уведомления. Открытых карточек стало в разы меньше. Не потому, что агенты замолчали, а потому, что сообщения получили общий ритм и правила отбора. Человек может сосредоточиться на том, где от него действительно нужен выбор.

Похожий принцип работает и в автоматизации бизнеса. Если агенты создают больше уведомлений, чем человек успевает разобрать, мало научить их писать полезнее. Нужно ещё решить, когда сообщение актуально, повторяет ли оно уже известное и требует ли ответа. Иначе автоматизация просто добавляет новую очередь.

Когда планы начали вытеснять друг друга

По дороге обнаружилась другая проблема. В ленте можно было принять план одного тренера, и он вытеснял активный план другого. Неделя выглядела пустой, хотя второй план должен был остаться на месте.

Причина оказалась в двух путях принятия плана: их логика разошлась. Мы свели оба пути в одну функцию активации. Теперь вытеснение касается только планов того же тренера. Добавили тест-инвариант — «чужой тренер не страдает». Так планы разных тренеров могут сосуществовать в одной недельной сетке.

Это правило важно именно на стыке действий. Человек принимает один план, но система должна учитывать, что в расписании уже есть другой. Если логика разбита на разные места, одно действие может незаметно отменить другое. Общая функция и проверка фиксируют, что именно должно сохраняться.

Одна ошибка остановила рекомендации

Была и ошибка в коде, которая остановила выдачу рекомендаций. Агенты пытались объяснить сбой, но предложенная ими причина оказалась выдуманной. Уверенное объяснение не заменяет проверку: нужно смотреть, что система действительно сделала и на каком шаге остановилась.

Мы объединили логику активации, добавили инвариантный тест и проверку кода перед деплоем. Это помогает проверять конкретные правила работы до выкладки. В частности, тест закрепляет, что активация плана одного тренера не должна задевать план другого.

Здесь полезно отделять слова агента от поведения системы. Если рекомендация не пришла, само предположение агента о причине ещё не показывает, где сбой. Мы проверяем логику и код, а затем закрепляем ожидаемое поведение тестом. Так конкретная ошибка становится проверяемым условием, а не поводом гадать.

Где заканчиваются полномочия системы

Консьерж здоровья помогает держать планы и советы в одном контуре. Он связывает данные с часов, тренировочную сетку и рекомендации, чтобы человеку было проще видеть общую картину и выбирать, что делать сегодня. Но решение остаётся за человеком: агенты предлагают, человек подтверждает.

У этой схемы есть пределы. Качество работы зависит от данных, которые передают часы, и от корректной работы агентов. Если данных нет, системе нечего связать; если агент работает неправильно, сводка не исправит его вывод. Консьерж не ставит диагнозы и не назначает лечение. При тревожных признаках он рекомендует обратиться к специалисту.

Автоматизация здесь помогает удерживать планы и советы в одном месте, но не снимает с человека ответственность за выбор и не заменяет врача. Мы строили её так, чтобы сообщения не превращались в бесконечную ленту, а важные решения оставались видны.

← Все постыОбсудить задачу →