← Блог

Дайджесты чатов с субагентами и дешёвыми моделями

Сережа Рис · 5 February 2026

claude codeсубагенты

Делаю дайджесты для чата @vibecod3rs — около 1000 сообщений за 2-3 дня нужно свернуть в 4000 символов. Раньше Gemini Pro галлюцинировал детали. Сейчас работает MapReduce через Haiku-субагенты, стоит копейки и почти не врёт.

Проблема: галлюцинации из-за потери контекста

Первый дайджест я делал через один запрос в Gemini Pro. Модель схватила общую тему, но придумала детали.

Самая показательная галлюцинация — “стрим про Claude Code скиллы”. В чате был YouTube-линк с текстом “Начинаю [ссылка]”. Gemini решил, что это про скиллы. На самом деле тема стрима была в сообщении-анонсе, на которое “Начинаю” отвечал. Контекст потерялся.

Классическая проблема Lost in the Middle — модель видит начало и конец промпта, середина размывается.

Решение: MapReduce через субагенты

Этот паттерн я уже использовал для генерации метаданных YouTube — там тоже нужно было обработать большой транскрипт без потери деталей. Для дайджестов логика та же.

Разделил процесс на четыре этапа.

954 сообщения
      │
      ▼
┌─────────────┐
│   PREPARE   │  Загрузка + enrichment (engagement scores)
└─────────────┘
      │
      ▼
┌─────────────┐
│  MAP×7      │  7 Haiku агентов параллельно
│  (Haiku)    │  Каждый извлекает тему из кластера ~15 сообщений
└─────────────┘  + reply_to контекст для URL
      │
      ▼
┌─────────────┐
│   REDUCE    │  Sonnet собирает дайджест
│  (Sonnet)   │  из 7 тем в 4000 символов
└─────────────┘
      │
      ▼
┌─────────────┐
│   VERIFY    │  Haiku проверяет факты
│  (Haiku)    │  против исходных сообщений
└─────────────┘

Этап 1: Препроцессинг (enrichment)

Загружаю сообщения за три дня через Messages API. Добавляю метрики вовлечённости.

Engagement score: direct_replies × 2.0 + thread_size × 0.5

Пример: сообщение про Nanobot получило 5 прямых ответов, тред из 8 сообщений. Score: 14.0.

Беру топ-100 с score ≥ 2.0. Плюс reply_to контекст — если сообщение ответ на другое, включаю текст родителя.

Этап 2: MAP — параллельные субагенты (Haiku)

7 кластеров по ~15 сообщений. Каждый Haiku извлекает одну тему.

Использую Claude Haiku 3 ($0.25/1M input, $1.25/1M output) — в 6 раз дешевле Sonnet. За 7 запросов по 2000 токенов выходит около $0.004.

Этап 3: REDUCE — сборка дайджеста (Sonnet)

Sonnet собирает 7 тем в финальный дайджест по шаблону. Вот пример результата:

**VibeCoder Digest: 2-4 февраля**

За три дня разработчики обсуждали минималистичные AI-ассистенты,
инструменты дизайна и переход с no-code на Claude-автоматизацию.

**954 сообщений**

**🔥 Главные темы**

**1. Nanobot — 4000 строк против 400k**
Chelpindron и 👽 обсуждали легковесный AI-ассистент от исследователей
Гонконгского университета. На 99% меньше кода чем Clawdbot, работает
через Telegram и WhatsApp. [→](https://t.me/c/...)

**2. OpenClaw заменил n8n**
Eduard рассказал, как выпилил n8n и переехал на Claude-автоматизацию.
Парсер/скрапер за 3 минуты. [→](https://t.me/c/...)

Этап 4: VERIFY — проверка фактов (Haiku)

Haiku сверяет дайджест с исходными сообщениями. Результат для 2-4 февраля: 13 фактов подтверждены, 4 без источника, 1 галлюцинация поймана.

Галлюцинация: “OpenAI выпустил 6-й релиз Codex”. В исходнике была ирония — “в 6й раз 😂”. LLM прочитал как факт.

Про reply_to контекст

Telegram API возвращает reply_to_message_id. Добавляю текст родителя в данные для LLM.

{
  "sender": "Сережа Рис",
  "text": "Начинаю https://youtube.com/live/...",
  "reply_to": {
    "sender": "Сережа Рис",
    "text": "Сегодня в 19:00 — стрим про OpenClaw",
    "message_id": 39120
  }
}

Без reply_to: “Начинаю [URL]” → LLM додумывает тему. С reply_to: видит анонс → понимает что стрим про OpenClaw.

По-моему, это главное отличие от обычного RAG. Не просто семантический поиск, а структурные связи между сообщениями.

Почему субагенты

MapReduce — один из 12 паттернов AI-пайплайнов, которые я разбирал раньше. Anthropic писали про multi-agent для исследований. Та же логика для дайджестов:

Выводы

Субагенты решают Lost in the Middle. Haiku для анализа, Sonnet для сборки.

Reply_to контекст критичен — URL без описания иначе превращаются в галлюцинации.

Итого: ~$0.03 за дайджест, галлюцинации редки.

Код: tg-digest-opus

Подписаться на обновления — @sereja_tech