Files
microdao-daarion/docs/AGENT_AUDIT_PLAN.md
Apple 67225a39fa docs(platform): add policy configs, runbooks, ops scripts and platform documentation
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
2026-03-03 07:14:53 -08:00

555 lines
30 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 з типовими запитами трейдера