Я постоянно сталкиваюсь со скепсисом относительно самой возможности создания качественного программного продукта при помощи LLM, а когда говорю, что я создаю приложения даже не глядя в код, мне просто не верят. Действительно, при помощи вайб-кодинга в его классическом понимании ничего дельного пока что не построить, но есть несколько основных техник которые я использую, чтобы добиваться качественного результата.
Т.к. я использую Claude Code на подписке MAX, я буду объяснять на его примере. Я запускаю его с флагом —dangerously-skip-permissions. Во-первых, файл claude.md должен постоянно меняться и подстраиваться под проект и ваш стиль управления. Как только вы встречаете нежелательное поведение агента, например, он прописал в код константу, которая должна быть в конфиге, пишете ему: «все константы хранятся в конфиге, запиши это себе в claude.md». Если что-то забыл, то же самое: «запиши себе в claude.md, что после завершения задания ты обязательно запускаешь тесты».
Второе: есть вещи строго связанные с claude и claude code — ключевые слова. Любой мой запрос начинается с «Ultrathink, вспомни CLAUDE.md. » Эта фраза автоматом печатается когда я нажимаю CTRL-ALT-X — так часто это используется. Первое слово, Ultrathink, значит, что модель должна выделить себе максимальный буфер (32К) под размышления. «вспомни CLAUDE.md» — действительно заставляет модель «вспоминать» принципы написанные в этом документе и резко снижает частоту их нарушения.
Третье: стандартный флоу фичи.
-
«Ultrathink, вспомни CLAUDE.md. Пусть теперь приложение работает из контейнера вместо ручного запуска на сервере. Сделай скрипт деплоя на vps, предусмотри blue-green, и откат одной кнопкой или если не сработали пост-деплойные тесты. Создай тикет в docs/tasks с полным описанием плана работ»
-
Изучить план работ, поправить его вручную или через промпты.
-
«Ultrathink, вспомни CLAUDE.md. Выполни docs/tasks/deploy.md»
-
Смотрим что агент делает. Если видим что-то не то, пишем поправляющий промпт. Обычно модель делает всё правильно, но не до конца, но при этом заявляет, что всё готово, супер-пупер, что делать дальше, хозяин?
-
«Ultrathink, вспомни CLAUDE.md. Критически оцени, всё ли ты сделал и правильно ли?» — это самый важный промпт в разработке. Он заставляет агента взглянуть на созданный им код не с позиции создателя, а с позиции ревьювера. Естественно, он сразу находит, что сделано только 15-20% от задачи.
-
«Ultrathink, вспомни CLAUDE.md. Делай всё качественно и до конца» — он снова что-то сделает, и снова не всё, поэтому переходим на п.5. Но если и после п.5. он ответит, что всё сделано идеально, то:
-
«Ultrathink, вспомни CLAUDE.md. Критически оцени выполнение docs/tasks/deploy.md» — и тут внезапно окажется, что агент позабыл само задание, сделал не то и не так. Не страшно, переходим на п.6.
-
Рано или поздно, модель заявит, что в результате критической оценки, она выяснила, что задание выполнено на 100% — только тогда вы идёте проверять что там на самом деле работает.
Вот так, фича за фичей, тест за тестом, вы можете создавать приложения малой и средней сложности. Существует множество хитростей, подводных камней, техник и подходов. Я перепробовал многое, но описанный выше флоу остаётся для меня самым простым и эффективным. И нет, этот подход не позволит не-специалисту создавать программные продукты. Решения агента необходимо постоянно проверять, его самого нужно направлять в правильную сторону. А для этого нужно самому иметь серьёзный опыт создания софта. Без этого опыта вы не поймёте когда нейронка начинает переусложнять решение или попросту обманывать вас говоря что «всё готово и работает», когда это на самом деле не так. Но в руках грамотного инженера, агентные LLM — это мощнейший инструмент позволяющий разгрузить голову от рутины и создавать полноценные продукты намного быстрее, чем вручную.
Если интересно посмотреть на пример кода созданный по данной методике, его можно найти тут: https://github.com/aiseeq/savanna — я надеюсь, что найду время продолжить серию статей об этой разработке.
ссылка на оригинал статьи https://habr.com/ru/articles/932336/
Добавить комментарий