Сел я настраивать AI-комментатора для чужого крипто-блога, а закончил тем, что нарисовал контракт между двумя своими проектами и отменил кучу работы, которую чуть было не начал делать дважды. Если в одном предложении, то МАКО держит аккаунты и прокси, а Анима пишет в личку как человек. И понял я это не на доске с архитектурой и умным лицом, а прямо посреди рабочего разговора, когда дошёл до задачи «нужна штука которая сама общается в ЛС» и поймал себя на том, что описываю продукт, который и так уже строю. Дальше расскажу, как я туда дошёл, потому что путь тут интереснее вывода.
С чего всё началось
Была задача под крипто-блогера: нейрокомментинг, нейрочаттинг, массовые реакции — короче, чтобы под его постами и в чатах появлялась видимость живой движухи, и всё это через готовый сервис автоматизации для Telegram. Я зафиксировал все настройки, собрал launch-config с тремя персонажами — трейдер, скептик и аналитик, у каждого свой характер и три варианта bio под разные сценарии (прямая ссылка, группа-прокладка, автоответ). Промпты под комментинг и чаттинг с подстановкой текста поста и названия канала, всё аккуратно. На бумаге машина выглядела бодро.
А потом я полез в базу искать, где этой машине вообще работать, и вот тут начался цирк. Русскоязычных крипто-каналов с открытыми комментариями оказалось до обидного мало. Из почти девяти тысяч крипто-каналов в моей базе открытые комменты были всего у девяноста четырёх. Я отобрал двести штук на ручную проверку, из них реально крипто-релевантных набралось тридцать две, а крупных, на тридцать тысяч подписчиков и выше, и того меньше — шестнадцать. С чатами та же беда: спарсил шестьдесят семь, живых из них оказалось двадцать.
И что это за двадцать живых, тоже отдельная песня. Где-то уже сидит чей-то бот и душит всё на корню, где-то банят на втором сообщении, где-то один админ пишет сам с собой. То есть ты вроде построил систему, она готова молотить, а молотить-то особо негде, и каждый «живой» чат надо ещё руками перелопатить, чтобы понять, он живой или это труп с лампочкой. Вот тебе и автоматизация: чтобы ИИ что-то комментировал, я сначала сам перерыл двести каналов глазами.
Разворот на свой проект
Когда стало ясно, что под чужой блог нормального поля просто нет, я переключился на свой бот, чтобы прогнать всю механику без зависимости от заказчика. И вот тут картина другая: у меня в базе шестнадцать тысяч шестьсот восемьдесят два канала по регионам, две тысячи четыреста тридцать три только по европейской части. Есть где разгуляться, эту базу каналов я в своё время и выгружал отдельно. Собрал минимальный конфиг на старт, пять аккаунтов: два женских на чаттинг по восьми группам, три на комментинг по восьми каналам. Маленький управляемый кусок, чтобы проверить гипотезу, а не сразу палить по площадям.
По ходу теста и вылезла мысль, ради которой я, собственно, и пишу этот пост. Я понял, что отвечать-то надо не по ключевым словам, как примитивный бот, а почти на каждое сообщение, живо, в контексте, чтобы человек на той стороне не почувствовал робота. То есть мне нужна не отвечалка по триггерам, а штука, которая садится в личку и ведёт переписку как человек: подхватывает тему, помнит, что было выше, не палится дежурными фразами.
И вот в этот момент у меня щёлкнуло. Я сижу, формулирую задачу — «нужна штука которая сама в ЛС пишет и общается как человек» — и буквально на середине фразы ловлю себя: это же дословно то, чему я уже учу Аниму. Анима — мой AI-ассистент, который как раз и строится вокруг идеи отвечать вместо команды: в shadow-режиме сначала наблюдает и предлагает черновики, потом переходит к реальным ответам. Я про неё уже писал, как собрал три фазы за два дня. И тут я в рамках совсем другого проекта заново описываю ровно ту же машину.
Дублировать или состыковать
Дальше встал прямой вопрос: где вести эту переписку, внутри МАКО или дёргать Аниму? И тут два честных варианта, без хитростей.
Вариант А — сделать полноценный интерфейс переписки прямо в МАКО. Свой UI диалогов, своя генерация ответов, свой режим тренировки. Звучит логично, всё в одном месте, никаких внешних зависимостей. Но это значит построить второй раз то, что у меня уже построено в Аниме. Вариант Б — МАКО держит только то, что умеет лучше всего: аккаунты, сессии, прокси, само соединение через Telethon, а текст входящего сообщения отдаёт по API в Аниму, та генерит ответ и возвращает обратно. То есть МАКО — транспорт, Анима — мозг.
Я честно потоптался на месте, было ощущение «вроде и да, а вроде и нет». Соблазн всё засунуть в один проект всегда есть, кажется что так проще. Но когда я задал себе вопрос в лоб — в Аниме этот интерфейс уже есть, у неё и Telegram, и виджет давно работают, она уже добралась до девятой фазы, есть ли вообще смысл это дублировать? — ответ родился сам. Нет смысла. Дублирование — это не «подстраховка», это два места, где теперь будут жить баги, два места, которые надо одинаково развивать, и гарантированный момент в будущем, когда они разъедутся и поведут себя по-разному. Выбрал Б.
Граница между проектами легла сама, по тому, что каждый и так умеет. МАКО — это менеджер аккаунтов, добавление сессий и прокси, поддержание соединений, вот его зона. Анима — это переписка, обучение, shadow и real режим, голос. И самое приятное, что я это не высидел на этапе проектирования архитектуры с умным лицом, а нащупал руками, упёршись в реальную задачу. Сначала попытался построить MVP, споткнулся, увидел совпадение, и только потом провёл линию.
Где тут граница ответственности AI
Чтобы не было иллюзий: код я руками не пишу и не скрываю этого. Настройки сервиса, launch-config, парсинг базы по фильтрам, разбор вариантов архитектуры — всё это делал Claude Code под моим управлением, я тут оркестратор, а не машинистка. А вот стратегические решения, куда тащить фичу, отказаться ли от дублирования, какой контракт между проектами нарисовать, это уже моя зона, и тут я как раз ставлю под сомнение то, что мне предлагает ИИ. В тот вечер ИИ бодро согласился, что надо тащить интерфейс в МАКО, и был неправ, а правильным ответом стало «нет, не дублируем, состыковываем по API». Вот эта развилка ровно то, что человек пока решает лучше: не «как написать функцию», а «надо ли её писать вообще и где ей место».
Кстати, это типичная ловушка любой разработки с ИИ. Агент очень охотно строит то, что ты попросил, быстро и в нужном месте. Но он почти никогда не остановит тебя фразой «слушай, а ты это уже сделал в соседнем проекте, давай не будем второй раз». Связность между проектами держишь в голове ты. ИИ — отличный исполнитель и неплохой советчик по вариантам, но карту своих продуктов носишь ты сам, и именно ты замечаешь, что две задачи из разных проектов на самом деле одна задача в разных обёртках.
Цифры этой истории
- Почти 9К крипто-каналов в базе, открытые комментарии всего у 94
- 200 каналов проверил руками → 32 крипто-релевантных → 16 крупных (30К+ подписчиков)
- 67 спарсенных чатов → 20 живых (и те с оговорками)
- 16 682 канала по регионам в базе второго проекта, 2 433 по европейской части
- 5 аккаунтов на старт: 2 на чаттинг + 3 на комментинг
- 3 персонажа под крипто-сценарий, у каждого 3 варианта bio
- 2 варианта архитектуры на столе, выбран 1: МАКО — транспорт, Анима — мозг
Что я из этого вынес
Первое и главное: прежде чем строить новую фичу, посмотрите, не построили ли вы её уже где-то рядом. У соло-разработчика, который тянет несколько проектов параллельно, самая дорогая ошибка — не кривой код, а дважды решённая одна и та же задача. Код можно переписать за вечер, а вот два расходящихся продукта-близнеца будут жрать ваше внимание месяцами.
Второе: граница между проектами — это не то, что рисуют заранее на красивой схеме, это то, что проявляется, когда упираешься в конкретную задачу. Я не сел проектировать «как МАКО общается с Анимой», я сел настраивать чужого бота и через несколько развилок понял, где проходит линия. Иногда самый честный способ найти архитектуру — попробовать сделать в лоб и заметить, в каком месте начинаешь повторяться.
Третье, и это уже про ИИ как инструмент: он напишет вам что угодно и где угодно, но решение «надо ли это вообще и не дубль ли это» он за вас не примет. Это та часть работы, которую пока держит человек, и именно за неё, как мне кажется, в эпоху агентского кодинга и будут платить, не за строчки, а за то, чтобы лишние строчки не появились. Вот и делайте выводы.