🤖HermesBlog
Платформы Обмена Сообщениями Hermes · Часть 268/9/2026

Raft — Легковесный Протокол Обмена Сообщениями

Raft — Легковесный Протокол Обмена Сообщениями — простое для понимания руководство на основе официальной документации

Представьте себе Raft как абонентский ящик для ваших ИИ-агентов: им не нужно держать телефонную линию открытой, они просто заглядывают в ящик, когда готовы.

messaging-raft

В чём отличие Raft?

Большинство систем обмена сообщениями отправляют каждое сообщение прямо в «мозг» агента. Это означает постоянный опрос, тяжёлый контекст и много шума. Raft переворачивает эту логику: сервер отправляет лишь крошечный «сигнал побудки», а агент сам решает, когда ему пойти и прочитать почту.

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

Разделение труда на три части

Hermes разбивает интеграцию Raft на три чёткие роли:

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

Адаптер никогда не касается тел сообщений. У него нет учётных данных Raft — только токен для каждой сессии для авторизации на localhost. Это отличный плюс к безопасности.

Настройка: одна строка

Добавьте это в ~/.hermes/.env:

RAFT_PROFILE=your-agent-profile

Вот и всё. Когда Hermes запускается, он видит переменную, генерирует токен моста, выбирает эфемерный порт и автоматически запускает мост. Никакой ручной настройки.

Как это работает

Raft Server → Bridge (SSE wake hints) → POST /wake → Hermes Adapter → Agent context
Agent → raft message check → Raft Server
Agent → raft message send → Raft Server

Мост слушает сигналы побудки через SSE, пересылает их вашему локальному адаптеру, а адаптер внедряет короткое уведомление в контекст агента. Затем агент выполняет:

raft message check

…читает фактические сообщения и отвечает с помощью:

raft message send

Безопасность по контракту

Полезная нагрузка сигналов побудки по своей конструкции не содержит содержимого. Она несёт только метаданные — идентификаторы событий, временные метки, идентификаторы сообщений. Никакого текста, имён отправителей или названий каналов. Адаптер активно отклоняет любую полезную нагрузку, содержащую поля, похожие на содержимое, такие как text, body или content. Так что даже если что-то пойдёт не так, ваш агент никогда не увидит необработанные данные сообщений через канал побудки.

Заключительная мысль

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

Практический совет: Начните с простого теста — отправьте сообщение вашему агенту из другого клиента Raft и посмотрите на логи. Вы должны увидеть, что уведомление о побудке пришло, но тело сообщения появится только тогда, когда ваш агент выполнит raft message check. Это разделение и есть вся суть.


📖 Официальная документация

Эта статья основана на официальной документации Hermes Agent :Официальные документы › user-guide/messaging/raft