feat: add memory-service and postgres for Helion agent
- Add PostgreSQL database in docker-compose.yml - Add memory-service with health checks - Create database schema (init.sql) with user_facts, dialog_summaries, agent_memory_events - Add deployment documentation (DEPLOY-NOW.md) - Add status reports and troubleshooting guides
This commit is contained in:
328
DEPLOY-NOW.md
Normal file
328
DEPLOY-NOW.md
Normal file
@@ -0,0 +1,328 @@
|
|||||||
|
# 🚀 Інструкція для деплою Helion на сервер ЗАРАЗ
|
||||||
|
|
||||||
|
**Сервер**: 144.76.224.179
|
||||||
|
**Домен**: gateway.daarion.city
|
||||||
|
**Telegram токен**: 8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Що готово локально
|
||||||
|
|
||||||
|
- ✅ docker-compose.yml (додано postgres + memory-service)
|
||||||
|
- ✅ services/memory-service/init.sql (схема БД)
|
||||||
|
- ✅ .env (додано змінні для memory service)
|
||||||
|
- ✅ gateway-bot/helion_prompt.txt (system prompt)
|
||||||
|
- ✅ scripts/setup-nginx-gateway.sh (HTTPS setup)
|
||||||
|
- ✅ scripts/register-agent-webhook.sh (webhook registration)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 1: Закомітити і запушити
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /Users/apple/github-projects/microdao-daarion
|
||||||
|
|
||||||
|
# Додати нові файли
|
||||||
|
git add docker-compose.yml
|
||||||
|
git add .env
|
||||||
|
git add services/memory-service/init.sql
|
||||||
|
git add STATUS-HELION.md
|
||||||
|
git add README-HELION-PROBLEMS.md
|
||||||
|
git add DEPLOY-NOW.md
|
||||||
|
|
||||||
|
# Закомітити
|
||||||
|
git commit -m "feat: add memory-service and postgres for Helion agent
|
||||||
|
|
||||||
|
- Add PostgreSQL database for memory service
|
||||||
|
- Add memory-service in docker-compose.yml
|
||||||
|
- Add database schema (init.sql)
|
||||||
|
- Update .env with memory service configuration
|
||||||
|
- Add documentation for Helion deployment"
|
||||||
|
|
||||||
|
# Запушити
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 2: Налаштувати DNS (якщо ще не зроблено)
|
||||||
|
|
||||||
|
1. Зайти в панель управління DNS (Cloudflare / Hetzner / інше)
|
||||||
|
2. Створити A запис:
|
||||||
|
- **Name**: `gateway.daarion.city`
|
||||||
|
- **Type**: `A`
|
||||||
|
- **Value**: `144.76.224.179`
|
||||||
|
- **TTL**: 300 секунд
|
||||||
|
|
||||||
|
3. Перевірити (може зайняти 1-5 хвилин):
|
||||||
|
```bash
|
||||||
|
dig gateway.daarion.city +short
|
||||||
|
# Має вивести: 144.76.224.179
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 3: Підключитися до сервера
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh root@144.76.224.179
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 4: Перевірити встановлено Docker (на сервері)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Перевірити Docker
|
||||||
|
docker --version
|
||||||
|
|
||||||
|
# Якщо НЕ встановлено:
|
||||||
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
||||||
|
sh get-docker.sh
|
||||||
|
|
||||||
|
# Перевірити Docker Compose
|
||||||
|
docker-compose --version
|
||||||
|
|
||||||
|
# Якщо НЕ встановлено:
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y docker-compose
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 5: Клонувати/оновити репозиторій (на сервері)
|
||||||
|
|
||||||
|
### Варіант А: Якщо репозиторій ще НЕ клонований
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt
|
||||||
|
git clone https://github.com/IvanTytar/microdao-daarion.git
|
||||||
|
cd microdao-daarion
|
||||||
|
```
|
||||||
|
|
||||||
|
### Варіант Б: Якщо репозиторій вже є
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/microdao-daarion # або де знаходиться репозиторій
|
||||||
|
git pull origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 6: Налаштувати .env (на сервері)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Перевірити чи є .env
|
||||||
|
ls -la .env
|
||||||
|
|
||||||
|
# Якщо НЕ існує - створити з локального
|
||||||
|
# (на Mac скопіювати .env на сервер через scp)
|
||||||
|
|
||||||
|
# Або створити вручну:
|
||||||
|
nano .env
|
||||||
|
```
|
||||||
|
|
||||||
|
**Мінімально необхідні змінні:**
|
||||||
|
```bash
|
||||||
|
# Helion
|
||||||
|
HELION_TELEGRAM_BOT_TOKEN=8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM
|
||||||
|
HELION_NAME=Helion
|
||||||
|
HELION_PROMPT_PATH=./gateway-bot/helion_prompt.txt
|
||||||
|
|
||||||
|
# Memory
|
||||||
|
MEMORY_SERVICE_URL=http://memory-service:8000
|
||||||
|
MEMORY_DATABASE_URL=postgresql://postgres:postgres@postgres:5432/daarion_memory
|
||||||
|
|
||||||
|
# PostgreSQL
|
||||||
|
POSTGRES_USER=postgres
|
||||||
|
POSTGRES_PASSWORD=postgres
|
||||||
|
POSTGRES_DB=daarion_memory
|
||||||
|
|
||||||
|
# Ollama (якщо є локально на сервері)
|
||||||
|
OLLAMA_BASE_URL=http://host.docker.internal:11434
|
||||||
|
OLLAMA_MODEL=qwen3:8b
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 7: Запустити стек (на сервері)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Створити директорії
|
||||||
|
mkdir -p logs data/rbac
|
||||||
|
|
||||||
|
# Запустити всі сервіси
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Переглянути статус
|
||||||
|
docker-compose ps
|
||||||
|
|
||||||
|
# Очікувані контейнери:
|
||||||
|
# - dagi-router (9102) - UP
|
||||||
|
# - dagi-gateway (9300) - UP
|
||||||
|
# - dagi-postgres (5432) - UP
|
||||||
|
# - dagi-memory-service (8000) - UP
|
||||||
|
# - dagi-devtools (8008) - UP
|
||||||
|
# - dagi-crewai (9010) - UP
|
||||||
|
# - dagi-rbac (9200) - UP
|
||||||
|
# - dagi-rag-service (9500) - UP або Restarting (OK якщо немає city-db)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 8: Перевірити health endpoints (на сервері)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Gateway
|
||||||
|
curl http://localhost:9300/health
|
||||||
|
# Має вивести: {"status": "healthy", "agents": {...}}
|
||||||
|
|
||||||
|
# Memory Service
|
||||||
|
curl http://localhost:8000/health
|
||||||
|
# Має вивести: {"status": "healthy", "service": "memory-service"}
|
||||||
|
|
||||||
|
# Router
|
||||||
|
curl http://localhost:9102/health
|
||||||
|
|
||||||
|
# PostgreSQL
|
||||||
|
docker exec -it dagi-postgres psql -U postgres -c "\l"
|
||||||
|
# Має показати базу даних "daarion_memory"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Якщо щось не працює:**
|
||||||
|
```bash
|
||||||
|
# Переглянути логи
|
||||||
|
docker-compose logs -f gateway
|
||||||
|
docker-compose logs -f memory-service
|
||||||
|
docker-compose logs -f postgres
|
||||||
|
|
||||||
|
# Перезапустити
|
||||||
|
docker-compose restart gateway memory-service
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 9: Налаштувати HTTPS Gateway (на сервері)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Встановити certbot якщо немає
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y certbot
|
||||||
|
|
||||||
|
# Запустити скрипт налаштування HTTPS
|
||||||
|
sudo ./scripts/setup-nginx-gateway.sh gateway.daarion.city admin@daarion.city
|
||||||
|
|
||||||
|
# Скрипт автоматично:
|
||||||
|
# - Отримає SSL сертифікат від Let's Encrypt
|
||||||
|
# - Налаштує nginx reverse proxy
|
||||||
|
# - Запустить nginx в Docker контейнері
|
||||||
|
# - Налаштує auto-renewal сертифікатів
|
||||||
|
|
||||||
|
# Перевірити HTTPS
|
||||||
|
curl https://gateway.daarion.city/health
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 10: Зареєструвати Telegram Webhook (на сервері)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Зареєструвати webhook
|
||||||
|
./scripts/register-agent-webhook.sh \
|
||||||
|
helion \
|
||||||
|
8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM \
|
||||||
|
gateway.daarion.city
|
||||||
|
|
||||||
|
# Перевірити webhook
|
||||||
|
curl "https://api.telegram.org/bot8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM/getWebhookInfo"
|
||||||
|
|
||||||
|
# Має показати:
|
||||||
|
# {
|
||||||
|
# "ok": true,
|
||||||
|
# "result": {
|
||||||
|
# "url": "https://gateway.daarion.city/helion/telegram/webhook",
|
||||||
|
# "has_custom_certificate": false,
|
||||||
|
# "pending_update_count": 0
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Крок 11: Тестувати бота!
|
||||||
|
|
||||||
|
1. Відкрити бота в Telegram (знайти по username або токену)
|
||||||
|
2. Надіслати повідомлення: **"Привіт! Що таке EcoMiner?"**
|
||||||
|
3. Чекати відповідь від Helion
|
||||||
|
|
||||||
|
**Якщо бот не відповідає:**
|
||||||
|
```bash
|
||||||
|
# На сервері переглянути логи
|
||||||
|
docker-compose logs -f gateway
|
||||||
|
|
||||||
|
# Перевірити webhook
|
||||||
|
curl "https://api.telegram.org/bot8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM/getWebhookInfo"
|
||||||
|
|
||||||
|
# Перевірити nginx
|
||||||
|
docker logs nginx-gateway
|
||||||
|
|
||||||
|
# Restart gateway
|
||||||
|
docker-compose restart gateway
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Checklist
|
||||||
|
|
||||||
|
- [ ] Закомітили і запушили зміни
|
||||||
|
- [ ] DNS налаштовано (gateway.daarion.city → 144.76.224.179)
|
||||||
|
- [ ] Підключились до сервера через SSH
|
||||||
|
- [ ] Docker встановлено
|
||||||
|
- [ ] Репозиторій клоновано/оновлено
|
||||||
|
- [ ] .env налаштовано з токенами
|
||||||
|
- [ ] docker-compose up -d виконано
|
||||||
|
- [ ] Health endpoints працюють (9300, 8000)
|
||||||
|
- [ ] HTTPS Gateway налаштовано (setup-nginx-gateway.sh)
|
||||||
|
- [ ] Telegram webhook зареєстровано
|
||||||
|
- [ ] Бот відповідає в Telegram! 🎉
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 Troubleshooting
|
||||||
|
|
||||||
|
### Memory Service не запускається
|
||||||
|
```bash
|
||||||
|
docker-compose logs memory-service
|
||||||
|
docker-compose logs postgres
|
||||||
|
|
||||||
|
# Перезапустити
|
||||||
|
docker-compose restart postgres memory-service
|
||||||
|
```
|
||||||
|
|
||||||
|
### SSL сертифікат не отримується
|
||||||
|
```bash
|
||||||
|
# Перевірити DNS
|
||||||
|
dig gateway.daarion.city +short
|
||||||
|
|
||||||
|
# Спробувати вручну
|
||||||
|
certbot certonly --standalone -d gateway.daarion.city --email admin@daarion.city
|
||||||
|
```
|
||||||
|
|
||||||
|
### Бот не відповідає
|
||||||
|
```bash
|
||||||
|
# Перевірити логи Gateway
|
||||||
|
docker-compose logs --tail=50 gateway
|
||||||
|
|
||||||
|
# Перевірити чи webhook активний
|
||||||
|
curl "https://api.telegram.org/bot8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM/getWebhookInfo"
|
||||||
|
|
||||||
|
# Видалити webhook і встановити знову
|
||||||
|
curl -X POST "https://api.telegram.org/bot8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM/deleteWebhook"
|
||||||
|
./scripts/register-agent-webhook.sh helion 8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM gateway.daarion.city
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎉 Успіх!
|
||||||
|
|
||||||
|
Після виконання всіх кроків, Helion має запрацювати в Telegram і відповідати на запитання про Energy Union, EcoMiner, токеноміку тощо!
|
||||||
178
README-HELION-PROBLEMS.md
Normal file
178
README-HELION-PROBLEMS.md
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
# 🔥 Проблеми з запуском Helion і як їх вирішити
|
||||||
|
|
||||||
|
## ❌ Що не працює зараз
|
||||||
|
|
||||||
|
### 1. Memory Service відсутній в docker-compose.yml
|
||||||
|
**Симптом**: Gateway не може з'єднатися з memory-service
|
||||||
|
**Вирішення**: Додати postgres + memory-service в docker-compose.yml
|
||||||
|
**Файл завдань**: `CURSOR-QUICK-TASKS.md` (завдання 1-3)
|
||||||
|
|
||||||
|
### 2. Docker сервіси не запущені
|
||||||
|
**Симптом**: `docker ps` не показує контейнери
|
||||||
|
**Вирішення**: `docker-compose up -d` на сервері
|
||||||
|
**Примітка**: Спочатку треба вирішити проблему #1
|
||||||
|
|
||||||
|
### 3. HTTPS Gateway не налаштований
|
||||||
|
**Симптом**: Telegram не може відправляти webhook
|
||||||
|
**Вирішення**:
|
||||||
|
1. Налаштувати DNS: `gateway.daarion.city` → `144.76.224.179`
|
||||||
|
2. Запустити: `sudo ./scripts/setup-nginx-gateway.sh gateway.daarion.city admin@daarion.city`
|
||||||
|
|
||||||
|
### 4. Telegram webhook не зареєстрований
|
||||||
|
**Симптом**: Бот не відповідає на повідомлення
|
||||||
|
**Вирішення**:
|
||||||
|
```bash
|
||||||
|
./scripts/register-agent-webhook.sh helion 8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM gateway.daarion.city
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Що треба зробити в Cursor
|
||||||
|
|
||||||
|
### Крок 1: Відкрийте проект в Cursor
|
||||||
|
```bash
|
||||||
|
cd /Users/apple/github-projects/microdao-daarion
|
||||||
|
cursor .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Крок 2: Дайте Cursor завдання
|
||||||
|
Скажіть Cursor:
|
||||||
|
|
||||||
|
> "Прочитай файл `CURSOR-QUICK-TASKS.md` і виконай всі 4 завдання:
|
||||||
|
> 1. Додай postgres + memory-service в docker-compose.yml
|
||||||
|
> 2. Оновити .env
|
||||||
|
> 3. Створи init.sql для memory-service
|
||||||
|
> 4. Перевір health endpoint в memory-service"
|
||||||
|
|
||||||
|
АБО дайте детальне завдання:
|
||||||
|
|
||||||
|
> "Прочитай файл `CURSOR-TASK-HELION.md` і виконай Завдання 1-6"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Після того як Cursor виконає завдання
|
||||||
|
|
||||||
|
### Локальне тестування (на Mac)
|
||||||
|
```bash
|
||||||
|
# Запустити стек
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Перевірити статус
|
||||||
|
docker-compose ps
|
||||||
|
|
||||||
|
# Перевірити health endpoints
|
||||||
|
curl http://localhost:9300/health
|
||||||
|
curl http://localhost:8000/health
|
||||||
|
|
||||||
|
# Переглянути логи
|
||||||
|
docker-compose logs -f gateway memory-service
|
||||||
|
```
|
||||||
|
|
||||||
|
### Якщо все ОК - перенесення на сервер
|
||||||
|
|
||||||
|
1. **Закомітити зміни**:
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
git commit -m "feat: add memory-service and postgres to docker-compose"
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **На сервері**:
|
||||||
|
```bash
|
||||||
|
ssh root@144.76.224.179
|
||||||
|
cd /opt/microdao-daarion
|
||||||
|
git pull origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Налаштувати DNS** (в Cloudflare/Hetzner):
|
||||||
|
- Name: `gateway.daarion.city`
|
||||||
|
- Type: `A`
|
||||||
|
- Value: `144.76.224.179`
|
||||||
|
|
||||||
|
4. **Запустити стек**:
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
docker-compose logs -f gateway
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Налаштувати HTTPS**:
|
||||||
|
```bash
|
||||||
|
sudo ./scripts/setup-nginx-gateway.sh gateway.daarion.city admin@daarion.city
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Зареєструвати webhook**:
|
||||||
|
```bash
|
||||||
|
./scripts/register-agent-webhook.sh helion 8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM gateway.daarion.city
|
||||||
|
```
|
||||||
|
|
||||||
|
7. **Тестувати бота** в Telegram!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Checklist
|
||||||
|
|
||||||
|
- [ ] Cursor виконав завдання з CURSOR-QUICK-TASKS.md
|
||||||
|
- [ ] Локально запустилось: `docker-compose up -d`
|
||||||
|
- [ ] Health endpoints працюють (9300, 8000)
|
||||||
|
- [ ] Закомітили і запушили зміни
|
||||||
|
- [ ] DNS налаштовано на 144.76.224.179
|
||||||
|
- [ ] На сервері: git pull && docker-compose up -d
|
||||||
|
- [ ] HTTPS Gateway налаштовано (setup-nginx-gateway.sh)
|
||||||
|
- [ ] Telegram webhook зареєстровано
|
||||||
|
- [ ] Бот відповідає в Telegram ✅
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🆘 Якщо щось не працює
|
||||||
|
|
||||||
|
### Memory Service не запускається
|
||||||
|
```bash
|
||||||
|
# Переглянути логи
|
||||||
|
docker-compose logs memory-service
|
||||||
|
|
||||||
|
# Перевірити чи є init.sql
|
||||||
|
ls -la services/memory-service/init.sql
|
||||||
|
|
||||||
|
# Перевірити PostgreSQL
|
||||||
|
docker-compose logs postgres
|
||||||
|
docker exec -it dagi-postgres psql -U postgres -c "\l"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Gateway не бачить Memory Service
|
||||||
|
```bash
|
||||||
|
# Перевірити network
|
||||||
|
docker network inspect dagi-network
|
||||||
|
|
||||||
|
# Перевірити чи memory-service в .env
|
||||||
|
grep MEMORY_SERVICE_URL .env
|
||||||
|
|
||||||
|
# Restart gateway
|
||||||
|
docker-compose restart gateway
|
||||||
|
docker-compose logs -f gateway
|
||||||
|
```
|
||||||
|
|
||||||
|
### Бот не відповідає
|
||||||
|
```bash
|
||||||
|
# Перевірити webhook
|
||||||
|
curl "https://api.telegram.org/bot8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM/getWebhookInfo"
|
||||||
|
|
||||||
|
# Повинно показати:
|
||||||
|
# "url": "https://gateway.daarion.city/helion/telegram/webhook"
|
||||||
|
# "has_custom_certificate": false
|
||||||
|
# "pending_update_count": 0
|
||||||
|
|
||||||
|
# Перевірити Gateway доступний
|
||||||
|
curl https://gateway.daarion.city/health
|
||||||
|
|
||||||
|
# Логи
|
||||||
|
docker-compose logs -f gateway
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 Контакти
|
||||||
|
|
||||||
|
- Детальна документація: `CURSOR-TASK-HELION.md`
|
||||||
|
- Quick start: `CURSOR-QUICK-TASKS.md`
|
||||||
|
- Статус проекту: `STATUS-HELION.md`
|
||||||
|
- Helion документація: `docs/HELION-QUICKSTART.md`
|
||||||
262
STATUS-HELION.md
Normal file
262
STATUS-HELION.md
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
# Звіт про стан роботи з агентом Helion
|
||||||
|
|
||||||
|
**Дата**: 16 січня 2025
|
||||||
|
**Сервер**: GEX44 #2844465 (144.76.224.179)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Що зроблено
|
||||||
|
|
||||||
|
### 1. Код і конфігурація агента Helion
|
||||||
|
|
||||||
|
- ✅ **System prompt**: створено `gateway-bot/helion_prompt.txt` (200+ рядків)
|
||||||
|
- 9 режимів взаємодії (інвестор, інженер, новачок, тощо)
|
||||||
|
- 4-рівнева система комплаєнсу (R1-R4)
|
||||||
|
- RAG верифікація відповідей
|
||||||
|
- Технічні модулі: EcoMiner, BioMiner, токеноміка
|
||||||
|
|
||||||
|
- ✅ **HTTP endpoint**: `/helion/telegram/webhook` в `gateway-bot/http_api.py`
|
||||||
|
- Обробка Telegram webhooks
|
||||||
|
- Інтеграція з Memory Service
|
||||||
|
- Інтеграція з DAGI Router
|
||||||
|
|
||||||
|
- ✅ **Docker конфігурація**: налаштовано в `docker-compose.yml`
|
||||||
|
- Environment variables для Helion
|
||||||
|
- Volume mappings
|
||||||
|
- Network configuration
|
||||||
|
|
||||||
|
- ✅ **Telegram токен**: отриманий і збережений в `.env`
|
||||||
|
```
|
||||||
|
HELION_TELEGRAM_BOT_TOKEN=8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Автоматизовані скрипти
|
||||||
|
|
||||||
|
- ✅ **setup-nginx-gateway.sh**: автоматичне налаштування HTTPS
|
||||||
|
- Let's Encrypt сертифікати
|
||||||
|
- Nginx reverse proxy
|
||||||
|
- Auto-renewal сертифікатів
|
||||||
|
- Підтримка multiple agents
|
||||||
|
|
||||||
|
- ✅ **register-agent-webhook.sh**: реєстрація Telegram webhook
|
||||||
|
- Автоматичне встановлення webhook URL
|
||||||
|
- Верифікація налаштувань
|
||||||
|
|
||||||
|
### 3. Документація
|
||||||
|
|
||||||
|
- ✅ **HELION-QUICKSTART.md**: повний гайд по запуску
|
||||||
|
- Передумови і залежності
|
||||||
|
- Покрокова інструкція
|
||||||
|
- Тестові запити
|
||||||
|
- Troubleshooting
|
||||||
|
- Приклади використання
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Проблеми та незавершені задачі
|
||||||
|
|
||||||
|
### 1. Memory Service відсутній
|
||||||
|
|
||||||
|
**Проблема**:
|
||||||
|
- В `docker-compose.yml` немає визначення сервісу `memory-service`
|
||||||
|
- Gateway очікує `memory-service` на `http://memory-service:8000`
|
||||||
|
- В `.env` вказано `MEMORY_SERVICE_URL=http://memory-service:8000`
|
||||||
|
|
||||||
|
**Статус**: ❌ Відсутній сервіс
|
||||||
|
**Критичність**: Висока - без нього агент не запрацює повноцінно
|
||||||
|
|
||||||
|
**Рішення**:
|
||||||
|
1. Додати `memory-service` в `docker-compose.yml`
|
||||||
|
2. Або використовувати існуючу базу даних
|
||||||
|
3. Або тимчасово відключити memory features в gateway
|
||||||
|
|
||||||
|
### 2. Сервіси не запущені
|
||||||
|
|
||||||
|
**Проблема**:
|
||||||
|
- Docker containers не запущені (перевірено командою `docker ps`)
|
||||||
|
- Gateway, Router, та інші сервіси не працюють
|
||||||
|
|
||||||
|
**Статус**: ❌ Сервіси зупинені
|
||||||
|
|
||||||
|
**Що потрібно зробити**:
|
||||||
|
```bash
|
||||||
|
# На сервері
|
||||||
|
cd /path/to/microdao-daarion
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. HTTPS Gateway не налаштований
|
||||||
|
|
||||||
|
**Проблема**:
|
||||||
|
- Nginx gateway ще не запущено на сервері
|
||||||
|
- DNS `gateway.daarion.city` потрібно прив'язати до IP сервера
|
||||||
|
- SSL сертифікати не отримані
|
||||||
|
|
||||||
|
**Статус**: ❌ Не налаштовано
|
||||||
|
|
||||||
|
**Що потрібно зробити**:
|
||||||
|
1. Налаштувати DNS запис: `gateway.daarion.city` → `144.76.224.179`
|
||||||
|
2. На сервері запустити:
|
||||||
|
```bash
|
||||||
|
sudo ./scripts/setup-nginx-gateway.sh gateway.daarion.city admin@daarion.city
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Webhook не зареєстрований
|
||||||
|
|
||||||
|
**Проблема**:
|
||||||
|
- Telegram webhook ще не зареєстрований для бота Helion
|
||||||
|
|
||||||
|
**Статус**: ❌ Не зареєстрований
|
||||||
|
|
||||||
|
**Що потрібно зробити**:
|
||||||
|
```bash
|
||||||
|
./scripts/register-agent-webhook.sh helion 8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM gateway.daarion.city
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. STT Service (опціонально)
|
||||||
|
|
||||||
|
**Проблема**:
|
||||||
|
- Gateway містить код для обробки голосових повідомлень через STT
|
||||||
|
- Але `stt-service` не визначений в `docker-compose.yml`
|
||||||
|
|
||||||
|
**Статус**: ⚠️ Опціонально
|
||||||
|
**Критичність**: Низька - можна працювати без голосових
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 План дій для запуску на сервері
|
||||||
|
|
||||||
|
### Крок 1: Підготовка сервера
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# SSH на сервер
|
||||||
|
ssh root@144.76.224.179
|
||||||
|
|
||||||
|
# Встановити Docker і Docker Compose (якщо не встановлені)
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y docker.io docker-compose git
|
||||||
|
|
||||||
|
# Клонувати репозиторій
|
||||||
|
git clone https://github.com/IvanTytar/microdao-daarion.git
|
||||||
|
cd microdao-daarion
|
||||||
|
```
|
||||||
|
|
||||||
|
### Крок 2: Налаштування DNS
|
||||||
|
|
||||||
|
1. Зайти в панель управління DNS (Cloudflare/Hetzner DNS)
|
||||||
|
2. Створити A запис:
|
||||||
|
- Name: `gateway.daarion.city`
|
||||||
|
- Type: `A`
|
||||||
|
- Value: `144.76.224.179`
|
||||||
|
- TTL: 300 секунд
|
||||||
|
|
||||||
|
### Крок 3: Вирішити проблему Memory Service
|
||||||
|
|
||||||
|
**Варіант А** - Додати простий memory service:
|
||||||
|
```bash
|
||||||
|
# Створити docker-compose.memory.yml або додати в існуючий
|
||||||
|
```
|
||||||
|
|
||||||
|
**Варіант Б** - Тимчасово відключити memory:
|
||||||
|
```python
|
||||||
|
# В http_api.py замінити виклики memory_client на заглушки
|
||||||
|
```
|
||||||
|
|
||||||
|
### Крок 4: Запустити стек
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Створити .env з токенами
|
||||||
|
nano .env
|
||||||
|
# (вставити HELION_TELEGRAM_BOT_TOKEN та інші змінні)
|
||||||
|
|
||||||
|
# Запустити сервіси
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Перевірити статус
|
||||||
|
docker-compose ps
|
||||||
|
docker-compose logs -f gateway
|
||||||
|
```
|
||||||
|
|
||||||
|
### Крок 5: Налаштувати HTTPS Gateway
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Запустити скрипт налаштування
|
||||||
|
sudo ./scripts/setup-nginx-gateway.sh gateway.daarion.city admin@daarion.city
|
||||||
|
|
||||||
|
# Перевірити
|
||||||
|
curl https://gateway.daarion.city/health
|
||||||
|
```
|
||||||
|
|
||||||
|
### Крок 6: Зареєструвати Telegram Webhook
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/register-agent-webhook.sh \
|
||||||
|
helion \
|
||||||
|
8112062582:AAGI7tPFo4gvZ6bfbkFu9miq5GdAH2_LvcM \
|
||||||
|
gateway.daarion.city
|
||||||
|
```
|
||||||
|
|
||||||
|
### Крок 7: Тестування
|
||||||
|
|
||||||
|
1. Відкрити бота в Telegram
|
||||||
|
2. Надіслати тестове повідомлення: "Привіт! Що таке EcoMiner?"
|
||||||
|
3. Перевірити логи: `docker-compose logs -f gateway`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 Що потрібно додатково уточнити
|
||||||
|
|
||||||
|
1. **Memory Service**:
|
||||||
|
- Чи є окремий репозиторій для memory-service?
|
||||||
|
- Чи потрібно використовувати існуючу БД?
|
||||||
|
- Або можна працювати без memory (stateless)?
|
||||||
|
|
||||||
|
2. **Сервер**:
|
||||||
|
- Чи вже встановлено Docker на сервері 144.76.224.179?
|
||||||
|
- Чи є доступ через SSH?
|
||||||
|
- Чи є права root/sudo?
|
||||||
|
|
||||||
|
3. **DNS**:
|
||||||
|
- Де керується DNS для `daarion.city`?
|
||||||
|
- Хто має доступ до налаштувань?
|
||||||
|
|
||||||
|
4. **Ollama**:
|
||||||
|
- Чи запущено Ollama на сервері чи локально?
|
||||||
|
- Яка модель використовується? (в .env: `qwen3:8b`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Загальний статус
|
||||||
|
|
||||||
|
| Компонент | Статус | Примітка |
|
||||||
|
|-----------|--------|----------|
|
||||||
|
| Helion код | ✅ | Готовий |
|
||||||
|
| System prompt | ✅ | Готовий |
|
||||||
|
| Docker config | ✅ | Готовий |
|
||||||
|
| Telegram token | ✅ | Є |
|
||||||
|
| Скрипти | ✅ | Готові |
|
||||||
|
| Документація | ✅ | Готова |
|
||||||
|
| Memory Service | ❌ | Відсутній |
|
||||||
|
| Сервіси запущені | ❌ | Потрібно запустити |
|
||||||
|
| DNS налаштовано | ❓ | Невідомо |
|
||||||
|
| HTTPS Gateway | ❌ | Не налаштовано |
|
||||||
|
| Webhook | ❌ | Не зареєстровано |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Висновок
|
||||||
|
|
||||||
|
**Робота проведена**: Агент Helion повністю розроблений на рівні коду. Всі необхідні компоненти готові:
|
||||||
|
- ✅ Код обробки запитів
|
||||||
|
- ✅ System prompt з усією логікою
|
||||||
|
- ✅ Docker конфігурація
|
||||||
|
- ✅ Автоматизовані скрипти
|
||||||
|
- ✅ Документація
|
||||||
|
|
||||||
|
**Що заблоковано**: Запуск на сервері заблокований через:
|
||||||
|
1. ❌ Відсутність Memory Service в docker-compose
|
||||||
|
2. ❌ Не запущені Docker сервіси
|
||||||
|
3. ❌ Не налаштований HTTPS gateway
|
||||||
|
4. ❌ Не зареєстрований Telegram webhook
|
||||||
|
|
||||||
|
**Наступні кроки**: Потрібно вирішити, як працювати з Memory Service (додати/відключити), а потім виконати plan дій з кроків 1-7.
|
||||||
@@ -152,9 +152,61 @@ services:
|
|||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
|
|
||||||
|
# PostgreSQL Database
|
||||||
|
postgres:
|
||||||
|
image: postgres:15-alpine
|
||||||
|
container_name: dagi-postgres
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=postgres
|
||||||
|
- POSTGRES_PASSWORD=postgres
|
||||||
|
- POSTGRES_DB=daarion_memory
|
||||||
|
volumes:
|
||||||
|
- postgres-data:/var/lib/postgresql/data
|
||||||
|
- ./services/memory-service/init.sql:/docker-entrypoint-initdb.d/init.sql
|
||||||
|
networks:
|
||||||
|
- dagi-network
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
# Memory Service
|
||||||
|
memory-service:
|
||||||
|
build:
|
||||||
|
context: ./services/memory-service
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: dagi-memory-service
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
environment:
|
||||||
|
- DATABASE_URL=${MEMORY_DATABASE_URL:-postgresql://postgres:postgres@postgres:5432/daarion_memory}
|
||||||
|
- LOG_LEVEL=${LOG_LEVEL:-INFO}
|
||||||
|
volumes:
|
||||||
|
- ./logs:/app/logs
|
||||||
|
- memory-data:/app/data
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
networks:
|
||||||
|
- dagi-network
|
||||||
|
restart: unless-stopped
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 10s
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
rag-model-cache:
|
rag-model-cache:
|
||||||
driver: local
|
driver: local
|
||||||
|
memory-data:
|
||||||
|
driver: local
|
||||||
|
postgres-data:
|
||||||
|
driver: local
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
dagi-network:
|
dagi-network:
|
||||||
|
|||||||
68
services/memory-service/init.sql
Normal file
68
services/memory-service/init.sql
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
-- Memory Service Database Schema
|
||||||
|
-- Created: 2025-01-16
|
||||||
|
|
||||||
|
-- User facts table
|
||||||
|
CREATE TABLE IF NOT EXISTS user_facts (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
user_id VARCHAR(255) NOT NULL,
|
||||||
|
team_id VARCHAR(255),
|
||||||
|
fact_key VARCHAR(255) NOT NULL,
|
||||||
|
fact_value TEXT,
|
||||||
|
fact_value_json JSONB,
|
||||||
|
token_gated BOOLEAN DEFAULT FALSE,
|
||||||
|
token_requirements JSONB,
|
||||||
|
metadata JSONB DEFAULT '{}',
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
UNIQUE(user_id, team_id, fact_key)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Dialog summaries table
|
||||||
|
CREATE TABLE IF NOT EXISTS dialog_summaries (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
team_id VARCHAR(255) NOT NULL,
|
||||||
|
channel_id VARCHAR(255),
|
||||||
|
agent_id VARCHAR(255),
|
||||||
|
user_id VARCHAR(255),
|
||||||
|
period_start TIMESTAMP NOT NULL,
|
||||||
|
period_end TIMESTAMP NOT NULL,
|
||||||
|
summary_text TEXT,
|
||||||
|
summary_json JSONB,
|
||||||
|
message_count INTEGER DEFAULT 0,
|
||||||
|
participant_count INTEGER DEFAULT 0,
|
||||||
|
topics TEXT[],
|
||||||
|
meta JSONB DEFAULT '{}',
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Agent memory events table
|
||||||
|
CREATE TABLE IF NOT EXISTS agent_memory_events (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
agent_id VARCHAR(255) NOT NULL,
|
||||||
|
team_id VARCHAR(255) NOT NULL,
|
||||||
|
channel_id VARCHAR(255),
|
||||||
|
user_id VARCHAR(255),
|
||||||
|
scope VARCHAR(50) DEFAULT 'short_term',
|
||||||
|
kind VARCHAR(50) NOT NULL,
|
||||||
|
body_text TEXT,
|
||||||
|
body_json JSONB,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Indexes for performance
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_user_facts_user_team ON user_facts(user_id, team_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_dialog_summaries_team_channel ON dialog_summaries(team_id, channel_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_agent_memory_events_agent_team ON agent_memory_events(agent_id, team_id);
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_agent_memory_events_created ON agent_memory_events(created_at DESC);
|
||||||
|
|
||||||
|
-- Update trigger for user_facts
|
||||||
|
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
||||||
|
RETURNS TRIGGER AS $$
|
||||||
|
BEGIN
|
||||||
|
NEW.updated_at = CURRENT_TIMESTAMP;
|
||||||
|
RETURN NEW;
|
||||||
|
END;
|
||||||
|
$$ language 'plpgsql';
|
||||||
|
|
||||||
|
CREATE TRIGGER update_user_facts_updated_at BEFORE UPDATE ON user_facts
|
||||||
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||||||
Reference in New Issue
Block a user