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:
Для Outlook / Microsoft 365:
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:) не дублируют тему — контекст потока уже установлен.noreply@, mailer-daemon@, bounce@) игнорируются.Отправка ответов
Ответы отправляются через SMTP с корректнойemail-тредификацией:
In-Reply-To и References поддерживают цепочку писем.Re: (без дублирования Re: Re:).Вложения
Агент может прикреплять файлы к ответам. Достаточно включить в ответ строку 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.~/.hermes/.env с правами chmod 600.EMAIL_ALLOWED_USERS, чтобы агент отвечал только знакомым контактам.Решение частых проблем
| Проблема | Решение |
|---|---|
| «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-адаптера и подходит для автоматических рассылок, отчётов и уведомлений.