{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}

подписок на вебхук

Подписки на веб-перехватчики: запускается агент, управляемый событиями.

Метаданные навыков

Источник В комплекте (устанавливается по умолчанию)
Путь skills/devops/webhook-subscriptions
Версия 1.1.0
Платформы Linux, MacOS, Windows
Теги webhook, события, автоматизация, интеграции, уведомления, push

Ссылка: полная версия SKILL.md:::информация

Ниже приведено полное определение навыка, которое Гермес загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навык активен.

подписок на вебхук

Создавайте динамические подписки на веб-перехватчики, чтобы внешние сервисы (GitHub, GitLab, Stripe, CI/CD, датчики IoT, инструменты мониторинга) могли инициировать запуск агента Hermes путем отправки событий POST на URL-адрес.

Настройка (обязательно)

Платформа веб-перехватчиков должна быть включена перед созданием подписок. Проверьте с:

hermes webhook list

Если написано «Платформа Webhook не включена», настройте ее:

Вариант 1: Мастер настройки

hermes gateway setup

Следуйте инструкциям, чтобы включить веб-перехватчики, установить порт и глобальный секрет HMAC.

Вариант 2: Ручная настройка

Добавьте в ~/.hermes/config.yaml:

platforms:
  webhook:
    enabled: true
    extra:
      host: "0.0.0.0"
      port: 8644
      secret: "generate-a-strong-secret-here"

Вариант 3: переменные среды

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

WEBHOOK_ENABLED=true
WEBHOOK_PORT=8644
WEBHOOK_SECRET=generate-a-strong-secret-here

После настройки запустите (или перезапустите) шлюз:

hermes gateway run
# Or if using systemd:
systemctl --user restart hermes-gateway

Убедитесь, что он работает:

curl http://localhost:8644/health

Команды

Все управление осуществляется через команду CLI hermes webhook:

Создать подписку

hermes webhook subscribe <name> \
  --prompt "Prompt template with {payload.fields}" \
  --events "event1,event2" \
  --description "What this does" \
  --skills "skill1,skill2" \
  --deliver telegram \
  --deliver-chat-id "12345" \
  --secret "optional-custom-secret"

Возвращает URL-адрес веб-перехватчика и секрет HMAC. Пользователь настраивает свою службу для POST по этому URL-адресу.

Получение списка подписок

hermes webhook list

Удалить подписку

hermes webhook remove <name>

Проверьте подписку

hermes webhook test <name>
hermes webhook test <name> --payload '{"key": "value"}'

Шаблоны подсказок

Поддерживает поддержку {dot.notation} для доступа к вложенным полям полезной нагрузки:

Если приглашение не указано, вся полезная нагрузка JSON выгружается в приглашение агента.

Общие шаблоны

GitHub: новые проблемы

hermes webhook subscribe github-issues \
  --events "issues" \
  --prompt "New GitHub issue #{issue.number}: {issue.title}\n\nAction: {action}\nAuthor: {issue.user.login}\nBody:\n{issue.body}\n\nPlease triage this issue." \
  --deliver telegram \
  --deliver-chat-id "-100123456789"

Затем в настройках репозитория GitHub → Вебхуки → Добавить вебхук: – URL-адрес полезной нагрузки: возвращенный webhook_url. - Тип контента: приложение/json. - Секрет: возвращенный секрет - События: «Проблемы»

GitHub: PR-обзоры

hermes webhook subscribe github-prs \
  --events "pull_request" \
  --prompt "PR #{pull_request.number} {action}: {pull_request.title}\nBy: {pull_request.user.login}\nBranch: {pull_request.head.ref}\n\n{pull_request.body}" \
  --skills "github-code-review" \
  --deliver github_comment

Stripe: события оплаты

hermes webhook subscribe stripe-payments \
  --events "payment_intent.succeeded,payment_intent.payment_failed" \
  --prompt "Payment {data.object.status}: {data.object.amount} cents from {data.object.receipt_email}" \
  --deliver telegram \
  --deliver-chat-id "-100123456789"

CI/CD: уведомления о сборке

hermes webhook subscribe ci-builds \
  --events "pipeline" \
  --prompt "Build {object_attributes.status} on {project.name} branch {object_attributes.ref}\nCommit: {commit.message}" \
  --deliver discord \
  --deliver-chat-id "1234567890"

Общее оповещение мониторинга

hermes webhook subscribe alerts \
  --prompt "Alert: {alert.name}\nSeverity: {alert.severity}\nMessage: {alert.message}\n\nPlease investigate and suggest remediation." \
  --deliver origin

Прямая доставка (без агента, нулевая стоимость LLM)

Для случаев использования, когда вы просто хотите отправить уведомление в чат пользователя — без рассуждений, без цикла агента — добавьте --deliver-only. Отрисованный шаблон --prompt становится буквальным телом сообщения и отправляется непосредственно целевому адаптеру.

Используйте это для: - Push-уведомления внешних служб (вебхуки Supabase/Firebase → Telegram) - Мониторинг оповещений, которые должны пересылаться дословно. - Межагентские пинги, когда один агент что-то сообщает пользователю другого агента. - Любой вебхук, при котором поездка туда и обратно по программе LLM будет напрасной тратой усилий.

hermes webhook subscribe antenna-matches \
  --deliver telegram \
  --deliver-chat-id "123456789" \
  --deliver-only \
  --prompt "🎉 New match: {match.user_name} matched with you!" \
  --description "Antenna match notifications"

POST возвращает «200 OK» в случае успешной доставки и «502» в случае целевой неудачи, поэтому вышестоящие службы могут разумно повторить попытку. Аутентификация HMAC, ограничения скорости и идемпотентность по-прежнему применяются.

Требуется, чтобы --deliver был реальной целью (telegram, discord, slack, github_comment и т. д.) — --deliver log отклоняется, поскольку прямая доставка только журналов бессмысленна.

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

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

  1. hermes webhook subscribe записывает в ~/.hermes/webhook_subscriptions.json
  2. Адаптер веб-перехватчика выполняет горячую перезагрузку этого файла при каждом входящем запросе (с ограничением по времени, незначительные накладные расходы).
  3. Когда приходит POST, соответствующий маршруту, адаптер форматирует приглашение и запускает запуск агента.
  4. Ответ агента доставляется в настроенную цель (Telegram, Discord, комментарий GitHub и т. д.).

Устранение неполадок

Если вебхуки не работают:

  1. Шлюз работает? Проверьте с помощью systemctl --user status hermes-gateway или ps aux | grep шлюз
  2. Прослушивает ли сервер веб-перехватчика? curl http://localhost:8644/health должен возвращать {"status": "ok"}
  3. Проверьте журналы шлюза: grep webhook ~/.hermes/logs/gateway.log | хвост -20
  4. Несоответствие подписи? Убедитесь, что секрет в вашей службе соответствует секрету из списка веб-перехватчиков Hermes. GitHub отправляет X-Hub-Signature-256, GitLab отправляет X-Gitlab-Token.
  5. Брандмауэр/NAT? URL-адрес веб-перехватчика должен быть доступен из службы. Для локальной разработки используйте туннель (ngrok, cloudflared).
  6. Неправильный тип события? Проверьте, соответствует ли фильтр --events тому, что отправляет служба. Используйте hermes webhook test <name>, чтобы убедиться, что маршрут работает.