October 6

Автоматизация лидогенерации в деловой соцсети: как мы заменили проприетарный AI-рантайм своим

Мы заменили проприетарный AI-рантайм своим — и чужая автоматизация ожила на нашем стеке.

Иногда самая сложная часть проекта — не написать своё, а запустить чужое. Мы получили готовый комплект автоматизации лидогенерации для деловой соцсети: код, установщик, база, системные службы, встроенный «инженер» для самовосстановления. Всё бы хорошо, но комплекс требовал конкретный закрытый AI-агент, которого у нас не было.

Мы не стали отказываться от системы. Мы разобрали её контракт и написали собственный рантайм, который её обслуживает.

Что делает эта автоматизация

Система ведёт исходящие касания с потенциальными клиентами в деловой соцсети по цепочке из четырёх шагов:

  • Комментарий — осмысленная реакция под постом потенциального клиента;
  • Реакция — фиксация и удержание контакта;
  • Подписка — закрепление в ленте человека;
  • Личное сообщение — персональное обращение по подготовленному шаблону.

Плюс квалификация кандидатов (кто вообще подходит), несколько источников поиска аудитории, суточная квота на завершённые цепочки и защита от повторных действий. Всё работает через реальный браузер, под личным аккаунтом владельца, с человеческими паузами и лимитами.

Камень преткновения: закрытый «мозг»

Комплексу был нужен конкретный AI-агент: установленный от root, с настроенной моделью, доступом к терминалу и отдельным инструментом анализа изображений (он один раз проверяет фото профиля). Без него установка доходила только до состояния «собрано и остановлено».

Вариант «поставить заглушку» мы отмели сразу: установщик бы прошёл, а живой запуск всё равно упёрся бы в реальные вызовы агента. Нужен был рабочий рантайм, а не имитация.

Решение: свой рантайм под чужой контракт

Мы разобрали, как система вызывает агента, и собрали собственный, совместимый до последней детали:

  • Agentic loop поверх доступного модельного API — тот же интерфейс, который ожидает система;
  • Набор инструментов: терминал, файловые операции и анализ изображений — ровно то, что требуется контрактом;
  • Сессии с возобновлением — агент продолжает работу между запусками, а не начинает с нуля;
  • Финальный вердикт в точном формате, который парсит автоматизация, — чтобы для неё ничего не изменилось.

Со стороны системы это тот самый агент. Со стороны — наш код, наш провайдер, наш контроль.

Сеть и вход без лишних зависимостей

Исходящий трафик система жёстко направляет через локальный мост. Вместо внешнего платного прокси мы подняли собственный канал исходящего трафика — цепочка «браузер → мост → шлюз» работает, лишние платные сервисы не нужны.

Вход в аккаунт — отдельная история и сознательная человеческая граница. Мы оставили ручной вход в реальный браузер через удалённый виртуальный экран: телефон, SMS, капчу человек проходит сам, руками. Код не подбирает данные и не «доказывает» вход, если его не было.

Дисциплина и безопасность

Автоматизация исходящих касаний без дисциплины превращается в спам и баны. Поэтому в системе заложено:

  • суточная квота и человеческие паузы между действиями;
  • защита от дублей — один контакт не получает касание дважды;
  • один активный экземпляр на аккаунт — никаких параллельных «владельцев»;
  • встроенный инженер: раз в час проверяет систему и чинит известные технические сбои, сохраняя прогресс между сессиями.

Что уже проверено на практике

  • целостность комплекта подтверждена (231 файл, хэши сходятся);
  • установка собрана и переведена в состояние «на паузе»: схема, миграции и все рабочие источники на месте;
  • зависимости браузерной автоматизации подняты и работают;
  • наш рантайм проверен со всеми инструментами, включая анализ изображений и возобновление сессий;
  • ручной вход через виртуальный экран поднимается;
  • сетевая цепочка от браузера до площадки отвечает корректно.

Живые шаги — авторизация и активация — выполняются уже по аккаунту владельца, это сознательная граница человека, а не техническая проблема.

Контринтуитивный вывод

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

Что это значит для вас

Если у вас есть автоматизация, завязанная на конкретный закрытый сервис, и он стал дорогим, недоступным или ограничивает — это не всегда значит «переписывать всё». Иногда достаточно разобрать контракт и поставить свой совместимый компонент.

Мы делаем такие вещи под ключ: интеграции, замену закрытых зависимостей, автоматизацию исходящих процессов с человеческими границами и дисциплиной по лимитам.

Короткие ответы на частые вопросы

Это работало вживую? Система собрана и проверена до живого запуска; активация выполняется по аккаунту владельца и требует его ручного входа.

Насколько это безопасно для аккаунта? Квоты, паузы, анти-дубли и один экземпляр на аккаунт — автоматизация удерживается в рамках разумного поведения.

Можно заменить закрытый сервис в моей системе? Часто да. Напишите, что за система и какой компонент завязан на вендора, — разберём контракт и предложим решение.