|
Professor Seleznov
|

Программист спит, работа идет Всем привет! Хочу поделиться историей, как я решил попробовать сделать для себя тот самый саморазвивающийся ИИ-стартап и что из этого вышло. Начну с предыстории. В 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 разработки.-Источник
|