Решение по задаче: «работаю в Cursor в 5 окнах → беру телефон → вижу те же сессии, читаю ответы в реальном времени, продолжаю работу параллельно». Погружение сделано — разобран код Vesker (кабинет, лента, слоты), проверено где физически живут сессии.
Cursor на Mac подключён к VPS по Remote-SSH — значит все сессии Claude Code физически крутятся на VPS, там же, где живёт Vesker. Плагин Cursor и бот читают один и тот же список сессий из одних и тех же файлов транскриптов в ~/.claude/projects/. Задача «синхронизировать Mac и телефон» — это НЕ задача доступа к данным, доступ есть весь.
Лимит Telegram убивает идею на корню: бот может слать в одну группу около 20 сообщений в минуту, а 5 параллельных сессий генерят десятки событий в минуту каждая. Либо лента отстаёт на минуты, либо Telegram банит отправку — «в реальном времени» физически не получится. Стриминг ответа (постоянное редактирование сообщения) бьёт по лимиту ещё жёстче. Плюс топики не умеют управление: свернуть инструменты, историю, pin, статусы — получится лог-помойка, а не рабочий инструмент.
Mini App — уже полноценный экран внутри Telegram: список, чат, стрим, кнопки — всё есть. Telegram остаётся тем, что умеет лучше всех — доставлять пуш: «агент закончил» / «агент ждёт решения» с кнопкой, которая открывает ровно ту сессию. Эта связка уже частично работает («✅ Агент закончил» с deep-link) — её и развиваем. Строим не с нуля — вычищаем и пересобираем фасад поверх ~70% готового бэкенда.
| Кусок | Статус |
|---|---|
| Общий источник сессий (VPS, те же файлы что у Cursor) | ✅ есть |
| Список сессий по всем рабочим папкам + статусы | ✅ есть (cabinet.py) |
| Чат в сессии: история, стрим, подтверждения, вложения | ✅ есть |
| Live-подглядывание любой сессии (лента 1.6 с) | ✅ есть |
| Продолжение Cursor-сессии ботом (тот же контекст) | ✅ есть (adopt) |
| Переименование, синхронное с Cursor | ✅ есть |
| Pin / скрыть в базе | ✅ есть, не выведено в UI |
| Пуш «закончил» с deep-link | ✅ есть |
| Фильтр мусора (метки + классификатор) | 🔨 строить |
| Наследование имени/избранного при продолжении с телефона | 🔨 строить |
| Пуш «ждёт решения» | 🔨 строить |
| Новый фронт: 3 вкладки, чат-парадигма | 🔨 строить (редизайн) |
| Режим «наблюдатель», когда сессия активна в Cursor | 🔨 строить |
8 кусков готовы, 5 — строить. Готовое покрывает основной цикл (список · чат · live · continuation), строить — фильтрацию мусора, редизайн фасада и «наблюдатель»-режим для параллельной работы.
Открываешь Mini App — и вместо «мои 5 сессий» получаешь 4 вкладки (Сегодня / Проекты / Кабинет / Инбокс), хотя под сценарий «взял телефон, продолжаю работу» нужна фактически одна. Кабинет делит сессии на 4 зоны (требуют / работают / готово / тихие) — умно, но на телефоне это визуальный шум. В списке всё подряд: реальные сессии из Cursor вперемешку с техническими (headless-раннеры, служебные слоты бота, мёртвые сессии недельной давности) — на 25 последних сессий примерно треть не рабочие. Плюс дубли смысла: «Сессии» (плоский список) и «Кабинет» (те же сессии зонами) показывают одно и то же по-разному.
Весь мобильный Vesker = Сессии · Чат · Избранное. Вкладки Сегодня/Проекты/Инбокс убираются из мобильной навигации (бэкенд остаётся, вернём отдельным экраном «Ещё», если понадобится).
Чистый список — ровно те сессии, что видно в плагине Cursor, отсортированы по свежести. Карточка: имя (переименование синхронизировано в обе стороны) · статус-точка · проект/папка · время активности · бейдж непрочитанного.
Статусы просто: 🟢 работает · 🔴 ждёт тебя · ✅ закончил, не просмотрено · ⚪ тишина.
Фильтрация мусора (сердце вкладки), три слоя: (1) метка у своих — все автоматические запуски помечаются техническими при старте, в чистый список не попадают вообще; (2) классификатор для чужих/старых — сигнатуры технических промптов + однодневки без диалога → автоматически в «технические»; (3) ручной резерв — свайп/кнопка «скрыть» (поле в базе уже есть). Внизу — тумблер «показать технические», по умолчанию выключен.
Открыл сессию — попадаешь в чат как в мессенджере. Вкладка всегда держит последнюю открытую сессию. История хода: сообщения, ответы агента, инструменты свёрнуты в одну строку («🔧 читает README.md»), разворачиваются по тапу. Реальное время: пока агент работает в Cursor — на телефоне видно то же самое с задержкой ~1.5–2 секунды. Поле ввода снизу + голосовой ввод (STT уже есть).
В один момент времени сессией управляет один процесс. Если сессия активна в Cursor — телефон в режиме наблюдателя: всё видно live, но поле ввода показывает «▶ сейчас идёт в Cursor — смотри или дождись конца хода». Как только ход закончен (большинство случаев, когда телефон берут и уходят) — пишешь с телефона, бот продолжает тот же контекст той же сессии. Продолжение пишется в те же транскрипты — вернувшись за Mac, эта ветка видна в плагине Cursor. Имя, проект и «избранное» переезжают на продолжение автоматически — для тебя это одна непрерывная сессия.
Закрепляешь 3–4 главные сессии (долгий тап/⭐, поле pinned в базе уже есть). Крупные карточки: имя, статус, последнее событие («🏁 закончил: собрал отчёт по…»), кнопка в чат. Это «рабочий стол» на телефоне — открыл, за 3 секунды понял, где что происходит.
✅ «Агент закончил» → кнопка-переход в сессию — уже работает. 🔴 Новый: «Агент ждёт решения» (вопрос/подтверждение) → тот же переход — самый ценный пуш для параллельной работы, телефон дёргает только когда без тебя никак. Пуши шлются только по избранным + сессиям, открытым сегодня, — чтобы технический фон не спамил.
Каждая фаза самостоятельно полезна и выкатывается отдельно; бот в проде, откат на каждом шаге через git.
Оценки долей — «~70% бэкенда готово», «~треть мусора из 25 сессий», сроки по фазам («~1 день», «~2–3 дня») — это оценка по коду и наблюдению, не хронометраж или A/B-тест. Классификатор мусора (слой 2) эвристический — узнаваемые сигнатуры и однодневки без диалога; ложные срабатывания возможны, поэтому обязателен ручной резерв (слой 3, свайп «скрыть»).
Также явно НЕ предлагается: канал/супергруппа с топиками (см. вердикт — тупик по лимитам Telegram); отдельный сайт-дашборд вне Telegram (плодит второй вход и логин, Mini App уже открывается одной кнопкой); трогать вкладки Сегодня/Проекты/Инбокс на уровне бэкенда — только убрать из мобильной навигации.