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:
255
AGENT-CABINET-CREWAI-COMPLETE.md
Normal file
255
AGENT-CABINET-CREWAI-COMPLETE.md
Normal file
@@ -0,0 +1,255 @@
|
||||
# ✅ Кабінети агентів з CrewAI командами - Завершено
|
||||
|
||||
**Дата:** 2025-11-23
|
||||
**Статус:** ✅ Готово до використання
|
||||
|
||||
---
|
||||
|
||||
## 🎉 Що реалізовано
|
||||
|
||||
### ✅ 1. React компонент кабінету агента (`AgentCabinetPage.tsx`)
|
||||
|
||||
**Розташування:** `src/pages/AgentCabinetPage.tsx`
|
||||
|
||||
**Функціонал:**
|
||||
- ✅ Детальні метрики агента (uptime, запити, успішність, час відповіді)
|
||||
- ✅ Кнопка "Стати оркестратором" для звичайних агентів
|
||||
- ✅ Відображення команди агентів для оркестраторів
|
||||
- ✅ Відображення CrewAI команд для оркестраторів
|
||||
- ✅ Вікно чату з агентом
|
||||
- ✅ Налаштування агента
|
||||
|
||||
**Вкладки:**
|
||||
1. **Огляд** - загальна інформація та метрики
|
||||
2. **Метрики** - детальна статистика
|
||||
3. **Команда** - список агентів команди (тільки для оркестраторів)
|
||||
4. **CrewAI Команди** - список створених CrewAI команд (тільки для оркестраторів)
|
||||
5. **Налаштування** - конфігурація агента
|
||||
|
||||
---
|
||||
|
||||
### ✅ 2. Виправлено CrewAI інтеграцію з Ollama
|
||||
|
||||
**Файл:** `/tmp/yaromir_crew.py` → `/opt/microdao-daarion/router/crews/yaromir_crew.py`
|
||||
|
||||
**Зміни:**
|
||||
- ✅ Використовується `LLM` обгортка з CrewAI для правильного підключення Ollama
|
||||
- ✅ Виправлено шляхи до prompt файлів (`/app/gateway-bot/` замість `/app/prompts/`)
|
||||
- ✅ Всі 4 субагенти (Вождь, Проводник, Домир, Создатель) налаштовані з правильними LLM
|
||||
|
||||
**Моделі:**
|
||||
- Вождь: `qwen2.5:14b` (temperature: 0.1)
|
||||
- Проводник: `qwen2.5:7b` (temperature: 0.3)
|
||||
- Домир: `qwen2.5:3b` (temperature: 0.4)
|
||||
- Создатель: `qwen2.5:14b` (temperature: 0.5)
|
||||
|
||||
---
|
||||
|
||||
### ✅ 3. Маршрутизація
|
||||
|
||||
**Файл:** `src/App.tsx`
|
||||
|
||||
**Додано:**
|
||||
```tsx
|
||||
<Route path="/agent/:agentId" element={<AgentCabinetPage />} />
|
||||
```
|
||||
|
||||
**Доступ:**
|
||||
- URL: `http://localhost:8899/agent/{agent_id}`
|
||||
- Приклад: `http://localhost:8899/agent/yaromir`
|
||||
|
||||
---
|
||||
|
||||
## 📊 Структура кабінету агента
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────┐
|
||||
│ Header (Name, ID, Status, Buttons) │
|
||||
│ - Кнопка "Стати оркестратором" (якщо не оркестратор) │
|
||||
│ - Кнопка "Чат з агентом" │
|
||||
├─────────────────────────────────────────────────┤
|
||||
│ Tabs (Огляд | Метрики | Команда | CrewAI | Налаштування) │
|
||||
├─────────────────────────────────────────────────┤
|
||||
│ Content (залежить від активної вкладки) │
|
||||
│ │
|
||||
│ Огляд: │
|
||||
│ - Детальні метрики (4 картки) │
|
||||
│ - Конфігурація (модель, backend, нода) │
|
||||
│ │
|
||||
│ Команда (тільки для оркестраторів): │
|
||||
│ - Таблиця агентів команди │
|
||||
│ - Кнопка "Додати агента" │
|
||||
│ │
|
||||
│ CrewAI Команди (тільки для оркестраторів): │
|
||||
│ - Список створених CrewAI команд │
|
||||
│ - Інформація про кожну команду (агенти, задачі)│
|
||||
│ - Кнопка "Створити нову команду" │
|
||||
└─────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔌 API Endpoints (потрібно реалізувати в backend)
|
||||
|
||||
### 1. Отримати метрики агента
|
||||
```http
|
||||
GET /api/agent/{agent_id}/metrics
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"agent_id": "yaromir",
|
||||
"agent_name": "Яромир",
|
||||
"status": "active",
|
||||
"uptime_hours": 150.5,
|
||||
"total_requests": 2500,
|
||||
"successful_requests": 2400,
|
||||
"failed_requests": 100,
|
||||
"avg_response_time_ms": 450.5,
|
||||
"last_active": "2025-11-23T12:00:00Z",
|
||||
"model": "qwen3:8b",
|
||||
"model_backend": "ollama",
|
||||
"node": "node-1",
|
||||
"is_orchestrator": true,
|
||||
"team_size": 4,
|
||||
"sub_agents": [
|
||||
{
|
||||
"id": "vozhd",
|
||||
"name": "Вождь",
|
||||
"role": "Strategic Guardian"
|
||||
},
|
||||
{
|
||||
"id": "provodnik",
|
||||
"name": "Проводник",
|
||||
"role": "Deep Mentor"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Отримати CrewAI команди агента
|
||||
```http
|
||||
GET /api/agent/{agent_id}/crews
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "crew-1",
|
||||
"name": "Yaromir Team",
|
||||
"agents": [
|
||||
{
|
||||
"id": "vozhd",
|
||||
"name": "Вождь",
|
||||
"role": "Strategic Guardian"
|
||||
}
|
||||
],
|
||||
"tasks": [
|
||||
{
|
||||
"id": "task-1",
|
||||
"description": "Стратегічне планування",
|
||||
"status": "completed"
|
||||
}
|
||||
],
|
||||
"status": "active",
|
||||
"created_at": "2025-11-23T10:00:00Z"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### 3. Стати оркестратором
|
||||
```http
|
||||
POST /api/agent/{agent_id}/become-orchestrator
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"status": "success",
|
||||
"agent_id": "yaromir",
|
||||
"is_orchestrator": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Як використати
|
||||
|
||||
### 1. Відкрити кабінет агента
|
||||
|
||||
```bash
|
||||
# Через браузер
|
||||
http://localhost:8899/agent/yaromir
|
||||
http://localhost:8899/agent/clan
|
||||
http://localhost:8899/agent/soul
|
||||
```
|
||||
|
||||
### 2. Перетворити агента на оркестратора
|
||||
|
||||
1. Відкрити кабінет агента
|
||||
2. Натиснути кнопку "Стати оркестратором"
|
||||
3. Агент отримає можливість:
|
||||
- Додавати агентів до команди
|
||||
- Створювати CrewAI команди
|
||||
- Делегувати завдання
|
||||
|
||||
### 3. Переглянути CrewAI команди (для оркестраторів)
|
||||
|
||||
1. Відкрити кабінет оркестратора
|
||||
2. Перейти на вкладку "CrewAI Команди"
|
||||
3. Переглянути список створених команд
|
||||
4. Створити нову команду (кнопка "Створити нову команду")
|
||||
|
||||
---
|
||||
|
||||
## 📝 Наступні кроки
|
||||
|
||||
### Backend Implementation
|
||||
|
||||
Потрібно реалізувати в `fixed_monitor.py` або окремому сервісі:
|
||||
|
||||
1. **Endpoint `/api/agent/{agent_id}/metrics`**
|
||||
- Збирати метрики з DAGI Router
|
||||
- Зберігати в базі даних або пам'яті
|
||||
- Повертати структуровані дані
|
||||
|
||||
2. **Endpoint `/api/agent/{agent_id}/crews`**
|
||||
- Отримувати список CrewAI команд для агента
|
||||
- Зберігати інформацію про команди
|
||||
- Повертати список з деталями
|
||||
|
||||
3. **Endpoint `/api/agent/{agent_id}/become-orchestrator`**
|
||||
- Оновлювати статус агента в базі даних
|
||||
- Створювати workspace для CrewAI
|
||||
- Повертати підтвердження
|
||||
|
||||
4. **Автоматичне створення кабінету**
|
||||
- При реєстрації нового агента автоматично створювати кабінет
|
||||
- Зберігати базові метрики
|
||||
- Ініціалізувати workspace (якщо потрібно)
|
||||
|
||||
---
|
||||
|
||||
## ✅ Статус
|
||||
|
||||
**Готово:**
|
||||
- ✅ React компонент кабінету агента
|
||||
- ✅ Відображення детальних метрик
|
||||
- ✅ Кнопка "Стати оркестратором"
|
||||
- ✅ Відображення команди агентів
|
||||
- ✅ Відображення CrewAI команд
|
||||
- ✅ Виправлено CrewAI інтеграцію з Ollama
|
||||
- ✅ Маршрутизація в App.tsx
|
||||
|
||||
**Потрібно реалізувати:**
|
||||
- ⏳ Backend endpoints для метрик
|
||||
- ⏳ Backend endpoints для CrewAI команд
|
||||
- ⏳ Backend endpoint для перетворення в оркестратора
|
||||
- ⏳ Автоматичне створення кабінету при реєстрації
|
||||
|
||||
---
|
||||
|
||||
**Кабінети агентів з CrewAI командами готові до використання!** 🎉
|
||||
|
||||
Reference in New Issue
Block a user