Токарев Lab Все проекты

БотСвой продукт

ИИ-ассистент для рабочих групп в Telegram: помнит решения и находит нужное в переписке

Свой ИИ-ассистент, который сидит в рабочих группах с заказчиками и подрядчиками. Помнит, что решили и кто что обещал, ищет по сообщениям, файлам и голосовым и отвечает со ссылками на источник.

Сергей Токарев

Сергей ТокаревРазработчик проекта. Делаю похожее на заказ.

Ассистент рабочих групп

Зачем ассистент в рабочих группах

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

Telegram ищет только по словам в сообщениях. Внутрь PDF и голосовых он не заглядывает, а решения и обещания приходится выискивать глазами. Поэтому я сделал ИИ-ассистента, который сидит в группах вместе с людьми, помнит всё, что видел, и отвечает на вопросы по проекту.

Что умеет

  • Отвечает на вопросы по переписке: «что решили про макет», «что было вчера», «кто обещал прислать счёт и к какому сроку», «где скидывали ссылку». В ответе ссылки на исходные сообщения.
  • Ведёт журнал решений: решения, обещания с исполнителем и сроком, открытые вопросы и цифры проекта. Когда в группе наступает затишье, ассистент сам сверяет новые сообщения с журналом: что закрыли, что поменялось. Старое значение не стирается, а уходит в историю.
  • Подводит итоги обсуждения за период: что решили, что осталось открытым, кто что взял на себя.
  • Читает файлы: PDF, таблицы, документы и фото с текстом. Их содержимое попадает в поиск, поэтому на вопрос «сколько стоит онлайн-номинация» ассистент находит ответ внутри прайса, а не только в подписи к файлу.
  • Расшифровывает голосовые, а под длинными пишет короткое «Как я понял»: что человек сказал в контексте разговора, на что отвечал.
  • Открывает ссылки: файлы и папки с Яндекс Диска, а также сайты, которые собираются скриптами (Tilda, SPA), через настоящий браузер.
  • Помнит факты по команде: «запомни, что оплата после акта» сохраняется в заметки проекта.

Как подключается к группе

Бота добавляют в группу, а мне в личные сообщения приходит вопрос с кнопками:

  1. Ассистент: бот читает переписку и отвечает, когда к нему обращаются.
  2. Только слушать: ведёт журнал, но молчит.
  3. В существующий проект: если по проекту несколько групп, они объединяются в одно пространство с общим журналом и памятью.
  4. Выйти: бот покидает группу и больше не спрашивает.

Командой /ws в личке я вижу все пространства и переключаю настройки: кто может задавать вопросы (все участники или только я) и расшифровывать ли голосовые.

Каждая группа видит только своё

В группах сидят посторонние люди, поэтому главное требование: ничто из одного проекта не должно попасть в другой. Изоляция сделана в коде, а не просьбой к модели. Инструменты поиска и памяти собираются под одно пространство, у модели просто нет параметра, через который можно запросить чужую группу. Чтение файлов дополнительно ограничено по путям. Заказчик в группе проекта A не может ни спросить про проект B, ни найти его переписку.

Некоторые действия доступны только мне: переслать сообщения из одной группы в другую, написать в группу от имени бота, задать для проекта инструкции (о чём проект, кто есть кто, как отвечать). Если такое попросит участник группы, бот ответит, что это может только владелец.

Из чата сразу в работу

Когда в группе всплывает задача, которую нужно сделать у себя в коде, я пишу команду /mac с комментарием. Сообщения и вложения уходят в Claude Code на моём компьютере, а ответ возвращается в Telegram. Веб-сервера и лишних токенов для этого нет: передача идёт через SSH, который у меня и так настроен.

Как устроено

Python, aiogram 3 и Claude Agent SDK: в каждом чате работает своя сессия модели Claude с инструментами поиска, журнала и памяти. Если основная модель перегружена, запрос автоматически переходит на резервную. Простаивающая сессия закрывается через 30 минут, а при новом вопросе хвост переписки подмешивается обратно, так что контекст не теряется.

Журнал переписки хранится в файлах JSONL по месяцам: дописывать дёшево, и он переживает перезапуск. Текст из PDF достаёт PyMuPDF, с картинок его распознаёт Tesseract, голосовые расшифровывает Gemini через OpenRouter. Бот работает в Docker на моём сервере рядом с фермой ботов для маркетплейсов и использует общий с ними сервис рендера страниц.

Скриншоты

Ассистент рабочих групп: Как работает ассистент
Как работает ассистент
Ассистент рабочих групп: Вопрос в группе: «на какие вопросы я ещё не получил ответа?». Бот собирает их по темам и ставит ссылку на исходное сообщение
Вопрос в группе: «на какие вопросы я ещё не получил ответа?». Бот собирает их по темам и ставит ссылку на исходное сообщение
Ассистент рабочих групп: Сверка открытых вопросов: что осталось без ответа, что закрылось с прошлой проверки, со ссылками
Сверка открытых вопросов: что осталось без ответа, что закрылось с прошлой проверки, со ссылками
Ассистент рабочих групп: Ответ участникам группы: что бот умеет и чем полезен
Ответ участникам группы: что бот умеет и чем полезен
Ассистент рабочих групп: Расшифровка голосового: бот отвечает текстом на голосовое сообщение участника
Расшифровка голосового: бот отвечает текстом на голосовое сообщение участника
Ассистент рабочих групп: Управление в личке владельца: /ws показывает пространства и переключает режим, голосовые и кто может спрашивать
Управление в личке владельца: /ws показывает пространства и переключает режим, голосовые и кто может спрашивать
Ассистент рабочих групп: Профиль бота в Telegram с описанием и ссылкой на сайт
Профиль бота в Telegram с описанием и ссылкой на сайт

Частые вопросы

Видит ли бот переписку, которая была до его добавления?

Нет. Telegram не отдаёт ботам старую историю, поэтому журнал начинается с момента подключения к группе.

Могут ли участники одной группы узнать что-то из другой?

Нет. Поиск, журнал решений, память и файлы собираются под одно пространство, и в коде нет способа запросить чужую группу.

Можно ли сделать такого ассистента для своей команды?

Да. Его можно настроить под ваши группы и процессы: например, вести журнал задач для подрядчиков, собирать итоги планёрок или искать по договорам и прайсам.

Что будет, если бот ошибся в журнале решений?

Пункт поправляется словами прямо в чате: «пункт 3 закрыт» или «срок перенесли на пятницу». Предыдущее значение остаётся в истории.

Нужно ли отдельно настраивать бота под каждую группу?

Нет. Достаточно добавить его в группу и выбрать режим кнопкой. Инструкции для проекта можно задать позже, если нужно.

Нужно похожее?

Напишите, что хотите автоматизировать или сделать: отвечаю лично и быстро. Работаю по договору, цена фиксируется до начала. Как я работаю и сколько это стоит

Написать в Telegram MAX