Config policies (16 files): alert_routing, architecture_pressure, backlog, cost_weights, data_governance, incident_escalation, incident_intelligence, network_allowlist, nodes_registry, observability_sources, rbac_tools_matrix, release_gate, risk_attribution, risk_policy, slo_policy, tool_limits, tools_rollout Ops (22 files): Caddyfile, calendar compose, grafana voice dashboard, deployments/incidents logs, runbooks for alerts/audit/backlog/incidents/sofiia/voice, cron jobs, scripts (alert_triage, audit_cleanup, migrate_*, governance, schedule), task_registry, voice alerts/ha/latency/policy Docs (30+ files): HUMANIZED_STEPAN v2.7-v3 changelogs and runbooks, NODA1/NODA2 status and setup, audit index and traces, backlog, incident, supervisor, tools, voice, opencode, release, risk, aistalk, spacebot Made-with: Cursor
555 lines
30 KiB
Markdown
555 lines
30 KiB
Markdown
# AGENT AUDIT PLAN — NODA1 DAARION.city
|
||
**Дата:** 2026-02-28
|
||
**Аудитор:** Sofiia — Chief AI Architect
|
||
**Мета:** Ретельна перевірка кожного з 14 агентів на NODA1
|
||
|
||
---
|
||
|
||
## BASELINE — Поточний стан інфраструктури
|
||
|
||
### LLM Routing (після виправлень 2026-02-28)
|
||
| Агент | Провайдер | Fallback |
|
||
|-------|-----------|---------|
|
||
| sofiia | **Grok** | DeepSeek |
|
||
| senpai | **Grok** | DeepSeek |
|
||
| всі інші (12) | DeepSeek | Mistral |
|
||
| monitor, devtools | Ollama (local) | — |
|
||
|
||
### Telegram Tokens
|
||
Всі 14 агентів: ✅ (підтверджено через `docker inspect dagi-gateway-node1`)
|
||
|
||
### Qdrant Collections (61 total)
|
||
| Агент | messages | docs | memory_items | summaries | user_context |
|
||
|-------|----------|------|-------------|-----------|-------------|
|
||
| agromatrix | 2159 | 350 | — | — | — |
|
||
| alateya | 163 | — | — | 1 | — |
|
||
| clan | 1089 | — | — | — | — |
|
||
| daarwizz | 144 | — | — | — | — |
|
||
| druid | 338 | — | — | — | — |
|
||
| eonarch | 75 | — | — | — | — |
|
||
| greenfood | 301 | — | — | — | — |
|
||
| helion | 5836 | 315 | — | 12 | — |
|
||
| nutra | 890 | — | — | — | — |
|
||
| oneok | 38 | — | — | — | — |
|
||
| senpai | 1759 | — | — | 3 | — |
|
||
| sofiia | 1184 | — | — | — | — |
|
||
| soul | 412 | 153 | — | 1 | — |
|
||
| yaromir | 11 | — | — | — | — |
|
||
|
||
### Multimodal Stack (Swapper :8890)
|
||
| Модель | Тип | Статус | Розмір |
|
||
|--------|-----|--------|--------|
|
||
| qwen3-8b | llm | ✅ loaded | 5.2GB |
|
||
| qwen3-vl-8b | vision | ⚪ unloaded | 6.1GB |
|
||
| got-ocr2 | ocr | ⚪ unloaded | 7.0GB |
|
||
| granite-docling | document | ⚪ unloaded | 2.5GB |
|
||
| faster-whisper-large | stt | ⚪ unloaded | 3.0GB |
|
||
| whisper-small | stt | ⚪ unloaded | 0.5GB |
|
||
| xtts-v2 | tts | ⚪ unloaded | 2.0GB |
|
||
| flux-klein-4b | image_gen | ⚪ unloaded | 15.4GB |
|
||
|
||
### Capability Services
|
||
| Сервіс | Порт | Статус |
|
||
|--------|------|--------|
|
||
| swapper (vision/STT/TTS) | 8890 | ✅ healthy |
|
||
| rag-service | 9500 | ✅ healthy |
|
||
| crawl4ai | 11235 | ✅ ok |
|
||
| presentation | 9212 | ✅ healthy |
|
||
| artifact-registry | 9220 | ✅ healthy |
|
||
| crewai-service | 9010 | ✅ ok |
|
||
| senpai-md-consumer | 8892 | ✅ ok |
|
||
| market-data | 8893 | ✅ ok |
|
||
| plant-vision | 8085 | ❌ down |
|
||
|
||
### Standard Tool Stack (всі агенти)
|
||
`memory_search`, `graph_query`, `web_search`, `web_extract`, `crawl4ai_scrape`,
|
||
`remember_fact`, `image_generate`, `tts_speak`, `presentation_create`,
|
||
`presentation_status`, `presentation_download`, `file_tool`
|
||
|
||
---
|
||
|
||
## ЧЕКЛИСТ ПЕРЕВІРКИ АГЕНТА
|
||
|
||
Для кожного агента перевіряємо 10 категорій:
|
||
|
||
### 1. TELEGRAM CHAT (Чат з користувачем)
|
||
- [ ] Надіслати `/start` — отримати привітання
|
||
- [ ] Надіслати просте питання — отримати змістовну відповідь
|
||
- [ ] Перевірити що агент відповідає у своєму стилі (persona)
|
||
- [ ] Перевірити швидкість відповіді (<10 сек норма)
|
||
- [ ] Перевірити що відповідь не з кешу — задати питання про поточну дату
|
||
|
||
### 2. LLM ROUTING (Маршрутизація до правильної моделі)
|
||
- [ ] `curl POST /v1/agents/{id}/infer` → перевірити `model` та `backend` у відповіді
|
||
- [ ] Переконатись що `backend` відповідає очікуваному провайдеру
|
||
- [ ] Перевірити `tokens_used` > 0
|
||
|
||
### 3. MEMORY MODULE (Модуль пам'яті)
|
||
- [ ] Колекція `{agent}_messages` існує і має > 0 точок
|
||
- [ ] `remember_fact` — назвати факт → перевірити через наступний запит що агент його знає
|
||
- [ ] `memory_search` — запитати про попередні розмови → агент має згадати
|
||
- [ ] Перевірити наявність `{agent}_user_context` якщо є
|
||
|
||
### 4. QDRANT COLLECTIONS (Векторні колекції)
|
||
- [ ] Перелік колекцій: `messages`, `docs`, `memory_items`, `summaries`, `user_context`
|
||
- [ ] Підрахунок points в кожній колекції
|
||
- [ ] Перевірити що нові повідомлення записуються (порівняти count до і після)
|
||
|
||
### 5. DOCUMENT PROCESSING (Обробка документів)
|
||
- [ ] Надіслати PDF документ у чат — агент має підтвердити отримання
|
||
- [ ] Запитати про зміст документу — перевірити що агент може відповісти
|
||
- [ ] Перевірити що `{agent}_docs` collection оновилась
|
||
- [ ] Перевірити OCR для зображень з текстом (через swapper got-ocr2)
|
||
|
||
### 6. WEB SEARCH (Пошук в інтернеті)
|
||
- [ ] Задати питання що вимагає актуальної інформації
|
||
- [ ] Перевірити в логах router що `web_search` tool викликався
|
||
- [ ] Перевірити якість відповіді (не галюцинація, а реальні дані)
|
||
- [ ] Перевірити `crawl4ai_scrape` для глибокого аналізу сторінок
|
||
|
||
### 7. MULTIMODAL — VISION (Обробка зображень)
|
||
- [ ] Надіслати фото у чат — агент має описати що на фото
|
||
- [ ] Перевірити що swapper завантажив `qwen3-vl-8b` (через /models)
|
||
- [ ] Перевірити якість опису (деталізованість, точність)
|
||
- [ ] Спеціально для agromatrix: рослина на фото → визначення виду
|
||
|
||
### 8. VOICE (Голосовий чат)
|
||
- [ ] Надіслати голосове повідомлення у Telegram
|
||
- [ ] Перевірити що STT (faster-whisper-large) транскрибує
|
||
- [ ] Перевірити що агент відповідає на транскрипт
|
||
- [ ] Перевірити TTS (xtts-v2) — відповідь голосом (якщо підтримується)
|
||
- [ ] Перевірити логи swapper під час STT
|
||
|
||
### 9. СПЕЦІАЛІЗОВАНІ ІНСТРУМЕНТИ (Agent-specific tools)
|
||
- Залежить від агента — деталі нижче у секції кожного агента
|
||
|
||
### 10. SYSTEM PROMPT (Системний промпт і особистість)
|
||
- [ ] Перевірити що `{agent}_prompt.txt` завантажено (`prompt_loaded: true`)
|
||
- [ ] Задати питання поза доменом агента → має відповідати в ролі, не виходити з персони
|
||
- [ ] Перевірити мову відповіді (UA/EN відповідно до налаштувань)
|
||
|
||
---
|
||
|
||
## АГЕНТИ — ПОРЯДОК ПЕРЕВІРКИ
|
||
|
||
Порядок від найважливіших / найактивніших:
|
||
|
||
### ЧЕРГА 1 — Критичні (найбільше повідомлень, активні юзери)
|
||
1. **helion** — 5836 msgs, docs 315, summaries 12 → найактивніший
|
||
2. **senpai** — 1759 msgs, summaries 3, Grok, market_data tool
|
||
3. **agromatrix** — 2159 msgs, docs 350, plant vision tools
|
||
4. **sofiia** — 1184 msgs, Grok, CTO агент
|
||
|
||
### ЧЕРГА 2 — Активні
|
||
5. **clan** — 1089 msgs
|
||
6. **nutra** — 890 msgs
|
||
7. **soul** — 412 msgs, docs 153
|
||
8. **druid** — 338 msgs
|
||
|
||
### ЧЕРГА 3 — Менш активні
|
||
9. **greenfood** — 301 msgs
|
||
10. **alateya** — 163 msgs, summaries
|
||
11. **eonarch** — 75 msgs
|
||
12. **oneok** — 38 msgs, 5 CRM tools
|
||
|
||
### ЧЕРГА 4 — Службові / нові
|
||
13. **daarwizz** — 144 msgs, meta-orchestrator
|
||
14. **yaromir** — 11 msgs, whitelist-only
|
||
|
||
---
|
||
|
||
## ДЕТАЛЬНІ ЧЕКЛІСТИ ПО АГЕНТАМ
|
||
|
||
---
|
||
|
||
### 1. HELION — Energy Platform
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Crew:** ✅ enabled
|
||
**Спец. інструменти:** `comfy_generate_image`, `comfy_generate_video`
|
||
**Колекції:** messages(5836), docs(315), summaries(12), artifacts
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати про сонячні панелі / енергетичний розрахунок
|
||
- [ ] Перевірити чи CrewAI crew активується для складних задач
|
||
- [ ] `image_generate` — запит на схему енергосистеми → перевірити comfy
|
||
- [ ] Перевірити `helion_artifacts` колекцію (унікальна!)
|
||
- [ ] RAG по `helion_docs` — запитати про завантажені документи
|
||
|
||
---
|
||
|
||
### 2. SENPAI — Trading Advisor
|
||
**LLM:** Grok → fallback DeepSeek
|
||
**Crew:** ❌ llm_only
|
||
**Спец. інструменти:** `market_data`, `binance_bots_top`, `binance_account_bots`
|
||
**Колекції:** messages(1759), summaries(3)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати ціну BTC/ETH → перевірити що tool `market_data` викликається
|
||
- [ ] Перевірити що `senpai-md-consumer` (:8892) отримує ринкові дані
|
||
- [ ] Запитати про торговий сигнал → якість аналізу через Grok
|
||
- [ ] Перевірити `binance_bots_top` — список топ-ботів
|
||
- [ ] Ринковий звіт — чи зберігається в summaries
|
||
|
||
---
|
||
|
||
### 3. AGROMATRIX — Agriculture
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Crew:** ❌ llm_only
|
||
**Спец. інструменти:** `plantnet_lookup`, `nature_id_identify`, `gbif_species_lookup`, `agrovoc_lookup`
|
||
**Колекції:** messages(2159), docs(350), shared_pending
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Надіслати фото рослини → `nature_id_identify` або `plantnet_lookup`
|
||
- [ ] Запитати про агрокультуру → `agrovoc_lookup` (FAO база)
|
||
- [ ] Перевірити `agromatrix_shared_pending` — унікальна колекція (для чого?)
|
||
- [ ] RAG по docs(350) — запитати про завантажені агрономічні документи
|
||
- [ ] plant-vision :8085 ❌ DOWN — перевірити вплив на функціональність
|
||
|
||
---
|
||
|
||
### 4. SOFIIA — Chief AI Architect
|
||
**LLM:** Grok → fallback DeepSeek
|
||
**Crew:** ❌ llm_only
|
||
**Доступ:** whitelist (admin, architect roles only)
|
||
**Колекції:** messages(1184)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Перевірити access control — чи блокує неавторизованих юзерів
|
||
- [ ] Запитати про архітектуру NODA1 → точність відповіді через Grok
|
||
- [ ] Перевірити всі AGENTS.md tools (oncall, observability, pr_reviewer, etc.)
|
||
- [ ] Перевірити control-plane :9200 → чи є інтеграція
|
||
- [ ] Запитати технічне питання → quality through Grok vs DeepSeek
|
||
|
||
---
|
||
|
||
### 5. CLAN — Community Operations
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Crew:** ❌ llm_only
|
||
**Колекції:** messages(1089)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати про DAO голосування / спільнотні механіки
|
||
- [ ] Перевірити `remember_fact` — чи зберігає профіль юзера
|
||
- [ ] Перевірити що docs collection відсутня (це нормально для clan?)
|
||
|
||
---
|
||
|
||
### 6. NUTRA — Health & Nutrition
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Crew:** ✅ enabled
|
||
**Спец. інструменти:** `comfy_generate_image`, `comfy_generate_video`
|
||
**Колекції:** messages(890), food_knowledge (спеціальна!)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати про харчову цінність продукту → `nutra_food_knowledge` RAG
|
||
- [ ] Запит на план харчування → чи використовує crew для складних кейсів
|
||
- [ ] Перевірити `nutra_food_knowledge` — скільки points, що це за база
|
||
|
||
---
|
||
|
||
### 7. SOUL — Spiritual Assistant
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Crew:** ❌ llm_only
|
||
**Колекції:** messages(412), docs(153), summaries(1)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати про духовну практику → емоційна якість відповіді
|
||
- [ ] RAG по docs(153) — які документи завантажені?
|
||
- [ ] Перевірити persona consistency — чи лишається у ролі
|
||
|
||
---
|
||
|
||
### 8. DRUID — Science/Ayurveda
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Спец. інструменти:** `comfy_generate_image`, `comfy_generate_video`
|
||
**Колекції:** messages(338), legal_kb (унікальна!)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати про аюрведичний рецепт → якість відповіді
|
||
- [ ] Перевірити `druid_legal_kb` — це юридична база? Що в ній?
|
||
- [ ] RAG по legal_kb
|
||
|
||
---
|
||
|
||
### 9. GREENFOOD — Food ERP
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Колекції:** messages(301)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати про рецептуру або склад продукту
|
||
- [ ] Перевірити чи є інтеграція з ERP системою
|
||
|
||
---
|
||
|
||
### 10. ALATEYA — R&D Lab
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Crew:** ❌ llm_only
|
||
**Колекції:** messages(163), summaries(1)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати про наукову гіпотезу → якість reasoning
|
||
- [ ] Перевірити summaries — що там за 1 summary
|
||
|
||
---
|
||
|
||
### 11. EONARCH — Consciousness/Evolution
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Колекції:** messages(75)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати про трансформацію свідомості → філософська глибина
|
||
- [ ] Мало messages — чи активний взагалі?
|
||
|
||
---
|
||
|
||
### 12. ONEOK — Window Master
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Спец. інструменти:** `crm_search_client`, `crm_upsert_client`, `crm_upsert_site`, `crm_upsert_window_unit`, `crm_create_quote`, `crm_update_quote`, `crm_create_job`, `calc_window_quote`, `docs_render_quote_pdf`, `docs_render_invoice_pdf`
|
||
**Колекції:** messages(38)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати розрахунок вікна → `calc_window_quote` tool
|
||
- [ ] Перевірити CRM інтеграцію (EspoCRM)
|
||
- [ ] PDF генерація через gotenberg :3010
|
||
- [ ] Calendly/CalCom інтеграція для записів
|
||
|
||
---
|
||
|
||
### 13. DAARWIZZ — Meta-Orchestrator
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Колекції:** messages(144)
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Запитати про координацію між агентами
|
||
- [ ] Перевірити A2A (agent-to-agent) routing якщо є
|
||
- [ ] Як працює делегування задач між агентами?
|
||
|
||
---
|
||
|
||
### 14. YAROMIR — Tech Lead (whitelist)
|
||
**LLM:** DeepSeek → fallback Mistral
|
||
**Доступ:** whitelist only
|
||
**Колекції:** messages(11), docs, memory_items
|
||
|
||
**Спецперевірки:**
|
||
- [ ] Перевірити whitelist access control
|
||
- [ ] Технічні питання → якість відповіді
|
||
- [ ] Чому лише 11 messages — малоактивний або whitelist обмежує?
|
||
|
||
---
|
||
|
||
## ФОРМАТ ЗВІТУ ПО АГЕНТУ
|
||
|
||
```
|
||
## AGENT: {name} — AUDIT {date}
|
||
|
||
### Status
|
||
| Категорія | Статус | Деталі |
|
||
|-----------|--------|--------|
|
||
| Telegram chat | ✅/⚠️/❌ | ... |
|
||
| LLM routing | ✅/⚠️/❌ | model=X backend=Y |
|
||
| Memory (messages) | ✅/⚠️/❌ | N points |
|
||
| Memory (facts) | ✅/⚠️/❌ | remember/recall OK |
|
||
| Docs RAG | ✅/⚠️/❌ | N docs points |
|
||
| Web search | ✅/⚠️/❌ | tool called: Y/N |
|
||
| Vision | ✅/⚠️/❌ | model loaded: Y/N |
|
||
| Voice STT | ✅/⚠️/❌ | whisper: Y/N |
|
||
| Voice TTS | ✅/⚠️/❌ | xtts: Y/N |
|
||
| Specialized tools | ✅/⚠️/❌ | tools tested |
|
||
|
||
### Issues Found
|
||
- ...
|
||
|
||
### Action Items
|
||
- [ ] ...
|
||
```
|
||
|
||
---
|
||
|
||
## KNOWN ISSUES (до початку аудиту)
|
||
|
||
| # | Проблема | Агент | Пріоритет |
|
||
|---|---------|-------|-----------|
|
||
| 1 | plant-vision :8085 DOWN | agromatrix | HIGH |
|
||
| 2 | token_configured: false в Gateway health | всі | MEDIUM (баг в health check, токени є) |
|
||
| 3 | Більшість memory_items і user_context колекцій порожні | всі | MEDIUM |
|
||
| 4 | qwen3-vl-8b unloaded (on-demand завантаження) | всі vision | INFO |
|
||
| 5 | whisper/xtts unloaded | всі voice | INFO |
|
||
| 6 | comfy tools у всіх агентів — чи працює ComfyUI? | всі | TO_CHECK |
|
||
|
||
---
|
||
|
||
*Документ оновлюється по мірі проходження аудиту.*
|
||
|
||
---
|
||
|
||
## AUDIT REPORTS
|
||
|
||
---
|
||
|
||
## AGENT: helion — AUDIT 2026-02-28
|
||
|
||
### Status
|
||
|
||
| Категорія | Статус | Деталі |
|
||
|-----------|--------|--------|
|
||
| Telegram chat | ✅ | Відповідає, persona Energy Union коректна |
|
||
| LLM routing | ✅ | model=deepseek-chat, backend=deepseek-cloud, tokens=3532 |
|
||
| Memory — messages | ✅ | helion_messages = **5836 points** (найактивніший) |
|
||
| Memory — summaries | ✅ | helion_summaries = **12 dialog summaries** (events_count до 20) |
|
||
| Memory — remember_fact | ⚠️ | Tool викликається і повертає 200, але **agent_id не зберігається** в PostgreSQL |
|
||
| Memory — memory_items | ⚠️ | Qdrant helion_memory_items = **0 points** — не використовується |
|
||
| Memory — user_context | ⚠️ | Qdrant helion_user_context = **0 points** — не використовується |
|
||
| Memory — artifacts | ⚠️ | Qdrant helion_artifacts = **0 points** — artifacts не накопичуються |
|
||
| Docs RAG | ✅ | helion_docs = **315 points**, 1 документ: `sinergiya-posibnik-elektr_21.05.2024.pdf`, RAG відповідає точно |
|
||
| Web search | ✅ | `web_extract` tool виконується (логи підтверджують), `memory_search` + `web_extract` активні |
|
||
| Vision | ⚪ | qwen3-vl-8b **unloaded** (on-demand), потребує тесту фото в Telegram |
|
||
| Voice STT | ⚪ | whisper-small/faster-whisper **unloaded** (on-demand через swapper), gateway має `process_voice()` |
|
||
| Voice TTS | ⚪ | xtts-v2 **unloaded** (on-demand), потребує тесту |
|
||
| Crew (CrewAI) | ⚠️ | crew=True в registry, але logs: `CrewAI decision: False (orchestrator_direct_llm_first)` — crew не активується |
|
||
| image_generate (comfy) | ❌ | ComfyUI **контейнер відсутній** на NODA1 — `comfy_generate_image` / `comfy_generate_video` не працюють |
|
||
| System prompt | ✅ | `prompt_loaded: true`, source=config, persona коректна |
|
||
|
||
### Issues Found
|
||
|
||
#### 🔴 CRITICAL
|
||
|
||
**ISSUE-H-01: `agent_id` не зберігається в `user_facts` при remember_fact**
|
||
- `/facts/upsert` endpoint в memory-service **не передає `agent_id`** в `db.upsert_fact()` — параметр є в сигнатурі функції, але не передається з request
|
||
- `tool_manager.py` передає `agent_id` тільки в `fact_value_json`, а не як окрему колонку
|
||
- Наслідок: `SELECT ... WHERE agent_id='helion'` повертає 0 рядків для реальних фактів, пошук по агенту не працює
|
||
- Файл: `services/memory-service/app/main.py:654` → `db.upsert_fact()` call без `agent_id`
|
||
|
||
#### 🟡 WARNING
|
||
|
||
**ISSUE-H-02: ComfyUI відсутній на NODA1**
|
||
- Контейнер ComfyUI не запущений (немає в `docker ps`)
|
||
- Всі агенти мають `comfy_generate_image` і `comfy_generate_video` в specialized tools
|
||
- При виклику цих tools — помилка або timeout
|
||
- Рекомендація: або задеплоїти ComfyUI, або замінити `image_generate` на інший backend (Flux через swapper вже є: `flux-klein-4b unloaded`)
|
||
|
||
**ISSUE-H-03: CrewAI ніколи не активується для Helion**
|
||
- `helion: crew=True` в `agent_registry.yml`
|
||
- Але в router логах завжди: `CrewAI decision: False (orchestrator_direct_llm_first)`
|
||
- Умова активації CrewAI не спрацьовує для реальних запитів
|
||
- Потрібно перевірити логіку `_crewai_decision()` в `main.py`
|
||
|
||
**ISSUE-H-04: helion_memory_items, helion_user_context, helion_artifacts = 0 points**
|
||
- Три Qdrant-колекції існують але порожні
|
||
- `memory_items` — мав би зберігати структуровані факти (від remember_fact)
|
||
- `user_context` — мав би зберігати профілі користувачів
|
||
- `artifacts` — унікальна колекція для helion, ніколи не записувалась
|
||
- Причина: write path для цих колекцій або не реалізований, або не викликається
|
||
|
||
**ISSUE-H-05: Лише 1 документ в helion_docs (315 chunks)**
|
||
- Весь RAG-корпус = один PDF `sinergiya-posibnik-elektr_21.05.2024.pdf`
|
||
- Для платформи з 5836 повідомленнями — дуже мало документів
|
||
- Потрібно завантажити більше документів Energy Union
|
||
|
||
#### 🟢 INFO
|
||
|
||
**ISSUE-H-06: vision/STT/TTS — on-demand, не тестовано реальним Telegram трафіком**
|
||
- Swapper завантажує моделі на вимогу, це нормально
|
||
- Але потрібен реальний тест: надіслати фото і голосове в Telegram чат Helion
|
||
|
||
### Action Items
|
||
|
||
- [ ] **FIX** `services/memory-service/app/main.py:670` — додати `agent_id=request.fact_value_json.get('agent_id')` в `db.upsert_fact()` call
|
||
- [ ] **FIX** Перевірити `_crewai_decision()` в `main.py` — чому crew не активується для helion
|
||
- [ ] **DEPLOY** ComfyUI або налаштувати `image_generate` через swapper flux-klein-4b
|
||
- [ ] **TEST** Надіслати реальне фото в Telegram @HelionBot → перевірити vision STT
|
||
- [ ] **TEST** Надіслати голосове повідомлення → перевірити STT whisper pipeline
|
||
- [ ] **UPLOAD** Завантажити більше документів Energy Union в helion_docs
|
||
- [ ] **INVESTIGATE** helion_artifacts — для чого ця колекція і як її наповнювати
|
||
|
||
---
|
||
|
||
## AGENT: senpai — AUDIT 2026-02-28
|
||
|
||
### Status
|
||
|
||
| Категорія | Статус | Деталі |
|
||
|-----------|--------|--------|
|
||
| Telegram chat | ✅ | Відповідає, persona Gordon Senpai — Trading Advisor (після фіксу промпту) |
|
||
| LLM routing | ✅ | model=grok-4-1-fast-reasoning, backend=grok-cloud ✅ (підтверджено в логах) |
|
||
| Memory — messages | ✅ | senpai_messages = **1759 points** (активна база) |
|
||
| Memory — summaries | ✅ | senpai_summaries = **3 dialog summaries** (events_count по 60, content про трейдинг/крипто) |
|
||
| Memory — remember_fact | ✅ | Факт `Максим торгує BTC з 2021` збережено з `agent_id=senpai` (**agent_id fix діє**) |
|
||
| Memory — memory_items | ⚠️ | Qdrant senpai_memory_items = **0 points** — не накопичується |
|
||
| Memory — user_context | ❌ | Колекція **відсутня** (HTTP 404) — не була створена |
|
||
| Memory — docs | ⚠️ | senpai_docs = **0 points** — жодного документу |
|
||
| market_data tool | ✅ | BTC=$68,185 / ETH=$2,066 — real-time дані з Bybit/Binance (tool `market_data` OK) |
|
||
| binance_bots_top | ✅ | Tool **реалізовано** — підключено до `dagi-binance-bot-monitor-node1:8893/top-bots` (web_search fallback) |
|
||
| binance_account_bots | ✅ | Tool **реалізовано** — `SPOT account, can_trade=True, permissions=[TRD_GRP_072]`, баланс 0 (акаунт порожній) |
|
||
| comfy_generate_image | ❌ | ComfyUI **відсутній** на NODA1 — не працює (той самий issue що ISSUE-H-02) |
|
||
| comfy_generate_video | ❌ | ComfyUI **відсутній** на NODA1 — не працює |
|
||
| web_search | ✅ | Новини Bitcoin 2026-02-26 — знайдено реальний контент (BBC, Cointelegraph) |
|
||
| Vision | ⚪ | Не налаштовано для senpai (`vision_enabled` не встановлено в config) |
|
||
| Voice STT | ⚪ | On-demand через swapper (не тестовано реальним трафіком) |
|
||
| Voice TTS | ⚪ | On-demand через swapper (не тестовано реальним трафіком) |
|
||
| Crew (CrewAI) | ℹ️ | crew=❌ за конфігом (trading agent — crew не потрібен) |
|
||
| System prompt | ✅ | **FIXED** — було placeholder `(loaded from senpai_prompt.txt)`, тепер `!file:/app/prompts/senpai_prompt.txt` (13KB, Gordon Senpai v1.1) |
|
||
| senpai-md-consumer | ✅ | `http://localhost:8892/health` → `{"status":"ok","service":"senpai-md-consumer"}` |
|
||
| market-data-service | ✅ | `http://localhost:8893/health` → `{"status":"ok","service":"market-data-service"}` |
|
||
|
||
### Issues Found
|
||
|
||
#### 🔴 CRITICAL
|
||
|
||
**ISSUE-S-01: System prompt був placeholder — Senpai відповідав як "Energy Union AI" замість "Gordon Senpai"**
|
||
- `router-config.yml` містив буквальний рядок `(loaded from senpai_prompt.txt)` замість реального промпту
|
||
- `prompt_builder._get_from_config()` передавав цей рядок в Grok як system_prompt
|
||
- Grok без контексту вигадував "Energy Union" персону (з короткого placeholder)
|
||
- **FIXED:**
|
||
1. `prompt_builder.py` — додано підтримку `!file:/path/to/file.txt` references
|
||
2. `docker-compose.node1.yml` — додано volume mount `gateway-bot -> /app/prompts`
|
||
3. `router-config.yml` — `senpai.system_prompt = !file:/app/prompts/senpai_prompt.txt`
|
||
4. Аналогічно для `sofiia` (sofiia_prompt.txt 136KB)
|
||
- **VERIFY:** `grok-4-1-fast-reasoning` → "Я — Гордон Сэнпай, советник высшего уровня по рынкам капитала и цифровым активам" ✅
|
||
|
||
#### 🔴 CRITICAL (системний)
|
||
|
||
**ISSUE-S-02: `binance_bots_top` і `binance_account_bots` — "ghost tools" → ВИПРАВЛЕНО**
|
||
- Обидва tools були присутні в `agent_tools_config.py` але **відсутні** в `TOOL_DEFINITIONS` і `execute_tool()` handler
|
||
- **FIXED:** Реалізовано `_binance_bots_top()` і `_binance_account_bots()` в `tool_manager.py`
|
||
- Сервіс `dagi-binance-bot-monitor-node1` запущений (порт 8893 внутрішній)
|
||
- Новий Binance API ключ встановлено в `.env.node1` і задеплоєно → **HTTP 200 OK**
|
||
- `binance_account_bots` → `SPOT, can_trade=True, TRD_GRP_072, balance=0` ✅
|
||
- `binance_bots_top` → web_search fallback (marketplace scraping) ✅
|
||
|
||
#### 🟡 WARNING
|
||
|
||
**ISSUE-S-03: senpai_user_context колекція відсутня (404)**
|
||
- На відміну від helion, де колекція є але порожня — у senpai її взагалі немає
|
||
- Потрібно перевірити чому memory-service не створила цю колекцію для senpai
|
||
|
||
**ISSUE-S-04: senpai_docs = 0 points**
|
||
- Для Trading Advisor — відсутні будь-які документи (аналітика, стратегії, ринкові огляди)
|
||
- Це обмежує RAG-можливості агента
|
||
|
||
**ISSUE-S-05: senpai_memory_items = 0 points**
|
||
- Аналогічно helion — `memory_items` не накопичується
|
||
- Структуровані факти про трейдери не зберігаються у Qdrant
|
||
|
||
**ISSUE-S-06: System prompt — мова Russian (v1.1)**
|
||
- `senpai_prompt.txt` написаний переважно **російською мовою** ("Версия: 1.1, Язык: русский")
|
||
- Для українського продукту — потрібно перейти на UA/EN промпт
|
||
|
||
#### 🟢 INFO
|
||
|
||
**ISSUE-S-07: vision/STT/TTS не тестовано реальним трафіком**
|
||
- Trading agent — мінімальна потреба у voice/vision
|
||
- Але доступ до swapper є, on-demand навантаження норма
|
||
|
||
### Action Items
|
||
|
||
- [x] **FIXED** `services/router/prompt_builder.py` — підтримка `!file:` references для системних промптів
|
||
- [x] **FIXED** `docker-compose.node1.yml` — volume mount `gateway-bot -> /app/prompts` для router
|
||
- [x] **FIXED** `services/router/router-config.yml` — senpai і sofiia тепер мають `!file:` references
|
||
- [x] **FIXED** `binance_bots_top` і `binance_account_bots` tools реалізовані в `tool_manager.py` → з'єднані з `dagi-binance-bot-monitor-node1:8893`
|
||
- [x] **FIXED** Новий Binance API ключ встановлено в `.env.node1`, сервіс перезапущено → 200 OK
|
||
- [ ] **CREATE** `senpai_user_context` Qdrant collection — зрозуміти чому не створилась
|
||
- [ ] **UPLOAD** Завантажити торгові документи/аналітику в `senpai_docs` через RAG pipeline
|
||
- [ ] **TRANSLATE** `senpai_prompt.txt` на ukrainian/english (зараз russian v1.1)
|
||
- [ ] **TEST** Реальний тест в Telegram @SenpAI_agent_bot з типовими запитами трейдера
|