学习指南: 第3部分:流程概述

模块「第3部分:流程概述」中第 2 / 5 节课
您正在未登录状态下查看课程。 请登录,以保存进度并参加测试。

主题: Часть 3. Обзор процесса SDD (Structured Design Driven)

难度等级: 中等

预计学习时间: 4-6 часов (теория + практика)

前置要求: Базовое понимание Git и работы с ветками

Опыт работы с markdown-документами

Понимание основ разработки ПО (требования, планирование, тестирование)

Знакомство с концепцией AI-агентов для кодинга (желательно Qwen Code)

Пройдены Часть 1 и Часть 2 курса (или эквивалентный опыт)

学习目标: Объяснить трёхслойную архитектуру процесса SDD (конституция → спецификация → реализация) и описать роль каждого слоя

Самостоятельно создать структуру specs/ с файлами mission.md, tech-stack.md, roadmap.md для учебного проекта

Применять контур «Планируй — Реализуй — Проверяй» при работе с AI-агентом, формулируя чёткие запросы для каждой фазы

Использовать команду /clear для валидации полноты спецификации и объяснять её диагностическую ценность

Выбирать подходящий режим спецификации (Requirements-First, Design-First, Bugfix) в зависимости от типа задачи

概述: Эта часть курса раскрывает архитектуру процесса Structured Design Driven (SDD) — методологии разработки ПО, оптимизированной для работы с AI-агентами. Процесс моделируется как три слоя памяти: верхний (конституция проекта), средний (спецификации фич) и нижний (реализация и проверки). Ключевое новшество — явное разделение режимов работы с агентом и строгий контур «Планируй — Реализуй — Проверяй», который предотвращает «утечку» контекста между фазами. Материал ориентирован на практическое применение: вы научитесь создавать репозиторий, где знание «живёт» в файлах, а не в истории чата, что критически важно для воспроизводимости работы с AI-ассистентами.

关键概念: Трёхслойная архитектура sdd: Метафора памяти процесса: верхний слой (конституция: mission.md, tech-stack.md, roadmap.md) отвечает на вопросы, которые не должны решаться заново в каждой фиче; средний слой (спецификация фичи: requirements.md, plan.md, validation.md) описывает конкретную работу; нижний слой (реализация: код, тесты, миграции + проверки) — исполнение. Между слоями происходит перепланирование при обнаружении неточностей.

Конституция проекта: Фундаментальные документы, фиксирующие миссию, аудиторию, технический стек, архитектурные ограничения и фазы дорожной карты. В проектах с Qwen Code дополняется файлом QWEN.md, который говорит агенту КАК вести себя в репозитории, в отличие от specs/*.md, которые говорят ЧТО строит продукт.

Спецификация фичи: Изолированная папка для каждой фазы дорожной карты (например, specs/2026-05-10-feedback-form/), содержащая три обязательных файла: requirements.md (границы, исключения, решения, контекст), plan.md (группы задач), validation.md (критерии слияния ветки). Эти файлы важнее истории чата — новая сессия продолжает работу, прочитав только репозиторий.

Git-ветки как когнитивные границы: Каждая фаза фичи живёт в отдельной ветке (git checkout -b phase-1-hello-hono). Это создаёт чёткую границу: все изменения ветки должны соотноситься с конкретной папкой спецификации. При избыточных изменениях агента есть точка отката.

Команда /clear как диагностика: Проверка полноты спецификации: если агент может реализовать фичу после очистки контекста, значит знание записано в файлах. Разумные уточняющие вопросы нормальны; угадывание сигнализирует о недописанной спецификации.

Четыре режима работы с агентом: Интервью (написание спецификации), Реализация (конкретные группы задач), Проверка (несоответствия код ↔ спецификация), Перепланирование (обновление конституции, дорожной карты, журнала). Смешение режимов в одной сессии приводит к «загрязнению» контекста.

Контур планируй — реализуй — проверяй (plan-act-verify): Внутри режима реализации и проверки: Планируй — агент перечисляет намерения без изменения файлов; Реализуй — код в рамках одобренного плана (расширение запрещено); Проверяй — сравнение с validation.md, отчёт без правок кода. Смешение фаз = потеря точки контроля.

Три режима спецификации: Requirements-First (по умолчанию — что должно появиться), Design-First (как реализовать — для миграций, API, реорганизации), Bugfix (что воспроизводит баг, ожидаемый результат, что не должно измениться). Выбор режима предотвращает растягивание неподходящего шаблона.

练习题: 名称: Создание скелета конституции

问题: В учебном проекте AgentClinic создайте структуру specs/ с пустыми файлами mission.md, tech-stack.md, roadmap.md. Затем напишите промпт для Qwen Code, который заставит агент заполнить эти файлы, задавая ровно три сгруппированных вопроса (миссия и аудитория, технический стек, дорожная карта). Важно: агент не должен писать код или создавать файлы до получения ответов.

解决方案: 1. В терминале: mkdir -p specs && touch specs/mission.md specs/tech-stack.md specs/roadmap.md

  1. Промпт для Qwen Code:
Ты помогаешь мне работать по SDD.
Пока не пиши код.
Прочитай @README.md и посмотри структуру репозитория.
Предложи начальный каталог specs/:
- mission.md
- tech-stack.md
- roadmap.md

Перед записью файлов задай ровно три сгруппированных вопроса:
1. Миссия и аудитория
2. Технический стек и ограничения
3. Дорожная карта и первая фаза
  1. Проверьте, что агент действительно задаёт вопросы, а не создаёт файлы с шаблонными данными.

难度: beginner

名称: Диагностика спецификации через /clear

问题: У вас есть частично заполненная спецификация фичи формы обратной связи. Напишите последовательность действий для проверки, достаточна ли спецификация для реализации после /clear. Сформулируйте промпт, который агент должен выполнить после очистки контекста. Опишите, как интерпретировать три возможных результата: (а) агент реализует без вопросов, (б) агент задаёт разумные уточнения, (в) агент начинает угадывать.

解决方案: 1. Убедитесь, что файлы спецификации содержат: requirements.md (границы фичи), plan.md (группы задач с приоритетами), validation.md (критерии приёмки).

  1. Выполните /clear в чате Qwen Code.
  2. Промпт:
Прочитай @QWEN.md, @specs/mission.md, @specs/tech-stack.md
и @specs/2026-05-10-feedback-form/plan.md.
Реализуй только группу задач 1. Остановись после списка изменённых файлов.
  1. Интерпретация результатов:
  • (а) Успешная реализация без вопросов → спецификация достаточна, знание в файлах
  • (б) Разумные уточнения (например, «какой формат email-валидации?») → норма, уточните и допишите в requirements.md
  • (в) Угадывание (например, «я предположу, что форма отправляет на API /api/feedback») → спецификация недописана, требуется доработка requirements.md с явными решениями

难度: intermediate

名称: Разделение режимов в одной сессии

问题: Вы обнаружили, что в предыдущей длинной сессии с агентом смешались обсуждение продукта, написание кода и проверка. В результате агент предложил изменения, выходящие за рамки фичи, и часть проверок была пропущена. Спроектируйте стратегию разделения на четыре отдельных сессии с явными запросами для каждого режима. Для режима реализации дополнительно разбейте на три фазы контура Планируй — Реализуй — Проверяй.

解决方案: Сессия 1 — Режим интервью:

Режим: интервью. Помоги дописать спецификацию фичи @specs/2026-05-10-feedback-form/.
Прочитай requirements.md и задай уточняющие вопросы по неопределённым границам.
Не предлагай код, не пиши план реализации.

Сессия 2 — Режим реализации, фаза Планируй:

Режим: реализация, фаза Планируй.
Прочитай @specs/2026-05-10-feedback-form/plan.md.
Перечисли, что собираешься делать для группы задач 2, какие файлы тронешь, какие проверки запустишь.
Не пиши код, не меняй файлы.

Сессия 3 — Режим реализации, фаза Реализуй:

Режим: реализация, фаза Реализуй.
План одобрен: [вставить одобренный план из предыдущей сессии].
Выполни только этот план. Если возникнет новая идея — остановись и предложи отдельную группу задач.

Сессия 4 — Режим проверки:

Режим: проверка.
Прочитай @specs/2026-05-10-feedback-form/validation.md.
Сравни текущий код в ветке с критериями валидации.
Перечисли: что прошло, что упало, что не проверялось.
Не правь код, только отчёт.

难度: intermediate

名称: Выбор режима спецификации

问题: Для трёх сценариев выберите и обоснуйте подходящий режим спецификации (Requirements-First, Design-First, Bugfix), опишите структуру создаваемых документов и отличия от дефолтного шаблона:

Сценарий А: Нужно добавить страницу с отзывами пациентов — новая функциональность для AgentClinic. Сценарий Б: Требуется мигрировать базу данных с SQLite на PostgreSQL без потери данных. Сценарий В: Пользователь сообщает, что форма обратной связи отправляет пустые сообщения при отключённом JavaScript.

解决方案: Сценарий А — Requirements-First:

  • Стандартная структура: requirements.md (что отображается, фильтры, модерация), plan.md (верстка, API, интеграция), validation.md (тесты отображения, защита от XSS)
  • Отличий от шаблона нет — классическая новая фича

Сценарий Б — Design-First:

  • Сначала design.md или расширенный plan.md: схема миграции, стратегия переключения (параллельное использование, blue-green), rollback-план
  • Затем requirements.md: совместимость существующих запросов, ограничения downtime, критерии целостности данных
  • validation.md: проверки миграции тестовых данных, performance-тесты
  • Отличие: требования вторичны, главный риск — «как», не «что"

Сценарий В — Bugfix:

  • Структура адаптирована: reproduction.md (шаги воспроизведения: отключить JS, отправить форму), expected.md (ожидаемое: валидация на сервере, ошибка), invariant.md (что не должно измениться: успешная отправка при включённом JS, стилизация)
  • plan.md: минимальные изменения, серверная валидация
  • validation.md: тесты с отключённым JS, регрессионные тесты нормального сценария
  • Отличие: фокус на сохранении, а не добавлении; явное указание неизменяемого

难度: advanced

案例研究: 名称: AgentClinic: от хаотичных промптов к воспроизводимому процессу

场景: Команда из трёх разработчиков создавала MVP медицинской платформы для записи к пациентам (AgentClinic). Первые две недели работы с Qwen Code проходили в режиме «потока сознания»: длинные сессии, где обсуждались требования, сразу писался код, иногда делалась проверка. Результат — ветки содержали изменения, не связанные с заявленной фичей; спецификации были разрозненными заметками в Notion; новый разработчик не мог воспроизвести работу агента при перезапуске сессии.

挑战: 1. Контекст чата «размывался» между фазами — агент тянул обсуждения продукта в код и наоборот

  1. Отсутствие явной валидации приводило к слиянию веток с непроверенными сценариями
  2. Знание жило в истории чатов разных разработчиков, а не в репозитории
  3. Перепланирование происходило неявно — архитектурные решения менялись без обновления конституции

解决方案: Команда внедрила SDD-процесс из Части 3:

  1. Создали конституцию: mission.md (платформа для независимых врачей, аудитория — пациенты 35-65 лет), tech-stack.md (Hono, Drizzle ORM, SQLite → PostgreSQL в Q3), roadmap.md (4 фазы: прототип, MVP, интеграция с Телеграм, мобильная версия)
  2. Для каждой фичи — отдельная папка specs/YYYY-MM-DD-название/ с тремя файлами
  3. Ввели правило: каждая фаза — отдельная Git-ветка, именованная по плану
  4. Использовали /clear как обязательный шаг перед реализацией
  5. Разделили сессии по четырём режимам с явными маркерами в начале промпта
  6. Внедрили контур Планируй — Реализуй — Проверяй с запретом расширения плана в ходе реализации

结果: Через три недели: время входа нового разработчика в контекст сократилось с 2 дней до 2 часов; процент веток, требующих переделки после code review, упал с 60% до 15%; агент после /clear успешно реализовывал 80% фич без угадывания; архитектурные решения стали прослеживаемыми — при смене стека с Hono на FastAPI обновление tech-stack.md автоматически подхватывалось во всех новых сессиях.

经验教训: Знание в файлах важнее удобства чата — краткосрочные затраты на документирование окупаются воспроизводимостью

Жёсткие границы между режимами работы агента предотвращают «загрязнение» контекста лучше, чем инструкции «будь внимателен»

Команда /clear — не техническая деталь, а организационная метрика зрелости спецификации

Перепланирование должно быть видимым актом: обновление конституции с записью в changelog, а не неявная корректировка в разговоре

相关概念: Трёхслойная архитектура SDD

Четыре режима работы с агентом

Контур Планируй — Реализуй — Проверяй

Команда /clear как диагностика

名称: Миграция API: когда Design-First спасает от технического долга

场景: В рамках AgentClinic требовалось изменить публичное API для интеграции с внешней системой электронной записи. Требования были формально понятны (новые эндпоинты для слотов записи), но существовало риск нарушить контракты, используемые мобильным приложением в разработке у партнёра.

挑战: 1. Классический шаблон Requirements-First привёл бы к детальному описанию «что» без проработки «как сохранить обратную совместимость»

  1. Неправильная миграция грозила отказом партнёрского приложения на этапе, когда собственное мобильное приложение ещё не было готово
  2. Необходимость версионирования API не была очевидна до анализа вариантов реализации

解决方案: Команда применила режим Design-First:

  1. Сначала создан design.md с тремя вариантами: URL-versioning (/v1/, /v2/), header-based versioning, и deprecate-стратегия
  2. Сравнительный анализ: URL-versioning — простота для партнёра, но загрязнение роутов; header-based — чистота, но сложность документирования; deprecate — минимум кода, но риск внезапного отказа
  3. Выбран гибрид: /v2/ для новых эндпоинтов, заголовок X-API-Version для будущих изменений, 6-месячный deprecate на /v1/
  4. Только после фиксации design.md написаны requirements.md с явными ограничениями совместимости и validation.md с тестами контрактов

结果: Партнёрское приложение мигрировало за 2 недели без инцидентов; собственное мобильное приложение использовало /v2/ с первого дня; при последующем изменении формата ответа команда повторно применила Design-First, сократив время принятия архитектурного решения с 3 дней до 4 часов.

经验教训: Design-First применяется, когда главный риск — способ реализации, а не неопределённость требований

Сознательный выбор между вариантами в design.md создаёт аудиторский след для будущих архитектурных решений

Отложенное написание requirements.md не ускоряет процесс, но повышает качество конечного результата

Validation для Design-First должен включать тесты не только нового кода, но и регрессию существующих контрактов

相关概念: Три режима спецификации

Конституция проекта (tech-stack.md)

Роль веток как когнитивных границ

Контур Планируй — Реализуй — Проверяй

学习建议: Визуализируйте процесс: нарисуйте на бумаге трёхслойную архитектуру для вашего текущего или воображаемого проекта, отметив, какие решения на каждом уровне уже приняты, а какие ещё варьируются

Практикуйте /clear мысленно: перед отправкой промпта агенту представьте, что контекст чата исчез — достаточно ли информации в файлах specs/ для продолжения работы?

Создайте шаблоны промптов для четырёх режимов в виде сниппетов в вашем редакторе или менеджере буфера обмена — это снизит соблазн смешать режимы ради экономии времени

Ведите «журнал перепланирования»: при обновлении конституции фиксируйте, какая работа показала неточность старых решений — это обучает интуицию о типичных «местах трения»

Для изучения контура Планируй — Реализуй — Проверяй используйте ролевую игру: вы — агент, коллега или воображаемый «контролёр» — проверяет, не смешали ли вы фазы в ответе

Проверяйте свои спецификации «на угадывание»: попросите коллегу или другую модель AI прочитать только specs/ и описать, что она ПРЕДПОЛАГАЕТ о ненаписанных деталях — совпадения с вашими намерениями = хорошая спецификация

Начинайте с Bugfix-режима для простых задач: он короче и учит фокусироваться на «что не должно измениться» — навык, полезный во всех режимах

附加资源: Оригинальный курс sdd (части 1-2): Предшествующие материалы для понимания контекста — рекомендуется пройти перед углубленным изучением Части 3

Документация qwen code: https://github.com/QwenLM/Qwen2.5-Coder — официальное руководство по работе с агентом, включая команды /clear и @-ссылки

Git branching strategy (git flow / github flow): Сравнение стратегий ветвления для понимания, почему SDD предлагает ветки по фазам, а не по разработчикам

«writing great specifications» by kamil nicieja: Книга о спецификациях в BDD — аналоги с Gherkin-подходом помогают понять, почему validation.md отделяется от requirements.md

Rfc-процессы в open source (python pep, rust rfc): Примеры Design-First в крупных проектах — как tech-stack.md масштабируется до архитектурных решений сообщества

Практика: репозиторий-шаблон agentclinic/: Создайте форк учебного проекта и пройдите все практические упражнения из гайда в реальном окружении

摘要: Часть 3 представляет SDD как трёхслойный процесс, где знание умышленно «замораживается» в файлах конституции и спецификаций, а не размывается в истории чатов. Ключевые практики: изолированные Git-ветки по фазам, диагностика через /clear, чёткое разделение четырёх режимов работы с агентом, контур Планируй — Реализуй — Проверяй с запретом расширения плана в ходе реализации, и гибкий выбор между тремя режимами спецификации. Освоение этих практик переводит работу с AI-агентом из режима «магии» в режим инженерной дисциплины с воспроизводимыми результатами.

我的笔记
0 / 10000

笔记保存在当前浏览器中。在其他设备上将不会显示。

课程菜单

课程

基于 Qwen Code CLI 的规范驱动开发
进度 0 / 135