Hermes Agent подключается к Google Calendar и календарям Microsoft, после чего читает ваши события, создаёт встречи с учётом часового пояса, находит пересечения и присылает напоминания в Telegram, Discord или на телефон. В статье — что именно умеет агент, как пройти авторизацию Google, чем календарные события отличаются от cron-задач и как не отдать агенту право молча править ваш календарь.
Что такое интеграция Hermes Agent с календарём?
Интеграция Hermes Agent с календарём — это подключение агента к вашему календарному сервису по API, при котором агент получает право читать события, создавать и удалять их, проверять свободные окна и связывать встречи с письмами и задачами. Ключевая характеристика: календарь становится ещё одним рабочим контекстом агента наравне с файлами, почтой и таблицами — вы описываете задачу словами, а не через графический интерфейс.
Технически это работает через два механизма:
google-workspace — встроенный в Hermes набор команд для Gmail, Calendar, Drive, Sheets, Docs и Contacts. Версия скилла 1.2.0, автор — Nous Research, лицензия MIT, путь skills/productivity/google-workspace/.Чем календарь отличается от cron-задач в Hermes?
Это главная путаница, из-за которой люди подключают не тот инструмент. Календарь — это про человеческое время: встречи, дедлайны, доступность. Cron в Hermes — это про время агента: регулярные отчёты, мониторинг, проверки по расписанию.
В отличие от cron-задачи, которая запускается в изолированной сессии и ничего не знает о вашем дне, календарное событие живёт в вашем календаре: его видно другим людям, на него можно пригласить участников, оно участвует в проверке конфликтов. Обратное тоже верно: событие в календаре не заставляет агента что-то сделать — для этого нужен cron или heartbeat.
Практический вывод — сильная схема использует оба инструмента: календарь сообщает агенту, что у вас сегодня за день, а cron запускает агента, чтобы он об этом рассказал. Про планировщик подробно написано в отдельной статье — Cron-задачи в Hermes: автоматизация по расписанию без кода.
| Задача | Календарь | Cron в Hermes |
|---|---|---|
| Встреча с людьми в 11:00 | Да | Нет |
| Ежедневный отчёт в 9 утра | Нет | Да |
| Видно коллегам | Да | Нет |
| Работает без вашего участия | Нет | Да |
| Проверка конфликтов | Да | Нет |
Какие календари поддерживает Hermes Agent?
Google Calendar — основной сценарий, покрыт встроенным скиллом google-workspace вместе с Gmail, Drive, Sheets, Docs и Contacts. Авторизация через OAuth2, токен обновляется автоматически.
Google Calendar CLI (gws) — если у вас установлена официальная консольная утилита Google Workspace, скилл использует её как бэкенд для более широкого покрытия API. Отдельный вход в gws не нужен: скилл указывает утилите на тот же файл токена.
Календарь Microsoft — подключается через Microsoft Graph. В Hermes для этого есть отдельные адаптеры: слушатель webhook-уведомлений Microsoft Graph (изменения по встречам, календарю, чатам) и конвейер саммари встреч Microsoft Teams на тех же webhook-ах.
Внутренние системы компании — если календарь нестандартный (корпоративный Exchange, самописный планировщик), его подключают как MCP-сервер. Это тот же путь, которым подключают базы данных и внутренние API — см. MCP-протокол в Hermes.
Что умеет агент в календаре: 6 практических задач
1. Показать расписание на период. Агент перечисляет события за произвольное окно, включая рабочие календари и события с приглашениями. По умолчанию команда отдаёт ближайшие 7 дней.
2. Создать событие. Встреча, напоминание, блок времени под работу — с местом, описанием и списком участников.
3. Найти пересечения и тесные переходы. Поскольку агент видит время начала и конца каждого события, он может указать наложения и нереалистичные перерывы между встречами — например, две встречи с интервалом 5 минут в разных местах.
4. Удалить или перенести событие. Удаление делается по идентификатору события, который агент получает при чтении календаря.
5. Собрать утренний брифинг. Календарь плюс почта: что сегодня по расписанию, к каким встречам нужна подготовка, какие письма требуют ответа.
6. Держать контекст между сессиями. Агент помнит, что вы обсуждали по конкретной встрече, — механику памяти разбираем в статье Память AI-агента.
Как подключить Google Calendar к Hermes: пошаговая инструкция
Скилл google-workspace проводит настройку полностью неинтерактивно — вы можете пройти её из терминала, из Telegram или из веб-чата, а агент будет вести вас по шагам.
Шаг 1. Проверить, не настроено ли уже
Команда --check возвращает AUTHENTICATED, если доступ уже есть, — тогда настройка не нужна. Если видите NOT_AUTHENTICATED, REFRESH_FAILED или AUTHENTICATED (partial), продолжайте.
Шаг 2. Определить, какие сервисы нужны
От этого зависит набор разрешений на экране согласия. Варианты:
himalaya с паролем приложения Gmail: настройка занимает пару минут и не требует проекта в Google Cloud.--services email,calendar.--services calendar,drive,sheets,docs.all.Чем уже набор, тем меньше разрешений вы выдаёте агенту. Для чисто календарной задачи нет причин давать доступ к Gmail.
Шаг 3. Создать OAuth-клиент в Google Cloud
Это разовая операция примерно на 5 минут:
Если аккаунт использует Advanced Protection (вход только по аппаратному ключу), администратор Workspace должен сначала добавить OAuth-клиент в список разрешённых приложений организации — иначе авторизация не пройдёт.
Шаг 4. Авторизоваться
Агент сформирует ссылку авторизации. Дальше: открываете ссылку, подтверждаете доступ, а браузер в конце показывает ошибку на http://localhost:1 — это ожидаемо и нормально, ничего не сломалось. Нужно скопировать из адресной строки весь URL целиком и отдать его агенту.
Типичная ошибка на этом шаге — Error 403: access_denied. Лечится добавлением себя в тестовые пользователи на странице Audience в Google Cloud Console.
Шаг 5. Проверить результат
Повторный --check должен вернуть AUTHENTICATED. Токен хранится в файле ~/.hermes/google_token.json и обновляется автоматически, поэтому повторять авторизацию не придётся. Отозвать доступ можно в любой момент командой --revoke — это стоит делать, если вы перестали пользоваться агентом.
Часовой пояс: главная техническая ловушка
Время события в календаре обязательно должно содержать смещение часового пояса — например 2026-03-01T10:00:00-06:00 — либо быть в UTC с пометкой Z.
Время без смещения вроде 2026-03-01T10:00:00 неоднозначно: оно будет истолковано как UTC, и встреча «в 10:00» легко превратится в 13:00 по Москве. Это первое, что стоит проверить, если событие создалось не в то время.
Вторая ловушка из того же ряда: часовой пояс Google-аккаунта и часовой пояс машины, где работает агент, часто не совпадают. При составлении брифинга агент должен использовать явное окно суток в поясе аккаунта, а не размытое «сегодня».
Примеры задач, которые можно ставить агенту словами
Агент не требует специального синтаксиса — задачи формулируются обычным текстом. Рабочие примеры:
Обратите внимание на последний пример: это уже комбинированная задача, где календарь соединяется с почтой. Механику работы агента с письмами разбираем в статье Hermes Agent и электронная почта.
Утренний брифинг: как агент соединяет календарь и почту
В скилле google-workspace есть отдельный справочный документ references/daily-brief.md — процедура сборки брифинга на день (вклад в неё внёс участник проекта Ben Barclay). Процедура задаёт конкретный порядок, а не свободный пересказ:
Цитируемое правило из этой процедуры: запрос брифинга не является разрешением что-то менять в календаре. В справочнике это записано прямым текстом — любое действие выполняется только после того, как вы его увидели и одобрили, а затем результат читается обратно для проверки.
В списке типичных ошибок брифинга, который ведёт проект, отдельно перечислены: путаница часового пояса аккаунта и машины, сокрытие событий на весь день под встречами с фиксированным временем, отношение к предварительным встречам как к подтверждённым и связывание письма со встречей по одному общему слову.
Три способа напоминаний в Hermes
Напоминание — это не одна функция, а выбор из трёх механизмов с разной логикой.
Календарное событие. Напоминания Google-календаря срабатывают штатно на ваших устройствах. Подходит для событий, привязанных к конкретному времени и дате, особенно если в них участвуют другие люди.
Cron-задача. Агент запускается по расписанию и отправляет сообщение туда, где вы его ждёте — в Telegram, Discord, Slack. Подходит для повторяющихся напоминаний и отчётов. Важное ограничение: каждая cron-задача работает в отдельной сессии, поэтому в тексте задачи должно быть всё нужное — агент не помнит прошлый разговор.
Heartbeat внутри текущей сессии. Команда /heartbeat задаёт текущему разговору одно повторяющееся указание, которое срабатывает, когда сессия простаивает. Минимальный интервал — 60 секунд, на сессию такое указание одно. В отличие от cron, heartbeat работает в контексте этого разговора: агент помнит, о чём вы договаривались.
Правило выбора простое: если напоминанию нужен контекст разговора — heartbeat; если задача самодостаточна и должна выполняться без разговора — cron. Heartbeat не прерывает работу агента и не копит пропущенные срабатывания: если сессия была занята несколько интервалов, вы получите одно напоминание, а не очередь из них.
Есть и четвёртый, более лёгкий канал доставки — ntfy, сервис push-уведомлений по HTTP. Он работает без SDK и без Node.js: вы задаёте тему (NTFY_TOPIC), подписываетесь на неё в мобильном приложении, и cron-задача может доставлять результат прямо туда. При этом стоит понимать модель безопасности ntfy: идентичность там — это имя темы, а не пользователь, поэтому любой, кто знает имя темы, может писать агенту. Для чувствительных уведомлений тему делают длинной и неугадываемой, либо поднимают свой сервер с контролем доступа.
Безопасность: почему агент не должен править календарь молча
Правило первое в скилле google-workspace звучит так: никогда не отправлять письма, не создавать и не удалять события календаря, не удалять файлы Drive, не выдавать доступ к файлам и не менять Docs или Sheets без предварительного подтверждения пользователя. Агенту предписано сначала показать, что будет сделано — получателей, идентификаторы файлов, содержание, роль доступа — и запросить одобрение.
Для удаления файлов Drive в правилах отдельно оговорено: по умолчанию используется корзина как обратимая операция, а безвозвратное удаление — только осознанно.
Практические рекомендации, если даёте агенту доступ к рабочему календарю:
FAQ
Можно ли пользоваться Hermes с календарём без программирования?
Да. Настройка сводится к созданию OAuth-клиента в Google Cloud по инструкции и авторизации в браузере. После этого задачи ставятся обычным текстом: «поставь встречу», «покажи расписание на завтра». Специальных навыков разработки не требуется.
Hermes может сам создать встречу с участниками и ссылкой на место?
Да. Команда создания события принимает название, начало, конец, место и список адресов участников. Время обязательно указывается со смещением часового пояса, иначе оно будет истолковано как UTC.
Нужен ли отдельный проект в Google Cloud для календаря?
Да, OAuth-клиент создаётся в Google Cloud, и нужные API включаются там же. Разрешения можно сузить: например, для чисто календарных задач достаточно набора сервисов без почты.
Что делать, если агент создал событие не в то время?
Проверьте два места: содержало ли указанное время смещение часового пояса, и совпадает ли часовой пояс Google-аккаунта с часовым поясом машины, где работает агент. Оба случая — самые частые причины сдвига времени.
Могут ли cron-напоминания заменить календарь?
Нет, они решают разные задачи. Cron не показывает ваше расписание другим людям и не участвует в проверке конфликтов; календарь не запускает агента сам по себе. Сильная схема использует календарь как источник фактов о вашем дне, а cron — как исполнителя регулярных действий.