
Hermes и Telegram: заметки, задачи и автоматизация с телефона
Ссылки на интересные видео я отправляю в Telegram, чтобы получить конспект в Obsidian. Там же могу надиктовать задачу для нужного проекта, не открывая трекер в браузере.
Сообщения обрабатывает Hermes Agent. Когда-то я использовал его почти для всего, включая кодинг. Сейчас оставил ему сбор заметок, ссылок и задач, а также небольшие операции, которые удобно запускать с телефона.
Ниже моя схема и задание, которое можно отдать своему агенту, чтобы собрать похожую систему. Названия тем, пути и идентификаторы в примерах условные.
Почему я сузил роль Hermes
Сначала мне нравилось, как Hermes работает с памятью и сам создаёт скиллы из повторяющихся действий. Я объяснял процедуру, вносил поправки и в следующих сессиях уже мог на неё ссылаться.
После пары обновлений в моей настройке начались проблемы с той же памятью. Hermes перестал стабильно следовать привычным инструкциям, и часть правил пришлось объяснять заново.
Мне было трудно понять, почему агент стал вести себя иначе: память и скиллы менялись автоматически. Я предпочитаю сам контролировать системные промпты, проектные AGENTS.md и инструкции для отдельных операций. Когда ответ меня не устраивает, хочу знать, какой файл проверить и поправить.
Кодинг я перенёс в другие инструменты. Но управлять процессами из Telegram, когда меня нет дома, по-прежнему удобно. Поэтому Hermes остался, только с более узкой ролью и явно описанными процедурами.
Что я отправляю в Telegram
Отправленное сообщение может сразу запустить обработку: например, превратить ссылку в конспект или запись голоса в задачу.
| Сценарий | Что получается |
|---|---|
| Статья или видео | Summary со ссылкой на источник в Obsidian |
| Аудио с YouTube | Скачанный аудиофайл в выбранном каталоге |
| Задача | Карточка в локальном или рабочем трекере, либо задача для Obsidian Tasks |
| Заметка или вопрос | Заметка по шаблону либо ответ по содержимому vault |
| Книга или фильм | Поиск и скачивание доступного материала из различных источников |
| Рабочее уведомление | Сообщение об упавшем сайте или проблеме, требующей внимания |
Рабочие уведомления сообщают об упавших сайтах и отсутствующих критических блоках на страницах. Такие проверки можно поручить самому Hermes и запускать по расписанию. Ниже покажу, как это задать обычным сообщением.
Запрос можно набрать, отправить голосовым сообщением в Telegram или надиктовать через распознавание речи на телефоне. Эта технология называется STT, speech-to-text: преобразование речи в текст.
Одна супергруппа, несколько тем
Я использую закрытую Telegram-супергруппу с темами. В интерфейсе это отдельные чаты внутри одной группы. К каждой теме привязана инструкция на загрузку нужного скилла.
Отправляю ссылку в тему конспектов, и агенту не нужно угадывать, хочу ли я скачать видео, обсудить его или сделать summary. Тема уже задаёт основной сценарий. Если мне нужен другой результат, я уточняю его сообщением.
Схематично маршрутизация выглядит так:
Telegram: текст, ссылка или голосовое
→ Hermes gateway
→ определение группы и темы
→ контекст темы и загрузка её скилла
→ работа с файлами или API
→ короткий ответ в той же теме
В Hermes эта настройка называется Group Forum Topic Skill Binding. Привязки задаются в config.yaml профиля через platforms.telegram.extra.group_topics. Вот фрагмент в реальном формате Hermes. Идентификаторы и названия тем условные:
platforms:
telegram:
extra:
group_topics:
- chat_id: -1001234567890
topics:
- name: Конспекты
thread_id: 5
skill: summary
- name: Задачи
thread_id: 12
skill: task-capture
- name: Заметки
thread_id: 18
skill: create-note
- name: Аудио
thread_id: 24
skill: youtube-audio-downloader
Темы создаются в Telegram, затем их thread_id и chat_id группы вносятся в конфиг. Поле name служит подписью, а skill указывает на установленный скилл. Hermes автоматически загружает его при старте новой сессии в этой теме. Для проверки привязки в существующем разговоре начните новую сессию командой /new.
Каталог сохранения и проект трекера описываются в самом скилле или его настройках. Поля destination в этой привязке нет.
Раздельные сессии помогают не смешивать обсуждения, но тема не является границей безопасности. Она сама по себе не изолирует файлы, общую память профиля или доступные инструменты. Если рабочие и личные данные требуют разных прав, нужны отдельные профили и технические ограничения доступа.
Модель и инструкции для скиллов
У себя я использую OpenAI Terra. Для конспектов, заметок и создания задач мне её хватает.
В скиллах нужно описать детали, которые иначе придётся повторять в чате. Для конспекта это способ получить текст источника и формат результата. При создании заметки агент должен проверить существующие записи и прочитать шаблон.
Например, тема задач может иметь такой контракт:
Назначение: создавать задачи в личном трекере.
Перед работой: загрузить task-capture.
Проект: использовать явно названный или заранее заданный default.
Если проект определить нельзя: спросить, не угадывать.
Перед созданием: проверить возможный дубль.
Срок: не придумывать, при необходимости уточнить.
После создания: вернуть заголовок, проект и ссылку на карточку.
Не переводить задачу в статус автоматического исполнения.
Для рабочего трекера нужен свой маршрут с собственными правилами и доступом. Для Obsidian Tasks нужно учитывать синтаксис и настройки установленного плагина. Обычная Markdown-галочка не обязательно попадёт в существующие представления задач.
Создание карточки я отделяю от её исполнения. Возможность надиктовать баг с телефона не должна автоматически разрешать агенту менять код и выкатывать исправление.
Как собрать похожую систему
Выбрать место запуска и границы доступа
Hermes должен работать на машине, которая доступна, пока вы пользуетесь ботом. Если это домашний компьютер, во время сна или отключения он не выполнит запрос. Для постоянной доступности подойдёт отдельная машина или сервер, но тогда нужно решить, как он получает файлы из Obsidian vault.
Создайте отдельный профиль для capture. Дайте ему только необходимые каталоги, инструменты и интеграции. Промпт «не читать другие папки» полезен как инструкция, но не заменяет права файловой системы или ограничения инструментов.
Подключить Telegram и проверить маршруты
Создайте бота через @BotFather: отправьте /newbot, задайте имя и username, затем сохраните выданный токен в настройках Telegram gateway Hermes. Не публикуйте токен и не пересылайте его в группу. В Hermes закройте доступ посторонним и добавьте свой Telegram user ID в список разрешённых пользователей. Затем добавьте бота в супергруппу с темами. Проверьте, получает ли он обычные сообщения: на это влияют права бота и Telegram privacy mode.
Запустите gateway как службу с автозапуском и логами. Привяжите каждую тему к своему сценарию, обеспечьте разделение сессий и ответы в исходную тему.
Подключить инструменты и голос
Если работаете с Obsidian, укажите путь к его файлам, карту разделов и шаблоны. Подключая трекер, задайте адрес API и авторизацию, сопоставьте названия проектов с их идентификаторами. Аудио можно скачивать через yt-dlp в заранее выбранный каталог.
Для голосовых сообщений подключите локальное распознавание речи или внешний сервис. Если диктуете через клавиатуру телефона, настройка распознавания в Hermes для этого не нужна.
После тестового запроса откройте созданную заметку или карточку в трекере. Ответа «готово» в Telegram недостаточно. Отдельно проверьте неудачный запрос: если транскрипт видео недоступен, агент должен сообщить об ошибке, не сочиняя конспект по заголовку.
Настроить проверки по расписанию
У Hermes есть встроенный планировщик Scheduled Tasks (Cron). Агент управляет заданиями через инструмент cronjob, но писать cron-выражение вручную не обязательно. Можно просто попросить его в нужной теме Telegram:
Настрой ежедневную проверку сайта https://example.com в 10:00 по UTC. Проверяй доступность главной страницы и наличие блока с формой заявки. Используй скилл site-check. Если сайт недоступен или блок отсутствует, отправляй сообщение в эту тему с описанием проблемы. Если всё в порядке, не пиши. Сначала выполни тестовую проверку, затем покажи расписание и время следующего запуска в UTC.
Скилл site-check здесь условный: его нужно заранее подготовить под конкретные страницы и признаки ошибки. Hermes может привязать скилл к заданию и загрузить его при запуске. Время следующего запуска стоит проверить, чтобы 10:00 UTC не превратилось в 10:00 по часовому поясу сервера.
Задания выполняет работающий gateway, отдельный системный cron настраивать не нужно. Попросить показать расписание, изменить время или приостановить проверку тоже можно обычным сообщением.
Ограничить доступ и действия
Ключи вносите локально в защищённое хранилище или файл окружения, не отправляйте их в Telegram. Переписка с ботом не имеет сквозного шифрования.
Проверка сайта не должна давать агенту право что-либо на нём менять. Удаление данных, публикации и изменения production требуют отдельного подтверждения. Содержимое проверяемых страниц считайте данными, а не инструкциями для агента.
Задание для своего агента
Этот блок можно отдать агенту вместе со статьёй. Он должен сначала собрать ваши ответы, а затем адаптировать схему под установленный Hermes.
Собери мне quick capture на Hermes Agent и Telegram по этой статье. Синтаксис конфигурации в примере соответствует документации Hermes. Названия, пути и идентификаторы условные: замени их моими значениями и проверь совместимость с установленной версией.
Q1. Сначала уточни, где будет работать Hermes, какая ОС установлена и нужна ли круглосуточная доступность.
Q2. Узнай нужные сценарии и темы Telegram. Для каждого согласуй назначение, место результата и случаи, когда нужно задать вопрос.
Q3. Уточни путь к Obsidian vault, разрешённые и закрытые каталоги, шаблоны заметок, настройки Tasks и нужные трекеры с проектами.
Q4. Согласуй провайдера модели, её доступность и способ STT: голосовые Telegram, диктовка телефоном или оба варианта.
Q5. Собери список необходимых доступов. Объясни, куда безопасно внести ключи локально. Не проси отправлять их в Telegram.
Q6. Согласуй действия без подтверждения и действия, которые всегда требуют моего разрешения. Создание задачи не разрешает её исполнение.
Q7. Если нужен мониторинг, уточни страницы и признаки ошибок, расписание, часовой пояс, тему и условия отправки уведомлений.
A1. Проверь документацию установленной версии Hermes: профили, gateway, маршрутизацию тем, подключение skills и разделение сессий. Не выдумывай названия параметров. Покажи план и получи согласование. До изменений сохрани резервную копию затрагиваемых настроек и skills в защищённом локальном месте. Не публикуй секреты из копии.
A2. Создай отдельный capture-профиль, настрой авторизацию пользователя и минимальные доступы. Проверь существующие skills, создай недостающие для согласованных сценариев и установи их в профиль. Привяжи темы к скиллам через group_topics и проверь загрузку в новых сессиях.
A3. Подключи только согласованные интеграции. Опиши их в читаемых файлах. Не полагайся на память чата как единственное место правил. Настрой gateway как службу с автозапуском, запусти её и проверь получение сообщений Telegram и ответы в исходной теме.
A4. Проверь каждый маршрут реальным тестом: сообщение, операция, существующий результат, ответ в исходной теме. Проверь голос, если он включён, неоднозначный запрос, повтор сообщения и отказ внешнего сервиса. Убедись, что посторонний пользователь не может запускать операции.
A5. Если согласован мониторинг, подготовь скилл проверки и создай задание через встроенный Scheduled Tasks (Cron). Проверь существующие задания, чтобы не создать дубль. Выполни тестовый запуск, проверь доставку в нужную тему и условия, при которых уведомление не нужно. Покажи расписание, часовой пояс и время следующего запуска в UTC.
A6. Оставь короткую памятку: где конфиг и skills, как перезапустить службу, посмотреть логи, добавить тему, изменить или приостановить cron-задание и восстановить настройки из резервной копии. После обновлений повторяй проверки маршрутов, доступа, загрузки инструкций и согласованных заданий по расписанию.
Не подключай автономный кодинг, deploy или дополнительные сервисы, которые я не запрашивал. Если часть схемы не поддерживается моей версией, объясни ограничение и согласуй альтернативу.
Для первого запуска я бы ограничился одной темой: например отправить ссылку на видео и получить конспект в Obsidian. На ней можно проверить весь путь от сообщения до файла, прежде чем подключать рабочий трекер и остальные сценарии.