«Менеджмент» — это раздел для тех, у кого агентов много, а смотрят за ними один-два человека. Десять агентов ещё можно держать в голове, сто — уже нет: за каждым нужно следить, каждому что-то подтверждать, у каждого считать расходы. Раздел собран так, чтобы внимание уходило только на то, что действительно требует решения, а всё спокойное оставалось в стороне.
Главный принцип — управление по исключениям: пока всё в порядке, пульт почти пуст и молчит. Как только агенту нужно ваше решение или что-то пошло не так, это всплывает наверх — с коротким объяснением, чем агент занят и что от вас нужно. Состояния не выдуманы: каждое подтверждается проверяемым сигналом (состояние контейнера, связь с агентом, живой поток событий), и если доказательств нет, так и написано — «неизвестно», а не подставлено что-то похожее на правду.
Зачем нужен пульт
В обычной работе агенты никого не беспокоят: они запускаются по расписанию, отвечают в чатах, пишут код. Проблемы начинаются, когда агентов десятки: один ждёт подтверждения и часами стоит на месте, второй неожиданно дорого расходует бюджет, третий потерял связь, а четвёртый задаёт вопрос, который вы не заметили. Руками такое не отследить.
Пульт решает три задачи. Первая — показать с одного взгляда, всё ли в порядке. Вторая — собрать в одно место всё, что ждёт человека, и не дать этому потеряться. Третья — объяснить, куда уходят деньги и время, и не дать расходам вырасти незаметно.
Ещё одна особенность: уведомление здесь — это переход, а не состояние. Если ситуация повторилась, счётчик у уже существующей строки растёт, а новое уведомление не создаётся. Поэтому спокойный день не превращается в поток одинаковых сообщений.
Карта экранов
Раздел собран вокруг корневого экрана «Флот» и восьми пунктов его списка. Порядок — по ходу обычного дня: сначала посмотреть, что происходит, потом посчитать расход и скорость, а затем разобраться с машинами, людьми, работой и инцидентами — «Токены», «Стоимость», «Скорость», «Чаты», «Оборудование», «Агенты», «Решения», «Инциденты». Отдельного экрана «Аналитика» больше нет: его содержимое переехало в эти экраны, а машинный доступ к тем же цифрам остался. «Флоты» и «Политики» переехали в «Активы»: это настройка, а не ежедневная работа, и место им рядом с «Серверами». С любого экрана на любой можно перейти за пару шагов, а командная палитра ищет по всем сразу.
- «Флот» — корень раздела. Отвечает на главный вопрос: есть ли что-то, требующее внимания. Показывает состояние всех агентов, несколько ключевых чисел (сколько чатов идёт прямо сейчас, сколько решений ждёт, ошибки за сутки, расход за сутки), зону внимания с верхушкой очереди решений и последние события. Каждое число стоит рядом со своей нормой, чтобы было понятно, много это или мало; у каждого показателя есть собственный «предел спокойствия», и при его нарушении значение подсвечивается — значком и словом, а не только цветом;
- «Токены» — сколько токенов уходит и когда. Пять плиток (за прошлое окно, за текущее, прогноз, вчера и сегодня), тренды и разбивка по агенту, модели, фабрике, навыку и типам, а внизу — распределение по часам суток, дням недели и отдельным чатам. Подробнее — на странице Токены, стоимость и скорость;
- «Стоимость» — во сколько обходится работа: расход за прошлое окно, за текущее, прогноз, вчера и сегодня, тренды расходов, атрибуция, потолки трат и отклонения. Каждый завершённый чат считается один раз — деления на «успешные» и «неуспешные» больше нет. Подробнее — ниже;
- «Скорость» — насколько быстро работают агенты: выходные токены за секунду обработки. Любое общее число здесь взвешенное — все токены, делённые на всё время, — а не среднее из средних. Пять плиток, линейные тренды, атрибуция и распределения. Подробнее — ниже;
- «Оборудование» — что происходит на самих машинах: доля процессора и памяти, занятое место на дисках, средняя нагрузка и время работы. Числа обновляются каждые 15 секунд, а у каждой машины есть отдельная страница с графиками и подробностями. Подробнее — на странице Оборудование;
- «Агенты» — таблица всех агентов: состояние, чем занят, сколько простаивает, расходы за сегодня, класс риска и оставшееся время на ответ. Есть быстрые фильтры («требуют решения», «ошибки», «застряли >15 мин», «дорогие», «карантин», «теневые», «офлайн»), группировка по фабрике, владельцу, меткам, виду и состоянию, именованные представления и три уровня плотности строки. Здесь же — доска с колонками «В очереди», «В работе», «Заблокировано», «На проверке» и «Готово»: карточки можно перетаскивать, и это настоящее изменение очерёдности, а не перестановка на экране;
- «Чаты» — история чатов всех агентов: статус, длительность, стоимость, токены. Строки листаются нумерованными страницами по десять штук, и у списка есть точное общее число. Колонки «Фабрика» и «Агент» — отдельные и кликабельные: фабрика ведёт на свою страницу, агент — на свою. По любому чату открывается пошаговый разбор: что делал агент, сколько занял каждый шаг, где потерялось время, что вызвало ошибку. Разбор — это запись реального хода работы, а не повторный прогон. Внизу экрана две таблицы — «Чаты» и «Чаты подагентов»: первая показывает только самостоятельные чаты, вторая — чаты, которые агенты запустили внутри своих. Клик по строке открывает разбор именно этого чата;
- «Решения» — всё, что ждёт человека: вопросы агентов, проверки завершённых работ и просто сообщения. Подробно — ниже;
- «Инциденты» — оценка состояния от 0 до 100: найденные слабые места (сломанные доступы, агенты без владельца, простаивающие контейнеры, лицензии на исходе, рост расходов против привычного), наблюдения за поведением, кто больше всех создаёт ошибок и расходов, и режим инцидента.
В таблицах и на графиках агент подписан коротким именем, пока это имя в списке одно. Если имена совпадают, к имени добавляется фабрика — «фабрика/агент»: две строки с одинаковым именем никогда не выглядят одинаково. В тех местах, где фабрика уже показана отдельной колонкой или заголовком группы, имя остаётся коротким. В списке «Агентов» отдельной колонки «Фабрика» нет вовсе — фабрика стоит прямо в имени.
Постоянные элементы висят над любым экраном: строка состояния в шапке, значок уведомлений, командная палитра и шпаргалка по клавишам. Полосы внизу экрана нет — очередь решений напоминает о себе значком в списке разделов, числом в заголовке вкладки браузера, метками в шапке, центром уведомлений и зоной внимания на самом «Флоте».
Что идёт прямо сейчас
Между плитками-числами и зоной внимания на экране «Флот» живёт список чатов, которые обрабатываются в эту секунду. Одна строка — один чат, сколько бы чатов ни вел один агент: видно, у какого агента и на какой фабрике идёт работа, как называется чат, сколько он уже длится, сколько потратил токенов и денег. Клик по строке открывает разбор шагов этого чата — то, что на экране «Чаты» называется трассой. Список идёт от новых к старым и обрезается десятью строками: дальше — ссылка на экран «Чаты», уже отфильтрованный по работающим. Когда не идёт ничего, списка нет вовсе — ни пустой рамки, ни «0 активных».
Список не ждёт обновления по таймеру: закончившийся или упавший чат уходит из списка сразу, а только что начавшийся появляется через несколько секунд — когда его запись доходит до общей базы. Этот же список считает зелёная метка в шапке и плитка «Идёт сейчас»: одно и то же множество чатов, а не число занятых агентов.
Зона внимания ниже показывает только то, что действительно ждёт человека: вопросы агентов и проверки готовой работы. Уведомления «для сведения» — о квоте, о росте расходов, о мелких отклонениях — её не заполняют: они живут в центре уведомлений и во вкладке уведомлений на экране «Решения». Поэтому зона внимания никогда не выглядит как гора работы, которой на самом деле нет, а внизу экрана отдельно показано, сколько самый старый вопрос уже ждёт ответа.
Флоты и фильтр по флоту
Флот — это именованная группа агентов, которые работают вместе. Участники одного флота могут стоять на разных машинах и в разных фабриках, а для системы флот — это способ сузить сразу всё, что вы видите, до одной команды.
Сам фильтр стоит в начале строки навигации в шапке: выпадающий список со значком выбранного флота, пунктом «Все» и по одному пункту на каждый флот — в том же порядке, что и на странице «Флоты». Выбор запоминается в браузере и переживает перезагрузку страницы; если флот удалили, фильтр сам возвращается на «Все», а открытые экраны перечитывают данные без сужения.
- У флота есть свой значок: клик по нему открывает общую галерею значков — ту же, что у агентов и меток чатов;
- Флоты можно расставить в нужном порядке перетаскиванием. Этот порядок виден и в списке флотов, и в фильтре в шапке;
- Карточки флотов по умолчанию свёрнуты — на экране одна строка на флот с его именем и кнопками правки. Название — переключатель: клик раскрывает карточку, повторный клик сворачивает;
- Флот собирается двумя способами — лично (агент или приложение) и через фабрику: назначенная фабрика вносит в флот всех своих агентов, включая тех, что появятся позже. Это две отдельные записи, поэтому в диалоге флота две разные галочки, а снятие фабрики выводит только тех, кто попал в флот через неё. Агент, созданный при выбранном в шапке флоте, вступает в него сам;
- Чипы на страницах — у агента, приложения и фабрики в шапке видны чипы флотов, в которые они входят, и кнопка «+ Флот» с отметками для быстрого добавления. Крестик на чипе убирает личное участие, а чип, полученный через фабрику, крестика не имеет и подсказывает: «Входит через фабрику — чтобы исключить, уберите фабрику»;
Выбранный в шапке флот сужает сразу многое: боковой список разделов (в «Фабриках» остаются только агенты его фабрик), список «Серверов», экраны «Оборудование», «Токены», «Стоимость», «Скорость» и «Чаты» вместе с их выгрузками, панель и счётчик уведомлений и даже звук и всплывающее сообщение операционной системы. Пока флот выбран, о чужом агенте вам не сообщат. Строки без агента — например, о квоте аккаунта или о начавшемся инциденте — проходят всегда. Не сужаются только сами «Флоты», «Политики», потолки трат и настройки уведомлений: это настройка, а не отчёт. Вернув фильтр на «Все», вы снова видите всю картину.
Сразу под полосой состояния на экране «Флот» появляется зона «Недоступные агенты» — имена, а не только число: строка «фабрика/агент», состояние и сколько оно держится. Наверху — те, кто молчит дольше всех; список обрезан десятью строками, и хвост «…и ещё N · Все агенты» ведёт в реестр. Клик по строке открывает карточку агента: состояние, быстрые действия, владелец. Если все на связи, зоны нет вовсе — ни рамки, ни нуля.
Строка состояния в шапке
В шапке живут три независимые метки — по одной на каждый вид события. Они никогда не сливаются в одну фразу: клик по одной не повторяет клик по другой, и текст у каждой свой. Слова меток показываются на языке оператора, а не на языке фабрики.
- Красная «Агентов недоступно: N» — пока флот спокоен, её нет вовсе. Считает она только тех, кто точно не отвечает, и это ровно те имена, что стоят в зоне «Недоступные агенты» ниже — число и список больше не расходятся. Если недоступных нет, но кто-то застрял (агент жив, а запуск висит), метка меняется на «Агентов застряло: N». Клик открывает экран «Флот» — там эта беда и разбирается;
- Жёлтая «N решений ожидают» — тоже пропадает, когда ждать нечего. Считает она именно решения, а не агентов: один агент с тремя вопросами даёт «3». Клик открывает «Решения»;
- Зелёная «N активных чатов» — появляется, только когда хоть один чат действительно идёт. Считает она чаты, а не занятых агентов: агент, ведущий три чата сразу, даёт три, а не один. При нуле метки нет вовсе — вместо «0 активных чатов» не показывается ничего. Клик открывает «Чаты» с фильтром «выполняется» — ровно те строки, что посчитаны.
Число в заголовке вкладки браузера — «(N)» — остаётся, пока очередь не пуста, и гаснет вместе с ней. А сам значок сайта на вкладке всегда один и тот же и не меняется ни по каким событиям: по нему нельзя понять, случилось ли что-то, — для этого есть метки в шапке. Когда всё спокойно и меток нет, сам экран «Флот» пишет «Флот в норме» — чтобы отсутствие тревоги было сказано словами, а не пустотой.
Состояния агента
У каждого развёрнутого агента ровно одно состояние, и оно всегда подтверждено сигналом:
- занят — обрабатывает чат, то есть сейчас работает;
- думает — работа идёт, но последнее живое событие — рассуждение или шаг, который ещё выполняется;
- свободен — контейнер запущен, но ничего не обрабатывается;
- ждёт решения — в чате висит вопрос к человеку, и причина названа словами: нужен человек, ждём ответа от поставщика модели, внешнюю систему или инструмент;
- застрял — работа числится идущей, вопроса нет, но живых сигналов нет дольше порога тишины (по умолчанию 10 минут; для отдельного агента порог можно задать свой);
- офлайн — только по доказательству: связь с агентом не отвечает или проверка контейнера увидела, что он остановлен;
- неизвестно — доказательств нет ни за, ни против. Так бывает сразу после перезапуска Мультиагента или пока не отвечает связь с сервером. Такие агенты не считаются ни доступными, ни недоступными: они не попадают в числа «недоступно» и не окрашивают значки.
Отдельно стоит агент, которого в наблюдении нет вовсе. «Не развёрнут» — это не состояние, а признак: контейнера точно нет (агент ещё не развёрнут, запись импортирована одной строкой или контейнер убрали). Такой агент выпадает из наблюдения целиком — ни состояния, ни событий, ни чисел, — и возвращается сам, когда контейнер появится снова. Пропавший контейнер — это не авария и не восстановление, поэтому молчаливое выпадение из списка ничего не значит и ничего не уведомляет.
Важно, что «ждёт решения» не путается с «застрял». Если агент задал вопрос и терпеливо ждёт ответа, он так и помечен — сколько бы ни молчал. Порог тишины на него не действует. «Застрял» — это когда вопроса нет, а признаков жизни тоже нет: тогда стоит заглянуть в разбор чата. Такое разделение избавляет от ложной тревоги: вы точно знаете, где от вас чего-то ждут, а где что-то сломалось.
Приложения — это отдельный вид: о себе они уведомляют и в журнал попадают, но агентами не считаются. Их нет ни в состояниях флота, ни в счётчиках, ни в списке агентов, ни в инцидентах: приложение может быть остановлено, а флот при этом считается спокойным.
Смена состояния доходит до всех окон сразу, но повтор того же состояния не создаёт ни события, ни уведомления. Состояние видно не только цветом: у каждого есть значок и слово, поэтому даже в чёрно-белом виде всё различимо. Если данных нет вовсе, показывается знак вопроса и слово «Неизвестно», а не ноль и не догадка.
Точки состояния обновляются сами, без перезагрузки страницы: список перечитывается при каждом восстановлении связи, а фоновая проверка идёт раз в 10 секунд.
Очередь решений
Очередь решений — сердце раздела. Сюда попадает всё, что не может решиться само, и только это может вас прервать. Есть три вида записей:
- Вопрос — агент спрашивает и без ответа стоит на месте;
- Проверка — работа закончена, её нужно принять или отправить на доработку. Так приходят, например, ночные задания, которые выполнились без человека: утром вы видите, что получилось и сколько это стоило;
- Сообщение — просто уведомление. Оно никогда не прерывает, не имеет срока и не увеличивает счётчик на значке;
У каждой записи есть класс риска, и от него зависит, сколько времени есть на ответ:
- T1 — обратимое и дешёвое (например, небольшая сумма, которую легко вернуть). Такое решается само и в очередь вообще не попадает: остаётся только запись в журнале;
- T2 — обычное. На ответ отведено 60 минут;
- T3 — блокирующее: необратимое действие или крупная сумма. На ответ 15 минут, и если время вышло, работа агента приостанавливается, чтобы он не висел вечно в ожидании человека;
Порядок в очереди не по времени поступления, а по важности: риск, стоимость и близость срока. Разные запросы остаются отдельными строками и решаются по отдельности — пакетной кнопки «одобрить всё» нет. А вот полный повтор того же самого запроса новой строки не создаёт: у уже стоящей растёт счётчик «×N» — десять повторов одного запроса не превращаются в десять строк и не заваливают экран.
Строка ведёт туда, где решение принимается: клик по ней (или Enter) открывает чат, в котором агент ждёт ответа; у записи без чата — например, предложения поменять правила — открывается карточка с планом и кнопками. Для вопроса ответ даётся в чате: у такой строки есть только «Скрыть» и «Открыть», кнопок «Одобрить» и «Отклонить» на ней нет. Действие «Скрыть» убирает запись из очереди, ничего не решая: это не одобрение и не отказ, и в обучение правилам оно не идёт. А если на вопрос ответили прямо в чате и ярлык «вопрос» с него снят, запись закрывается сама с причиной «Отвечено в чате» — ждать, пока вы придёте в очередь, не нужно. Состояние меняется сразу, без перезагрузки страницы. Проверка повторяется каждые 30 секунд, так что снятый вопрос не задержится в очереди дольше этого времени.
Решение всегда записывается в журнал: кто, когда и почему. При отклонении причина обязательна. Если запись отложена, она возвращается сама, когда подойдёт время, — с новым сроком на ответ. Отклонения с одинаковой причиной — это сигнал: после третьего такого раза очередь сама предложит поменять правило, вместо того чтобы в четвёртый раз спрашивать то же самое. А если какая-то повторяющаяся операция многократно подтверждается без споров, система может начать одобрять её сама — но только по заслугам и всегда с записью в журнал.
Над списком виден «бюджет» очереди: сколько решений принято сегодня, сколько на это уходит времени и сколько записей висит дольше суток. Ориентир — 40–60 решений в день; это предел, а не цель: если очередь просит больше, значит, агентам не хватает самостоятельности, и настраивать надо правила, а не ускоряться.
Записи, которые создал не человек и не аварийная ситуация, а обычный автозапуск по расписанию, в очередь не попадают вовсе: такой запуск живёт в «Чатах» как любая другая работа. В очереди остаётся только то, что действительно спрашивает человека.
Инцидент, заморозка и остановка
Когда случается крупная неприятность, пульт переходит в режим инцидента. Это единственное исключение из правила «молчащего экрана»: поверх всего приложения появляется полоса с причиной и длительностью инцидента, а раздел показывает максимум подробностей. Режим включают вручную (причина обязательна и попадает в журнал) или автоматически — если разом пропало много агентов либо посыпались ошибки. При выходе из режима собирается черновик разбора: что случилось, что делали, что решили.
Заморозка флота — это тормоз для того, что уже работает. Она останавливает текущие запуски и придерживает запросы, стоящие в очереди у этих чатов, чтобы агент не перезапустил их заново. Запросы, поступившие после заморозки, не придерживаются — заморозка не блокирует работу целиком. Снятие заморозки освобождает ровно те запросы, которые были придержаны: ничего лишнего не отпускается и ничего не забывается.
«Остановить все» последовательно останавливает контейнеры агентов и требует ввести слово подтверждения — настолько это серьёзное действие. Безопасный режим во время инцидента мягче: правила автономности опускаются до самого осторожного уровня «предлагать», а запросы, стоящие в очереди, придерживаются; уже идущие запуски при этом продолжают работу. При выходе из инцидента придержанное освобождается, а правила возвращаются к прежнему уровню.
Горячие клавиши и поиск действий
Всё, что можно сделать на пульте, доступно и с клавиатуры — это заметно ускоряет работу, когда решений много подряд. Командная палитра (⌘K или Ctrl+K) открывается с любого экрана и ищет по разделам, агентам, живым записям очереди и действиям. Клавиша ? открывает шпаргалку со всеми сочетаниями. Опасные действия всегда сначала спрашивают подтверждение, а необратимые требуют ввести имя.
- Переходы:
1–8— по восьми экранам раздела,i— очередь решений,/— фильтр списка,r— обновить данные; - По списку:
g/G— в начало и в конец,j/k— вниз и вверх; - По строке:
Space— быстрый просмотр,Enter— открыть,P— приостановить обработку,S— остановить,R— перезапустить,E— эскалировать,H— передача смены,A— одобрить,X— отклонить (нужна причина),D— отложить,Shift+S— скрыть, не принимая решения,T— разбор чата,Q— карантин; - Отмена:
⌘Zвозвращает последнее обратимое действие (например, снимает паузу и освобождает ровно те запросы, которые были придержаны),Escзакрывает окно.
Клавиши никогда не срабатывают во время ввода текста. Сочетания для строк и переходов можно переназначить под себя, а кнопка сброса вернёт исходные.
Оповещения
Уведомление появляется, только если оно действительно нужно: вы об этом просили, у события есть срок, от вас ждут решения или это личный контекст. Всё остальное остаётся состоянием в интерфейсе — строкой в журнале или отметкой на своём экране — и не превращается в сообщение. Ежедневной сводки и вообще любого сообщения по расписанию больше нет: ни одно уведомление не создаётся по часам, только по событию.
Дойти уведомление может разными путями — и по каждому видно, что именно он несёт:
- Очередь решений — для того, что ждёт человека. О ней напоминают значок в списке разделов, «(N)» в заголовке вкладки браузера, метки в шапке и зона внимания на «Флоте»;
- Центр уведомлений (значок в шапке) — общий журнал произошедшего с одним действием «Открыть». Прочитанное в одном окне гаснет во всех остальных, а выбранный флот сужает и список, и счётчик: пока флот выбран, чужие строки в панель не попадают;
- Всплывающее сообщение и звук — только для блокирующих решений и пропущенных сроков, и только когда вкладка не на виду. Они тоже следуют за выбранным флотом. Один и тот же звук не проигрывается дважды, даже если открыто несколько вкладок, а выключенный звук в одной вкладке не отнимает его у включённой;
- Мессенджер — на внешний адрес вашей системы уходит короткое сообщение со ссылками. Одобрить можно только в интерфейсе: ссылка открывает карточку решения внутри приложения, где видно детали и кому вы отвечаете. Из мессенджера решение не принимается — это осознанное ограничение ради безопасности.
По каждому виду событий правило выбирается из трёх: «сразу», «пачкой» и «выключено». Пачка приходит одним сообщением, а не потоком. Уведомление о пропаже приходит один раз и только если агент или приложение молчат уже пять минут подряд: короткий сбой вас не потревожит, но в журнале он будет виден сразу. У приложений про пропажу своё отдельное правило — их можно выключить, не трогая агентов. Дрейф, скачки расхода и авто-восстановление уведомлений не создают вовсе: они остаются в журнале и на своих экранах.
Есть тихие часы (по умолчанию с 23:00 до 08:00 по времени системы): обычные уведомления копятся и приходят одной порцией после окончания окна. Блокирующие решения, сообщения о безопасности квот и оплаты и автоматически начавшиеся инциденты тихие часы обходят — о них узнаёте сразу. Общая громкость настраивается тремя уровнями: спокойный, обычный, продвинутый. Отдельные типы можно перевести в «пачку» прямо из строки уведомления или отключить, но у самых важных классов переключателя нет — вместо него написано, почему их нельзя отключить.
Агент сам просит решение
Агент может не просто ждать ответа в чате, а поставить вопрос прямо в очередь решений — тем же ключом доступа, которым пользуется программный Agent API. Так запрос попадает туда, где его точно заметят, и не теряется в переписке.
curl -X POST <адрес>/api/agent/inbox -H "X-API-Key: $MULTIAGENT_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"review","title":"Развернуть в продуктиве?","dedupKey":"deploy:prod",
"riskHints":{"costEstimate":6000,"reversible":false},"agentChatId":42}'
Класс риска агент задаёт подсказками: обратимо ли действие и сколько примерно стоит. Дальше система решает честно: обратимое и дешёвое одобряется сразу (и остаётся только запись в журнале), дорогое или необратимое становится блокирующим с коротким сроком, остальное — обычным. Если отправлять одинаковый dedupKey, повторы не создадут новых записей, а увеличат счётчик у уже стоящей. Команда GET /api/agent/inbox показывает агенту его собственные активные запросы.
Токены, стоимость и скорость
Токены, деньги и скорость считаются по одной и той же записи — по чатам. Все три экрана отвечают на три вопроса: сколько было в прошлом окне, сколько уходит сейчас и сколько уйдёт, если ничего не менять. Подробный разбор каждого — на странице Токены, стоимость и скорость; здесь — главное.
Период выбирается справа от заголовка: последние 7, 14, 30 или 90 дней, последние 12 месяцев или всё время. Окна скользящие — «за 7 дней» это последние семь дней вместе с сегодняшним, а не календарная неделя. Пунктов «Сегодня» и «Вчера» в списке нет: на эти дни отвечают две последние плитки. Шаг графика выбирается сам по длине периода — до 31 дня по дням, до 180 по неделям, дальше по месяцам. Каждый экран показывает пять плиток: за прошлое окно, за текущее, прогноз на такое же окно вперёд, вчера и сегодня. Под числами стоит разница — зелёная при росте, красная при падении, «как вчера» при равенстве. Если вчера работы не было, там честный ноль, а не прочерк.
Крупные числа сокращаются: «1,2 млн» вместо «1 200 000». На «Токенах» одно число на сущность: вход, выход, чтение и запись временного хранилища складываются вместе. Разбивка по видам есть ровно в одном месте — на вкладке «По типам» в графиках и таблице при разбивке: там четыре постоянные полосы — «Ввод», «Вывод», «Запись в кэш» и «Чтение кэша», — и их сумма равна итогу за период.
Разбивка одна и та же на всех экранах — по фабрике, агенту, модели и навыку, а на «Токенах» и «Стоимости» ещё и по типам. Каждый завершённый чат считается один раз: деления на «успешные» и «неуспешные», а также строки «Токены по задачам за неделю» больше нет. Внизу — выгрузка таблицы одним файлом: ключи, суммы, доли и число чатов, без единой строчки переписки.
Графики — общие тренды: на «Токенах» это токены, на «Стоимости» — те же дни и те же чаты, только в деньгах. Они рисуются сразу, без анимации, а подсказка при наведении на столбик сужается до одной серии и показывает её итог за весь период. Под трендами — распределение: когда именно тратятся токены или деньги (по часам суток и дням недели) и как отдельные чаты разбросаны вокруг общей суммы. Крайние 3% самых больших и самых маленьких чатов собираются в отдельные столбцы «≤» и «≥», чтобы выбросы не сплющивали картину.
На «Стоимости» под трендами идут четыре блока: «Атрибуция» на всю ширину (ключ, расход, доля, число чатов), «Потолки и предохранители» (на чат, на агента в день и на все токены запуска, плюс что делать при превышении) и «Отклонения» — агенты, которые тратят заметно больше своего обычного профиля. Светофор по аккаунтам поставщиков моделей переехал из этого экрана в нижнюю часть «Флота»: там видно, сколько осталось против предела и на сколько дней хватит. Сами квоты и балансы настраиваются на странице Аккаунты.
Скорость
Экран «Скорость» стоит сразу под «Стоимостью» и отвечает на вопрос «насколько быстро работают чаты, за которые мы платим». Скорость чата — это его выходные токены за секунду обработки; чат попадает в тот день, когда был активен последний раз. Любое общее число на экране — взвешенное: все токены за период делятся на всё время работы, а не считается среднее из средних скоростей каждого чата. Один очень быстрый чат не сможет поэтому приукрасить картину.
Сверху — те же пять плиток: скорость за прошлое окно, за текущее, прогноз, вчера и сегодня. Разница читается наоборот по сравнению с деньгами: рост зелёный (быстрее — лучше), падение красное. Ниже — «Тренды скорости» с четырьмя вкладками — по фабрике, агенту, модели и навыку. Здесь линии, а не столбики: скорости не складываются, поэтому «стопка» была бы неправдой. Там, где ключ в этот день не работал, линии нет вовсе — разрыв, а не ноль: ненаблюдаемая скорость не то же самое, что медленная.
Под трендами — «Атрибуция» (одна строка на ключ: его скорость, доля выходных токенов за период и число чатов; строки идут от самых быстрых) и «Распределение скорости»: скорость по часам суток, скорость по дням недели и разброс отдельных чатов по токенам в секунду. Так видно и когда флот работает быстрее всего, и насколько ровно работают отдельные чаты.
Что важно знать
Пульт не приукрашивает: где данных нет, там так и написано. Полезно заранее знать о границах:
- Карантин и запрет инструментов — это пометки уровня управления, а не ограничения внутри самого агента. Реально останавливают агента пауза, остановка и эскалация; запрет инструмента помечает его как нежелательный и показывает это в интерфейсе;
- Учёт «мыслей» — общий. Потолок ограничивает все токены запуска разом (и запрос, и ответ) и честно об этом говорит — отдельного учёта «мыслей» не ведётся;
- «Всё время» — это около года. Самый глубокий период на всех трёх экранах — около 367 дней; многолетней истории в этих числах нет, для неё есть архив в ClickHouse. Стоимость чата относится к дню его последней активности и там и остаётся — перезапуск Мультиагента картину не сбрасывает;
- Списки листаются страницами. У каждого списка есть точное общее число и нумерованные страницы по десять строк — строки за пределами открытой страницы не теряются. Счётчики в шапке описывают последние несколько сотен строк и всегда называют, по какому объёму посчитаны;
- Разбор чата — это запись. Пошаговый просмотр и «проигрывание» показывают то, как всё было, и ничего не запускают заново;
- Дежурств нет. Расписание смены — это сохранённая подпись для ожиданий команды, а не календарь. Если второго дежурного не настроили, система прямо скажет, что уведомление повторное, а не назовёт несуществующего дежурного;
- Разбивка расходов по аккаунтам недоступна, а по моделям есть тонкость: вся стоимость чата относится к его текущей модели, так что смена модели посреди работы переносит всю строку целиком. Об этом написано прямо на экране «Стоимость»;
- Часовой пояс задаётся один раз — в окне «Внешний вид» рядом с языком. Он один на всю систему: все даты, графики и отчёты показываются в нём, а хранятся данные по всемирному времени. Программный Agent API при этом не меняется;
- Вкладка сама возвращается на связь. После обновления серверной части открытая вкладка переподключается каждые 3 секунды и не сдаётся, пока вы вошли в систему;
- Начатый чат виден сразу. Строка чата появляется в списке, как только чат записан, — ждать следующего события не нужно — а расход подагентов сходится за секунды, не раз в час.
О том, как устроены сами агенты и их чаты, — на страницах Агенты и Чаты; о деньгах и скорости — на странице Токены, стоимость и скорость; о готовых наборах переменных — на странице Окружения.