За два дня мы с Клодом навайбкодили 12 тысяч строк кода на один несчастный одностраничник о_О Вчера переписали всё это за час — вышло 2.4 тысячи. И вторая версия лучше во всём :D
Расскажу, как я знатно обломался о собственный конвейер агентской разработки.
Задача была простая до смешного: внутренний портал релизов. Дженкинс постит запись, менеджер добивает её руками, команда читает.
Но у меня же харнес! Спека, план на 13 фаз (1100 строк плана, на минуточку), TDD, субагенты-исполнители, субагенты-ревьюеры, журнал решений. Запустил и сидел любовался, как машина работает.
И она правда работала. Ревьюеры ловили настоящие проблемы. Тесты плодились сотнями — 476 штук! Звучит как мечта?
А потом я открыл портал..
Дизайн не имел НИЧЕГО общего с прототипом, который мы утверждали. Агент за два дня ни разу не открыл страницу глазами. Тесты на HTML гонял, CSP проверял — а посмотреть, что вышло, неа.
Дальше — больше. Натравил на проект независимую проверку: два самых гордых теста оказались пустышками — выключаешь защиту, которую они «проверяют», и все тесты по-прежнему зелёные. А CI, внимание, тесты вообще не запускал. Шесть с половиной тысяч строк тестов, которые никто никогда не прочитает.
Космолёт. Красивый. Совершенно бесполезный.
Вчера я психанул. Открыл свежую сессию и написал одно сообщение: мне не нравится, что вышло. Сделай новую версию. Хочу, чтобы на портал было приятно заходить. НЕ хочу, чтобы было сложно. Не нужно строить космолёт — это просто портал для релизов. Уходи в /loop и работай, пока не будет классно.
Ни плана на 13 фаз, ни TDD, ни армии субагентов. Из «процесса» — пятнадцать минут вопросов-ответов (что выкидываем, что оставляем) и автономный цикл.
Дальше агент сам замерил, почему тормозит старая версия. Сам решил переписать на Go (я только вбросил «может, уйти с питона?»). Сам смотрел на свои страницы скриншотами через Chrome. Сам написал 7 тестов ровно на то, что дорого сломать. И сам задеплоил на боевой.
Час с небольшим. Итого:
- 12 287 строк → 2 441 (в пять раз меньше);
- тесты: 6 462 строки → 163;
- открытие: было до 2.5 секунд, стало 10–30 мс.
И этот код я могу прочитать за вечер. Весь. (но не буду :D)
Честности ради: вторая сессия стояла на плечах первой. Домен разведан, грабли известны, и половину «сложности» я сам выкинул на старте — аккаунты, CSRF, санитайзеры (портал живёт во внутреннем контуре, кому там ломать). Чистого эксперимента не получилось. Но разница в порядок — это не погрешность.
Главный урок даже не про строки. Детальный план + армия дешёвых субагентов-писателей = каждый добросовестно раздувает свой кусочек, а целое не держит никто. Бесполезные тесты хуже их отсутствия — они создают ощущение безопасности, которого нет.
А одно честное сообщение «чего я хочу и чего НЕ хочу» оказалось сильнее 1100 строк плана.
Пока вторая сессия бежала, мы в третьей (да, параллельно, я уже не могу остановиться :D) перепридумали весь workflow. Код пишет один сильный агент — некому раздувать кусочки. План умер: вместо него спека на один экран — цель, критерии приёмки и список «что НЕ делаем». Консилиум советников теперь обязан говорить, что вычеркнуть, а не что добавить. И финальный гейт: отдельный агент открывает живую страницу в браузере и смотрит. Глазами. Потому что вот это, как выяснилось, самое главное =)
Забавно: я столько возился с харнесом, чтобы агент работал сам. А научить его надо было одному — вовремя говорить «не строй космолёт».
В общем, выкинул нахрен TDD, мегапланы и армию субагентов. Уже погонял новый воркфлоу — на глаз сильно лучше. Ухожу из адептов superpowers-библиотек)
