Зачем ассистент в рабочих группах
По каждому проекту у меня рабочие группы в Telegram с заказчиками и подрядчиками. В них быстро копятся сообщения, файлы и голосовые. Через месяц уже трудно вспомнить, на какой цене сошлись, кто обещал прислать макет и к какому сроку, где лежит договор.
Telegram ищет только по словам в сообщениях. Внутрь PDF и голосовых он не заглядывает, а решения и обещания приходится выискивать глазами. Поэтому я сделал ИИ-ассистента, который сидит в группах вместе с людьми, помнит всё, что видел, и отвечает на вопросы по проекту.
Что умеет
- Отвечает на вопросы по переписке: «что решили про макет», «что было вчера», «кто обещал прислать счёт и к какому сроку», «где скидывали ссылку». В ответе ссылки на исходные сообщения.
- Ведёт журнал решений: решения, обещания с исполнителем и сроком, открытые вопросы и цифры проекта. Когда в группе наступает затишье, ассистент сам сверяет новые сообщения с журналом: что закрыли, что поменялось. Старое значение не стирается, а уходит в историю.
- Подводит итоги обсуждения за период: что решили, что осталось открытым, кто что взял на себя.
- Читает файлы: PDF, таблицы, документы и фото с текстом. Их содержимое попадает в поиск, поэтому на вопрос «сколько стоит онлайн-номинация» ассистент находит ответ внутри прайса, а не только в подписи к файлу.
- Расшифровывает голосовые, а под длинными пишет короткое «Как я понял»: что человек сказал в контексте разговора, на что отвечал.
- Открывает ссылки: файлы и папки с Яндекс Диска, а также сайты, которые собираются скриптами (Tilda, SPA), через настоящий браузер.
- Помнит факты по команде: «запомни, что оплата после акта» сохраняется в заметки проекта.
Как подключается к группе
Бота добавляют в группу, а мне в личные сообщения приходит вопрос с кнопками:
- Ассистент: бот читает переписку и отвечает, когда к нему обращаются.
- Только слушать: ведёт журнал, но молчит.
- В существующий проект: если по проекту несколько групп, они объединяются в одно пространство с общим журналом и памятью.
- Выйти: бот покидает группу и больше не спрашивает.
Командой /ws в личке я вижу все пространства и переключаю настройки: кто может задавать вопросы (все участники или только я) и расшифровывать ли голосовые.
Каждая группа видит только своё
В группах сидят посторонние люди, поэтому главное требование: ничто из одного проекта не должно попасть в другой. Изоляция сделана в коде, а не просьбой к модели. Инструменты поиска и памяти собираются под одно пространство, у модели просто нет параметра, через который можно запросить чужую группу. Чтение файлов дополнительно ограничено по путям. Заказчик в группе проекта A не может ни спросить про проект B, ни найти его переписку.
Некоторые действия доступны только мне: переслать сообщения из одной группы в другую, написать в группу от имени бота, задать для проекта инструкции (о чём проект, кто есть кто, как отвечать). Если такое попросит участник группы, бот ответит, что это может только владелец.
Из чата сразу в работу
Когда в группе всплывает задача, которую нужно сделать у себя в коде, я пишу команду /mac с комментарием. Сообщения и вложения уходят в Claude Code на моём компьютере, а ответ возвращается в Telegram. Веб-сервера и лишних токенов для этого нет: передача идёт через SSH, который у меня и так настроен.
Как устроено
Python, aiogram 3 и Claude Agent SDK: в каждом чате работает своя сессия модели Claude с инструментами поиска, журнала и памяти. Если основная модель перегружена, запрос автоматически переходит на резервную. Простаивающая сессия закрывается через 30 минут, а при новом вопросе хвост переписки подмешивается обратно, так что контекст не теряется.
Журнал переписки хранится в файлах JSONL по месяцам: дописывать дёшево, и он переживает перезапуск. Текст из PDF достаёт PyMuPDF, с картинок его распознаёт Tesseract, голосовые расшифровывает Gemini через OpenRouter. Бот работает в Docker на моём сервере рядом с фермой ботов для маркетплейсов и использует общий с ними сервис рендера страниц.
Скриншоты







Частые вопросы
Видит ли бот переписку, которая была до его добавления?
Нет. Telegram не отдаёт ботам старую историю, поэтому журнал начинается с момента подключения к группе.
Могут ли участники одной группы узнать что-то из другой?
Нет. Поиск, журнал решений, память и файлы собираются под одно пространство, и в коде нет способа запросить чужую группу.
Можно ли сделать такого ассистента для своей команды?
Да. Его можно настроить под ваши группы и процессы: например, вести журнал задач для подрядчиков, собирать итоги планёрок или искать по договорам и прайсам.
Что будет, если бот ошибся в журнале решений?
Пункт поправляется словами прямо в чате: «пункт 3 закрыт» или «срок перенесли на пятницу». Предыдущее значение остаётся в истории.
Нужно ли отдельно настраивать бота под каждую группу?
Нет. Достаточно добавить его в группу и выбрать режим кнопкой. Инструкции для проекта можно задать позже, если нужно.





