Рой AI-агентов для оперативного контроля проектов: архитектура Hermes Stack

Веб Штурм
  • AI agents
  • Hermes Stack
  • DevOps
  • Telegram
  • BrowserUse

Hermes Stack — это наш внутренний рой AI-агентов на сервере 185.179.188.145, который ежедневно делает то, что классически требует круглосуточного дежурства: снимает SEO-метрики, опрашивает CRM, рассылает уведомления, рендерит PDF, фиксирует регрессии. Девять docker-сервисов, координатор в Telegram, единая шина уведомлений — и три пары глаз, которые никогда не спят.

Контекст

Когда команда из одного-двух разработчиков ведёт девять параллельных проектов, ручной мониторинг превращается в бутылочное горлышко: «забыл проверить PSI», «не заметил, что cron упал», «новая регрессия два дня висит без реакции». Альтернатива в 2026 году — рой специализированных агентов, каждый из которых отвечает за один тонкий слой ответственности и сообщает о проблеме в общий чат.

Hermes Stack — наша реализация этой идеи. Не один большой «AI-сотрудник», а набор узких сервисов, которые легко перезапускать, обновлять и заменять.

Архитектура: 9 docker-сервисов

Stack описан в одном docker-compose.yml. Сервисы делятся на три уровня:

Координация (1 сервис)

  • hermes/ — gateway, который агрегирует события от всех воркеров, фильтрует шум и шлёт сводки в Telegram-бот @hermesdm64bot. Здесь же живёт логика «не повторять алерт чаще раза в час».

Сборщики данных (2 сервиса)

  • browser-harness/ — управляемые headless-браузеры через BrowserUse Cloud + REST-прокси на CDP. Главный кейс — ежедневный снимок Я.Метрики и Я.Вебмастера на ozsm.ru, prod cron 09:10 и 09:22 MSK. Браузер логинится через сохранённый профиль, делает скриншоты, экспортирует CSV.
  • seo-ozsm/ — лёгкий runner, который агрегирует снимки и складывает в LightRAG для последующего анализа.

Рутина (4 сервиса)

  • crm-worker/ — каждые 5 минут опрашивает CRM на новые задачи и нотифицирует ответственных
  • scheduled-tasks-worker/ — каждые 30 минут запускает плановые задания (бэкапы, отчёты, ребилд индексов)
  • notifications-worker/ — единая шина email/telegram/sms с шаблонами, дедупом и retry
  • pdf-tasks-worker/Hatchet workflow runner, рендерит ваучеры/расписания на лету

Инфра (2 сервиса)

  • pf-frontend/ — отдельный контейнер с задеплоенным ПФ
  • caddy/ — reverse-proxy с auto-TLS и аккуратными security-заголовками

Browser-harness: проблема и решение

Я.Метрика и Я.Вебмастер не дают полноценного API на «тонкие» метрики (поведенческие, источники переходов в реальном времени). Парсить через обычный HTTP-клиент бесполезно — там сильная защита от ботов.

Решение: BrowserUse Cloud + CDP (Chrome DevTools Protocol). BU Cloud держит подогретый профиль с залогиненными аккаунтами Яндекс. Наш сервис browser-harness/ ходит к нему через REST, открывает нужную страницу, дожидается рендера и снимает данные через CDP-выборки. CSV/JSON ложится в общую файловую шару, дальше его подбирает seo-ozsm/.

Cron-расписание выбрано не случайно: 09:10 MSK для Метрики, 09:22 MSK для Вебмастера. К этому моменту вчерашний день у Яндекса уже закрыт и стабилен, но рабочий день в РФ только начинается — успеваем разослать утреннюю сводку.

Telegram как пользовательский интерфейс

Бот @hermesdm64bot — единственный «UI» Hermes Stack. Никаких веб-дашбордов, никаких JIRA. Утром приходит сводка вида «PSI ozsm.ru: mobile 100/100 без изменений, новых алертов нет». При регрессии — отдельное сообщение с цифрами «было/стало» и ссылкой на отчёт.

Telegram выбран из-за нативной поддержки markdown, кодовых блоков и длинных сообщений. Для канала в гос-аудитории есть параллельная интеграция через MAX (российский мессенджер с серверами в РФ, для 152-ФЗ-чувствительных сценариев).

Что мы из этого вынесли

  • Узкие агенты надёжнее одного большого. Когда crm-worker падает, рой работает дальше. Когда падает «универсальный AI-сотрудник» — встаёт всё. Отказ-локализация важнее теоретической универсальности.
  • Cron-расписание решает половину задачи. Снимок данных в 09
    и сводка в 09
    формируют ритм: к началу рабочего дня у нас на руках вчерашняя картина без необходимости куда-то заходить и нажимать «обновить».
  • Telegram как UI экономит десятки часов. Не строить отдельный дашборд, не учить команду «зайти в Grafana» — все алерты идут в чат, который и так открыт постоянно.

Ссылки

Часто задаваемые вопросы

Что такое Hermes Stack и чем отличается от обычного мониторинга?
Hermes Stack — рой из 30+ AI-агентов на Claude Code SDK + BrowserUse + Hatchet, упакованный в 9 docker-сервисов. В отличие от Prometheus+Grafana, агенты не просто алертят — они заходят в админки клиентов, читают логи, отвечают на вопросы в Telegram и формируют утренний дайджест в 09:10 MSK.
Сколько стоит развернуть Hermes Stack у себя?
Инфраструктура: VPS 4 vCPU / 8 GB RAM (~3 000 ₽/мес). API: Claude API ~5-15$/мес на проект при экономном промптинге и prompt-caching. BrowserUse Cloud ~$25/мес при умеренном использовании. Внедрение под клиента — 1-2 недели работы.
Не сломает ли AI-агент прод, кликая в интерфейсах?
Агенты работают только в read-only режимах (просмотр логов, дашбордов, метрик). Любая мутация требует явного human-in-the-loop через Telegram-бот. Изоляция: отдельный SOCKS5/Xray-туннель, ограниченные scopes для каждого агента, аудит-лог всех действий в Hatchet.
Когда Hermes Stack не нужен?
Если у вас один проект и один сервер — overkill. Стек оправдан при 5+ проектах в эксплуатации, где админки разбросаны по разным интерфейсам и нет единого SSO. Не подойдёт для регулируемых сред с запретом outbound LLM (банки, гостайна) — нужна on-premise LLM.