# Часть 3. Обзор процесса
Процесс SDD можно представить как несколько слоёв памяти. Верхний слой — конституция проекта. Средний — спецификации фич. Нижний — реализация и проверки. Между фичами есть перепланирование: вы обновляете верхние слои, если новая работа показала, что старые решения неточны.
Базовый цикл:
```mermaid
flowchart TD
A["Конституция
mission.md
tech-stack.md
roadmap.md"] --> B["Спецификация фичи
requirements.md
plan.md
validation.md"]
B --> C["Реализация
код, тесты, миграции"]
C --> D["Проверка
автоматические и ручные факты"]
D --> E{"Факты прошли?"}
E -- "да" --> F["Слияние"]
F --> G["Перепланирование
обновить правила и дорожную карту"]
G --> A
E -- "нет" --> B
```
## Роль конституции
Конституция отвечает на вопросы, которые не должны заново решаться в каждой фиче:
- зачем существует проект;
- для кого он создаётся;
- какой стек используется;
- какие архитектурные ограничения уже приняты;
- какие фазы запланированы, активны или завершены.
В Qwen Code этот слой дополняется файлом `QWEN.md`. Разница такая: `QWEN.md` говорит агенту, как вести себя в репозитории, а `specs/*.md` говорят, что строит продукт.
Пример структуры:
```text
agentclinic/
QWEN.md
specs/
mission.md
tech-stack.md
roadmap.md
```
## Роль спецификации фичи
Для каждой фазы дорожной карты создаётся отдельная папка:
```text
specs/
2026-05-10-feedback-form/
requirements.md
plan.md
validation.md
```
`requirements.md` фиксирует границы, то, что в них не входит, решения и контекст.
`plan.md` разбивает работу на группы задач.
`validation.md` описывает, как понять, что ветку можно сливать.
Эти файлы важнее, чем история чата. Новая сессия Qwen Code продолжает работу, прочитав только репозиторий.
## Роль веток
Каждая фаза фичи должна жить в отдельной Git-ветке:
```bash
git checkout -b phase-1-hello-hono
```
Это снижает когнитивную нагрузку при работе с агентом. Если агент изменил слишком много, у вас есть чёткая граница: все изменения этой ветки должны соотноситься с конкретной папкой спецификации.
## Роль `/clear`
В Qwen Code свежий контекст помогает проверить, что спецификация достаточна. Если агент может реализовать фичу после `/clear`, значит нужное знание записано в файлах, а не спрятано в памяти чата.
Пример:
```text
/clear
Прочитай @QWEN.md, @specs/mission.md, @specs/tech-stack.md
и @specs/2026-05-10-feedback-form/plan.md.
Реализуй только группу задач 1. Остановись после списка изменённых файлов.
```
Если после очистки агент задаёт разумные уточняющие вопросы, это нормально. Если он начинает угадывать, спецификация недописана.
## Четыре режима работы с агентом
1. Режим интервью. Агент задаёт вопросы и помогает написать спецификацию.
2. Режим реализации. Агент реализует конкретные группы задач.
3. Режим проверки. Агент ищет несоответствия между кодом и спецификацией.
4. Режим перепланирования. Агент обновляет конституцию, дорожную карту, журнал изменений и процесс.
Не смешивайте эти режимы без необходимости. Когда в одной сессии вы сначала обсуждаете продукт, потом просите код, потом проверку, агент начинает тянуть старый контекст туда, где должен работать файл.
## Контур «Планируй — Реализуй — Проверяй»
Внутри одной фичи режимы 2 и 3 удобно представлять как контур «Планируй — Реализуй — Проверяй» (в англоязычных источниках это называют `Plan-Act-Verify`). Контур задаёт три фазы и явные ограничения каждой:
- **Планируй.** Агент перечисляет, что собирается делать, какие файлы тронет, какие проверки запустит. На этом шаге агент не пишет код и не меняет файлы. Если план содержит изменения, которых нет в `requirements.md`, — это сигнал доуточнить спецификацию, а не «давай попробуем».
- **Реализуй.** Агент меняет код в рамках одобренного плана. Расширять план в ходе реализации запрещено: новая идея превращается либо в отдельную группу задач, либо в правку спецификации.
- **Проверяй.** Агент сравнивает результат с `validation.md`, перечисляет, что прошло, что упало и что не проверялось. На этом шаге агент не правит код — он только пишет отчёт.
Полезно держать эти три фазы в голове и при формулировке запросов, и при чтении ответов агента: если ответ смешивает «я планирую» и «я уже сделал», вы потеряли точку контроля. В части 8 эти ограничения превращаются в конкретные запросы для каждой фазы.
## Три режима спецификации
Не каждая работа описывается одинаково. Удобно различать три режима:
- **Сначала требования (Requirements-First).** Дефолтный режим учебника. Используется для фич, где главное — что должно появиться: страница отзывов, форма обратной связи, новый маршрут.
- **Сначала дизайн (Design-First).** Применяется, когда требования понятны давно, а главный риск — как именно реализовать: миграция схемы, изменение публичного API, реорганизация модулей. Здесь сначала пишется `plan.md` или отдельный `design.md`, а уже потом подробные требования.
- **Спецификация bugfix.** Отдельный режим для исправлений: вместо «что должно появиться» — «что воспроизводит баг», «какой ожидался результат», «что не должно измениться при исправлении». Подробнее в части 11.
В учебном проекте AgentClinic вы почти всегда будете работать в режиме «сначала требования». Названия других режимов нужны, чтобы не растягивать первый шаблон туда, где он мешает.
## Пример запроса Qwen Code для обзора проекта
```text
Ты помогаешь мне работать по SDD.
Пока не пиши код.
Прочитай @README.md и посмотри структуру репозитория.
Предложи начальный каталог specs/:
- mission.md
- tech-stack.md
- roadmap.md
Перед записью файлов задай ровно три сгруппированных вопроса:
1. Миссия и аудитория
2. Технический стек и ограничения
3. Дорожная карта и первая фаза
```
## Практика
Создайте в учебном проекте пустую структуру:
```bash
mkdir -p specs
touch specs/mission.md specs/tech-stack.md specs/roadmap.md
```
Пока оставьте файлы пустыми. В следующей части мы настроим Qwen Code так, чтобы он понимал правила проекта, а затем заполним конституцию осознанно.
## Контрольные вопросы
1. Почему спецификацию фичи лучше хранить рядом с кодом, а не в отдельном документе?
2. Когда нужно делать перепланирование?
3. Что показывает успешная реализация после `/clear`?