Files
microdao-daarion/NODE2-ARCHITECTURE-ANALYSIS.md
Apple 5290287058 feat: implement TTS, Document processing, and Memory Service /facts API
- TTS: xtts-v2 integration with voice cloning support
- Document: docling integration for PDF/DOCX/PPTX processing
- Memory Service: added /facts/upsert, /facts/{key}, /facts endpoints
- Added required dependencies (TTS, docling)
2026-01-17 08:16:37 -08:00

9.6 KiB
Raw Blame History

🏗️ Аналіз архітектури НОДА2 (MacBook Pro M4 Max)

Дата: 2026-01-12
Статус: Повний аналіз архітектури


📊 Поточний стан сервісів

Основні сервіси (Healthy)

Сервіс Контейнер Статус Порт Uptime Призначення
Router dagi-router Healthy 9102 37+ годин Маршрутизація запитів
Swapper swapper-service Healthy 8890 19+ годин Динамічне завантаження моделей
DevTools dagi-devtools Healthy 8008 37+ годин Інструменти розробки
Gateway dagi-gateway Healthy 9300 37+ годин Telegram/Discord боти
RBAC dagi-rbac Healthy 9200 37+ годин Контроль доступу
CrewAI dagi-crewai Healthy 9010 37+ годин Оркестрація агентів
PostgreSQL dagi-postgres Healthy 5432 37+ годин База даних
Prometheus dagi-prometheus Healthy 9091 37+ годин Метрики
Jupyter jupyter-lab Healthy 8888 37+ годин Нотатки

Сервіси з проблемами (Unhealthy)

Сервіс Контейнер Статус Порт Проблема
NATS dagi-nats ⚠️ Unhealthy 4222 Health check не проходить
Memory memory-service ⚠️ Unhealthy 8001 Health check не проходить
RAG dagi-rag-service 🔄 Restarting 9500 Постійні перезапуски
Image Gen dagi-image-gen ⚠️ Unhealthy 9600 Health check не проходить
TTS dagi-tts-service ⚠️ Unhealthy 9800 Health check не проходить
STT dagi-stt-service ⚠️ Unhealthy 9401 Health check не проходить
OCR ocr-service ⚠️ Unhealthy 8896 Health check не проходить
Web Search dagi-web-search-service ⚠️ Unhealthy 8897 Health check не проходить
Qdrant qdrant-vector-db ⚠️ Unhealthy 6333-6335 Health check не проходить

🔄 Архітектура Router

Конфігурація Router

  • Файл: services/router/router_config.yaml
  • Мінімальна конфігурація: Тільки messaging inbound
  • Провайдери: 17 провайдерів зареєстровано

Провайдери Router (17 штук)

  1. llm_local_qwen3_8b - LLMProvider
  2. llm_cloud_deepseek - LLMProvider
  3. llm_qwen3_vl - LLMProvider
  4. llm_specialist_vision_8b - LLMProvider
  5. llm_specialist_math_7b - LLMProvider
  6. llm_specialist_reasoning_3b - LLMProvider
  7. llm_specialist_rag_4b - LLMProvider
  8. ... (ще 10 провайдерів)

Змінні середовища Router

  • DAGI_ROUTER_CONFIG=/app/router-config.yml
  • RBAC_BASE_URL=http://rbac:9200
  • DEVTOOLS_BASE_URL=http://devtools:8008
  • CREWAI_BASE_URL=http://crewai:9010
  • RAG_SERVICE_URL=http://rag-service:9500
  • MEMORY_SERVICE_URL=http://memory-service:8000

Залежності Router

  • Залежить від: devtools, crewai, rbac
  • Підключений до: NATS (для messaging)

🔄 Архітектура Swapper Service

Конфігурація Swapper

  • Файл: services/swapper-service/config/swapper_config_node2.yaml
  • Режим: single-active (одна модель за раз)
  • GPU: Увімкнено (Apple Silicon Metal acceleration)
  • Default модель: gpt-oss-latest (автоматично завантажується)

Моделі в Swapper (8 моделей)

Модель Тип Розмір Пріоритет Статус
gpt-oss-latest LLM 13.0 GB High Loaded (19.36 год uptime)
phi3-latest LLM 2.2 GB High Unloaded
starcoder2-3b Code 1.7 GB Medium Unloaded
mistral-nemo-12b LLM 7.1 GB High Unloaded
gemma2-27b LLM 15.0 GB Medium Unloaded
deepseek-coder-33b Code 18.0 GB High Unloaded
qwen2.5-coder-32b Code 19.0 GB High Unloaded
deepseek-r1-70b LLM 42.0 GB High Unloaded

Змінні середовища Swapper

  • OLLAMA_BASE_URL=http://host.docker.internal:11434
  • SWAPPER_CONFIG_PATH=/app/config/swapper_config.yaml
  • SWAPPER_MODE=single-active
  • MAX_CONCURRENT_MODELS=1
  • MODEL_SWAP_TIMEOUT=30

Доступ до Ollama

  • Через: host.docker.internal:11434 (MacBook Docker Desktop)
  • Механізм: extra_hosts: host.docker.internal:host-gateway
  • Ollama: Працює на хості (не в контейнері)

🔗 Інтеграція Router ↔ Swapper

Поточна ситуація

  • Router має 17 провайдерів
  • Swapper працює незалежно
  • ⚠️ Потрібна перевірка: Чи Router використовує Swapper як провайдер?

Можливі інтеграції

  1. Пряма інтеграція: Router викликає Swapper API для завантаження моделей
  2. Через провайдери: Router має провайдер, який використовує Swapper
  3. Через NATS: Повідомлення між Router та Swapper через NATS

📦 Моделі в Ollama (на хості)

Доступні моделі

  • llava:13b - Vision model (8GB)
  • gpt-oss:latest - Активна в Swapper (13GB)
  • Інші моделі (потрібна детальна перевірка)

🔍 Детальний аналіз

1. Swapper Service Metrics

Активна модель:

  • Назва: gpt-oss-latest
  • Uptime: 19.36 годин
  • Request count: 0 (не використовується активно)
  • Loaded at: 2026-01-11T14:40:18

Загальна статистика:

  • Total models: 8
  • Loaded models: 1 (gpt-oss-latest)
  • Available models: 8
  • Mode: single-active

2. Router Configuration

Messaging:

  • Inbound enabled:
  • Source subject: agent.filter.decision
  • Target subject: router.invoke.agent

Провайдери:

  • 17 провайдерів зареєстровано
  • Типи: LLMProvider, VisionProvider, тощо

3. Docker Network

Network: dagi-network

  • Всі сервіси підключені до однієї мережі
  • Можуть спілкуватися через внутрішні імена контейнерів

🔧 Як працює НОДА2

Потік запиту (припущення)

  1. Вхідний запит → Router (порт 9102)
  2. Router аналізує запит та визначає провайдера
  3. Якщо потрібен LLM:
    • Router викликає Swapper API
    • Swapper перевіряє чи модель завантажена
    • Якщо ні - завантажує з Ollama
    • Swapper викликає Ollama для генерації
    • Результат повертається через Swapper → Router → Клієнт

Комунікація між сервісами

Client → Router (9102) → Swapper (8890) → Ollama (host:11434)
                ↓
            NATS (4222) → Інші сервіси

⚠️ Відомі проблеми

1. NATS Unhealthy

  • Проблема: Health check не проходить
  • Вплив: Можливі проблеми з messaging
  • Рішення: Перевірити конфігурацію health check

2. RAG Service Restarting

  • Проблема: Постійні перезапуски
  • Вплив: RAG функціональність недоступна
  • Рішення: Перевірити логи та залежності

3. Багато Unhealthy сервісів

  • Проблема: 9 сервісів unhealthy
  • Вплив: Часткова функціональність
  • Рішення: Систематична перевірка кожного сервісу

📝 Рекомендації

Пріоритет 1: Виправити критичні сервіси

  1. NATS - критичний для messaging
  2. RAG Service - важливий для пошуку
  3. Memory Service - важливий для агентів

Пріоритет 2: Оптимізація

  1. Перевірити чи Router використовує Swapper
  2. Налаштувати автоматичне завантаження моделей за потреби
  3. Оптимізувати використання пам'яті

Пріоритет 3: Моніторинг

  1. Налаштувати алерти для unhealthy сервісів
  2. Додати метрики використання моделей
  3. Логування інтеграцій

🔍 Наступні кроки для детального аналізу

  1. Перевірити чи Router викликає Swapper
  2. Протестувати маршрутизацію запитів
  3. Перевірити логи інтеграції
  4. Налаштувати моніторинг

Оновлено: 2026-01-12
Статус: Аналіз завершено