Фича с Claude заняла у меня столько же, сколько заняла бы руками. Сам виноват
Да, я выпускаю итоги стрима почти через неделю. Вы меня поймали - зашел в репу FastStream, и не смог выйти. Сейчас активно готовим 1.0 релиз, поэтому нет времени писать посты🥲
В прошлую субботу я почти 3 часа вайбкодил фичу в прямом эфире. Конфиги для брокеров в FastStream - issue, которую я сам завел год назад и не трогал. Потому что она, сука, сложная.
Прошла неделя. PR все еще в драфте, и мне предстоит еще много работы.
Сначала про цифры
• 36 минут и 150к токенов были потрачены только на гриллинг. Это фаза, где агент задает вопросы, а я отвечаю • 100к токенов - только на то, чтобы он прочитал кодовую базу перед первым тикетом • 12 тикетов, 42 коммита, +8412/-1076 в 197 файлах
Где я сам налажал
1. Надо было сразу делать wayfinder, а не гриллинг. Гриллинг хорош на обозримой фиче - а эта обозримой не была, и я это знал заранее. 2. И надо было ревьюить по брейкпоинтам: сначала один брокер, потом ревью, потом остальные по аналогии. Я изначально так и хотел. Но был стрим, и я поторопился.
Получилось бы реализовать фичу Claude'ом в таком случае? ХЗ. Но ситуация была бы сильно лучше, чем сейчас.
Фича оказалась еще сложнее, чем я думал
По ходу она подняла наверх довольно существенную архитектурную проблему. Мне пришлось написать еще 4 спецификации вне стрима - чтобы перелопатить текущую реализацию и сделать эту фичу В ПРИНЦИПЕ ВОЗМОЖНОЙ.
Из сегодняшней точки я бы делал так: архитектурный PR отдельно, потом саму фичу медленно с ревью на каждом шаге, и катил бы не за один присест, а итерации в три. Собственно, так я сейчас и поступлю: распилю PR на несколько отдельных, которые можно ревьюить независимо.
Но имеем что имеем - огромный пласт кода, из которого мне вытачивать нечто мержибельное. Код, кстати, более-менее адекватный, я его бегло проглядел. Просто нужно время на ревью и доделки.
Вердикт
Конкретно в этом случае - катить фичу клодом по времени ничуть не быстрее, чем самому. Я бы сделал эту же фичу руками где-то за неделю. С клодом получается то же самое, но гораздо нервознее🥲
В общем случае - сильно зависит от проекта. Там, где к архитектуре можно относиться халатно, - да, выигрыш есть. На проектах типа FastStream он отлично ваншотит мелочь (типа такой), а все, что сложнее, идет примерно с той же скоростью, что и руками.
Комбинированный подход - клод на ресерч, код руками - возможно, сработал бы вообще идеально. Но переделывать я не буду. Не хочу тратить еще столько же, и пока еще верю, что смогу смержить текущий PR.
А вот где он был великолепен
Пока я воевал с основной фичей, он вскрыл кучу мелких недостатков в смежных местах. И закрыл их отдельными PR'ами в фоновых сессиях - вообще без моего участия.
Два таких PR уже смержены. Плюс четыре issue, которые я завел за полчаса, и все четыре - про генерацию AsyncAPI:
• #3033 - гонять сгенеренную спеку через официальный парсер прямо в CI • #3034 - литеральные скобки в адресах • #3035 - NATS с filter_subjects рендерит пустой адрес • #3036 - channel parameters для шаблонов адресов
Отдельно - pyright
Прямо во время стрима я запустил вторую сессию с одной задачей: проверить, проходят ли наши mypy-тесты на pyright. Предсказуемо, нет - нашлось 72 ошибки. Причем ошибки действительно были в FastStream, а не в проверках pyright. В общем, Claude самостоятельно разобрался и открыл PR, который уже смержили. Я просто сидел в другой сессии и занимался основной работой.
В общем, тот PR, ради которого я вообще стримил, висит. А то, что нашлось попутно, уже в мейне или ждет ревью😅 Ускорения я не получил. Зато Claude помог раскопать кучу багов (докинул мне работы, ага)
Чтож, у нас тут SLOP - победа / поражение. Не знаю, сами скажите?