Обновить

Как я прошёл путь от «сам быстрее напишу» до своего фреймворка для агентной разработки

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели14K
Всего голосов 26: ↑25 и ↓1+26
Комментарии19

Комментарии 19

На выходе получается отчёт с приоритетами: красное — критично, жёлтое — стоит поправить, зелёное — мелочи. Отдельно есть блок «что сделано хорошо». Я пробегаюсь по отчёту и решаю, что нужно чинить, а что не критично. Тем не менее ревьюить написанный код своими глазами тоже можно нужно.

Переименовать зелёный приоритет из "мелочи" в "проблема (соответствующий красный приоритет) решена"

Если приоритет "мелочи" не позволяют спать спокойно, то перейдите от светофор-палитры к четырех цветной, например, красно-желто-сине-зеленой (RYBG-палитре), как на майкрософтовском лейбле-флаге, отдав приоритету "синий" Ваши "мелочи", а не "зеленому".

Ещё один важный скилл в арсенале — systematic-debugging. Он срабатывает на любую ошибку, упавший тест или странное поведение агента. Скилл не даёт ИИ с разбегу влезть в код с фиксом, а заставляет пройти четыре фазы: корневая причина → анализ паттернов → гипотеза → реализация.

Странная цепочка фаз... А можете пример в двух...трёх словах, поскольку, по-логике, фаза "корневая причина" должна встать после "проверки гипотезы", а не в самом начале пищевой цепочки возникновения проблем(-ы)?

Спасибо за комментарий! Хорошее замечание про цвет, зеленый действительно может в заблуждение вводить, учтём!

Про systematic-debugging: на первом этапе размышлений происходит исследование проблемы и поиск корневой причины (читаются stack trace’ы, проверяются последние изменения и т.д.). Следующий этап - это про поиск решения: анализ похожих (но работающих корректно) паттернов в проекте. Потом уже тестируем гипотезы «причина + решение» и реализуем. Согласен, что в статье очень куцо описал процесс и формулировка вызывает вопросы.

По сути бесполезная статья - все знания элементарны и любым мало-мальски умным разработчиком активно используются уже несколько месяцев.

Узнал свой рабочий процесс, тот же подход, только чуть усовершенствованный: разведка -> спека -> план -> реализация, TDD, ревью только последних изменений и отдельный шаг, где агент обязан доказать, что всё работает, а не просто сказать - я сделаль. До разведки дошел сам, иногда в общем и целом знаю, что должна делать фича, но подобрать компоненты, либы и тд не могу, тут мы с клодом делаем миниресерч по тому что подходит, у кого и как реализовано, и из этого меню я уже выбираю.

Один момент про оркестратор и правило «есть 1% шанс - вызови скилл». Вариант конечно, но это ведь снова инструкция для модели, а её модель так же стабильно забывает, как и само описание скилов. У меня часть таких правил исполняет не модель, а хук на старте сессии, который сам подгружает нужное и проверка на pre-commit/CI.

И отдельно про update-claude-md - боль знакомая, доки правда тухнут. Но автосверка через ещё один проход LLM сама по себе ненадёжна, что-то поправит, что-то забудет. Написал простой линтер на js, проверяет, что пути в CLAUDE.md существуют, команды валидны, ссылки не побиты.

ЗЫ С предидущим коментом не согласен, большинство вообще забивает на элементарные настройки клод кода, будут такие статьи может кто-то задумается)

если сперва реализация а позже TDD, то это уже не тдд, или вы имели ввиду что то другое, например реализацию через TDD?

Да, всё так, реализация функционала через TDD. Задача разбивается на кусочки, перед написанием каждого пишутся тесты на него, и только после - сама реализация.

Кривенько написал, TDD реализует superpowers из коробки, я их и использую. Я только расширил superpowers нулевой фазой разведки.

Спасибо большое за комментарий!

Разведка действительно может быть полезна на какой-то не самой тривиальной задаче. Классная идея, подумаю над добавлением! Если научить агента на этом этапе еще по корпоративной системе контроля версий побегать - вообще пушка будет :)

Да, хук понадежнее будет, согласен. У меня на моделях Антропиков работает пока неплохо. Надо бы на чем-то послабее потестировать мне и доработать.

Согласен про линтер, но вот новый функционал например он не опишет. Так что тут, думаю, самое правильное - и линтер, и LLM, и делать это почаще!

Кафедра велосипедостроения весьма многолюдна. Благо сами принципы довольно просты, и каждый второй лепит свой `фреймворк`, подсмотрев идеи у всяких superpowers и spec kit. Это вообще без упрёка, если что.

Спасибо за комментарий! Да! Именно такую идею и хотелось донести в статье: пока у нас не появился индустриальный стандарт, выбираем то, что удобно. И частенько нам удобен наш велик:)

А я хотел рассказал, как мой фреймворк хорошие идеи и принципы реализует. Возможно это поможет кому-то своё решение написать, адаптированное конкретно под его задачи.

Сейчас все так быстро меняется что "полгода назад" это уже жутко давно, в трех поколениях назад. Qwen 3.5 plus еще пару месяцев назад был тупой как валенок, 3.7 max сегодня уже вполне ничего. У меня нет подписок на claude и gpt а через api они дорогие, так что только периодически, после выхода 3.7 пользуюсь на 95% qwen. И ревью лучше делать в другой нейросети, сами себя сильно хуже проверяют. Я обычно закидываю в deepseek. Писать он непригоден но ошибки за другими искать - вполне неплох. После его проверок и замечаний руками мало что приходится делать. Иногда Gemini привлекаю, для финального обзора и вердикта. В целом пока получается нормально.

Стандарта действительно нет, и каждый пилит свой велосипед. У меня вообще есть ИИ фреймворк для создания ИИ фреймворков :) потому что пет и продакшн проекты на разных стеках и вот это вот всё. Так что правильной дорогой идёте, товарищ!

Единственное, я бы советовал всё же больше субагентов. Они как раз и нужны, чтобы экономить контекст, и делать этапы максимально изолированными. Конда один агент пишет тест, второй никак не подстроится, чтобы код был зелёным :)

Спасибо за комментарий! Про субагентов согласен, в версии фреймворка, которую использую я, они напилены на тесты, ревью и т.д.

В vibe-skills репозиторий намеренно не стал добавлять, чтобы сохранить его максимально простым в изучении. Этот поинт в статье подсветил.

Скажите, пожалуйста, а чем принципиально «пушить в гит только руками» отличается от «агент делает ПР, человек делает ревью»? Нутром чую, что разница в процессах есть и важная, но опыта не хватает сформулировать и осознать.

Это моё личное недоверие к LLM и желание ограничить её влияние на инфраструктуру. Имею ввиду доступы на редактирование чего-либо дальше, чем файлы на моём компьютере (в том числе write операции в удаленную систему контроля версий).

Сложилось у меня такое отношение после ряда увиденных мной аварий, виновником которых были ошибки LLM :(

Расскажу небольшую историю про конкретно git. У нас в компании есть корпоративный GitLab. Одним прекрасным днём я вижу сообщение, что меня тегнули в каком-то PR’е и, зайдя в него, обнаруживаю, что тегнули в нем еще кучу других людей, не относящихся к изменениям (потом выяснилось, что так решил кодинговый агент). Ажиотаж в том PR’е образовался такой, что это повлекло проблемы с доступностью GitLab. Было смешно и страшно одновременно!

Возможно моя позиция - это паранойя.. Также не отрицаю, что когда-нибудь LLM вполне могут вернуть моё доверие!

Я одного не пойму - Claude Code не запоминает предыдущие сессии? Каждый раз начинает сессию с нуля?

Да, всё так. Каждая новая сессия запускается в новом контекстном окне и ничего не знает о предыдущих сессиях. Но есть механизмы наделения агента памятью, о них в статье написал (не обо всех), более широкую информацию можно посмотреть в документации claude code: https://code.claude.com/docs/en/memory.

Просто я использую Claude в CLine - там сессии возобновляется с места остановки. Поэтому бывают непонятны заморочки с пустыми сессиями.

Вы не упомянули openspec. На мой взгляд, он как раз адресует часть проблем которые вы пытаетесь решить своим фреймворком

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации