---
name: investpilot-telegram-ingest
description: "КодИнвест — KB умеет source kind=telegram (веб-превью t.me/s через прокси), не только youtube/rss"
metadata:
  node_type: memory
  type: project
  originSessionId: 6f344612-b945-4107-b457-8ad2163cd988
  modified: 2026-07-21T11:17:34.042Z
---

**КодИнвест ([[investpilot-overview]]) — Telegram-ингест, 2026-07-15.** KB-источники теперь трёх видов: `youtube`, `rss`, **`telegram`**.

`knowledge/ingest_telegram.py` читает `t.me/s/<канал>` через SOCKS-прокси mini (`kb_proxy`, тот же что ютуб) — без Telegram API/бота, регэксп-парс постов (ext_id=permalink «канал/NN»). Диспетчер в `service.py`. Добавить: `/kb_add telegram @канал` или CLI `kb add telegram @канал`; `normalize_tg` нормализует @/ссылку.

SEED-каналы: kokorevinvest, markettwits, cbrstocks, AK47pfl (выбраны как дополняющие YT/RSS, без дублей). Живой прогон: 74 поста осели, эмбеддинги → RAG. Паттерн взят из Делора (t.me/s скрейп). Тесты `tests/test_ingest_telegram.py`.

**Пропускная способность конвейера (2026-07-21).** Вся труба (ingest→chunk→embed→distill) была цепочкой последовательных `for`-циклов — 18 источников, потом батч дистилляции по одному документу. Бэклог 445 доков = ~28ч простоя (не от медленных LLM-вызовов, а от архитектуры: fixed-interval сон вместо drain-while-backlog). Починено пакетом правок: (1) дистилляция — `asyncio.gather` под семафором + жадный дренаж (короткий cooldown вместо часового сна, пока очередь не пуста); (2) ingest — параллельно по источникам, РАЗДЕЛЬНЫЕ лимиты: RSS/Telegram агрессивно (сеть), YouTube сдержанно (whisper CPU-риск на общем mini); (3) `research/gigachat-max` добавлен хвостом в дистилляцию — живой тест подтвердил: задача-извлечение («что сказал аналитик») гардрейлы GigaChat не триггерит (в отличие от voter/challenger, где GigaChat отказывается давать финвердикт от своего имени). Живая проверка: устойчивое 507→320 за 15 мин без остановок. `notion-agent-mcp` НЕ годится для этой задачи (инструменты ДЛЯ Notion, не API investpilot'а).

**gigachat-ultra (личная Ultra владельца = [[cebersresearch_gigachat_web]], анонимный веб-прокси).** Изолированно 3/3 чисто (6.5-9.3с), но на PRIMARY под реальной параллельной нагрузкой батча (semaphore=4) — 429 на ВСЕХ попытках, одна анонимная сессия не держит конкурентность. Откачено на 2-ю позицию (первый фолбэк, штучные вызовы без конкурентного давления) — там реально помогает. `gc/grok-build` вернулся на primary. Урок: «слишком хорошо на изолированном тесте» — проверять именно под реальной конкурентностью батча, не по одному вызову.
