Всем привет!
Хочу поделиться историей, как я решил попробовать сделать для себя тот самый саморазвивающийся ИИ-стартап и что из этого вышло.
Начну с предыстории. В 2022 году я переехал в Грузию, в Батуми. Здесь я практически сразу начал учить язык, и мне захотелось чуть упростить себе этот процесс — сделать это я решил с помощью своего Telegram-бота. Почему бота? Всем известно, что материал усваивается быстрее и проще, если не садиться за него раз-два в неделю, а стараться изучать что-то небольшое каждый день. Тут мне бы очень помог Duolingo. Но там грузинского нет, хотя есть клингонский. Короче, было решено сделать свой Duolingo из Telegram-бота, только для грузинского.
Сначала получилось что-то совсем простое: перевести / сохранить слово / устроить с новыми словами квиз. Долгое время этого функционала мне хватало, и бот я не развивал, но вот решил попробовать автоматизировать его при помощи современных LLM. Идея была такая — ночью агенты кодят. А утром я читаю чейнджлог и наслаждаюсь новыми функциями. Что получилось на деле — можно почитать под катом.
Создание мини-аппа голосом
Основу миниаппа я решил накидать сам. Под пристальным присмотром самого себя в качестве разработчика, тестировщика, продакта и дизайнера. Наладил связку Claude Code со своим Telegram, добавил обработку голосовых, которых по умолчанию в Claude Code интеграции нет.
Если интересно — плагин для обработки голосовых вот тут. Может работать через локальные модели для распознавания голоса.
В итоге за воскресенье, 12 апреля, я буквально надиктовал себе мини-апп. За пару-тройку голосовых сообщений — вышел на более-менее норм дизайн.
Это все можно было тестировать прямо сразу в телеге. При всем при этом я не сидел за компом — а гулял, наслаждался морским видом и вот это все.
Жена, правда, была не очень довольна тем, что раз в 30 минут я внезапно кидался диктовать ИИшке подправить ту или иную кнопку. Понимаю. Но о такой штуке, которая бы сразу делала все, что я говорю и хочу, я с детства мечтал и пообещал, что, как наиграюсь, баланс будет найден. Пока не наигрался. Это, правда, очень круто ощущается!
Бот тем временем из просто миниаппа с переводом слов и простенькими квизами начал превращаться в масштабный курс грузинского с отдельными блоками изучения числительных, глаголов в разных временах, словам на все случаи жизни, псом-маскотом Бомборой и дизайном с элементами древней грузинской эмали (ух!!)
Подход 1 — один агент, ручной запуск (14 апреля)
В какой-то момент я понял, что, даже если я буду ходить и диктовать Claude, что делать, в какой-то день это все же станет утомительным. Сам я свой грузинский Duolingo — Tralebot в Telegram — всегда развивал по остаточному принципу. Поэтому быстро придумал, как можно автоматизировать разработку: это должен был быть скрипт в докере с клод-кодом и кроном. Скрипт ночью выкачивает репо, получает последние апдейты и вызывает агента. Утром приложение запускается локально, и я могу протестировать, что вышло:
Стартовал я 14 апреля с одного-единственного агента — продакта. Без крона, без ветки, без PR. Просто запускал вручную и смотрел, что он наресерчит по бэклогу.
Очевидно, что чуда не случилось. Агент что-то там нагенерил, но в репо ничего не появилось. Нужна была полноценная цепочка.
Подход 2 — линейная цепочка (16 апреля)
Подключил в помощь к продакту ещё двух ИИ-агентов: методиста, который должен был следить за педагогической корректностью уроков, и техлида, который присматривал бы за архитектурой и рефакторингом.
Настроил крон так, чтобы все запустилось, и пошел спать в ожидании чуда.
Снова неудача. Утром ни одного пулрека не открылось. Уже не помню, что там не запустилось. Но в итоге я пофиксил это дело, дернул руками еще раз и стал смотреть, что получилось.
Результат был сносный. Но многие шероховатости нужно было смотреть самому, и ручками убеждаться, что все ок. Было много подвешенного кода, который сгенерился, но никуда не подключился. Что особенно мне не понравилось — фактологические ошибки в некоторых уроках. Слова кое-где с грузинского переводились то на английский, то на русский. А еще в занятиях было много моментов, где тупо некорректно давались объяснения.
На утро 16 апреля я получил отчет, что методист нашел кучу ошибок. И я обрадовался, потому что именно их я и находил сам. Но когда я открыл приложение на дев-стенде, то всех этих правок там не увидел.
Оказалось, что методист генерил ишьюсы на гитхабе. Но ни агент-разработчик, ни агент-продакт, ни вообще какой-либо из ИИ-работничков не смотрели в них. И отчаянно всё это пропускали. Окей, поправил инструкции.
Подход 3 — ночной конвейер (17–18 апреля)
Тут был большой редизайн. Я добавил агентов, которых не хватало: разработчика, QA, вернул дизайнера отдельным слотом. А главное — сделал общую ночную ветку agents/nightly-YYYY-MM-DD, чтобы все агенты видели результаты работы предыдущих. Плюс настроил крон на каждый час — за ночь прогонялся полный цикл.
Этот ночной прогон я уже ждал. Попросил продакта сгенерировать мне две механики, которые мне показались важными: рефералки для знакомых и тамагочи-механику, которая позволяет тратить заработанный на занятиях опыт на кормление маскота Бомборы.
Дело в том, что я не очень хочу, чтобы у меня прилка токсично просила пользователей зайти в нее и что-то сделать. Но небольшую приятную мотивацию на заход все же хочется дать. Ну и я сам очень хотел просто в это все поиграться.
Ночь отработала. Вроде, по перечисленным таскам в пулреках все, что я просил, должно было быть сделано. Но опять в интерфейсе я ничего не нашел. Нашел какие-то финтифлюшки в виде прогресса по словарю в профиле, небольшие улучшайзеры, но не две самых главных для меня фичи. По коду при этом валялись тут и там обрубки таблиц и эндпоинтов того, что нужно было сделать.
В чем была проблема. У каждого агента было ограниченное количество итераций. Агент мог начать что-то делать и оборваться на полпути. В следующий прогон агент просыпался, брал уже следующую таску и ее тоже мог не довести до конца. Разобравшись в этом всем, я разжал количество итераций в два раза — стало лучше.
До появления общей ветки была ещё другая проблема. 8 ночных прогонов генерировали 8 пулл-реквестов в разные ветки. Чтобы их проверить, я просил агента смержить 8 веток в одну. Это занимало время и приводило к тому, что первый прогон обновлял роадмап, но второй прогон этого не видел, потому что почковался от main. Общая ночная ветка это решила.
В целом 18–19 апреля я потратил ещё пару часиков на допиливание пул-реквеста. Но уже ощущалось ближе к тому, что я хотел — чтобы за меня все писали и придумывали агенты, а я не вмешивался не только в разработку, но и в генерацию идей по улучшению миниаппа.
Подход 4 — носитель языка в параллель (19 апреля)
Несмотря на то, что агент-методист время от времени ловил педагогические ошибки, оставалась проблема с самим грузинским. Методист — не носитель языка, поэтому он периодически пропускал ошибки перевода, неправильные падежи, неестественные конструкции в занятиях. Добавил нового агента — native-reviewer, билингвального ревьюера, который работает параллельно с методистом: оба читают контент независимо, но первый смотрит педагогику, второй — грамотность при использовании грузинского, естественность конструкций и так далее.
Уже утром 20 числа я просто посмотрел, что поменялось, попросил удалить одну фичу которая мне показалась лишней (меняющийся каждый день блок с днем недели на грузинском под иконкой профиля — выглядело как ненужное нагромождение),и в остальном слил как есть. Прогресс!
Подход 5 — три ревьюера + tech-lead дважды (21 апреля, текущая версия)
К этому моменту стало ясно, что дизайнер тоже не обязан ждать, пока отработает продакт. Он может параллельно с методистом и нативом смотреть на интерфейс миниаппа и контрибьютить свои идеи через issues. А формальные дизайн-спеки нужны только для больших фич.
Второе изменение — tech-lead разделился на два слота. Первый (breakdown) идёт до разработчика: декомпозирует задачи и пишет acceptance criteria. Второй (review) идёт после QA — ревьюит архитектуру на готовом коде и открывает needs-fix issues на регрессии.
Один PR в день. С 01:00 до 08:00 по Батуми каждый час крутится вся цепочка, в 09:00 QA-скрипт открывает один-единственный PR с категоризированным описанием.
-
За все эти дни ночью, пока я спал агенты написали кучу полезных фич
-
Сделали около 20 учебных модулей: времена, глаголы, местоимения
-
Упражнения на аудирование
-
Тамагочи-механику с кормлением маскота и магазином вкусняшек
-
И в целом полностью подготовили минимальный набор фич для раскатки на пользователей
Надеюсь, что не подсунули мне где-то там клингонский между строк. 🙂
Выводы
Думаю, что на каких-то таких некритичных проектах сейчас уже можно настроить все так, чтобы они развивались сами по себе. Основной вопрос в том, сколько токенов вы на это готовы тратить. Пока я не уперся в лимиты, но за пять дней исчерпал 80% недельной квоты (использовал Claude Opus 4.6) и решил остановиться, чтобы хватило на остальные нужды. Но опять же — тут пайплайн написан втупую и без различных оптимизаций. Думаю, что можно еще раза в два сократить потребление токенов.
Неожиданная проблема, которую я сейчас наблюдаю — я просто не успеваю столько фич осваивать. Мне как пользователю как будто не нужна такая огромная скорость. Хотя может, если дать агенту больше возможностей — умение генерить аудио и видео, фичи будут поинтереснее и будут работать на качество и разнообразие материала, а не просто на количество.
Что планирую сделать дальше
После прогона 20 апреля я понял, что все же пока не могу пустить на самотек эту работу полностью. Как и в реальных компаниях, хочу чтобы продакт согласовывал стратегию рабочего спринта со мной. Думаю сделать так, чтобы продакт присылал мне наресерченное им с дизайнером и методистом и давал оценить то, что он хочет сделать за ближайшую ночь. В общем это классический shift-left, до которого я дошел за неделю. Начал с того, что мол приносите мне финальный результат. А закончил тем, что хочу именно смотреть на ранние этапы.
Многое еще можно тут рассказать, но это уже в следующих статьях. Но если что Tralebot у меня открытый, так что вы можете посмотреть на развитие проекта сами вот тут.
Ну и небольшие апдейты по этому проекту буду постить в телеграм канал, который мы ведем с моим другом @sagos95 энтузиастом AI разработки.
ссылка на оригинал статьи https://habr.com/ru/articles/1033112/