За два дня мы с Клодом навайбкодили 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-библиотек)