Files
microdao-daarion/AGENT-CABINET-CREWAI-COMPLETE.md
Apple 3de3c8cb36 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
2025-11-27 00:19:40 -08:00

9.0 KiB
Raw Permalink Blame History

Кабінети агентів з 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

Додано:

<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. Отримати метрики агента

GET /api/agent/{agent_id}/metrics

Response:

{
  "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 команди агента

GET /api/agent/{agent_id}/crews

Response:

[
  {
    "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. Стати оркестратором

POST /api/agent/{agent_id}/become-orchestrator

Response:

{
  "status": "success",
  "agent_id": "yaromir",
  "is_orchestrator": true
}

🚀 Як використати

1. Відкрити кабінет агента

# Через браузер
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 командами готові до використання! 🎉