Процесс разбивается на шаги для узкоспециализированных субагентов с жёсткими ограниченями.
Spec Driven Development
Spec-Driven Development (SDD) — это подход, где спецификации (а не код) становятся главным источником истины.
SDD предоставляет ИИ конкретные контракты, превращая спецификацию в "высокоуровневый язык программирования", а генерацию кода в процесс его компиляции.
Уровни:
Spec-first: Спецификация пишется для направления начальной ИИ-разработки, но в дальнейшем может не поддерживаться.
Spec-anchored: Спецификация поддерживается вместе с кодом. Любые изменения в поведении требуют синхронного обновления спецификации и кода, что часто проверяется автоматическими тестами.
Воркфлоу SDD:
graph LR
Start([Задача]) --> Step1
subgraph Фаза 1: Спецификация
Step1[Specify <br/> Описание ЧТО нужно построить]
Rev1{Ревью человеком}
Step1 --> Rev1
end
subgraph Фаза 2: Планирование
Step2[Plan <br/> Описание КАК строить: стек, архитектура]
Rev2{Ревью человеком}
Rev1 -->|Утверждено| Step2
Rev1 -.->|Доработка| Step1
Step2 --> Rev2
end
subgraph Фаза 3: Декомпозиция
Step3[Tasks <br/> ИИ разбивает план на мелкие шаги]
Rev2 -->|Утверждено| Step3
Rev2 -.->|Доработка| Step2
end
subgraph Фаза 4: Реализация и Валидация
Step4[Implement <br/> ИИ пишет код по каждой задаче]
Step5[Validate <br/> Проверка тестами и человеком]
В этой парадигме спецификация является единственным артефактом, с которым напрямую работает человек, а роль классического написания кода полностью делегируется ИИ.
Принципы:
graph LR
subgraph Зона ответственности Человека
Spec[📄 Спецификация <br/> Единственный источник истины]
end
subgraph Зона ответственности ИИ
GenProcess((Генерация))
Code[💻 Исходный код <br/> // GENERATED FROM SPEC - DO NOT EDIT]
end
Spec -->|Отправляется агенту| GenProcess
GenProcess -->|Создает или полностью переписывает| Code
NeedChange{Нужно изменить <br/>поведение или <br/>исправить баг?}
Code --> NeedChange
NeedChange -->|Ручные правки ЗАПРЕЩЕНЫ| Spec
NeedChange -->|Все работает корректно| Prod([Продакшен])
classDef human fill:#d4edda,stroke:#28a745,stroke-width:2px;
classDef ai fill:#cce5ff,stroke:#004085,stroke-width:2px;