Skip to content

Latest commit

 

History

History
172 lines (114 loc) · 10.3 KB

ROADMAP.md

File metadata and controls

172 lines (114 loc) · 10.3 KB

Дорожная карта проекта

Проект в статусе «успешный прототип». Дальнейшее развитие — список идей и порядок реализации.

Общий прогресс: 7/17 пунктов (41%)


✅ Реализовано

Блок 1: Расширение источников (частично — 5/7)

✅ 1.1. Текст вместе со ссылкой

Извлекать ссылку из сообщения, даже если рядом есть текст. Текст игнорировать.

Реализация: bot.py — функция extract_url() успешно извлекает URL из смешанных сообщений.

✅ 1.2. Infostart

Добавить парсер для портала infostart.ru — статьи по 1С и интеграциям.

Реализация: scraper.py — полный парсер с поддержкой форматов /1c/articles/[ID]/ и /public/[ID]/, множественные селекторы для надежности. Добавлено в коммите 536258a.

✅ 1.3. Расширенный парсинг GitHub

Парсить не только README, но и другие .md файлы из репозитория: docs/, ARCHITECTURE.md, CONTRIBUTING.md и т.д.

Реализация: scraper.py — ищет README, ARCHITECTURE, CONTRIBUTING, DEVELOPMENT, SETUP, INSTALL, USAGE, API, CHANGELOG в корне и директории docs/. Добавлено в коммите 536258a.

✅ 1.5. Стабилизация моделей

Добавить проверку на доступность модели перед ответом с понятным логированием. Сейчас бот падает если модель недоступна.

Реализация: summarizer.py — функция check_model_availability() проверяет доступность Ollama и наличие OpenAI API ключа, выдает понятные сообщения об ошибках.

✅ 1.7. Лента и дайджест Хабра

Подписки на хабы, /feed за последние сутки и ежедневный дайджест за вчера: «Лучшее на Хабре» + «Твои хабы», листание «Ещё 10 ▶», полное саммари по кнопке. Статьи Хабра узнаются по номеру, у них сохраняются хабы и теги, для старых статей — фоновый бэкфилл.

Реализация: habr_api.py (клиент публичного API Хабра), habr_store.py, hubs.py, feed.py, digest.py, habr_backfill.py; в bot.py — команды /subscribe, /subscriptions, /feed, /digest, /digest_now. Выпущено тремя этапами.

Не входит: новости Хабра, подписки на теги, другие источники (Инфостарт, GitHub).


Блок 2: Система хранения ✅

✅ 2.1. Переход на SQLite

Замена файлового хранения на SQLite. Причины:

  • Изоляция данных по пользователям (user_id)
  • Связи между сущностями (статьи ↔ идеи)
  • Подготовка к RAG

Реализация: database.py — полноценная SQLite база данных с таблицами:

  • articles — статьи с метаданными
  • ideas — пользовательские идеи
  • idea_articles — связь статей с идеями, оценка релевантности, подтверждение пользователя

Блок 3: Система знаний

✅ 3.1. Идеи

Группировка статей по темам. Пользователь создаёт Идею, привязывает к ней статьи. Каждый пользователь видит только свои Идеи.

Реализация: bot.py + database.py — полный функционал:

  • /new_idea — создание новой идеи с названием и описанием
  • /ideas — просмотр списка идей пользователя
  • Привязка статей к идеям при обработке (автоматическое предложение)
  • Просмотр статей внутри идеи
  • Редактирование и удаление идей
  • Отвязка статей от идей

📋 Запланировано

Блок 1: Расширение источников (продолжение)

1.4. Arxiv + перевод

Парсинг PDF-статей с arxiv. Краткое изложение статьи. По запросу делается перевод статьи.

1.6. YouTube — транскрипция и пересказ

Извлечение транскрипции из YouTube-роликов и генерация пересказа.

Варианты реализации:

  • youtube-transcript-api — Python-библиотека для получения субтитров (если доступны)
  • yt-dlp + Whisper — скачать аудио и распознать через Whisper (для роликов без субтитров)

Особенности:

  • Субтитры бывают автоматические (YouTube) и авторские — приоритет авторским
  • Длинные ролики разбивать на чанки для суммаризации
  • Сохранять таймкоды ключевых моментов

Применение:

  • Технические доклады и туториалы
  • Подкасты и интервью по теме идеи

Блок 3: Система знаний (продолжение)

3.2. Парсинг кода из статей

При парсинге страницы анализировать контент на наличие блоков кода (теги <pre>, <code>). В базе данных отмечать булевым полем has_code, что статья содержит примеры кода.

Применение:

  • Для Хабра и InfoStart — основной источник технических статей с кодом
  • Оптимизация контекста при генерации дайджестов
  • Возможность фильтрации статей с кодом

3.3. Дайджест по Идее

Сбор всех статей, привязанных к Идее, и передача их в языковую модель для формирования обзора.

Алгоритм:

  1. Получить все статьи идеи из БД
  2. Для каждой статьи:
    • Если has_code = True: передать полный текст статьи (контекст важен для понимания кода)
    • Если has_code = False: передать только саммари статьи (экономия контекста)
  3. Сформировать промпт: «Проанализируй собранные материалы по теме X. Расскажи, можно ли применить собранную информацию на практике. Выдели статьи, которые нужно прочитать полностью.»

Ожидаемый результат:

  • Обзор прочитанных материалов
  • Рекомендации по применению
  • Приоритизация статей для самостоятельного изучения

3.4. RAG для Идей

Векторная база для каждой Идеи. Связка: SQLite хранит структуру и метаданные, векторная БД — поисковый индекс по эмбеддингам.


3.5. Вопросы к базе знаний

Возможность задавать вопросы по накопленной базе: «Какие подходы к RLHF я читал?», «Что писали про интеграцию 1С с LLM?»


Блок 4: Опционально

4.1. Анализ картинок

Анализ изображений из статей через vision-модель. Скриншоты с кодом — распознать и сохранить. Декоративные картинки — игнорировать.

4.2. Агент для постов

Формирование поста по статье, отправка на модерацию, публикация в Telegram-канал после согласования.


Блок 5: MCP-интеграция

5.1. MCP-сервер для Code Registry

MCP-сервер study-agent-code с инструментами для агентной работы с кодовой базой идей.

Tools:

  • list_idea_code(idea_id) — каталог сниппетов идеи (manifest)
  • get_snippet(snippet_id) — полный код сниппета с контекстом
  • search_code(query, idea_id?, language?) — поиск по коду/описаниям
  • get_idea_context(idea_id) — описание идеи + список статей

Зависимости: Требует реализации 3.2 (извлечение кода) в расширенном виде — отдельная таблица code_snippets.

Применение:

  • Агентная генерация кода на основе собранных примеров
  • Экономия токенов: модель запрашивает только нужный код
  • Особенно полезно для 1С — модели знают его плохо, нужен полный контекст

5.2. MCP для RAG (после 3.4)

После реализации RAG — MCP-tool для семантического поиска по базе знаний.


Отложено

Агентность и MCP

Не включено в roadmap как отдельный пункт. См. Блок 5.