Add comprehensive Cursor task for fixing Telegram bots routing and system prompts

This commit is contained in:
Apple
2025-11-16 16:44:52 -08:00
parent 765956ab09
commit b2b51f08fb

264
CURSOR-FIX-BOTS-COMPLETE.md Normal file
View File

@@ -0,0 +1,264 @@
# 🔧 КРИТИЧНЕ ВИПРАВЛЕННЯ: Telegram Bots Routing
## ❌ ПРОБЛЕМА
Обидва боти (DAARWIZZ і Helion) відповідають неправильно:
- Helion відповідає як Qwen (не використовує свій system_prompt)
- DAARWIZZ може відповідати в чат Helion (неправильний routing)
---
## 🎯 ЗАВДАННЯ
### 1⃣ ПЕРЕВІРИТИ КОНФІГУРАЦІЮ НА СЕРВЕРІ
**Сервер:** 144.76.224.179 (root)
**Репозиторій на сервері:** `/opt/microdao-daarion`
Підключись до сервера і виконай:
```bash
cd /opt/microdao-daarion
# Перевірка 1: Токени в .env
echo "=== ТОКЕНИ ===="
grep "TELEGRAM_BOT_TOKEN" .env
# Має бути:
# DAARWIZZ_TELEGRAM_BOT_TOKEN=8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M
# HELION_TELEGRAM_BOT_TOKEN=8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM
# (можна видалити TELEGRAM_BOT_TOKEN якщо є)
# Перевірка 2: Структура payload в Helion webhook
echo -e "\n=== HELION PAYLOAD СТРУКТУРА ==="
sed -n '466,473p' gateway-bot/http_api.py
# Має бути:
# "payload": {
# "context": {
# "agent_name": HELION_NAME,
# "system_prompt": HELION_SYSTEM_PROMPT,
# "memory": memory_context,
# }
# },
# Перевірка 3: Токени в контейнері gateway
echo -e "\n=== ТОКЕНИ В GATEWAY КОНТЕЙНЕРІ ==="
docker exec dagi-gateway printenv | grep "TELEGRAM_BOT_TOKEN"
# Перевірка 4: Webhooks в Telegram
echo -e "\n=== WEBHOOK URLs ==="
curl -s "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/getWebhookInfo" | python3 -c "import sys, json; print('DAARWIZZ:', json.load(sys.stdin)['result'].get('url', 'NOT SET'))"
curl -s "https://api.telegram.org/bot8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM/getWebhookInfo" | python3 -c "import sys, json; print('Helion:', json.load(sys.stdin)['result'].get('url', 'NOT SET'))"
```
---
### 2⃣ ВИПРАВЛЕННЯ
#### A. Якщо токени неправильні в .env:
```bash
cd /opt/microdao-daarion
# Виправити токени
cat > .env.tokens << 'EOF'
DAARWIZZ_TELEGRAM_BOT_TOKEN=8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M
HELION_TELEGRAM_BOT_TOKEN=8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM
EOF
# Додати в .env (видаливши старі TELEGRAM_BOT_TOKEN рядки спочатку)
sed -i '/TELEGRAM_BOT_TOKEN/d' .env
cat .env.tokens >> .env
rm .env.tokens
```
#### B. Виправити Helion payload структуру:
**Файл:** `gateway-bot/http_api.py`
**Рядки:** 466-473
**Замінити:**
```python
"payload": {"context": {
"agent_name": HELION_NAME,
"system_prompt": HELION_SYSTEM_PROMPT,
"memory": memory_context,
},
},
```
**На:**
```python
"payload": {
"context": {
"agent_name": HELION_NAME,
"system_prompt": HELION_SYSTEM_PROMPT,
"memory": memory_context,
}
},
```
**Суть:** `"context"` має бути всередині `"payload"` з правильним indent, а не `"payload": {"context":` в одному рядку.
#### C. Додати DAARWIZZ_TELEGRAM_BOT_TOKEN в docker-compose.yml:
**Файл:** `docker-compose.yml`
**Секція:** `gateway``environment`
Знайди секцію gateway environment і **переконайся що є**:
```yaml
environment:
- ROUTER_URL=http://router:9102
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN:-}
- DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN:-}
- DAARWIZZ_TELEGRAM_BOT_TOKEN=${DAARWIZZ_TELEGRAM_BOT_TOKEN:-} # ← МАЄ БУТИ
- DAARWIZZ_NAME=${DAARWIZZ_NAME:-DAARWIZZ}
- DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt
- HELION_TELEGRAM_BOT_TOKEN=${HELION_TELEGRAM_BOT_TOKEN:-}
- HELION_NAME=${HELION_NAME:-Helion}
- HELION_PROMPT_PATH=/app/gateway-bot/helion_prompt.txt
- MEMORY_SERVICE_URL=http://memory-service:8000
```
#### D. Перевірити webhooks registration:
```bash
# Отримати поточний Cloudflare tunnel URL
TUNNEL_URL=$(ps aux | grep cloudflared | grep -v grep | grep -oP 'http://[^ ]+' | head -1)
echo "Tunnel: $TUNNEL_URL"
# Якщо тунелю немає - створити новий
if [ -z "$TUNNEL_URL" ]; then
# Зупинити старі
pkill cloudflared
# Створити новий
nohup cloudflared tunnel --url http://localhost:9300 > /var/log/cloudflared.log 2>&1 &
sleep 3
# Отримати URL з логу
TUNNEL_URL=$(grep -oP 'https://[a-z0-9-]+\.trycloudflare\.com' /var/log/cloudflared.log | head -1)
fi
echo "Using tunnel: $TUNNEL_URL"
# Зареєструвати webhooks
curl -X POST "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/setWebhook" \
-d "url=${TUNNEL_URL}/telegram/webhook"
curl -X POST "https://api.telegram.org/bot8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM/setWebhook" \
-d "url=${TUNNEL_URL}/helion/telegram/webhook"
```
---
### 3⃣ ПЕРЕЗАПУСК СЕРВІСІВ
```bash
cd /opt/microdao-daarion
# Перезапустити gateway з новими змінними
docker compose up -d gateway
# Перезапустити router (якщо змінювали llm_provider)
docker compose restart router
# Почекати 5 секунд
sleep 5
# Перевірити що все працює
docker compose ps
docker compose logs --tail=10 gateway
docker compose logs --tail=10 router
```
---
### 4⃣ ТЕСТУВАННЯ
Після виправлень:
#### Тест 1: DAARWIZZ бот
Надішли боту `@DAARWIZZBot`:
```
Хто ти?
```
**Очікувана відповідь:** Має згадувати DAARWIZZ, DAARION.city, microDAO
#### Тест 2: Helion бот
Надішли боту (username потрібно дізнатись через `getMe`):
```
Хто ти і що таке EcoMiner?
```
**Очікувана відповідь:** Має згадувати Helion, Energy Union, EcoMiner
#### Якщо НЕ працює - дивись логи:
```bash
# Gateway логи (останні 30 рядків)
docker compose logs --tail=30 gateway | grep -E "helion|daarwizz|Sending to Router"
# Router логи (останні 30 рядків)
docker compose logs --tail=30 router | grep -E "agent=|payload|context|DEBUG"
```
---
## 🔍 ДІАГНОСТИКА ПРОБЛЕМ
### Якщо Helion відповідає як Qwen:
1. **Перевір структуру payload** в `gateway-bot/http_api.py` (рядок 466)
2. **Перевір що HELION_SYSTEM_PROMPT завантажується:**
```bash
docker compose logs gateway | grep -i "helion.*prompt\|prompt.*loaded"
```
3. **Додай debug в router:**
```bash
# В providers/llm_provider.py після рядка 161
docker exec dagi-router cat /app/providers/llm_provider.py | grep -A5 "_get_system_prompt"
```
### Якщо боти відповідають в неправильний чат:
1. **Перевір що `send_telegram_message` отримує правильний токен:**
```bash
grep "send_telegram_message.*TELEGRAM_BOT_TOKEN" gateway-bot/http_api.py
```
Має бути:
- Рядок 198: `os.getenv("DAARWIZZ_TELEGRAM_BOT_TOKEN")`
- Рядок 262: `os.getenv("DAARWIZZ_TELEGRAM_BOT_TOKEN")`
- Рядок 498: `os.getenv("HELION_TELEGRAM_BOT_TOKEN")`
2. **Перевір webhooks:**
```bash
curl -s "https://api.telegram.org/bot8323412397:AAFxaru-hHRl08A3T6TC02uHLvO5wAB0m3M/getWebhookInfo"
```
URL має бути `/telegram/webhook` для DAARWIZZ
---
## ✅ КРИТЕРІЇ УСПІХУ
- ✅ DAARWIZZ бот відповідає про DAARION/microDAO
- ✅ Helion бот відповідає про Energy Union/EcoMiner (НЕ як Qwen)
- ✅ Кожен бот відповідає у свій чат (не плутає)
- ✅ Webhooks зареєстровані правильно
- ✅ Токени передаються в gateway контейнер
---
## 📝 ВАЖЛИВО
- **НЕ змінюй** файли prompt (`helion_prompt.txt`, `daarwizz_prompt.txt`) - вони правильні
- **НЕ створюй** нові webhook endpoints - вони є
- **Фокус на:** токени, payload структура, docker-compose environment
- **Після змін:** обов'язково перезапусти gateway і протестуй
---
**Після виконання - повідом про результат тестів!**