Персональная система семейных знаний: Telegram-форум → локальный AI → Obsidian
О проекте
Family Atlas — персональная система управления семейными знаниями на базе локальных LLM. Система собирает голосовые, текстовые и медиа-сообщения из семейного Telegram-форума, обрабатывает их полностью локально и сохраняет структурированные Markdown-заметки в Obsidian vault.
Проект решает две задачи одновременно: реально полезный инструмент для семьи и портфельный проект, демонстрирующий практики AI Engineering — локальный инференс через llama.cpp, агентные системы на LangGraph, семантический поиск, structured output. Никаких облачных зависимостей — данные остаются дома.
Как работает
1. Сбор — Telethon Collector
Сбор сообщений из семейного Telegram-форума через Telethon. Четыре топика: diary, notes, task, calendar. Сообщения сохраняются в SQLite через async SQLAlchemy с группировкой в сессии по временному порогу.
2. STT — Распознавание речи
Голосовые транскрибируются через onnx-asr с моделью Parakeet TDT 0.6B v3. CPU-инференс через ONNX Runtime. Затем транскрипция нормализуется через GigaChat 3.1 10B — убираются слова-паразиты, расставляется пунктуация, сохраняется авторский стиль.
3. Vision — Описание фотографий
Фото описываются локальной мультимодальной моделью Qwen3-VL-4B через llama-server. Описание органично вплетается в контент сессии. Файл переименовывается по сгенерированному заголовку и сохраняется в vault.
4. Pass 1 — LangGraph Agent
LangGraph-граф из трёх нод: analyzer генерирует title, summary, tags, content, people_mentioned через structured output; find_relatives ищет связанные заметки через BM25 + cosine similarity + LLM verifier; db_updater сохраняет результат с embedding в SQLite.
5. Pass 2 — Obsidian Writer
Python-функция без LLM: детерминированно строит frontmatter и Markdown-файл, записывает по рассчитанному пути в vault. Для calendar-треда создаёт событие в Google Calendar и добавляет ссылку в файл. Для task — дописывает в еженедельный файл.
Архитектура
Агентная логика
Pass 1 · LangGraph + LLM
Pass 2 · Python · без LLM
Возможности
Транскрипция через Parakeet TDT 0.6B v3 (ONNX, CPU). Нормализация текста через GigaChat 3.1 — убираются паразиты, сохраняется авторский стиль.
Мультимодальная Qwen3-VL-4B описывает фото локально. Файл переименовывается, сохраняется в vault и вставляется в заметку через Obsidian embed.
Заметки, дневник (один файл на день), события с Google Calendar, задачи в еженедельном файле с чекбоксами и приоритетами.
Трёхуровневый каскад: BM25 по леммам → cosine similarity (LaBSE-ru-turbo) → LLM verifier. Связи оформляются как Obsidian wikilinks.
Определение автора по Telegram ID. Пересланные сообщения сохраняют атрибуцию оригинала — из личных чатов и публичных каналов.
Calendar-топик автоматически создаёт событие через Google Calendar API. Ссылка на событие сохраняется в frontmatter и теле заметки.
Технологии
Проект открытый, установка через uv sync
Открыть на GitHub →