diff --git a/family/how-to/hermes-eagle-mac.md b/family/how-to/hermes-eagle-mac.md index 6ef0d2e1..fb796380 100644 --- a/family/how-to/hermes-eagle-mac.md +++ b/family/how-to/hermes-eagle-mac.md @@ -248,14 +248,28 @@ credentials Eagle для поллинга Zulip Events API, но Eagle сам в --- -## Eagle: приём сообщений через zulip-router (2026-06-17) +## Eagle: переключение на zulip-router (2026-06-17) -### Текущее состояние +### Задача -Eagle использует webhook platform для приёма сообщений от zulip-router. -Напрямую в Zulip через Events API Eagle не подписан. +Eagle должен получать сообщения **только через zulip-router** (вебхуки), +без прямого Zulip polling. Кастомный код «роутера» в Hermes (`eagle-thread-guard`) +не должен мешаться. -**Конфиг Eagle:** `~/.hermes/config.yaml` +### План + +1. Отключить Zulip polling у Eagle (если включён) +2. Настроить Eagle на приём вебхуков от zulip-router: + - webhook route `/webhooks/eagle` на порту 8645 + - роутер шлёт на `host.docker.internal:8645/webhooks/eagle` +3. Проверить: + - curl POST `/webhooks/eagle` → 202 + - `@**Орёл**` в Zulip → Eagle отвечает + - ответы только на @mention Орла (не на чужие) + +### Конфиг Eagle + +`~/.hermes/config.yaml` — секция `platforms`: ```yaml platforms: webhook: @@ -270,33 +284,20 @@ platforms: deliver: zulip ``` -**Проблема:** Eagle не отвечает на `@**Орёл**`. Роутер шлёт на `:8644`, -Eagle слушает на `:8645`. Второй gateway (PID 96351) запущен вручную, -занял порт 8644. +Zulip platform (`platforms.zulip`) — отсутствует, polling отключён. -### План +### Что сделано -1. **Занять порт 8645** — Eagle должен слушать на 8645. Сейчас порт занят другим процессом. -2. **Проверить** — curl POST `/webhooks/eagle` → 202, `@**Орёл**` отвечает +- Конфиг Eagle: порт 8645, webhook с route `eagle` +- Eagle перезапущен, порт 8645 слушается +- curl POST `/webhooks/eagle` → 202 Accepted +- Роутер должен слать на `:8645`, но шлёт на `:8644` — не настроено -### Что сделано по zulip-router +### Статус -**2026-06-16 — деплой:** -- Написан код роутера (`~/Developer/zulip-router/`, Go, ~260 LOC) -- Создан compose (`~/Docker/zulip-router/docker-compose.yaml`) -- `.env` с API key Eagle -- Запущен, Events API polling отключён у balda-ботов - -**2026-06-17 — отладка:** -- Eagle добавлен в роутер (webhook на `:8644`) -- Кит добавлен в роутер (webhook на `:8644`) -- Обнаружена проблема trigger=owner -- Конфиг Eagle исправлен: порт 8645, webhook route `eagle` - -### Статус проблем - -- [ ] **trigger=owner** — роутер не фильтрует @mention другого бота -- [ ] **Код в репе vs контейнере** — рассинхронизация +- [ ] **Порт 8645 занят** — сейчас на нём сидит Кит (Whale), Eagle на 8644 +- [ ] **Роутер шлёт на `:8644`** — надо поправить на `:8645` +- [ ] **`@**Орёл**`** — не отвечает ---