241 lines
9.5 KiB
Markdown
241 lines
9.5 KiB
Markdown
# Звіт про синхронізацію агентів та дашборд моніторингу
|
|
|
|
**Дата:** 2025-11-21
|
|
**Дашборд:** [http://localhost:8889](http://localhost:8889) (`monitoring/local_monitor.py`)
|
|
|
|
## 🔍 Знайдені інструменти пошуку
|
|
|
|
### ✅ Інструменти пошуку ВЖЕ встановлені
|
|
|
|
#### 1. Web Search Tool (GREENFOOD)
|
|
- **Файл:** `services/greenfood/crew/tools/crawl4ai_tool.py`
|
|
- **Інструменти:**
|
|
- `web_search_tool` - Пошук в інтернеті через Crawl4AI
|
|
- `crawl_url_tool` - Обробка конкретного URL та витягування контенту
|
|
- **Використання:** Parser Service (Crawl4AI) на порту 9400
|
|
- **Статус:** ✅ Налаштовано для GREENFOOD агентів
|
|
|
|
#### 2. Parser Service (Crawl4AI)
|
|
- **Порт:** 9400
|
|
- **Endpoint:** `/crawl`
|
|
- **Можливості:**
|
|
- Пошук через Google
|
|
- Crawl конкретних URL
|
|
- Витягування markdown контенту
|
|
- Підтримка Playwright для JavaScript сайтів
|
|
|
|
---
|
|
|
|
## 🤖 Агенти в системі
|
|
|
|
### Агенти в router-config.yml (8 агентів)
|
|
|
|
1. **devtools** - DevTools Agent (з інструментами: fs_read, fs_write, run_tests, git_diff, git_commit)
|
|
2. **microdao_orchestrator** - Multi-agent orchestrator
|
|
3. **greenfood** - GREENFOOD Assistant (ERP для крафтових виробників)
|
|
4. **helion** - Helion (Energy Union platform)
|
|
5. **cto** - CTO Agent (оркеструє команду розробки)
|
|
6. **parser** - Document parsing agent
|
|
7. **monitor** - Monitor Agent (Architect-inspector)
|
|
8. **crewai** - CrewAI orchestrator
|
|
|
|
### Агенти в config/agents.yaml (1 агент)
|
|
|
|
1. **tokenomics-advisor** - TokenomicsAdvisor (спеціалізований агент)
|
|
|
|
### Агенти в AGENT_REGISTRY на сервері (2 агенти) ⚠️
|
|
|
|
1. **daarwizz** - DAARWIZZ Bot
|
|
2. **helion** - Helion Bot
|
|
|
|
### Проблема синхронізації
|
|
|
|
**❌ Розбіжність між конфігураціями:**
|
|
|
|
| Джерело | Кількість агентів | Агенти |
|
|
|---------|------------------|--------|
|
|
| `router-config.yml` | 8 | devtools, microdao_orchestrator, greenfood, helion, cto, parser, monitor, crewai |
|
|
| `config/agents.yaml` | 1 | tokenomics-advisor |
|
|
| `AGENT_REGISTRY` (gateway-bot) | 2 | daarwizz, helion |
|
|
| **ВСЬОГО унікальних** | **11** | devtools, microdao_orchestrator, greenfood, helion, cto, parser, monitor, crewai, tokenomics-advisor, daarwizz |
|
|
|
|
**Проблема:** AGENT_REGISTRY містить тільки агенти з Telegram ботами, але не всі агенти з router-config.yml.
|
|
|
|
---
|
|
|
|
## 📊 Дашборд моніторингу (порт 8889)
|
|
|
|
### Поточний стан
|
|
|
|
**Файл:** `monitoring/local_monitor.py` (5978 рядків)
|
|
|
|
**Що вже відображено:**
|
|
- ✅ Ноди (Node Registry)
|
|
- ✅ Агенти (з router-config.yml та gateway-bot)
|
|
- ✅ Провайдери (LLM, Orchestrator)
|
|
- ✅ Сервіси та їх статус
|
|
- ✅ Swapper Service метрики
|
|
- ✅ Метрики нод (CPU, RAM, GPU)
|
|
- ✅ Telegram боти інформація
|
|
- ✅ DAO інформація
|
|
|
|
**API Endpoints:**
|
|
- `/api/nodes` - Список нод
|
|
- `/api/agents` - Список агентів
|
|
- `/api/providers` - Список провайдерів
|
|
- `/api/services` - Статус сервісів
|
|
- `/api/swapper/status` - Статус Swapper Service
|
|
- `/api/dagi/nodes/{node_id}/metrics` - Метрики ноди
|
|
- `/api/dagi/nodes/{node_id}/events` - Події ноди
|
|
- `/api/dagi/stack/nodes/overview` - Огляд стеку нод
|
|
- `/api/dagi/stack/agents/overview` - Огляд стеку агентів
|
|
|
|
**Що відсутнє:**
|
|
- ❌ Інтеграція з Prometheus (метрики в реальному часі)
|
|
- ❌ Інтеграція з Grafana (дашборди)
|
|
- ❌ Відображення інструментів пошуку
|
|
- ❌ Відображення мультимодальних можливостей
|
|
|
|
---
|
|
|
|
## 🔧 Рекомендації
|
|
|
|
### 1. Додати інтеграцію з Prometheus
|
|
|
|
Додати до `monitoring/local_monitor.py`:
|
|
|
|
```python
|
|
PROMETHEUS_URL = os.getenv("PROMETHEUS_URL", "http://localhost:9090")
|
|
|
|
async def fetch_prometheus_metrics(query: str) -> Dict:
|
|
"""Отримати метрики з Prometheus"""
|
|
try:
|
|
async with httpx.AsyncClient(timeout=10.0) as client:
|
|
response = await client.get(
|
|
f"{PROMETHEUS_URL}/api/v1/query",
|
|
params={"query": query}
|
|
)
|
|
if response.status_code == 200:
|
|
return response.json()
|
|
except Exception as e:
|
|
logger.error(f"Prometheus query error: {e}")
|
|
return {}
|
|
|
|
@app.get("/api/prometheus/metrics")
|
|
async def get_prometheus_metrics():
|
|
"""Отримати метрики з Prometheus"""
|
|
metrics = {
|
|
"router_requests": await fetch_prometheus_metrics("dagi_router_requests_total"),
|
|
"gateway_requests": await fetch_prometheus_metrics("dagi_gateway_requests_total"),
|
|
"agent_requests": await fetch_prometheus_metrics("dagi_agent_requests_total"),
|
|
"service_health": await fetch_prometheus_metrics("up"),
|
|
}
|
|
return metrics
|
|
```
|
|
|
|
### 2. Додати інтеграцію з Grafana
|
|
|
|
Додати посилання на Grafana дашборди та embedded iframes:
|
|
|
|
```python
|
|
GRAFANA_URL = os.getenv("GRAFANA_URL", "http://localhost:3000")
|
|
|
|
@app.get("/api/grafana/dashboards")
|
|
async def get_grafana_dashboards():
|
|
"""Отримати список Grafana дашбордів"""
|
|
# Можна використати Grafana API для отримання дашбордів
|
|
return {
|
|
"url": f"{GRAFANA_URL}",
|
|
"dashboards": [
|
|
{"id": "router", "name": "Router Metrics", "url": f"{GRAFANA_URL}/d/router"},
|
|
{"id": "gateway", "name": "Gateway Metrics", "url": f"{GRAFANA_URL}/d/gateway"},
|
|
]
|
|
}
|
|
```
|
|
|
|
### 3. Синхронізувати всіх агентів
|
|
|
|
**Проблема:** AGENT_REGISTRY містить тільки агенти з Telegram ботами.
|
|
|
|
**Рішення:** Додати всіх агентів з router-config.yml до AGENT_REGISTRY (навіть якщо вони не мають Telegram ботів):
|
|
|
|
```python
|
|
# Додати до gateway-bot/http_api.py
|
|
# Завантажити всіх агентів з router-config.yml
|
|
if ROUTER_CONFIG_PATH.exists():
|
|
with open(ROUTER_CONFIG_PATH, "r") as f:
|
|
router_config = yaml.safe_load(f)
|
|
for agent_id, agent_config in router_config.get("agents", {}).items():
|
|
if agent_id not in AGENT_REGISTRY:
|
|
# Створити конфігурацію для агентів без Telegram
|
|
config = AgentConfig(
|
|
agent_id=agent_id,
|
|
name=agent_config.get("description", agent_id),
|
|
prompt_path="", # Немає окремого файлу
|
|
telegram_token_env="", # Немає Telegram бота
|
|
default_prompt=agent_config.get("system_prompt", ""),
|
|
system_prompt=agent_config.get("system_prompt", "")
|
|
)
|
|
AGENT_REGISTRY[agent_id] = config
|
|
```
|
|
|
|
### 4. Відобразити інструменти пошуку на дашборді
|
|
|
|
Додати секцію про інструменти:
|
|
|
|
```python
|
|
@app.get("/api/tools")
|
|
async def get_tools():
|
|
"""Отримати список інструментів"""
|
|
tools = []
|
|
|
|
# Інструменти пошуку
|
|
tools.append({
|
|
"id": "web_search_tool",
|
|
"name": "Web Search via Crawl4AI",
|
|
"agent": "greenfood",
|
|
"type": "search",
|
|
"description": "Пошук в інтернеті через Crawl4AI"
|
|
})
|
|
|
|
# Інструменти DevTools
|
|
for tool_id in ["fs_read", "fs_write", "run_tests", "git_diff", "git_commit"]:
|
|
tools.append({
|
|
"id": tool_id,
|
|
"name": tool_id,
|
|
"agent": "devtools",
|
|
"type": "builtin",
|
|
"description": f"DevTools tool: {tool_id}"
|
|
})
|
|
|
|
return {"tools": tools}
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 Підсумок
|
|
|
|
### ✅ Що працює
|
|
- Дашборд на порту 8889 працює
|
|
- Інструменти пошуку встановлені (web_search_tool для greenfood)
|
|
- Мультимодальність працює (фото, голос, документи)
|
|
- Дашборд відображає ноди, агенти, сервіси
|
|
|
|
### ⚠️ Що потрібно виправити
|
|
- Синхронізувати всіх агентів між router-config.yml та AGENT_REGISTRY
|
|
- Додати інтеграцію з Prometheus до дашборду
|
|
- Додати інтеграцію з Grafana до дашборду
|
|
- Відобразити інструменти пошуку на дашборді
|
|
- Додати інструменти пошуку для інших агентів (не тільки greenfood)
|
|
|
|
### 🔧 Наступні кроки
|
|
1. Додати Prometheus/Grafana інтеграцію до дашборду
|
|
2. Синхронізувати всіх агентів
|
|
3. Додати інструменти пошуку для daarwizz та helion
|
|
4. Оновити документацію
|
|
|
|
---
|
|
|
|
**Останнє оновлення:** 2025-11-21
|
|
**Статус:** ⚠️ Потребує синхронізації та інтеграції
|