[2026-06-16] balda: sync docs with disabled events polling; add zulip-router bot creation guide

This commit is contained in:
Alexey Martemyanov
2026-06-16 13:12:59 +06:00
parent 9b15ebf92b
commit 7668508911
3 changed files with 35 additions and 16 deletions
+9 -9
View File
@@ -19,24 +19,24 @@ docker-compose build && docker-compose up -d
## Архитектура получения сообщений
Валера — **outgoing webhook bot** (bot_type=3). Zulip отправляет webhook только для @mention и DM.
Для получения всех сообщений в теме — Events API polling (горутина в коде):
- `events_polling.enabled: true` в config.yaml
- Очередь регистрируется с `all_public_streams=true`
- Бот подписывается на все публичные стримы при старте (`SubscribeToPublicStreams`)
Для получения всех сообщений в теме — **Events API polling** (отключён, после деплоя zulip-router будет удалён из кода):
- `events_polling.enabled: false` в config.yaml (текущее состояние)
- Сообщения приходят только через **outgoing webhook** (webhook_token в .env)
- После @mention создаётся сессия; последующие сообщения без @mention обрабатываются
**После перезапуска**: нужно один раз написать `@Валера <текст>` чтобы создать сессию в теме.
## Диагностика молчания
1. Проверить логи: `docker logs balda-agent-valera-1 --tail 50`
2. Проверить что Events API polling запустился: `zulip events queue registered` в логах
2. Проверить что бот запущен и webhook слушает: в логах `zulip webhook server starting addr=0.0.0.0:8091`
3. Стухший NATS-таск (симптом: логов нет после @mention)
Фикс: `docker-compose restart` (NATS embedded, состояние в памяти)
4. Бот не подписан на стримы (симптом: `processing zulip message trigger=stream` не появляется):
4. Проверить webhook со стороны: отправить POST с curl:
```bash
curl -u "<bot_email>:<api_key>" https://zulip.qentra.top/api/v1/users/me/subscriptions
curl -X POST http://localhost:8091/zulip/webhook \
-H "Content-Type: application/json" \
-d '{"type":"test"}'
```
Если пустой — должен подписаться при следующем старте. Или вручную через API.
## Патчи в коде (общие с Клавдием)
@@ -82,7 +82,7 @@ balda:
provider: deepseek
zulip:
events_polling:
enabled: true
enabled: false # true → если events polling нужен (сейчас отключён)
stream_only_with_session: true
runtime:
providers:
+3 -3
View File
@@ -22,9 +22,9 @@ docker-compose build && docker-compose up -d # после изменений в
Клавдий — **outgoing webhook bot** (bot_type=3). Zulip отправляет webhook только для @mention и DM.
Для получения всех сообщений в теме — **Events API polling**:
- Подписан на все публичные стримы при старте
- После @mention создаётся сессия; последующие сообщения без @mention обрабатываются
Для получения всех сообщений в теме — **Events API polling** (отключён, после деплоя zulip-router будет удалён из кода):
- `events_polling.enabled: false` в config.yaml (текущее состояние)
- Сообщения приходят только через **outgoing webhook**
## Отличие от Валеры
+23 -4
View File
@@ -75,16 +75,35 @@ zulip:
**Compose:** `~/Docker/zulip-router/docker-compose.yaml`
**Env vars:**
### Перед запуском: создать бота-роутера в Zulip
Нужен **отдельный** бот (не valera-bot, не claudio-bot).
1. В Zulip: **Settings → Bots → Add a new bot**
2. Тип: **Outgoing webhook**
3. Имя: `zulip-router` (или любое)
4. Bot email: скопировать (понадобится в .env)
5. API key: скопировать (понадобится в .env)
6. Endpoint URL: не заполнять (роутер сам поллит, webhook от Zulip ему не нужен)
7. Сохранить
### Env vars
Создать `~/Docker/zulip-router/.env`:
```env
ZULIP_ROUTER_API_KEY=<api-key бота-роутера>
ZULIP_ROUTER_BOT_EMAIL=zulip-router-bot@zulip.qentra.top
ZULIP_ROUTER_API_KEY=<api-key из шага 5>
# Куда форвардить
VALERA_WEBHOOK=http://balda-agent-valera-1:8091/zulip/webhook
CLAUDIO_WEBHOOK=http://claudio-agent-claudio-1:8092/zulip/webhook
```
**Запуск:**
### Запуск
```bash
cd ~/Docker/zulip-router
docker-compose up -d
```
docker logs zulip-router --tail 20 # проверить что poll loop запущен
## TODO