Bot Mode в Hermes Agent: боты, групповые чаты и автоматизация задач
Bot Mode превращает профили Hermes в удобный список именованных ботов. У каждого — своя роль, модель, память, навыки, учётные данные, аватар и история переписки. Боты могут выполнять регулярные задачи, обсуждать вопросы в группах и обмениваться сообщениями друг с другом. Создали специалиста один раз — и он всегда под рукой.
Режим встроен в десктопное приложение Hermes и включён по умолчанию. Ничего устанавливать не нужно: вкладка Bots находится рядом с Sessions в левой панели, а при её открытии рядом с чатом появляется панель Routines.
Бот — это профиль, а не отдельная сущность. Каждый бот является обычным профилем Hermes с изолированными настройками, памятью, навыками, ключами и чатами в ~/.hermes/profiles/<name>/. Bot Mode — лишь интерфейс для управления этими профилями. Поэтому бот одинаково доступен и в UI, и в CLI: hermes -p <bot> chat откроет того же агента, а задания видны через hermes cron list. Никаких патчей ядра, лишних демонов или отдельного хранилища. Всё довольно прямолинейно.
Панель Bots
Для каждого профиля агента в списке показывается отдельная строка: аватар, последнее сообщение и время активности.
- Откройте бота, чтобы перейти в его чат. При создании бота автоматически появляется и закрепляется постоянная беседа Bot Chat.
- Активные боты. Полоса над списком показывает профили, занятые gateway, либо ботов, отправлявших сообщения в последние 90 секунд. Она не меняет порядок списка и исчезает, когда все агенты бездействуют.
- Поиск фильтрует ботов прямо во время ввода.
- Скрытие. Щёлкните по строке правой кнопкой и выберите Hide Bot. Бот исчезнет из списка и блока активных, но продолжит получать упоминания, работать в группах и запускать задачи. Скрытые боты не показывают уведомления, хотя непрочитанная активность копится; точка на значке глаза подскажет, что там что-то происходило. Чтобы вернуть бота, включите отображение скрытых профилей и выберите Unhide Bot.
Bot Chat не создаёт новые ветки. В постоянном чате команды /new и /reset перенаправляются на /compact: рабочий контекст обновляется, а сама беседа остаётся прежней. В обычных сессиях этого же профиля команды работают без ограничений.
Создание бота
Нажмите New Agent в списке. В быстром сценарии достаточно заполнить Name, Title и Description; через несколько секунд бот появится в новом Bot Chat и представится первым сообщением.
Раздел Advanced даёт больше контроля:
- Клонирование профиля — переносит конфигурацию, навыки, SOUL.md и память существующего бота. Вариант Fresh profile создаёт чистый профиль.
- Create empty — минимальный профиль без встроенных навыков.
- Закрепление модели и провайдера — можно назначить собственную пару провайдер/модель для конкретного бота. Если поле оставить пустым, настройки наследуются от запускающего профиля.
- Пользовательский SOUL.md — постоянные инструкции и персона агента.
- Навыки, инструменты и MCP-серверы — включайте только то, что действительно нужно конкретному специалисту. Тот же принцип лежит в основе корпоративного разделения ролей и полномочий между агентами: меньше лишних доступов, проще сопровождение.
- Общие ключи — по умолчанию новый бот использует общий с основным профилем пул OAuth-токенов. На старых gateway учётные данные копируются отдельно.
Выбор машины для создания бота: Create on
Если в Settings → Connections добавлено несколько подключений, в окне New Agent появляется поле Create on. Выберите устройство — и профиль будет создан в backend именно этой машины, без переключения текущего окна между gateway.
Такой бот отображается как Connections Bot. Если на нескольких машинах есть профили с одинаковым именем, используется уточнённый идентификатор, например @name-device. При единственном подключении выбор не показывается: бот создаётся на подключённой машине, как и раньше.
- Источник для клонирования берётся с целевой машины: используется её профиль
default. - Настройки навыков, инструментов и MCP-серверов считываются из каталога целевого backend.
- При отмене создания черновой профиль удаляется на машине, где он был создан.
Через контекстное меню доступны Edit Profile, Duplicate и Delete Profile. Дублирование переносит конфигурацию, память, SOUL.md, навыки и внешний вид. Профиль по умолчанию удалить нельзя.
Аватары
У каждого бота есть собственное лицо — буквально.
- Blob-лица используются по умолчанию. Они детерминированно генерируются из имени: одно имя — один и тот же аватар. Можно нажать Randomize, закрепить выбранный вариант через Lock face или выбрать один из шести силуэтов.
- Геометрические лица — семь форм и десять цветов, с анимированными глазами.
- Загруженное изображение — любой выбранный файл.
- AI-портрет — создаётся через
image.generate, если настроен backend генерации изображений. - Пиксельный питомец из petdex. Пока бот занят, компаньон подпрыгивает возле аватара. Галерею можно открыть командой
hermes pets.
Аватар, заголовок и описание сохраняются в метаданных профиля backend, поэтому бот выглядит одинаково на всех подключённых десктопах.
Задачи и Routines
Панель Routines связывает повторяющиеся задачи с ботом, который за них отвечает. Например, ежедневная сводка входящей почты будет находиться рядом с агентом, которому вы её поручили. Панель видна во вкладке Bots; в старых версиях Desktop она может оставаться на экране и при переходе к Sessions.
Задачи — это обычные cron-задания Hermes с пространством имён [bot:<name>] <routine>. Они также видны в hermes cron list и на основной странице Cron. Результаты запусков попадают в историю Bot Chat. Удобно: контекст и результат не разбегаются по разным углам интерфейса.
Группы и групповые чаты
Через меню локального бота → Manage groups его можно добавлять в существующие групповые чаты или создавать новые. Членство синхронизируется с backend и следует за профилем между десктопами. Для Connections Bots группы создаются через список New Group Chat.
Комната привязана к gateway, а не к одному Desktop. Недавняя история, участники, название и изображение синхронизируются между подключёнными gateway с версионированием. Одновременные изменения с разных Desktop объединяются, а не перетирают друг друга. Переименование меняет только отображаемое имя; расформирование удаляет комнату у всех клиентов, в том числе у тех, что в этот момент офлайн. При восстановлении подключения Desktop синхронизирует локально сохранённые данные обратно.
Группы показываются в том же списке, что и личные чаты: у комнаты есть количество участников, превью последнего сообщения, отметка времени и статус needs you.
- В группе из 2–6 ботов ваше сообщение запускает до трёх последовательных раундов. Если упомянуты конкретные агенты, отвечают они; если нет — все участники могут решить, стоит ли им вступать в разговор.
- Боты обращаются друг к другу через
@name, а вопросы человеку отмечают как@user. - Лимит в 10 сообщений на отправку и три раунда не даёт дискуссии зациклиться. И слава богу.
- У каждого участника есть отдельная постоянная сессия
Group: <name>, поэтому контекст комнаты сохраняется. - Комнаты могут объединять агентов с разных машин. Для одинаковых имён используются уточнения вида
@name-device, а возле удалённых участников отображается значок устройства.
Для команд, которые проектируют совместную работу нескольких агентов в одном контуре, такой подход особенно полезен: роли разделены, история решений остаётся в комнате, а выполнение каждого агента не обязательно переносить на общий сервер.
Обмен сообщениями между ботами
Боты могут передавать работу друг другу из любого чата, сохраняя авторство сообщений.
- @-упоминания. Введите, например,
@researcher посмотри этот материал. Автодополнение поможет выбрать агента, а Hermes передаст активному боту информацию о цели: профиль, понятное имя и устройство при удалённом подключении. Адреса электронной почты и неизвестные упоминания не изменяются. - Переименованные теги. Если бот получил заголовок Research Buddy, его можно упомянуть как
@research-buddyили@researchbuddy. Старое имя профиля тоже продолжит работать. - Личные сообщения. В каноническом Bot Chat доступен инструмент
message_agent:message_agent(target="researcher", message="…"). Он проверяет адресата, добавляет информацию об отправителе и доставляет сообщение в Bot Chat коллеги.
Доставка работает по принципу fire-and-forget: отправитель получает подтверждение и завершает ход, а ответ приходит позже как фоновое уведомление. Текст передаётся параметром, без shell-интерпретации: кавычки, $(...) и обратные кавычки сохраняются дословно. Список коллег, включая их имена и роли, добавляется в системный промпт Bot Chat. Инструмент доступен только в канонических сессиях Bot Chat при включённом Bot Mode; обычные чаты, CLI-сессии и групповые сессии его не видят.
Протокол обмена сообщениями добавляется backend при построении промпта. Он включается параметром agent.bot_mode_protocol в config.yaml:
agent:
bot_mode_protocol: true # включить протокол общения между ботами в Bot Chat
Примечание. Сообщение принимается при следующем запуске целевого бота. Прерывание уже выполняющегося агента в реальном времени пока не реализовано.
Безопасный повтор неудачных ходов
Hermes повторяет доставку не более одного раза и только при временных ошибках: недоступном runtime, тайм-ауте, ограничении частоты или серверном сбое провайдера. При переполнении контекста повторный ход использует штатное сжатие истории. Ошибки аутентификации, квот и конфигурации автоматически не повторяются — второй запрос их не исправит, а расход токенов будет вполне реальным.
Повтор никогда не создаёт новую сессию: история и контекст Bot Chat сохраняются.
Типизированные причины сбоев
Для неудачных ходов и relay-доставки передаётся машиночитаемый код reason: например, provider_auth_or_access, provider_quota_limit, provider_rate_limit, provider_server_error, context_overflow, missing_config, model_unavailable, runtime_offline, queued_expired, delivery_timeout, target_busy или unknown. Уведомление, отправляемое отправителю, получает тег [reason: <code>], поэтому агент или внешняя система может выбрать правильную реакцию без разбора текста ошибки провайдера.
Обмен между подключёнными машинами: Desktop relay
Каждый gateway из Settings → Connections — локальный, SSH, удалённый URL, Hermes Cloud или Docker — поддерживается как постоянное соединение Desktop. Bot Mode использует эти каналы автоматически.
- Desktop периодически сообщает каждому gateway о ботах на других подключениях, поэтому список коллег обновляется при появлении, удалении или переименовании агентов.
message_agentможет обращаться к удалённому боту так же, как к локальному. При совпадении имён используйтеtarget="name@<connection>".- Desktop выступает курьером: он держит сокеты и учётные данные, а gateway не получают доступ к аутентификации друг друга. Если Desktop закрыт во время доставки, отправитель увидит, что ответ не получен.
Межмашинные DM через hermes peer
Чтобы боты общались между машинами без постоянно запущенного Desktop, зарегистрируйте удалённый gateway как peer, указав URL API-сервера и API_SERVER_KEY:
hermes peer add spark --url http://spark.lan:8377 --key <API_SERVER_KEY>
hermes peer list
hermes peer dm spark < /tmp/dm.txt
hermes peer dm spark/researcher < /tmp/dm.txt
Команда hermes peer dm доставляет сообщение в канонический Bot Chat удалённого агента, запускает один ход и выводит ответ в stdout. После регистрации peer инструмент message_agent автоматически получает доступ к целям вроде spark/researcher. На стороне peer должен работать api_server с надёжным ключом; ключ хранится в ~/.hermes/.env, а имена и URL peer — в разделе bot_peers файла config.yaml.
Боты на разных машинах
При нескольких подключениях список Bots показывает агентов из каждого источника: локального runtime, удалённых gateway, SSH-хостов и Hermes Cloud. Для временно недоступных машин сохраняются последние известные записи. Если имена профилей совпадают, Hermes уточняет их как @name-device.
Чаты, память, сессии и задания остаются на машине, которой принадлежит профиль. Открытие Connections Bot не переключает весь интерфейс на другой backend: можно оставаться в текущем чате, упоминать удалённого агента, добавлять его в группу или создавать новых ботов на нужной машине через Create on.
Отключение Bot Mode
Bot Mode — встроенный плагин Desktop. Отключите его через Settings → Plugins → Bots: список, Routines и middleware поля ввода сразу перестанут работать, перезапуск не нужен. Профили, сессии и cron-задачи при этом не удаляются — Bot Mode отображает данные, но не владеет ими.
При необходимости можно скрыть канонические Bot Chat из обычного списка Sessions, чтобы они оставались только на панели Bots. На старых gateway такие чаты могут по-прежнему отображаться в общем списке.
Эквивалентность CLI
Поскольку бот — это профиль, все основные операции доступны из терминала:
| В Bot Mode | В shell |
|---|---|
| Общение с ботом | hermes -p <bot> chat |
| Файлы, навыки и память | ~/.hermes/profiles/<bot>/ |
| Регулярные задачи | hermes cron list |
| Создание и просмотр профилей | hermes profile create, hermes profile list |
Подробнее см. документацию по Profiles и Profile Commands. При корпоративном внедрении AI-агентов стоит отдельно продумать разграничение доступов и аудит действий ботов — без этого cron-задачи и общие ключи быстро становятся проблемой.
Если держать боты на рабочих ноутбуках неудобно, мы разместим Hermes-агентов на управляемом хостинге с изолированным контуром — круглосуточные cron-задачи, резервные копии профилей и обновления без простоя.
Частые вопросы
Как создать групповой чат для ботов?
Для Connections Bots группы создаются через список New Group Chat. Комната привязана к gateway, а не к конкретному Desktop, поэтому недавняя история, участники, название и изображение синхронизируются между устройствами.
Есть ли у Bot Mode веб-интерфейс?
Да, это панель управления. Вне Docker она поднимается командой hermes dashboard: по умолчанию порт 9119 и адрес 127.0.0.1, то есть наружу она сама по себе не смотрит. В Docker нужно пробросить порты и задать переменную HERMES_DASHBOARD=1. Выставлять панель в интернет без обратного прокси с авторизацией не следует — подробности в инструкции по установке Hermes Agent.
Как боты общаются между собой напрямую?
В каноническом Bot Chat доступен инструмент message_agent: message_agent(target="researcher", message="…") — он проверяет адресата, добавляет информацию об отправителе и доставляет сообщение. Сам протокол общения между ботами включается параметром agent.bot_mode_protocol: true в config.yaml.
Источник: hermes-agent.nousresearch.com
