Дизайн-спека · 13 июня 2026

tg-claude-bot v3 — следующий мерс

Карманный Claude Code: один непрерывный мощный агент на тред, который тянет большие задачи, продолжается после рестарта, возвращает результат субагентов в диалог и подхватывает сессии из Cursor.

Заменяет двухскоростной ассистент v2. Полный текст спеки — в репозитории: projects/tg-claude-bot/plans/2026-06-13-v3-design.md

Почему текущий бот ломается

Два разорванных мозга, которые не делят память. Быстрый на Haiku — живой, но только читает: диспетчер, не работник. Тяжёлый на Sonnet — наоборот мощный, но одноразовый: запустился в фоне, отработал, прислал сообщение и умер. Его живой контекст уничтожается.

Единственная ниточка обратно — текстовая записка до 1800 символов, живёт только в памяти процесса и теряется на рестарте.

Из этого ровно та боль, что ты почувствовал:

Главное: «оторванные субагенты» — это архитектурный баг, а не предел SDK. SDK возвращает финал субагента родителю дословно. Чиним конструкцией.


Твои четыре решения — рамка

Масштаб: полный новый мерс Лицо: Mini App дашборд Cursor-мост: в v1 Биллинг: только подписка

✅ P1–P3 уже живые в боте (13 июня). Непрерывный Opus-агент на тред с продолжаемыми сессиями, субагенты с возвратом результата, и Cursor-мост (бот видит и продолжает твои desktop-сессии). Проверено в реальном Telegram. Дальше — P4 (UX чата) и P5 (Mini App).

Целевая архитектура

1 · Один непрерывный агент на тред

На каждый тред (личка или топик) — один постоянный живой клиент в streaming-режиме. Это и есть главный собеседник: Sonnet по умолчанию, Opus по тумблеру. Пишет код, правит файлы, гоняет команды, тянет skills. Haiku больше не диспетчер — он и был горлышком.

2 · Сессии и продолжаемость

Ловим идентификатор сессии, храним карту «тред → сессия» в базе. Продолжить = поднять ту же сессию с полным прошлым контекстом. Транскрипты лежат на диске и переживают рестарт бота — на старте бот сам переаттачивается.

3 · Субагенты с возвратом результата ← фикс разрыва

Субагенты крутятся внутри цикла главного агента, а не отдельным процессом. Их финал возвращается родителю сам. Хуки на старт/финиш пушат живую карточку и сохраняют ссылку на субагента — потом можно продолжить именно его.

4 · Cursor-мост

Сессии Cursor и Claude Code лежат в том же формате на диске. Бот видит их списком, показывает с названием и веткой, по тапу продолжает прямо в треде Telegram.

5 · Прерывания и подтверждения

Стоп больше не убивает контекст — гасит текущий ход, сессия жива. Можно докинуть сообщение по ходу работы. Необратимое — кнопки да/отмена, могут висеть сколько нужно. Для долгого ожидания человека процесс умеет выйти и подняться по тапу.

6 · Лицо: Mini App + чат

Telegram Mini App — живая доска задач, сессий и артефактов, выбор проекта, аппрувы. В чате — нативный стриминг вместо рывков, само-очищающиеся карточки статуса, длинное уходит на отдельную страницу.

7 · Всё в базе

Треды, задачи, субагенты, артефакты — в SQLite. Пишется до старта работы, переживает рестарт.


Как строим — пять фаз

1

Ядро: непрерывный агент + сессии

Фундамент. Убирает разрыв «двух мозгов».

2

Субагенты с возвратом + задачи

Прямой фикс «не вижу ответы субагентов».

3

Cursor-мост

Продолжать работу, начатую в Cursor.

4

Апгрейд чата

Нативный стриминг, карточки, прерывания, аппрувы.

5

Mini App дашборд

Лицо нового бота.

Фазы 1 и 2 закрывают боль. Третья — фича. Четвёртая и пятая — лицо. Каждая мёржится отдельно, v2 остаётся мгновенным откатом.


Что подтвердить перед стартом

  • Cursor крутится через Remote-SSH на VPS? Тогда сессии на диске VPS и мост читается напрямую. Если на Маке — пойдём через mac-control, это сложнее.
  • Главный агент по умолчанию Sonnet, Opus по тумблеру — ок под квоту подписки, или хочешь Opus по дефолту.
  • Порядок фаз: сначала боль, потом фича, потом лицо. Если хочешь Mini App раньше — переставлю.

Источники ресёрча: Claude Agent SDK docs (sessions / subagents / streaming / hooks / session-storage) · Telegram Bot API · прифор-арт RichardAtCT/claude-code-telegram (2.7k★), linuz90, AllTheMachines/gsd.