Hermes Agent и электронная почта: автоматизация email-переписки

Hermes Agent — это AI-агент, который умеет работать с электронной почтой двумя способами: принимать письма и отвечать на них через встроенный Email-адаптер, а также управлять почтовым ящиком через терминальный CLI-инструмент Himalaya. В статье разберём оба подхода, покажем пошаговую настройку и конкретные сценарии автоматизации.

Что такое Email-адаптер в Hermes Agent?

Email-адаптер — это встроенный компонент шлюза (gateway) Hermes, который позволяет агенту получать и отправлять электронные письма через стандартные протоколы IMAP и SMTP. В отличие от Telegram или Discord, где общение происходит через API мессенджера, здесь Hermes работает как обычный почтовый клиент: проверяет входящие, читает их и отправляет ответы.

Для работы адаптера не нужно устанавливать дополнительные пакеты — используются встроенные модули Python: imaplib, smtplib и email. Достаточно настроить подключение к почтовому ящику.

Чем Email-адаптер отличается от навыка Himalaya?

В Hermes есть два механизма работы с почтой, и важно понимать разницу:

Возможность Email-адаптер (gateway) Навык Himalaya (skill)
Люди пишут агенту на почту и получают ответ
Агент сам управляет почтовым ящиком
Чтение, поиск, перемещение писем
Внешние зависимости Нет CLI `himalaya`
Настройка `.env` переменные `~/.config/himalaya/config.toml`

Email-адаптер подходит, когда вы хотите, чтобы люди общались с агентом по электронной почте — как с обычным собеседником. Письмо приходит на адрес агента, он его читает и отвечает в том же потоке.

Навык Himalaya нужен, когда агенту требуется работать с почтовым ящиком как с инструментом: проверять входящие, искать письма по запросу, переносить в папки, удалять спам, составлять черновики. Это полноценный почтовый клиент в терминале.

Оба подхода можно использовать одновременно.

Как настроить Email-адаптер: пошаговая инструкция

Шаг 1. Создайте отдельный почтовый ящик

Не используйте личную почту. Агент хранит пароль в файле .env и имеет полный доступ к ящику через IMAP. Создайте отдельный аккаунт — например, hermes-agent@gmail.com.

Шаг 2. Получите пароль приложения

Для Gmail:

  • Включите двухфакторную аутентификацию в настройках Google-аккаунта.
  • Перейдите в Пароли приложений.
  • Создайте новый пароль (выберите «Почта» или «Другое»).
  • Скопируйте 16-символьный пароль — он понадобится вместо обычного пароля.
  • Для Outlook / Microsoft 365:

  • Откройте Настройки безопасности.
  • Включите 2FA, если ещё не активирована.
  • Создайте пароль приложения в разделе «Дополнительные параметры безопасности».
  • IMAP-хост: outlook.office365.com, SMTP-хост: smtp.office365.com.
  • Шаг 3. Настройте Hermes

    Самый простой способ — интерактивный мастер:

    hermes gateway setup
    

    Выберите Email из списка платформ. Мастер запросит адрес, пароль, IMAP/SMTP-хосты и список разрешённых отправителей.

    Для ручной настройки добавьте в ~/.hermes/.env:

    EMAIL_ADDRESS=hermes-agent@gmail.com
    EMAIL_PASSWORD=abcd efgh ijkl mnop
    EMAIL_IMAP_HOST=imap.gmail.com
    EMAIL_SMTP_HOST=smtp.gmail.com
    EMAIL_ALLOWED_USERS=your@email.com,colleague@work.com
    

    Дополнительные параметры:

    Переменная По умолчанию Описание
    `EMAIL_IMAP_PORT` 993 Порт IMAP (SSL)
    `EMAIL_SMTP_PORT` 587 Порт SMTP (STARTTLS)
    `EMAIL_POLL_INTERVAL` 15 Интервал проверки входящих (секунды)
    `EMAIL_HOME_ADDRESS` Адрес для доставки cron-задач

    Шаг 4. Запустите шлюз

    hermes gateway
    

    При запуске адаптер проверяет подключение по IMAP и SMTP, помечает все существующие письма как прочитанные и начинает опрос входящих.

    Как работает Email-адаптер

    Получение писем

    Адаптер опрашивает IMAP-ящик с настраиваемым интервалом (по умолчанию каждые 15 секунд). Для каждого нового письма:

  • Тема письма передаётся как контекст (например, [Subject: Deploy to production]).
  • Ответные письма (тема начинается с Re:) не дублируют тему — контекст потока уже установлен.
  • Вложения кешируются локально: изображения доступны инструменту vision, документы — для работы с файлами.
  • HTML-письма конвертируются в простой текст.
  • Письма от самого агента фильтруются, чтобы избежать зацикливания.
  • Автоматические ответы и уведомления (noreply@, mailer-daemon@, bounce@) игнорируются.
  • Отправка ответов

    Ответы отправляются через SMTP с корректнойemail-тредификацией:

  • Заголовки In-Reply-To и References поддерживают цепочку писем.
  • Тема сохраняется с префиксом Re: (без дублирования Re: Re:).
  • Ответы отправляются в формате plain text (UTF-8).
  • Вложения

    Агент может прикреплять файлы к ответам. Достаточно включить в ответ строку MEDIA:/path/to/file — файл будет прикреплён к исходящему письму.

    Если нужно игнорировать входящие вложения (для защиты от вредоносных файлов), добавьте в config.yaml:

    platforms:
      email:
        skip_attachments: true
    

    Навык Himalaya: полное управление почтовым ящиком

    Когда агенту нужно не просто отвечать на письма, а actively управлять почтой, используется навык Himalaya. Это CLI-инструмент, который работает через терминал Hermes.

    Установка Himalaya

    # Linux/macOS (готовый бинарник)
    curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | PREFIX=~/.local sh
    
    # macOS через Homebrew
    brew install himalaya
    
    # Через Cargo (Rust)
    cargo install himalaya --locked
    

    Настройка

    Запустите интерактивный мастер:

    himalaya account configure
    

    Или создайте ~/.config/himalaya/config.toml вручную:

    [accounts.personal]
    email = "you@example.com"
    display-name = "Your Name"
    default = true
    
    backend.type = "imap"
    backend.host = "imap.example.com"
    backend.port = 993
    backend.encryption.type = "tls"
    backend.login = "you@example.com"
    backend.auth.type = "password"
    backend.auth.cmd = "echo 'your-password'"
    
    message.send.backend.type = "smtp"
    message.send.backend.host = "smtp.example.com"
    message.send.backend.port = 587
    message.send.backend.encryption.type = "start-tls"
    message.send.backend.login = "you@example.com"
    message.send.backend.auth.type = "password"
    message.send.backend.auth.cmd = "echo 'your-password'"
    
    folder.aliases.inbox = "INBOX"
    folder.aliases.sent = "Sent"
    folder.aliases.drafts = "Drafts"
    folder.aliases.trash = "Trash"
    

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

    Список писем:

    himalaya envelope list
    himalaya envelope list --folder "Sent"
    himalaya envelope list --page 1 --page-size 20
    

    Поиск писем:

    himalaya envelope list from john@example.com subject meeting
    

    Чтение письма:

    himalaya message read 42
    

    Ответ на письмо (без взаимодействия):

    cat 
    
    Ваш ответ здесь.
    EOF
    

    Новое письмо:

    cat 

    Перемещение и удаление:

    himalaya message move "Archive" 42
    himalaya message delete 42
    

    Работа с вложениями:

    himalaya attachment download 42 --downloads-dir ~/Downloads
    

    Конкретные сценарии автоматизации

    1. Автоматическая обработка входящих писем

    Настройте Email-адаптер, и Hermes будет отвечать на каждое новое письмо от разрешённых отправителей. Это работает как автоответчик с интеллектом: агент читает содержимое, понимает контекст и формулирует ответ.

    Сценарий: клиент пишет на support@вашдомен.ру с вопросом. Hermes получает письмо, анализирует его и отправляет ответ. Если вопрос требует участия человека — пересылает вам уведомление в Telegram.

    2. Утренний дайджест почты

    Через cron-задачу агент может каждое утро проверять ящик через Himalaya, фильтровать важные письма и отправлять вам саммари в Telegram:

  • Письма от руководства — приоритетные.
  • Письма от клиентов — требуют ответа.
  • Рассылки и уведомления — краткая сводка.
  • 3. Автоматическая сортировка и архивация

    Hermes может автоматически перемещать письма по папкам на основе содержимого:

  • Письма с вложениями → папка «Документы».
  • Письма от определённых отправителей → папка «Важное».
  • Старые уведомления → архив.
  • 4. Отправка отчётов по расписанию

    Через cron-задачу агент генерирует отчёт (например, статистику по проекту) и отправляет его по электронной почте коллегам. Отчёт может включать данные из разных источников: базы данных, API, файлы на сервере.

    5. Мониторинг почты конкурентов

    Агент может定期 проверять публичные email-адреса конкурентов (например, подписаться на их рассылки) и анализировать контент: новые продукты, изменения в ценообразовании, маркетинговые акции.

    Безопасность

  • Используйте отдельный почтовый ящик — не личную почту. Агент хранит пароль в .env и имеет полный доступ через IMAP.
  • Пароли приложений — обязательно для Gmail с 2FA. Храните пароль в ~/.hermes/.env с правами chmod 600.
  • Список разрешённых отправителей — настройте EMAIL_ALLOWED_USERS, чтобы агент отвечал только знакомым контактам.
  • IMAP использует SSL (порт 993), SMTP — STARTTLS (порт 587). Соединения зашифрованы по умолчанию.
  • Решение частых проблем

    Проблема Решение
    «IMAP connection failed» при запуске Проверьте `EMAIL_IMAP_HOST` и `EMAIL_IMAP_PORT`. Убедитесь, что IMAP включён в настройках почты. Для Gmail: Настройки → Пересылка и POP/IMAP.
    «SMTP connection failed» при запуске Проверьте `EMAIL_SMTP_HOST` и `EMAIL_SMTP_PORT`. Для Gmail используйте пароль приложения.
    Письма не приходят Проверьте, что отправитель указан в `EMAIL_ALLOWED_USERS`. Проверьте папку «Спам».
    «Authentication failed» Для Gmail обязательно используйте пароль приложения, а не обычный пароль.
    Дублирование ответов Убедитесь, что запущен только один экземпляр шлюза: `hermes gateway status`.
    Медленный ответ Уменьшите интервал опроса: `EMAIL_POLL_INTERVAL=5`.
    Ответы не объединяются в цепочку Адаптер использует заголовки `In-Reply-To`. Некоторые почтовые клиенты (особенно веб-версии) могут некорректно группировать автоматические ответы.

    FAQ

    Можно ли использовать Gmail для Email-адаптера?

    Да, но нужно включить двухфакторную аутентификацию и создать пароль приложения. Обычный пароль Gmail не работает с IMAP при включённой 2FA.

    Чем Email-адаптер отличается от Himalaya?

    Email-адаптер — это шлюз, который позволяет людям писать агенту на почту и получать ответы. Himalaya — это CLI-инструмент, через который агент сам управляет почтовым ящиком: читает, ищет, перемещает, удаляет письма. Оба механизма можно использовать одновременно.

    Можно ли настроить агента на ответ только определённым отправителям?

    Да. Переменная EMAIL_ALLOWED_USERS содержит список email-адресов, от которых агент принимает письма. Все остальные отправители игнорируются.

    Как агент обрабатывает вложения?

    Входящие изображения (JPEG, PNG, GIF, WebP) доступны инструменту vision для анализа. Документы (PDF, ZIP) доступны для работы с файлами. Исходящие вложения прикрепляются через строку MEDIA:/path/to/file в ответе.

    Можно ли отправлять письма через Hermes без Email-адаптера?

    Да, через навык Himalaya. Агент использует CLI-команды himalaya template send для отправки писем. Это работает независимо от Email-адаптера и подходит для автоматических рассылок, отчётов и уведомлений.

    Ссылки

  • Документация Hermes Agent — Email-адаптер
  • Документация Hermes Agent — Навык Himalaya
  • Руководство по настройке шлюза
  • Список инструментов Hermes