AI-персоны, которые в Telegram говорят как люди

В стратегии привлечения клиента была проблема личного подхода. Сообщество росло через диалоги один на один — специалисты по outreach писали потенциальным участникам, отвечали на вопросы о программе по торговле и доводили их до регистрации. Это работало, но не масштабировалось. Каждый специалист мог вести максимум 30 диалогов в день, и качество дико плавало в зависимости от того, кто был на смене. Клиент хотел кратно увеличить мощность outreach без расширения штата — и разговоры должны были ощущаться искренне человеческими.

Стек

  • Python
  • Claude
  • Telegram
  • Redis

как мы построили

Мы построили систему агентов-персон, работающих как настоящие пользовательские аккаунты Telegram. Не бот-аккаунты — именно пользовательские, управляемые через Telethon, MTProto-клиентскую библиотеку. У каждого агента — своя персона: имя, разговорный стиль, конкретные границы знаний и набор тем, которые ему позволено обсуждать. Когда пользователь пишет агенту (или агент инициирует outreach), история разговора загружается из PostgreSQL и отправляется в Claude вместе с системным промптом персоны. Claude генерирует ответ, соответствующий тону персоны и не выходящий за её границы знаний. Ответ затем отправляется через Telethon как обычное сообщение Telegram — неотличимо от того, как печатает человек.

правдоподобное поведение

Сделать это правдоподобным требовало большего, чем просто хорошие промпты. Telegram активно отслеживает автоматизацию на пользовательских аккаунтах, поэтому агенты симулируют человеческие паттерны поведения: переменные задержки печати, рассчитываемые от длины ответа, время прочтения, циклы онлайн/офлайн-статуса и естественные паузы между сообщениями. Отправь ответ слишком быстро — Telegram пометит сессию. Отправь его без индикатора набора — пользователь почувствует подвох. Мы настраивали эти параметры несколько недель тестов, пока паттерны поведения не начали проходить и детектирование Telegram, и человеческую интуицию. Агенты также обрабатывают голосовые и изображения — голосовые ответы генерируются через TTS и отправляются как голосовые сообщения Telegram, а сообщения с картинкой анализируются перед генерацией контекстного текстового ответа.

Control plane работает на Redis pub/sub. Каждый агент подписывается на командный канал, где операторы могут выдавать директивы в реальном времени: поставить агента на паузу, вставить конкретное сообщение в разговор или полностью перехватить чат. Операторский перехват — одна из самых деликатных фич: когда человек-специалист берёт управление, AI-агент замолкает на этом разговоре, пока оператор печатает напрямую через тот же Telegram-аккаунт. Человек на другом конце не видит переключения. Когда оператор отпускает контроль, AI возобновляет работу с полной историей разговора, включая сообщения оператора, подгруженные в контекст.

безопасность и эксплуатация

Что удерживает систему в рамках — это слой ограничений в системных промптах Claude. У каждой персоны есть явные правила: отказываться обсуждать что-либо вне темы сообщества, никогда не выдумывать регалии или обещания, эскалировать на человека, если запрос пользователя выходит за компетенцию агента. Без этих границ Claude радостно скатится в финансовые советы или утверждения, создающие юридические риски. Мы тестировали это агрессивно — adversarial-промптинг, развороты в офтоп, эмоциональные манипуляции — и настраивали директивы отказа, пока процент сбоев не упал ниже того, что мы считали приемлемым. Это не ноль, поэтому каждый разговор логируется и может быть помечен.

Heartbeat-мониторинг следит за живостью агентов — каждый процесс агента шлёт пинг в Redis каждые 30 секунд, и watchdog флагает агентов, которые замолчали. Звучит как мелкая операционная деталь, но когда у вас работает десяток агентов на настоящих Telegram-аккаунтах, мёртвый агент означает, что реальный пользователь смотрит на статус «онлайн» без ответа. Архитектурный риск, который мы осознаём: Redis — единственная точка управления. Если Redis ляжет, агенты продолжат работать и отвечать — но станут неуправляемыми. Никакой паузы, никакого перехвата, никакой аварийной остановки. Митигация — локальный kill switch на процесс агента, но он требует SSH-доступа, а не клика в дашборде.

результаты

Результат: мощность outreach выросла примерно на порядок. Разговоры, ранее требовавшие человека от начала до конца, теперь требуют человеческого вмешательства только в крайних случаях — может, 10–15% тредов. Качество ответов, измеренное конверсией в членство сообщества, сравнимо с человеческим baseline. Более крупный урок в том, что сложная часть в построении AI-агентов — это не AI, а операционная инфраструктура вокруг него. Сгенерировать хороший ответ — это даже не входной билет. Контролировать, мониторить и восстанавливать флот автономных агентов, работающих на платформе, которая их не хочет, — вот где живёт настоящая инженерия.