- Add migration 013_city_map_coordinates.sql with map coordinates, zones, and agents table - Add /city/map API endpoint in city-service - Add /city/agents and /city/agents/online endpoints - Extend presence aggregator to include agents[] in snapshot - Add AgentsSource for fetching agent data from DB - Create CityMap component with interactive room tiles - Add useCityMap hook for fetching map data - Update useGlobalPresence to include agents - Add map/list view toggle on /city page - Add agent badges to room cards and map tiles
5.9 KiB
5.9 KiB
✅ Monitor Agent - Реальні дані (Завершено)
Дата: 2025-11-23
Статус: ✅ Monitor Agent тепер використовує тільки реальні дані
🎯 Що зроблено
1. Додано отримання реальних метрик нод
Функція: get_real_node_metrics()
Що робить:
- Отримує список нод з API (
/api/nodes) - Для кожної ноди отримує метрики з
/api/nodes/{node_id}/metrics - Перевіряє, чи це реальні дані (не HTML, не mock)
- Повертає тільки реальні метрики (CPU, RAM, Disk, Network, Status)
- Якщо реальних даних немає - повертає порожній рядок
2. Додано отримання останніх змін проєкту
Функція: get_recent_project_changes()
Що робить:
- Отримує останні зміни з Memory Service
- Фільтрує по
kind: project_event - Форматує зміни з деталями (тип, дія, шлях, час)
- Повертає структуровані дані про зміни
3. Оновлено контекст для Monitor Agent
Функція: get_monitor_memory_context()
Що додано:
- 📊 Реальні метрики нод (якщо доступні)
- 📝 Останні зміни проєкту (якщо доступні)
- 📋 Загальні події системи
- 📍 Специфічні події (для ноди або мікроДАО)
4. Оновлено System Prompt
Що додано:
- Чіткі інструкції про використання тільки реальних даних
- Заборона вигадувати метрики або зміни
- Інструкції, що робити, якщо реальних даних немає
5. Додано попередження в prompt
Що додано:
- Автоматичне виявлення відсутності реальних даних
- Попередження в prompt, якщо реальних метрик немає
- Попередження в prompt, якщо останніх змін немає
📊 Результат
До виправлення:
Користувач: "Які реальні метрики нод зараз?"
Monitor Agent: "Зараз у системі DAARION є такі метрики нод:
- Нода 1: CPU 25%, RAM 4GB/8GB, Disk 70%..."
(ВИГАДАНІ дані)
Після виправлення:
Користувач: "Які реальні метрики нод зараз?"
Monitor Agent: "⚠️ УВАГА: В контексті немає реальних метрик нод.
Реальні метрики недоступні зараз."
(ЧЕСНА відповідь, не вигадує дані)
Якщо реальні дані доступні:
Користувач: "Які реальні метрики нод зараз?"
Monitor Agent: "📊 Реальні метрики нод:
НОДА node-1-hetzner-gex44 (РЕАЛЬНІ дані з API):
- CPU: 25%
- RAM: 45%
- Disk: 70%
- Network: ↓1.2 MB/s ↑0.8 MB/s
- Статус: online
Перевірено нод: 1/2"
(РЕАЛЬНІ дані з API)
🔧 Environment Variables
# API для отримання реальних метрик та даних
FRONTEND_API_URL=http://localhost:8899
NODE_REGISTRY_URL=http://localhost:9205
MEMORY_SERVICE_URL=http://localhost:8000
OLLAMA_BASE_URL=http://localhost:11434
MISTRAL_MODEL=mistral-nemo:12b
✅ Перевірка
1. Перевірка отримання реальних метрик
curl -X POST http://localhost:9500/api/agent/monitor/chat \
-H "Content-Type: application/json" \
-d '{"agent_id":"monitor","message":"Які реальні метрики нод зараз? Покажи тільки реальні дані з API.","node_id":null}'
Очікуваний результат:
- Реальні метрики з API (якщо доступні)
- Або: "⚠️ УВАГА: В контексті немає реальних метрик нод. Реальні метрики недоступні зараз."
2. Перевірка, що агент не вигадує дані
curl -X POST http://localhost:9500/api/agent/monitor/chat \
-H "Content-Type: application/json" \
-d '{"agent_id":"monitor","message":"Які метрики ноди node-999?","node_id":null}'
Очікуваний результат:
- "Реальні метрики для ноди node-999 недоступні зараз"
- НЕ вигадані метрики
📝 Висновки
✅ Що працює:
- Monitor Agent отримує реальні метрики нод (якщо API доступний)
- Monitor Agent отримує останні зміни проєкту (з Memory Service)
- Monitor Agent НЕ вигадує дані (чесно каже, якщо даних немає)
- System Prompt забороняє вигадувати дані
- Автоматичні попередження в prompt (якщо реальних даних немає)
⚠️ Важливо:
- Monitor Agent тепер використовує ТІЛЬКИ реальні дані
- Якщо реальних даних немає - агент чесно про це каже
- Агент НЕ вигадує метрики або зміни
- Агент вказує джерело даних (яка нода, який час)
Статус: ✅ Завершено
Результат: Monitor Agent тепер використовує тільки реальні дані та чесно каже, якщо даних немає