Поздравляю, вы уже пользуетесь SDD
Если вы хоть раз гоняли агента через plan-mode - вы уже в SDD-клубе, просто об этом не знали. Я обещал вам рассказать про свой опыт с сетапом скиллов Мэтта, но без разговора об SDD ничего не получится
Так что заходить буду издалека, с боли.
Модели с заявленным контекстом в 1_000_000 начинают тупить уже на 100_000. А на 200_000 - тупить безбожно. Виновата Lost in the middle: модель хорошо помнит начало диалога и последние тысяч двадцать токенов, а середину склонна забывать. А в этой середине у нас лежит все ценное:
• результаты грепов по проекту • стайлгайд • принятые по ходу дизайн-решения • те самые особенности, ради которых агент полчаса лазил по коду
Поэтому если вы скажете модели "давай сделаем фичу X" - агент сделает не то. Вы правите - он переделывает. Вы правите еще раз - а он уже забыл, как было на первой итерации, и на очередном витке приносит вариант, который вы отбросили два часа назад. Ну или творит какую-то иную дичь.
На этом месте вы говорите "AI говно" и гордо идете писать код руками😅
Лечение первого уровня - plan-mode
Сначала вы с агентом брейнштормите: формулируете видение фичи, строите архитектуру, агент вычитывает все, что ему нужно знать про код. И только потом он идет кодить.
Только план-то лежит все в той же СЕРЕДИНЕ КОНТЕКСТА - и забывается ровно так же, если реализация затянулась. Значит, план надо вынести из диалога в файл и сделать PLAN.md исходным промптом для следующей сессии.
Итого на одну фичу у вас уже две сессии: идея → PLAN.md, PLAN.md → реализация.
Поздравляю, вы изобрели SDD в самом простом его виде🌚
Потому что PLAN.md - это тоже спецификация. Спека конкретной сессии, и живет она соответственно: до мержа и в мусорку (целый пост про это).
Дальше идем от жадности
Если контекст, который агент тратит на "понять, что и как тут делать", такой дорогой - надо помочь ему разобраться за минимум токенов.
меньше токенов на понимание -> больше остается на реализацию -> качественнее результат
А помогает агенту ровно то же, что помогает новому человеку в команде:
• вменяемая архитектура • комментарий там, где код врет о своих намерениях (# namedtuple вместо датакласса - иначе pickle падает) • нормальная навигация вместо слепого grep (graphify, codegraph) • документы на то, что из кода вывести нельзя
Вот последний пункт и есть SDD. В идеале спеки живут на трех уровнях: спека задачи (стори), спека фичи (эпика) и общая спека архитектуры проекта. Да и комментарий в коде - это, по сути, спека на конкретную функцию / класс / строку кода.
Что из этого я реально держу
Единого правильного фреймворка SDD пока нет - их развелось штук десять, и работают они все. Различаются тремя вещами: какие уровни спек вводят, как регламентируют их жизненный цикл и кто их пишет - вы или агент.
Но если выкинуть всю обвязку, главная польза SDD - это plan-mode. Все остальное - попытка научить агента ориентироваться в проекте чуть эффективнее (быстрее, качественнее, дешевле по токенам).
Поэтому у меня между сессиями долго живут ровно два артефакта: глоссарий проекта и ADR. Все остальное умирает вместе с фичей😎
А вы что реально сохраняете между сессиями - или каждый раз объясняете агенту проект заново?
Собственно, набор скиллов от Matt Pocock - это именно что SDD. И я им активно пользуюсь. Поэтому ждите "мясо" следующим постом
В этом посте были ссылки, но мы их удалили по правилам Сетки