---
name: delor-kb-grounding
description: Делор — база знаний (дайджест-тезисы из YouTube/RSS) заземляет инвест-нарративы moex/crypto/grow/today
metadata: 
  node_type: memory
  type: project
  originSessionId: 6620ea3d-79ed-46e4-b5ea-65828f0cc0b8
---

Делор, commit 15a4bd8 (2026-06-17): новый домен `advisor/domain/knowledge/` — заземление качественной части (почему/риски) инвест-витрин **moex/crypto/grow/today** на экспертный контент, чтобы LLM не выдумывал. Цифры (RSI/SMA/ATR/риск/план) и так детерминированы; заземляли именно нарратив.

**Механизм — дайджест, НЕ RAG-каждый-запрос** (выбор юзера): фоновый пайплайн `kb_sources → fetch_youtube (yt-dlp субтитры RU через socks5 2080 + whisper-фолбэк опц.) / fetch_rss / fetch_telegram → kb_documents → distiller (LLM `kb_distill_model`, ОДИН раз на документ) → kb_theses (инвест) / kb_sport_notes (спорт, distill_sport)`.

**Distill-слой переведён на Notion Opus 4.8 (2026-07-16, разгрузка OmniRoute-шины):** `kb_distill_model`=`notion/opus-4.8` (было mistral/mistral-small-latest), `kb_distill_fallback`=`mistral/mistral-small-latest` (было cerebras/gpt-oss-120b). Дистилляция — это СУММАРИЗАЦИЯ (не прогноз/совет), поэтому Notion её делает без отказа (в отличие от пиков/советов, где отказывает — см. [[notion_sport_refusal]]). Бенч на реальных доках: Opus 4.8 ≥ mistral по качеству (различает long/short ОФЗ; поймал спорт-заметку, которую mistral пропустила `[]`), медленнее (32-66с vs 5с, но distill — часовой батч, латентность неважна). Живой тик через прод-конструкцию (KbService+ChainAdvisorLLM): 2 дока → 6 items, primary notion ответил без fallback, записано в prod. Идёт через notion-ветку OmniRouteClient→:1722. Откат: вернуть 2 строки в config.py:400. ⚠️ у чата Notion возможна дневная квота → тогда авто на mistral. Obsidian-канон Делора заведён 2026-07-16 (Projects/delor/, 5 файлов, D6=distill-на-Notion). При анализе `KbReader.context_for_*` тянет тезисы по ticker/sector/asset_class/macro — **чистый SQL, 0 LLM**, recency+TTL(45д). Подмешивается в `_codex_narrative`/synth; пустой KB → промпт как прежде (graceful). Цифры в промпте ПРИОРИТЕТНЕЕ тезисов.

**Где крутится:** циклы (ingest 6ч/distill 1ч/cleanup сутки) в процессе аналитика `sport_analyst.py` (тяжёлый LLM вне бота); бот читает через `deps.kb`. UX: `/kb_add <youtube|rss> <url>`, `/kb_list`, `/kb_rm`, `/kb_status` (super-admin). Сидинг `@kokorevinvest`.

**Безопасность/право:** контент публичный (не 1С/личное) → trusted-модели (серые НЕ нужны), плейнтекст; промпт требует пересказа без дословных цитат (copyright). Связано: [[cebers-pulse-llm-rules]], [[obsidian-documentation-rule]].

**Проверено реально:** 1088 тестов; живой ingest 5 видео→13 тезисов; `/moex VTBR` с KB цитирует тезисы в рисках (размытие капитала +49%, санкции госбанков) vs технические без KB.

**Грабли:** scp с `~` в назначении раскрывается ЛОКАЛЬНО → для мини абсолютный `/Users/cebers_mini/...`; yt-dlp звать `python -m yt_dlp` (PATH под SSH не видит .venv/bin); macOS без `timeout` → `--socket-timeout`. Хвост: семантический RAG-добор bge-m3 если дайджест по тикеру редкий. Детали — Obsidian Projects/Делор Changelog+Decisions D-kb-grounding.
