Files
microdao-daarion/docs/AGENTS_SYNC_AND_DASHBOARD_REPORT.md
2026-02-16 03:44:58 -08:00

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
**Статус:** ⚠️ Потребує синхронізації та інтеграції