feat: Add presence heartbeat for Matrix online status

- matrix-gateway: POST /internal/matrix/presence/online endpoint
- usePresenceHeartbeat hook with activity tracking
- Auto away after 5 min inactivity
- Offline on page close/visibility change
- Integrated in MatrixChatRoom component
This commit is contained in:
Apple
2025-11-27 00:19:40 -08:00
parent 5bed515852
commit 3de3c8cb36
6371 changed files with 1317450 additions and 932 deletions

View File

@@ -0,0 +1,186 @@
# ⚙️ Конфігурація моделі за замовчанням для Swapper Service
**Дата:** 2025-11-23
**Статус:** ✅ Реалізовано
---
## 📋 Поточна поведінка
### За замовчуванням (без `default_model`):
-Всі моделі мають статус `UNLOADED` при старті
- ✅ Моделі завантажуються тільки за запитом
- ✅ Економія ресурсів (VRAM, RAM)
- ⚠️ Перший запит може бути повільнішим (час на завантаження)
### З `default_model` в конфігурації:
- ✅ Вказана модель автоматично завантажується при старті
- ✅ Швидша відповідь на перший запит
- ⚠️ Використання VRAM навіть коли модель не використовується
---
## 🔧 Конфігурація
### Файл: `services/swapper-service/config/swapper_config.yaml`
```yaml
swapper:
mode: single-active
max_concurrent_models: 1
model_swap_timeout: 300
gpu_enabled: true
metal_acceleration: false
# Модель для автоматичного завантаження при старті (опціонально)
default_model: qwen3-8b # Модель активується автоматично при старті
```
### Варіанти налаштування:
#### 1. Без моделі за замовчанням (економія ресурсів)
```yaml
swapper:
# default_model не вказано - моделі завантажуються тільки за запитом
mode: single-active
```
#### 2. Основна модель за замовчанням (швидкість)
```yaml
swapper:
default_model: qwen3-8b # Основна модель (4.87 GB)
```
#### 3. Легка модель за замовчанням (баланс)
```yaml
swapper:
default_model: qwen2.5-3b-instruct # Легка модель (1.80 GB)
```
---
## 🎯 Рекомендації
### Для НОДА1 (Production):
**Рекомендовано:** `default_model: qwen3-8b`
**Причини:**
- Основна модель для більшості запитів
- Швидша відповідь на перший запит
- 4.87 GB VRAM - прийнятно для RTX 4000 SFF Ada (20GB)
### Для НОДА2 (Development):
**Рекомендовано:** Без `default_model` або `qwen2.5-3b-instruct`
**Причини:**
- Економія ресурсів на розробницькій машині
- Легка модель для швидкого тестування
---
## 📊 Порівняння
| Параметр | Без default_model | З default_model |
|----------|-------------------|-----------------|
| **VRAM при старті** | 0 GB | 4.87 GB (qwen3-8b) |
| **Час першого запиту** | ~10-30 сек (завантаження) | ~1-2 сек (вже завантажена) |
| **Економія ресурсів** | ✅ Максимальна | ⚠️ Використання навіть без запитів |
| **Швидкість відповіді** | ⚠️ Повільніше на першому запиті | ✅ Швидше |
---
## 🔄 Як працює
### При старті Swapper Service:
1. **Завантаження конфігурації:**
```python
config = yaml.safe_load(f)
swapper_config = config.get('swapper', {})
default_model = swapper_config.get('default_model')
```
2. **Якщо `default_model` вказано:**
```python
if default_model and default_model in self.models:
logger.info(f"🔄 Loading default model: {default_model}")
success = await self.load_model(default_model)
```
3. **Результат:**
- Модель завантажується в VRAM
- `active_model` = `default_model`
- Статус моделі = `LOADED`
- Готова до використання
---
## 🛠️ Зміна конфігурації
### Вимкнути модель за замовчанням:
```yaml
swapper:
mode: single-active
# default_model: qwen3-8b # Закоментовано - моделі завантажуються тільки за запитом
```
### Змінити модель за замовчанням:
```yaml
swapper:
default_model: qwen2.5-3b-instruct # Легка модель замість основної
```
### Після зміни конфігурації:
```bash
# На сервері
ssh root@144.76.224.179
cd /opt/microdao-daarion
docker-compose restart swapper-service
```
---
## 📝 Логи
### При старті з default_model:
```
🔧 Initializing Swapper Service...
✅ Loaded 5 models into Swapper
✅ Swapper Service initialized with 5 models
🔄 Loading default model: qwen3-8b
✅ Default model loaded: qwen3-8b
```
### При старті без default_model:
```
🔧 Initializing Swapper Service...
✅ Loaded 5 models into Swapper
✅ Swapper Service initialized with 5 models
# Модель не завантажується автоматично
```
---
## ✅ Висновок
**Поточна реалізація:**
- ✅ Моделі завантажуються тільки за запитом (за замовчуванням)
- ✅ Можна вказати `default_model` для автоматичного завантаження
- ✅ Гнучка конфігурація під різні сценарії
**Рекомендація для НОДА1:**
- Додати `default_model: qwen3-8b` для швидшої відповіді
- Або залишити без `default_model` для економії ресурсів
---
**Оновлено:** 2025-11-23
**Статус:** ✅ Готово до використання