BMAD的多代理协同开发工作流指南
软件开发的世界瞬息万变,复杂性不断攀升。面对日益增长的需求、紧凑的交付周期以及多元化的技术栈,传统开发模式的瓶颈日益凸显。项目管理中的信息孤岛、责任边界不清、文档与代码脱节等问题,常常导致效率低下、质量折损。
正是在这样的背景下,BMAD (Bespoke Multi-Agent Development) 系统应运而生。它不仅仅是一个工具,更是一种创新的开发哲学,将多代理协同与模板化任务深度融合,覆盖从需求洞察到交付回顾的软件开发全生命周期。BMAD旨在构建一个高度自动化、标准化、可追溯、且极具弹性的开发生态,让每个角色都能在智能代理的协助下,以更高的效率和更一致的质量完成任务。
本篇将带您深入剖析BMAD系统,从基础概念、环境准备、文档规划、开发循环到质量交付,提供全方位的实战案例和专业技巧。我们将以一个具体的项目——“智能家居气候控制系统(Smart Home Climate Control System, SHCCS)”为例,贯穿整个BMAD工作流,展示如何借助BMAD系统,将一个复杂的想法,逐步转化为高质量的软件产品。
概览:BMAD系统的核心理念与架构 (Overview: Core Concepts & Architecture of BMAD System)
BMAD系统的设计思想是高度模块化和智能化的。它将软件开发过程中的各个专业角色(如分析师、产品经理、UX专家、架构师、开发者、QA工程师、产品负责人、Scrum Master等)抽象为智能代理(Agents)。这些代理依据预设的职责和能力,在特定任务模板的指引下协同工作,共同推动项目的进展。
1. BMAD系统围绕多代理协同与模板化任务,覆盖从需求洞察到交付回顾的全生命周期。
深度解析:
BMAD的核心价值在于其“多代理协同”和“模板化任务”两大支柱。
-
多代理协同 (Multi-Agent Collaboration): 在BMAD中,每个智能代理都代表了团队中的一个专业角色,拥有该角色所需的特定知识、工具和决策能力。例如,
@analyst
擅长需求收集与分析,@architect
精通系统设计与技术选型,@dev
负责代码实现与测试,@qa
专注于质量保障。这些代理并非互相独立工作,而是在一个统一的框架下,通过明确定义的输入和输出、以及标准化的沟通协议进行无缝协作。当一个代理完成其任务后,其产出将作为下一个相关代理的输入,形成一个高效的流水线。这种协同机制极大地减少了传统开发模式中的沟通成本和信息传递损耗,确保了知识和决策的连贯性。
以我们的智能家居气候控制系统(SHCCS) 项目为例:@analyst
首先分析市场需求,产出初步的项目简报。- 然后
@pm
基于简报,与代理互动,生成详细的产品需求文档(PRD)。 @ux-expert
依据PRD设计用户体验和前端规范。@architect
参考PRD和UX规范,设计系统架构。@dev
按照架构和用户故事进行编码。@qa
对代码进行质量审核。- 最终
@po
审核所有工件,确保项目满足Definition of Done。
整个过程就像一个配合默契的交响乐队,每个乐手(代理)演奏自己的部分,共同奏响和谐的乐章。
-
模板化任务 (Templated Tasks): 为了确保开发过程的标准化和一致性,BMAD引入了大量的任务模板。这些模板定义了特定任务的执行步骤、所需输入、预期输出以及质量标准。例如,创建一个PRD有
prd-tmpl.yaml
模板,构建系统架构有fullstack-architecture-tmpl.yaml
模板。通过强制使用这些模板,BMAD能够确保:- 一致的质量: 每次执行相同类型的任务都能获得结构和内容一致的产出。
- 效率提升: 代理无需从零开始,而是填充模板内容,大大加快了文档和工件的生成速度。
- 知识沉淀: 最佳实践和领域知识被编码进模板,通过每一次任务执行得到复用和强化。
- 易于理解: 所有人都能快速理解文档的结构和内容,减少了理解偏差。
覆盖全生命周期: BMAD系统不仅仅关注编码阶段,而是将其智能代理的触角延伸到软件开发的每一个阶段:
* 需求洞察: 通过 @analyst
和 @pm
代理收集、分析并文档化需求。
* 设计与规划: 通过 @ux-expert
和 @architect
代理进行用户体验设计和系统架构设计。
* 开发与测试: 通过 @dev
代理实现功能,并通过 @qa
代理进行质量保障。
* 部署与交付: 虽然直接部署任务在某些配置中是可选的,但系统的最终工件和总结报告 (document-project
) 都为顺利交付提供了完整的档案。
* 回顾与优化: 支持迭代回顾,帮助团队从过去的经验中学习并改进未来的工作。
2. 项目根目录下的 docs/
存放最终工件,.bmad-core/
提供任务、模板、流程与知识库。
深度解析:
BMAD系统拥有一个清晰、标准化的项目结构,这对于大型项目的管理和多代理协同尤为关键。
-
docs/
目录:项目的最终工件集散地
docs/
目录是所有由BMAD代理生成、审核并通过的最终工件的存放位置。它是项目的“唯一真相来源 (Single Source of Truth)”。这意味着,无论是产品经理的PRD、UX专家的设计规范、架构师的系统蓝图、还是QA的测试报告,最终都将以结构化的Markdown或其他指定格式,安放在此目录下。
对于我们的SHCCS项目,docs/
目录将包含:docs/project-brief.md
:项目简报。docs/prd.md
或者分片后的docs/prd/
目录:详细的产品需求文档。docs/front-end-spec.md
:前端规格与用户体验设计。docs/fullstack-architecture.md
:系统架构设计文档。docs/qa/
:QA门禁总结、测试报告等。docs/stories/
:各个用户故事的详细记录。
这种集中存放的策略有几个显著优点:
- 易于访问与查找: 所有重要文档都在一个地方,团队成员可以轻松找到所需信息。
- 版本控制友好:
docs/
目录及其内容可以被纳入Git版本控制,实现文档的版本追踪、变更记录和协作。 - 信息共享一致: 确保所有代理和团队成员都基于最新、最权威的文档进行工作。
- 项目审计与交接: 提供了项目完整的历史记录和交付物,便于审计、新成员 onboarding 或项目交接。
-
.bmad-core/
目录:BMAD系统的动力中枢
.bmad-core/
目录是BMAD系统内部运行逻辑、配置和知识的集合,通常被视为BMAD的“大脑”。它包含了驱动代理协同、任务执行和知识服务的核心文件。开发者和高级用户可以通过修改此目录内容来定制BMAD的行为,但通常情况下,这里的内容由BMAD系统维护。
主要子目录包括:.bmad-core/workflows/
:工作流定义
这里存放了不同项目类型或阶段的工作流定义文件,通常是YAML格式。例如,greenfield-fullstack.yaml
定义了一个全新全栈项目的完整流程。这些文件链式地定义了各个代理在不同阶段需要执行的任务序列、依赖关系和状态流转。
在SHCCS项目中,我们可能会使用greenfield-fullstack.yaml
作为蓝本,它会详细描述从需求分析到代码实现的每一个步骤,以及哪个代理负责。.bmad-core/templates/
:任务模板
这些是BMAD代理生成文档或代码的基础模板文件(如Markdown或YAML格式)。每个模板都为特定类型的任务提供了一个结构化的骨架。当一个代理被要求创建一个文档时,它会加载相应的模板,并根据项目上下文和用户的互动来填充内容。
例如,prd-tmpl.yaml
、front-end-spec-tmpl.yaml
、fullstack-architecture-tmpl.yaml
等。.bmad-core/agents/
:代理定义
定义了BMAD系统中所有可用代理的详细信息,包括他们的角色、能力、可调用的工具(如LLM接口、代码库交互接口)以及特定的行为逻辑。.bmad-core/knowledge_base/
:知识库
BMAD的知识库,包含了各种最佳实践、技术规范、编程指南、领域知识等。代理在执行任务时,可以查询知识库以获取上下文信息、解决问题或遵循特定规范。这使得BMAD系统能够像一个经验丰富的团队成员一样工作。例如,SHCCS项目可能在知识库中包含“智能家居设备通信协议最佳实践”、“低功耗设备集成指南”等。.bmad-core/core-config.yaml
:核心配置
这是BMAD全局配置的文件,定义了文档的默认生成路径、分片策略、故事目录等。后文将详细介绍。
3. AGENTS.md/AGENTS_CN.md
帮助快速了解角色职责;bmad-core/core-config.yaml
定义文档位置、分片路径与故事目录。
深度解析:
理解BMAD系统的运作,离不开对其核心组成部分的认知。
-
AGENTS.md
/AGENTS_CN.md
:快速了解代理角色职责
这两个文件(根据语言选择其一)是BMAD系统中智能代理的“使用手册”。它们详细列出了每个代理的名称、所代表的角色、主要职责、具备的能力以及它们在工作流中可能承担的关键任务。对于初次接触BMAD或需要快速了解某个代理职责的团队成员来说,阅读这些文件是至关重要的第一步。
例如,对于SHCCS项目,AGENTS_CN.md
中可能包含:#### @analyst (分析师) 职责:需求搜集、市场分析、项目初期范围定义、用户故事梳理的初步阶段。 能力:能够进行头脑风暴,产出项目简报,协助定义初步的用户故事。 常用任务:`*task facilitate-brainstorming-session`, `*task document-project`, `*task create-next-story` (初步)#### @pm (产品经理) 职责:产品策略定义、需求优先级排序、产品路线图规划、PRD编写与维护。 能力:能够将业务需求转化为可执行的产品规格,与用户互动获取详细需求。 常用任务:`*create-doc prd-tmpl.yaml`, `*review-story`, `*update-story-status`#### @architect (架构师) 职责:系统高层设计、技术栈选型、接口定义、性能与安全考量。 能力:能够根据产品需求和技术可行性设计稳健可扩展的系统。 常用任务:`*create-doc fullstack-architecture-tmpl.yaml`#### @dev (开发员) 职责:代码实现、单元测试、集成测试、代码维护。 能力:能够将用户故事转化为可运行的代码,并遵循既定架构与规范。 常用任务:`*develop-story`#### @qa (质量保证工程师) 职责:测试计划、测试用例设计、执行测试、缺陷报告、代码审查、质量门禁。 能力:能够确保软件质量符合标准,识别并报告问题。 常用任务:`*review`, `*gate`, `*execute-checklist story-dod-checklist`#### @po (产品负责人) 职责:产品愿景宣贯、Backlog管理、故事验收、迭代回顾。 能力:确保产品符合业务价值和客户需求,是产品的最终决策者。 常用任务:`*execute-checklist po-master-checklist`, `*shard-doc`
通过这样的描述,我们可以清楚地知道在SHCCS项目的不同阶段应该调用哪个代理来执行相应任务。
-
bmad-core/core-config.yaml
:BMAD的核心配置
core-config.yaml
文件是BMAD系统的全局配置文件,它定义了整个项目空间内文件和目录的关键路径、命名约定以及处理方式。理解并根据项目需求调整此文件是BMAD高级用户和项目管理员的重要职责。
主要配置项包括:docLocations
:核心文档的相对路径
定义了PRD、架构文档、UX规范等主要文档在docs/
目录下的预期位置。例如:
这些定义告诉BMAD代理在生成这些文档时应该将它们放在哪里,也方便其他代理或人工查找。docLocations:prd: "docs/prd.md"architecture: "docs/fullstack-architecture.md"frontendSpec: "docs/front-end-spec.md"projectBrief: "docs/project-brief.md"qaLocation: "docs/qa/"
shardingPaths
:分片文档的存储路径
当一个大型文档(如PRD)被拆分成多个小文件(分片)时,这些小文件需要一个存放位置。shardingPaths
定义了这些分片文档的父目录。例如,docs/prd.md
可能会被分片到docs/prd/
目录下。
这些路径会在分片操作后自动同步到shardingPaths:prdShardedLocation: "docs/prd/"architectureShardedLocation: "docs/architecture/"
core-config.yaml
中,确保BMAD知道在哪里找到分片后的内容。storyRoots
:用户故事的存放目录
定义了用户故事(User Stories)文件的根目录。通常是stories/
。
所有通过storyRoots:default: "stories/"
@sm
代理生成的,或由BMAD系统管理的用户故事文件,都将存放在此目录下。每个故事通常是一个独立的Markdown文件,记录了故事的标题、描述、验收标准、状态、开发记录等信息。
4. 正式项目通常遵循 greenfield-*
或 brownfield-*
工作流,可按需求灵活增删步骤。
深度解析:
BMAD系统预设了多种常见的工作流模板,以适应不同类型的项目。
-
greenfield-*
(全新项目) 工作流:
适用于从零开始的新项目,即没有现有代码库或系统可以依赖。这类项目通常需要完整的需求分析、系统设计和开发流程。
SHCCS项目示例: 我们的“智能家居气候控制系统”就是一个典型的Greenfield项目。它需要构建全新的移动应用程序、后端API、设备集成和管理界面。因此,我们会选择如greenfield-fullstack.yaml
这样的工作流。
这个工作流会引导我们:- 从
@analyst
的需求简报开始。 - 到
@pm
的PRD制定。 @ux-expert
的UI/UX设计。@architect
的系统架构设计。@sm
拆分故事。@dev
的开发实现。@qa
的质量检测。- 最后到
@po
的验收与回顾。
它确保了所有必要的基础工作都被涵盖,以构建一个全新的、端到端的解决方案。
- 从
-
brownfield-*
(遗留系统改造/增补) 工作流:
适用于在现有系统上进行功能增强、Bug修复、技术升级或部分重构的项目。这类项目需要考虑现有系统的约束、兼容性以及如何平滑地集成新功能。
SHCCS未来场景设想: 假设SHCCS系统已经上线运行。现在我们需要增加对新的智能窗帘控制器的支持。这将是一个brownfield-feature-add.yaml
类型的工作流。
该工作流可能侧重于:- 分析现有架构以确定集成点。
- 仅为新功能创建PRD的一个特定部分。
- UX代理可能只关注新控制器在现有APP界面的集成。
- 架构师重点设计新设备的通信协议和数据模型,以及对现有系统的影响。
- 开发者实现新设备的驱动和API扩展。
- QA测试新功能及对现有功能的回归影响。
它的步骤会比Greenfield工作流更精简、更有针对性。
-
工作流的灵活性:按需求增删步骤
BMAD工作流的强大之处在于其高度可定制性。即使是预设的greenfield-fullstack.yaml
,也只是一个蓝本。项目团队可以根据实际需求,灵活地修改工作流定义文件(位于.bmad-core/workflows/
)。- 增添步骤: 例如,如果项目对安全性有极高要求,可以在架构设计和开发之间增加一个
@security-expert
代理进行安全设计审查。或者在QA之后增加一个独立的性能测试阶段。 - 删除步骤: 对于内部原型项目,可能不需要完整的UX设计或严格的QA门禁,这时可以移除这些阶段以加速交付。例如,如果团队决定暂时不进行AI UI生成,可以跳过
*task generate-ai-frontend-prompt
这个任务。 - 修改代理或任务: 可以修改某个阶段由哪个代理执行,或者代理执行的具体任务。
这种灵活性确保了BMAD能够适应各种项目规模、团队结构和业务需求,而不会成为僵化的束缚。
- 增添步骤: 例如,如果项目对安全性有极高要求,可以在架构设计和开发之间增加一个
5. 每个阶段都应使用对应代理执行任务,保持“谁创建、谁维护”的责任链。
深度解析:
这是BMAD系统高效运作和维持高质量产出的一个核心原则。
-
专职专责,各司其职:
BMAD强制要求,每个任务都必须由其指定的代理来执行。就像在SHCCS项目中,PRD的创建专属@pm
,架构文档的创建专属@architect
,用户故事的实现专属@dev
。这种专职分工避免了职责不清导致的混乱和低效。每个代理都拥有其领域内的专业知识和工具,确保了任务执行的专业性和权威性。- 示例: 假若
@dev
尝试创建 PRD,BMAD系统会提示该任务不属于@dev
的职责范围,并建议正确的代理@pm
。
- 示例: 假若
-
“谁创建、谁维护”的责任链:
这一原则进一步强化了责任感和所有权。一旦某个代理创建了某项工件(文档、代码片段、测试报告等),那么该代理或其代表的角色就负有对其后续维护和更新的责任。- 示例:
- PRD (
docs/prd.md
) 由@pm
创建,那么后续当需求发生变更时,修改和更新PRD的责任也落在@pm
身上。这样可以确保PRD始终反映产品当前最新的状态。 - 架构文档 (
docs/fullstack-architecture.md
) 由@architect
创建,当技术栈发生变化或需要支持新功能而导致架构调整时,@architect
负责更新该文档。 - 用户故事 (
stories/SHCCS-XXX.md
) 由@sm
或@po
批准,由@dev
实现,那么开发记录和状态更新都由@dev
负责。 - QA门禁报告 (
docs/qa/SHCCS-XXX-gate-report.md
) 由@qa
生成,反映了特定功能的质量状态,其准确性和完整性由@qa
负责。
- PRD (
- 示例:
带来的益处:
- 清晰的责任边界: 团队成员能够明确知道谁负责哪一部分,避免了“踢皮球”现象。
- 高质量的维护: 由创建者维护,通常意味着对内容的深入理解和专业判断,有助于提升更新的质量和及时性。
- 知识沉淀与一致性: 代理在维护过程中积累的经验,可以反哺到其模板和知识库中,进一步提升BMAD系统的智能水平。
- 提高可追溯性: 任何产出的变更都可追溯到负责的代理,方便进行审计和问题排查。
这种“谁创建、谁维护”的责任链,配合多代理协同和模板化任务,共同构成了BMAD系统高效、高质量软件开发的基础。
准备阶段:BMAD项目启动的基石 (Preparation Phase: Foundation for BMAD Project Startup)
在正式启动BMAD项目之前,充分的准备工作至关重要。这包括理解项目的配置、熟悉可用的工具和代理,以及建立清晰的文档结构。一个好的开始是成功的一半,特别是在一个高度自动化和结构化的系统中。
1. 初次进入仓库先阅读 bmad-core/core-config.yaml
,确认 PRD/架构/QA 等文档路径与分片设定。
深度解析:
core-config.yaml
文件是 BMAD 项目的“宪法”,它定义了项目的基础规则和资源分布。在开始任何具体任务之前,花时间仔细研读这份文件,是确保后续流程顺利进行的关键第一步。
为什么如此重要?
- 统一认知: 确保所有团队成员(无论是人工还是代理)对项目的文档结构和关键资源位置有统一的认知。
- 避免错误: 明确各类型文档的存储位置可以避免因路径错误导致的文件未找到、覆盖或存储不当问题。
- 规划依赖: 了解文档的分片设定有助于我们预期大型文档如何被拆解,以及这些拆解后的部分将如何被其他代理引用。
实训案例 (SHCCS):解读 core-config.yaml
假设我们的SHCCS项目仓库刚刚克隆下来,我们首先打开 .bmad-core/core-config.yaml
:
# .bmad-core/core-config.yaml 内容示例# 定义核心文档在 docs/ 目录下的预期位置
docLocations:projectBrief: "docs/project-brief.md"prd: "docs/prd.md"architecture: "docs/fullstack-architecture.md"frontendSpec: "docs/front-end-spec.md"qaLocation: "docs/qa/" # QA相关输出的根目录# 定义分片文档的存储路径,这些路径在分片操作后会自动创建和同步到此配置
shardingPaths:prdShardedLocation: "docs/prd/" # PRD分片后位于此目录architectureShardedLocation: "docs/architecture/" # 架构文档分片后位于此目录# 定义用户故事文件的根目录
storyRoots:default: "stories/"# 其他配置项...
解读步骤:
-
确认PRD路径:
从docLocations
中,我们看到prd: "docs/prd.md"
。这告诉我们,产品经理 (@pm
) 生成的完整产品需求文档 (PRD) 最终将保存在项目根目录下的docs/prd.md
文件中。 -
确认架构文档路径:
同样,architecture: "docs/fullstack-architecture.md"
指示架构师 (@architect
) 的系统架构文档将位于docs/fullstack-architecture.md
。 -
确认QA输出路径:
qaLocation: "docs/qa/"
明确了所有QA相关的输出,例如测试报告、QA门禁决策等,将统一存放在docs/qa/
目录下。这是一个目录,意味着其下可能包含多个文件或子目录。 -
理解分片设定:
shardingPaths
部分尤为关键。prdShardedLocation: "docs/prd/"
:这意味着,当docs/prd.md
这个大文档被逻辑地拆分成若干小块时,这些小块的Markdown文件将存放在docs/prd/
目录中。例如,PRD的“用户故事”章节可能被拆分成docs/prd/user_stories.md
。architectureShardedLocation: "docs/architecture/"
:同理,架构文档的分片将位于docs/architecture/
目录。
分片机制对于大型文档非常有用,它让代理和人工更容易聚焦于文档的特定部分,尤其是在故事开发阶段,@dev
代理可以直接读取特定分片来理解其任务上下文。
-
确认故事目录:
storyRoots:
部分指定了用户故事文件的存放位置,通常是stories/
目录。这意味着所有用户故事,如 SHCCS-001、SHCCS-002 等,都将以独立的 Markdown 文件的形式保存在这个目录下。
操作建议:
在确认这些路径后,项目管理员或PM可以开始在 docs/
目录下创建相应的空文件或目录结构,以便BMAD代理在后续生成文档时能顺利写入。虽然BMAD通常会自动创建这些,但提前创建能确保路径无误,并给团队一个清晰的结构预览。
2. 运行 npx bmad-method list:agents
熟悉可用代理;需要任务清单时可用 *task
查看。
深度解析:
BMAD是一个多代理系统,了解有哪些代理以及它们能做什么,是高效使用系统的基础。
npx bmad-method list:agents
:列出所有可用代理
这个命令是你的“代理花名册”。它会显示当前BMAD配置中所有已定义的智能代理清单,包括它们的简称(用于命令调用,如@pm
)、全名和简要描述。通过这个列表,你可以快速掌握团队中有哪些“虚拟成员”可以使用,以及它们各自的专长领域。
实训案例 (SHCCS):熟悉代理列表
在项目根目录下,打开终端,运行命令:
npx bmad-method list:agents
预期输出 (示例):
Available BMAD Agents:- @analyst (Analyst): Specialized in requirement gathering, market analysis, and project scope definition.
- @pm (Product Manager): Responsible for product strategy, PRD creation, and backlog management.
- @ux-expert (UX Expert): Focuses on user experience design, UI specifications, and user feedback incorporation.
- @architect (Architect): Designs the overall system architecture, technology stack, and integration patterns.
- @dev (Developer): Implements user stories, writes code, and performs unit/integration tests.
- @qa (QA Engineer): Conducts testing, ensures quality, and performs code reviews.
- @po (Product Owner): Manages the product backlog, ensures alignment with business value, and accepts stories.
- @sm (Scrum Master): Facilitates the Agile process, helps manage stories, and removes impediments.
- @sec-expert (Security Expert) (Optional): Conducts security reviews and advises on best practices.
# 更多可能存在的定制化代理...
通过这个列表,我们可以看到SHCCS项目中有 @analyst
来理解需求,@pm
来定义产品,@architect
来设计技术方案,@dev
来实现功能,@qa
来保障质量等等。
*task
查看代理任务清单
一旦你了解了有哪些代理,下一步就是知道每个代理能执行哪些具体的任务。*task
命令是你的“任务手册”,它可以让你查询某个特定代理的所有可用任务,或者查询与某个关键词相关的任务。
实训案例 (SHCCS):查询代理任务
-
查询
@pm
的所有任务:
假设我们想知道产品经理 (@pm
) 这个代理可以执行哪些任务,我们可以这样查询:npx bmad-method @pm *task
预期输出 (示例):
@pm (Product Manager) tasks: - *create-doc <template_path>: Create a document based on a specified template. - *amend-doc <doc_path>: Amend an existing document. - *review-story <story_path>: Review a user story. - *update-story-status <story_path> <status>: Update the status of a user story. - *execute-checklist <checklist_name>: Execute a predefined checklist (e.g., po-master-checklist). - *shard-doc <source_doc_path> <target_dir_path>: Shard a large document into smaller files. - *document-project: Generate a summary document of the current project state. # 更多 PM 相关的任务...
-
查询与特定关键词相关的任务:
如果我不确定哪个代理负责“创建故事”,但知道关键词是“story”,我可以尝试:npx bmad-method *task story
预期输出 (示例):
Tasks related to "story": - @analyst: *create-next-story: Generate the next user story based on current project brief. - @sm: *draft <source_document_path>: Draft user stories from a source document. - @dev: *develop-story <story_path>: Develop the code for a specific user story. - @qa: *review <story_path>: Review the code and logic for a specific user story. - @po: *update-story-status <story_path> <status>: Update the status of a user story. # ...
通过这种方式,团队成员可以随时查询BMAD系统的能力,快速定位到正确的代理和任务,从而更高效地驱动项目。
3. 建议建立 docs/project-brief.md
、docs/prd.md
等目标文件夹,确保后续输出版面一致。
深度解析:
虽然BMAD代理在生成文档时通常会自动创建所需的目录和文件,但手工提前建立这些文件和目录是一种优秀的实践。
为什么提前建立是好的实践?
- 视觉预览与规划: 提早构建文件结构,能让团队成员对项目的最终文档布局有一个清晰的预期和视觉感知。这有助于项目的整体规划。
- 路径确认与校验: 可以在BMAD代理实际写入之前,人工确认
bmad-core/core-config.yaml
中定义的路径与实际创建的结构是否一致,避免未来因路径错误而导致的各种问题。 - 占位符与模板: 可以在创建的文件中加入简单的占位符或标题,作为代理生成内容的基础,或作为人工编辑的起点。例如,
docs/project-brief.md
可以先写入项目名称和日期。 - 版本控制初始化: 提前创建的文件和目录可以立即添加到Git版本控制中,作为项目初始结构的一部分,确保文档结构本身的追溯性。
实训案例 (SHCCS):在项目伊始创建文档结构
基于我们从 core-config.yaml
中了解到的路径,我们可以在项目根目录下执行以下步骤来初始化文档结构:
-
创建
docs/
根目录:
如果docs/
目录尚不存在,首先创建它。mkdir docs
-
创建核心文档的空文件:
根据docLocations
中的定义,创建主要文档的空文件。touch docs/project-brief.md touch docs/prd.md touch docs/fullstack-architecture.md touch docs/front-end-spec.md
-
创建分片与QA输出的目录:
根据shardingPaths
和qaLocation
中的定义,创建相应的目录。mkdir docs/prd mkdir docs/architecture mkdir docs/qa
-
创建用户故事(stories)的根目录:
根据storyRoots
中的定义,创建用户故事的根目录。mkdir stories
通过这些简单的 mkdir
和 touch
命令,我们为SHCCS项目构建了一个清晰、预期的文档和故事(story)存储结构。这不仅让整个团队对即将生成的BMAD工件有了直观的认识,也为BMAD代理后续的任务执行提供了稳固的基础。
4. 若要了解完整流程,可打开 .bmad-core/workflows/greenfield-fullstack.yaml
(或对应 brownfield)做为蓝本。
深度解析:
工作流文件是BMAD系统的“剧本”,它详细描述了项目从开始到结束的完整流程,包括在每个阶段哪个代理需要执行哪些任务,以及任务之间的依赖关系。对于理解BMAD如何驱动项目,研读相应的工作流文件至关重要。
为何要查看工作流文件?
- 全景视图: 获取项目从头到尾的宏观流程图,理解各个阶段和任务如何串联。
- 代理职责可视化: 清楚地看到每个代理在不同阶段的具体行动和输出。
- 任务顺序与依赖: 了解任务的执行顺序和前置条件,例如,PRD必须在UX设计之前完成。
- 定制化参考: 如果你需要修改或定制工作流,这份文件是最佳的蓝本和参考。
实训案例 (SHCCS):解读 greenfield-fullstack.yaml
我们的SHCCS是一个全新项目,因此我们将以 greenfield-fullstack.yaml
作为蓝本进行学习。打开 .bmad-core/workflows/greenfield-fullstack.yaml
文件:
# .bmad-core/workflows/greenfield-fullstack.yaml 示例内容片段workflowName: Greenfield Fullstack Development
description: Complete end-to-end workflow for a new fullstack project development.stages:- name: Analysis & Planningdescription: Initial requirements gathering, project briefing, and foundational document creation.tasks:- taskName: Brainstorming Sessionagent: @analystmethod: facilitate-brainstorming-sessionoutput: docs/brainstorm_notes.mdcanSkip: true- taskName: Project Brief Documentagent: @analystmethod: document-projectinputs:# input parameters from brainstorming notes, initial idea etc.output: docs/project-brief.mddependsOn: Brainstorming Session- taskName: Product Requirement Document (PRD)agent: @pmmethod: create-doctemplate: templates/prd-tmpl.yamlinputs:projectBrief: docs/project-brief.md # Input from previous stageoutput: docs/prd.mdelicit: true # Requires interactive elicitation- taskName: Frontend Specificationagent: @ux-expertmethod: create-doctemplate: templates/front-end-spec-tmpl.yamlinputs:prd: docs/prd.md # Input from PRDoutput: docs/front-end-spec.md- taskName: Fullstack Architectureagent: @architectmethod: create-doctemplate: templates/fullstack-architecture-tmpl.yamlinputs:prd: docs/prd.mdfrontendSpec: docs/front-end-spec.mdoutput: docs/fullstack-architecture.md- name: Planning Documents Review & Shardingdescription: Verification and breakdown of planning documents.tasks:- taskName: PO Master Checklist Reviewagent: @pomethod: execute-checklistchecklist: po-master-checklistinputs:prd: docs/prd.mdarchitecture: docs/fullstack-architecture.mdfrontendSpec: docs/front-end-spec.md# ... conditional logic for revisions ...- taskName: Shard PRDagent: @pomethod: shard-docinputs:sourceDoc: docs/prd.mdtargetDir: docs/prd/output: docs/prd/ # A directory of sharded filesdependsOn: PO Master Checklist Review- taskName: Shard Architectureagent: @pomethod: shard-docinputs:sourceDoc: docs/fullstack-architecture.mdtargetDir: docs/architecture/output: docs/architecture/dependsOn: PO Master Checklist Review- name: Development Cycledescription: Iterative story development, testing, and QA.tasks:- taskName: Draft User Storiesagent: @smmethod: draftinputs:shardedPrd: docs/prd/shardedArchitecture: docs/architecture/output: stories/ # Creates story files here- taskName: Develop and Test Storyagent: @devmethod: develop-storyinputs:story: stories/{current_story}.md # Placeholder for iterative story# ... logic for repeated execution ...- taskName: QA Story Reviewagent: @qamethod: reviewinputs:story: stories/{current_story}.md# ... logic for potential re-assignment to dev ...- name: Quality & Deliverydescription: Final quality gates, documentation, and project closure.tasks:- taskName: Execute Story DoD Checklistagent: @qamethod: execute-checklistchecklist: story-dod-checklistinputs:story: stories/{current_story}.md- taskName: QA Gate Decisionagent: @qamethod: gateinputs:story: stories/{current_story}.mdoutput: docs/qa/{current_story}-gate-report.md# ... more stages and tasks (e.g., Retrospective, Final Documentation) ...
解读要点:
- 阶段 (Stages): 工作流被划分为逻辑上的阶段,如“Analysis & Planning”、“Planning Documents Review & Sharding”、“Development Cycle”等。每个阶段都有明确的目标。
- 任务 (Tasks): 每个阶段包含一系列具体的任务。
taskName
:任务的名称。agent
:执行该任务的代理(如@analyst
,@pm
)。method
:代理执行的具体方法或命令(如facilitate-brainstorming-session
,create-doc
)。inputs
:完成任务所需的前置输入,通常是前一个任务的输出文档或系统配置。例如,PRD任务的输入是projectBrief: docs/project-brief.md
。output
:任务完成后的预期输出,如文件路径。dependsOn
:明确了任务的依赖关系,确保任务按逻辑顺序执行。例如,PRD任务依赖于“Project Brief Document”。elicit: true
:这是一个重要标志,表示该任务需要代理与用户进行交互式问答,以获取详细信息来填充模板。canSkip: true
:表示该任务是可选的,用户可以选择跳过。
通过对 greenfield-fullstack.yaml
的研读,我们对SHCCS项目在BMAD下的完整生命周期有了清晰的认识,包括哪些代理会在何时被调用,它们会做什么,以及它们之间如何传递信息。这为后续的实际操作提供了坚实的理论基础。
5. 确认团队偏好:是否需要生成 AI UI(UX prompt)、是否安排 QA、是否执行回顾等可选环节。
深度解析:
BMAD系统提供了极大的灵活性,许多环节并非强制性的,而是可以根据团队的实际偏好、项目特性、时间和资源限制进行配置或选择性执行。在项目准备阶段,与团队成员共同讨论并明确这些偏好和决策,对于定制化工作流和资源分配至关重要。
为什么需要确认团队偏好?
- 资源优化: 有些环节(如AI UI生成、全面的QA)可能需要额外的计算资源、时间投入或专业的代理配置。根据团队偏好,可以合理分配资源,避免不必要的开销。
- 效率与质量平衡: 某些项目可能更注重快速原型迭代(可能牺牲部分自动化QA),而另一些则要求极致的质量(需要完整QA和多轮审核)。确认偏好有助于找到效率与质量之间的最佳平衡点。
- 避免冲突: 提前明确哪些环节是团队共识,可以避免在项目进行过程中因对流程理解不一致而产生的冲突。
- 定制工作流: 团队的偏好可以直接指导对
greenfield-fullstack.yaml
等工作流文件的修改,使其更符合实际需求。
实训案例 (SHCCS):团队偏好决策
在SHCCS项目启动会议上,团队(包括产品、UX、开发、QA、PO和Scrum Master)进行讨论,就以下可选环节达成共识:
-
是否需要生成 AI UI(UX prompt)?
- 讨论: SHCCS移动应用的界面设计是关键,团队希望探索创新和用户友好的设计。虽然UX专家会提供核心设计,但AI生成UI提示可以为早期概念验证提供丰富的视觉灵感。
- 决策: 是,我们需要利用
@ux-expert
的*task generate-ai-frontend-prompt
任务来探索V0/Lovable的用户界面提示。这能帮助我们快速迭代设计理念,特别是在移动应用界面的初期探索阶段。 - 影响:
greenfield-fullstack.yaml
工作流中,在前端规格 (front-end-spec.md
) 生成之后,会额外执行此任务。
-
是否安排 QA?
- 讨论: SHCCS是一个智能家居系统,直接关系到用户的生活质量和数据安全(如温度控制的准确性、隐私保护)。因此,质量是不可妥协的。
- 决策: 是,必须安排全面的QA环节。这包括
@qa
代理的代码审查、测试执行,以及最终的QA门禁 (*gate
)。 - 影响:
greenfield-fullstack.yaml
中的“Development Cycle”和“Quality & Delivery”阶段的QA相关任务将全部启用并严格执行。
-
是否执行回顾?
- 讨论: SHCCS项目预计周期较长,并且涉及多个技术栈和代理协同。定期的回顾对于识别流程中的痛点、改进团队协作和代理效率至关重要。
- 决策: 是,虽然
epic-retrospective
任务在当前版本可能仍是未来功能,但我们将计划在每个主要Epic完成后,由@po
或@sm
组织一次人工回顾会议。同时,我们会利用BMAD的*document-project
命令定期生成项目状态总结,作为回顾会议的输入材料。 - 影响:
greenfield-fullstack.yaml
不会直接修改,但会在项目管理流程中加入手动回顾点,并利用BMAD已有的文档生成能力来支持。
通过上述讨论和决策,SHCCS团队明确了项目流程中的关键选择,并根据这些选择调整了对BMAD工作流的期望和实际操作计划。这确保了BMAD系统能够真正服务于团队的特定需求,而不是仅仅遵循一个通用的模板。
规划文档:BMAD驱动的项目蓝图 (Planning Documents: BMAD-Driven Project Blueprint)
规划是软件开发成功的基石,而高质量的文档则是规划阶段的核心产出。在BMAD系统中,文档的规划和生成是一个高度自动化、交互式且协作的过程。各个专业代理将依照其职责,在项目简报、产品需求、用户体验和系统架构等关键领域,利用模板化任务和交互式问答(elicit)机制,逐步构建起项目的全面蓝图。
1. 分析阶段:@analyst
→ *task create-next-story
或 document-project
生成 project-brief.md
,可先执行 facilitate-brainstorming-session
获取灵感。
深度解析:
项目的起点往往是一个模糊的想法或一系列的需求。分析师 (@analyst
) 代理在BMAD中扮演着将这些原始信息转化为结构化项目简报和初步用户故事的关键角色。为了更好地启动这个过程,BMAD提供了 facilitate-brainstorming-session
任务,帮助团队集思广益。
-
facilitate-brainstorming-session
:获取灵感的利器
这个任务旨在模拟一个互动式的头脑风暴会议。@analyst
代理会引导用户提供项目背景、目标、潜在用户和主要功能等信息。通过一系列的提问和建议,帮助人工用户或代理本身挖掘出更深层次的需求和创意。其输出通常是会议纪要形式的、非正式的文本,作为后续正式文档的输入。 -
document-project
:生成项目简报 (project-brief.md
)
在头脑风暴的基础上,或者直接从一个初步的想法开始,@analyst
可以调用document-project
任务来生成项目的正式简报文件project-brief.md
。这份简报是对项目核心内容的高层次概述,它将定义项目的目标、范围、主要功能模块、目标用户群体和关键业务价值,为后续更详细的PRD和架构文档奠定基础。 -
create-next-story
:初步用户故事生成
在项目简报形成后,@analyst
也可以利用create-next-story
任务,根据简报内容初步梳理出一些高层次的用户故事。这些故事通常是粗粒度的,后续会由Scrum Master (@sm
) 或产品负责人 (@po
) 细化。
实训案例 (SHCCS):分析阶段实践
-
执行
facilitate-brainstorming-session
获取灵感:
我们作为项目负责人,先与@analyst
进行一次头脑风暴,为SHCCS项目收集创意。npx bmad-method @analyst facilitate-brainstorming-session
终端互动与预期输出 (示例):
(BMAD) @analyst: 好的,我们来开始一个智能家居气候控制系统的头脑风暴。请告诉我,这个系统的主要目标是什么?
(User): 我们的目标是让用户能通过手机远程控制家中温度,并实现能效优化和舒适性提升。
(BMAD) @analyst: 很好。对于“能效优化”,你有什么具体的想法吗?例如,系统如何实现节能?
(User): 可以通过学习用户行为模式、假期模式设定、以及与外部气象数据联动来实现。
(BMAD) @analyst: 学习用户行为模式听起来很有趣。考虑到用户隐私,我们会如何处理这些数据?有哪些潜在的用户群体?他们最看重SHCCS的哪些功能?
(User): 主要用户群体是关心家庭舒适度、科技感和节能的年轻家庭和白领。他们最看重便捷的远程控制、智能化的温度调节和清晰的能耗报告。
(BMAD) @analyst: 明白了。除了温度控制,还会涉及到哪些环境因素的控制?如湿度、空气质量?或者与其他智能家居设备的联动?
(User): 初期只聚焦温度,但会考虑为后期扩展留接口,比如湿度传感器、智能窗帘。
(BMAD) @analyst: 好的,本次头脑风暴的要点已记录。我将基于这些信息生成一份初步的简报草稿。结果:
@analyst
会在内部(或提示保存到特定文件)生成一份头脑风暴记录,例如docs/brainstorm_notes.md
:# SHCCS 项目头脑风暴纪要 - 2023-10-27**项目名称:** 智能家居气候控制系统 (SHCCS)**核心目标:** * 通过手机实现远程温度控制。 * 提升居家舒适度。 * 实现能效优化与节能。**主要功能方向:** * **远程控制:** 手机APP随时随地调节温度。 * **智能排程:** 依据用户习惯、预设模式(回家、离家、睡眠)、假期模式自动调节。 * **行为学习:** 系统根据用户调温习惯,自动优化排程建议。 * **能耗报告:** 提供可视化的能耗数据,帮助用户了解节能效果。 * **设备联动(未来扩展):** 预留接口以集成湿度传感器、智能窗帘等。**目标用户:** 关注舒适度、科技感、节能的年轻家庭和白领。**关键考量点:** * 用户隐私(行为数据处理)。 * 系统的易用性与交互体验。 * 跨平台兼容性 (iOS/Android APP)。
-
执行
document-project
生成project-brief.md
:
基于上述头脑风暴的输出,我们现在可以要求@analyst
生成正式的项目简报。npx bmad-method @analyst document-project --output docs/project-brief.md --inputs-path docs/brainstorm_notes.md
注意: 这里的
--inputs-path
是一个假设的参数,表示@analyst
会参考brainstorm_notes.md
来生成简报。实际BMAD命令可能会更智能地识别上下文。预期输出 (
docs/project-brief.md
示例):# 智能家居气候控制系统 (SHCCS) 项目简报**项目日期:** 2023年10月27日 **撰写人:** @analyst---## 1. 项目概述 (Project Overview)本简报旨在提供“智能家居气候控制系统”(Smart Home Climate Control System, SHCCS)项目的核心信息,作为后续产品需求、设计和开发的基础。SHCCS致力于通过智能化的手段,让用户能够便捷地管理和优化其家庭环境的温度,从而提升居住舒适度并实现能源效率的提升。## 2. 项目目标 (Project Goals)* **提供远程温度控制能力:** 用户可以通过移动应用程序在任何地方远程调节家中温度。 * **实现智能温度管理:** 系统能够学习用户的生活习惯,根据预设模式(如睡眠、离家、回家、假期)和环境数据,自动优化温度调节策略。 * **提升能源使用效率:** 通过智能算法和个性化设置,帮助用户减少不必要的能源消耗,提供透明的能耗报告。 * **增强居住舒适度:** 维持室内环境在用户偏好的舒适区间。## 3. 目标用户 (Target Users)SHCCS的目标用户群体是追求舒适生活、注重科技体验和环境保护的年轻家庭及城市白领。他们期望: * 便捷直观的智能设备控制体验。 * 能够远程管理家庭环境。 * 了解并优化家庭能源消耗。## 4. 核心功能模块 (Core Functional Modules)* **移动应用程序 (iOS/Android):** 用户界面,用于温度设置、模式切换、能耗查看和系统配置。 * **智能温控硬件集成:** 与家庭温控设备(如空调、地暖)进行通信,接收传感器数据并发送控制指令。 * **智能调度引擎:** 基于用户行为学习、日程表和外部环境数据(例如天气预报)执行温度策略。 * **数据存储与分析:** 存储历史温度数据和能耗数据,提供数据分析和报告。 * **用户管理与认证:** Secure user authentication and management.## 5. 范围与限制 (Scope & Constraints)**核心范围:** * 初始版本重点关注温度的智能控制和能源效率。 * 支持主流智能温控设备协议(待进一步评估)。 * 提供美观、易用的移动应用程序。**未来扩展考量:** * 湿度和空气质量管理。 * 与智能窗帘、空气净化器等其他智能家居设备的联动。## 6. 成功指标 (Success Metrics)* 用户活跃度 (DAU/MAU)。 * 用户满意度(APP Store评分,用户反馈)。 * 能源节约效果(平均能耗下降百分比)。---
通过 facilitate-brainstorming-session
和 document-project
,我们为SHCCS项目创建了清晰的起点,这份 project-brief.md
将是后续所有详细规划文档的基石。
2. 产品阶段:@pm
→ *create-doc prd-tmpl.yaml
根据简报产出 PRD,严格遵守模板中 elicit
步骤,不跳过 1-9 互动。
深度解析:
在项目简报 (project-brief.md
) 确定后,产品经理 (@pm
) 将承担起将高层需求转化为详细产品需求文档 (PRD) 的重任。BMAD通过 *create-doc
任务和 prd-tmpl.yaml
模板,以及强制的 elicit
互动流程,确保PRD的全面性和准确性。
-
*create-doc prd-tmpl.yaml
:PRD的生成
这是PM代理创建PRD的核心任务。它会加载prd-tmpl.yaml
模板,并根据提供的输入(如project-brief.md
)开始填充内容。 -
elicit: true
与 1-9 互动:
这是BMAD系统最强大的功能之一,特别是在涉及复杂决策和细致需求澄清的文档创建过程中。当模板中某个部分被标记为elicit: true
时,代理将不会直接生成内容,而是会暂停并启动一个多轮互动式问答过程。它会像一个真实的产品专家一样,引导用户(或另一个代理)回答一系列精心设计的问题,以逐步提取出所需的详细信息。
“1-9 互动”是一个比喻,指的是这个互动过程通常会深入到多个层面,从高层目标到具体功能,再到细节考量,确保没有任何遗漏。严格遵守这个互动过程,不跳过任何一步,是产出高质量、无遗漏PRD的关键。
实训案例 (SHCCS):PRD创建与 elicit
互动
我们现在要求 @pm
代理根据 docs/project-brief.md
创建PRD。
npx bmad-method @pm *create-doc templates/prd-tmpl.yaml --output docs/prd.md --inputs projectBrief=docs/project-brief.md
注意: --inputs
参数的格式是假设的,实际命令可能更灵活。elicit
模式是BMAD内部根据模板设定自动触发的。
终端互动示例 (节选):
(BMAD) @pm: 好的,我将基于 docs/project-brief.md
创建产品需求文档。请注意,模板中包含需要您互动的 elicit
步骤。
(BMAD) @pm: PRD互动环节 (1/9) - 核心产品目标: 根据项目简报,SHCCS的核心目标是“远程温度控制、智能温度管理、提升能源效率、增强居住舒适度”。请确认这些目标是否完整,或需要补充/调整?
(User): 确认完整。同时,我们希望确保系统在高并发下仍能稳定运行,满足智能家居设备的实时响应要求。
(BMAD) @pm: 好的,已将“高并发下稳定运行”和“实时响应”纳入非功能性考虑。
(BMAD) @pm: PRD互动环节 (2/9) - 目标用户画像: 简报中提到“年轻家庭及城市白领”。请详细描述一个典型的用户画像(如姓名、年龄、职业、生活习惯、使用痛点、对SHCCS的期望)。
(User): 用户画像: 张先生,32岁,IT工程师,新婚夫妇,住在市中心公寓。他作息规律但偶尔加班,每天上下班通勤。痛点是出门忘记关空调导致浪费,回家前屋子太冷或太热。期望能远程一键开启空调,回家即享舒适温度,并能看到每月节能报告。他乐于尝试新科技。
(BMAD) @pm: 了解,这些细节将帮助我们更精准地定义功能。
(BMAD) @pm: PRD互动环节 (3/9) - 核心功能模块详细: 现在我们深入讨论“移动应用程序”模块。
功能点 A: 远程温度调节。 用户在APP上如何选择目标温度?是否支持分区域控制?支持哪些模式(制冷/制热/自动/送风)?
(User): APP上会有一个直观的滑块或加减按钮。初期支持单个区域(即整个家)的温度控制。模式支持制冷、制热、自动。送风模式可作为低优先级功能后续考虑。
(BMAD) @pm: 好的。功能点 B: 智能排程。 排程规则如何设定?支持哪些预设排程(如工作日、周末、假期)?是否允许自定义排程?
(User): 支持创建周循环排程,提供“工作日”、“周末”模板。用户可自定义每个时间段的温度。假期模式可单独设定起止日期和温度。
(BMAD) @pm: … (继续互动,直到完成所有1-9互动步骤)…
(BMAD) @pm: PRD互动环节 (9/9) - 其他开放性问题与风险: 是否有任何遗漏的功能点、技术风险、市场风险或其他需要特别关注的事项?
(User): 技术风险在于与多样化智能温控硬件的兼容性,需要强大的适配层。市场风险是同类竞品较多,需突出SHCCS的差异化智能算法。
(BMAD) @pm: 感谢您的全面反馈。我已经收集到所有关键信息。PRD文档将在处理完成后生成到 docs/prd.md
。
预期输出 (docs/prd.md
节选示例):
# 智能家居气候控制系统 (SHCCS) - 产品需求文档 (PRD)**文档版本:** 1.0
**日期:** 2023年10月27日
**撰写人:** @pm---## 1. 引言 (Introduction)本产品需求文档(PRD)详细阐述了智能家居气候控制系统(SHCCS)的功能、特性及其实现细节。它将作为SHCCS项目所有设计、开发和测试活动的指导方针。## 2. 产品目标 (Product Goals)* 实现用户对家庭温度的远程、精准控制。
* 通过智能算法和用户行为学习,优化温度管理,提升能源效率20%。
* 提供高度个性化和自动化的气候控制体验,显著提升用户居住舒适度。
* 在高并发请求下保持系统实时响应与稳定性。## 3. 目标用户与用户画像 (Target Users & Personas)**目标用户群体:** 25-45岁,追求科技体验、注重生活品质、关注节能环保的年轻家庭及城市白领。**典型用户画像:**
* **姓名:** 张先生 (Mr. Zhang)
* **年龄:** 32岁
* **职业:** IT工程师 (新婚夫妇)
* **生活习惯:** 作息规律,偶尔加班,通勤时间较长。
* **痛点:** 离家时常忘记关空调导致能源浪费,回家时家中温度不适。
* **期望:** 智能APP远程控制,预设或学习模式自动调节,节能报告一目了然,乐于探索新科技产品。## 4. 核心功能需求 (Core Functional Requirements)### 4.1 移动应用程序 (iOS/Android APP)#### 4.1.1 远程温度调节
* **描述:** 用户通过APP界面可随时随地查看并调整家中温度。
* **功能点:*** 实时显示当前室内温度和目标温度。* 提供滑块或 +/- 按钮进行目标温度设置(0.5°C精度)。* 支持制冷、制热、自动三种工作模式切换。* (未来扩展)支持按区域(如客厅、卧室)独立控制(当前版本为全屋统一控制)。
* **验收标准:*** APP端实时温度显示误差 ≤ 0.5°C。* 温度调节指令在3秒内响应并更新至设备。* 能在APP上清晰显示当前工作模式。#### 4.1.2 智能排程 (Smart Scheduling)
* **描述:** 用户可以设置基于时间段的温度排程,系统自动执行。
* **功能点:*** 支持创建1周7天的循环排程。* 提供“工作日”、“周末”默认模板供用户快速选择。* 用户可自定义每个时间段(如上午、下午、夜晚)的目标温度和工作模式。* 支持“假期模式”设定,自定义假期起止日期和期间的目标温度,假期结束后自动恢复正常排程。
* **验收标准:*** 排程设置界面直观,易于操作。* 系统能准确按照排程在指定时间切换温度模式。* 假期模式启用和禁用准确无误,不影响正常排程。### 4.2 智能温控硬件集成 (Smart Thermostat Hardware Integration)* **描述:** 系统与家庭现有的智能温控设备进行通信,接收数据并发送控制指令。
* **功能点:*** 兼容主流智能温控设备协议(具体待架构师评估并选型)。* 设备数据(温度、模式、设备状态)实时上报至云端。* 云端控制指令实时下发至设备。
* **验收标准:*** 系统能成功连接至少3种主流品牌智能温控设备。* 数据上报和指令下发延迟 ≤ 5秒。### 4.3 智能调度引擎 (Smart Scheduling Engine)
* **描述:** 根据用户行为、排程、外部环境数据(如天气)自动优化温度策略。
* **功能点:*** **用户行为学习:** 学习用户手动调温习惯,优化智能排程建议。* **环境数据联动:** 可集成天气预报数据,提前调整温度以应对天气变化。* **离家/回家模式:** 通过地理围栏或手动设置,实现用户离家时自动节能,回家前自动预热/预冷。
* **验收标准:*** 行为学习能有效减少用户手动调温次数(例如,30天内减少10%)。* 天气预报集成后,系统能提前2小时进行预处理。* 离家/回家模式切换准确率达到95%以上。### 4.4 数据存储与分析 (Data Storage & Analytics)
* **描述:** 存储和分析历史温度数据与能耗数据。
* **功能点:*** 存储至少1年的历史温度数据和能耗数据。* 提供日/周/月/年维度的能耗报告,包括图表展示。* 能耗报告提供节能建议。
* **验收标准:*** 数据存储安全可靠,查询响应时间 ≤ 2秒。* 能耗报告准确反映实际能耗,图表清晰易懂。## 5. 非功能性需求 (Non-Functional Requirements)* **性能:** 系统应支持至少10万并发用户连接,API响应时间平均 ≤ 200ms。设备控制指令下发延迟 ≤ 5秒。
* **可靠性:** 系统年可用性达到99.9%。数据存储具备备份和恢复机制。
* **安全性:** 用户数据加密存储,传输使用HTTPS/MQTT TLS。遵循GDPR/CCPA等数据隐私法规。身份认证和授权机制严格。
* **可扩展性:** 架构设计应支持未来增加更多智能家居设备类型和复杂功能。
* **易用性:** 移动APP界面直观,操作简单,符合主流设计规范,平均用户完成任务时间 ≤ 15秒。
* **可维护性:** 代码规范统一,注释清晰,易于理解和调试。## 6. 技术风险与挑战 (Technical Risks & Challenges)
* **兼容性:** 与市场上各种智能温控硬件设备的兼容性适配可能存在挑战。
* **实时性与稳定性:** 确保高并发下设备控制的实时性和稳定性,尤其是在边缘计算或云边协同场景。
* **智能算法准确性:** 用户行为学习算法的准确性和适应性需要持续优化。
* **数据隐私:** 严格遵守数据隐私法规,确保用户敏感数据的安全处理。
通过 elicit
机制,PM代理有效地收集了足够细致的信息,创建了一个结构清晰、内容全面的PRD。这份PRD现在包含了SHCCS项目的核心功能、非功能性需求和关键的用户画像,为后续的设计和开发工作提供了坚实的指导。
3. 体验阶段:@ux-expert
→ *create-doc front-end-spec-tmpl.yaml
打造前端规格,若需生成 v0/Lovable 提示,继续 *task generate-ai-frontend-prompt
。
深度解析:
有了详细的PRD作为输入,UX专家 (@ux-expert
) 代理的任务是将这些抽象的产品需求转化为具体的用户体验设计和前端规格。这不仅包括界面布局和交互流程,还可以选择性地利用AI能力生成创新性的UI提示。
-
*create-doc front-end-spec-tmpl.yaml
:前端规格的生成
@ux-expert
调用此任务,并加载front-end-spec-tmpl.yaml
模板。它会参考PRD中定义的功能和用户画像,逐步构建出详细的前端规格,包括用户流程、页面布局、组件库、交互逻辑等。这份文档将指导前端开发人员进行UI实现。 -
generate-ai-frontend-prompt
:探索 V0/Lovable UI 提示
这是BMAD中一个非常创新和强大的功能,它允许@ux-expert
利用AI的创造性来生成“V0/Lovable”的用户界面提示。- V0/Lovable UI: 通常指的是第一个能够让用户“爱上”产品的最小可行界面。它可能不需要所有功能,但必须在视觉吸引力、核心功能可用性和情感连接上达到极致。AI在此处的作用是根据产品目标和用户特性,提出具有创意、可能颠覆常规但又符合用户心理的UI概念。
这个任务的输出不是最终设计,而是作为UX设计师的灵感来源,帮助他们跳出固有思维,探索更多可能性,尤其是在创新型产品(如SHCCS)的初期设计阶段。
- V0/Lovable UI: 通常指的是第一个能够让用户“爱上”产品的最小可行界面。它可能不需要所有功能,但必须在视觉吸引力、核心功能可用性和情感连接上达到极致。AI在此处的作用是根据产品目标和用户特性,提出具有创意、可能颠覆常规但又符合用户心理的UI概念。
实训案例 (SHCCS):体验阶段实践
-
执行
*create-doc front-end-spec-tmpl.yaml
生成前端规格:
我们现在要求@ux-expert
代理根据docs/prd.md
创建前端规格。npx bmad-method @ux-expert *create-doc templates/front-end-spec-tmpl.yaml --output docs/front-end-spec.md --inputs prd=docs/prd.md
终端互动与预期输出 (节选):
(BMAD) @ux-expert: 好的,我将基于docs/prd.md
创建前端规格文档。我现在正在分析PRD中的用户画像和核心功能需求。
(BMAD) @ux-expert: UX设计考量 - 远程温度调节界面: 对于SHCCS的APP温度调节界面,您希望用户能一目了然地看到哪些信息?优先展示当前温度还是目标温度?如何设计温度调节控件,使其直观且操作流畅?
(User): 希望能同时显示当前室内温度、目标温度、以及工作模式。目标温度可放置中央突出。温度调节控件希望是一个大尺寸的圆形拨盘,或者滑块,支持手势操作。
(BMAD) @ux-expert: 明白了,圆形拨盘或滑块将提供良好的触控体验。那么对于智能排程的用户旅程,用户是希望先看到一个周视图总览,还是直接进入某个工作日的详细编辑?
(User): 最好是提供一个周视图总览,能快速切换和预览不同天的排程,点击后再进入详细编辑。
(BMAD) @ux-expert: 好的,这将提升用户对排程管理的掌控感。
… (继续互动,填充模板中的其他部分) …
(BMAD) @ux-expert: 前端规格文档已基本完成,我将生成docs/front-end-spec.md
。预期输出 (
docs/front-end-spec.md
节选示例):# 智能家居气候控制系统 (SHCCS) - 前端规格与用户体验文档**文档版本:** 1.0 **日期:** 2023年10月27日 **撰写人:** @ux-expert---## 1. 引言 (Introduction)本前端规格文档详细描述了SHCCS移动应用程序(iOS/Android)的用户体验设计和前端功能实现细节。旨在将PRD中的抽象需求转化为具体、可实施的UI/UX指南。## 2. 核心用户旅程 (Core User Journeys)### 2.1 远程温度控制旅程 1. **启动APP并登录:** 用户打开SHCCS APP,完成身份认证。 2. **查看主页温控面板:** 登录成功后,进入主页,显示当前室内温度、目标温度和当前模式。 3. **调节目标温度:** 用户通过主页的温度调节拨盘/滑块,调节目标温度。 4. **切换工作模式:** 用户点击模式图标(如太阳/雪花/自动),切换工作模式。 5. **实时状态反馈:** 温度和模式变更后,APP界面实时更新,并显示设备响应状态。## 3. 关键界面设计 (Key Interface Designs)### 3.1 主页温控面板 (Main Thermostat Panel)* **布局:** 屏幕中央主显示区域为圆形温控拨盘。上方显示当前室内温度,下方显示当前目标温度和工作模式。 * **元素:*** **当前室内温度:** 大字号显示,颜色可随温度高低变化(冷色/暖色)。* **目标温度:** 显示在拨盘中央,可拖动拨盘或点击 +/- 按钮精确调节。* **工作模式图标:** 制冷(雪花蓝)、制热(火焰红)、自动(循环绿),点击可切换。* **能耗概览(迷你卡片):** 首页底部卡片,点击进入详细能耗报告。* **排程入口:** 导航栏或底部菜单入口。 * **交互:*** **温度调节:** 拖动圆形拨盘,或点击拨盘边缘的 +/- 按钮,调节目标温度。实时反馈调节中的数值。* **模式切换:** 短按模式图标切换。* **手势:** (未来考量)双指捏合缩放可能用于区域控制,但当前版本不启用。### 3.2 智能排程管理界面 (Smart Schedule Management)* **布局:** 顶部为周视图标签页(Mon-Sun),下方为当日排程列表。 * **元素:*** **周视图导航:** 水平可滑动日期/星期列表,突出显示当前选择的日期。* **排程列表:** 显示当日所有已设定排程(如 08:00-18:00 24°C)。每个排程可显示时间段、目标温度、工作模式。* **新增排程按钮:** 位于底部或右上角的浮动按钮。* **“工作日/周末”模板:** 快速应用模板的按钮。* **假期模式入口:** 独立的入口用于设置假期排程。 * **交互:*** **日期切换:** 点击顶部标签或左右滑动切换日期。* **编辑排程:** 点击排程项进入编辑详情页。* **新增排程:** 点击加号按钮,进入排程创建页(设定时间、温度、模式)。## 4. 关键组件与设计规范 (Key Components & Design Guidelines)* **颜色方案:** 选取科技蓝、舒适白、节能绿为主色调。 * **字体:** 采用简洁无衬线字体(如-苹方或-Roboto)。 * **图标:** 扁平化设计,直观易懂。 * **动画:** 流畅的温度调节动画,模式切换过渡动画。## 5. UI生成提示 (Optional: AI UI Generation Prompts)
-
若需生成 v0/Lovable 提示,执行
*task generate-ai-frontend-prompt
:
现在,UX专家希望利用AI的力量,为SHCCS的主页温控面板生成一些富有创意的V0/Lovable UI提示。npx bmad-method @ux-expert *task generate-ai-frontend-prompt --context docs/front-end-spec.md --feature "Main Thermostat Panel"
注意:
--context
和--feature
是假设的参数,用于向AI代理提供上下文。终端互动与预期输出 (AI生成提示示例):
(BMAD) @ux-expert: 好的,我将基于您提供的front-end-spec.md
针对“Main Thermostat Panel”生成V0/Lovable UI提示。
(AI): AI UI Prompt 1 (情感化反馈): 想象一个会呼吸的温度面板。背景色会根据温度是偏冷还是偏暖,以及系统是否在积极调节,以轻柔的动画渐变和脉冲。当达到目标温度时,界面会短暂地闪烁舒适的暖光或冷光,并伴随一个微弱的“叮”声,给人一种系统“达成目标”的满足感。
(AI): AI UI Prompt 2 (拟物化与简洁结合): 一个极简的,像高级音响旋钮一样的实体感拨盘。当手指触碰调节时,拨盘边缘会发出柔和的荧光线条跟随指尖流动,同时中央显示屏数字跳动。非交互时,只显示最重要的当前温度和目标温度,所有次要信息(如湿度、空气质量)在用户轻敲屏幕时浮现。
(AI): AI UI Prompt 3 (生态友好型): 在节能模式下,界面的背景会变成生动的森林或海洋动态壁纸,并有微小的树叶/水波动画,象征着用户正在为地球节省能源。当用户调节到节能推荐温度时,系统会给予一个虚拟的“赞”或显示“已节省X能量”的动画提示。
(BMAD) @ux-expert: 这些提示已生成,并已添加到docs/front-end-spec.md
的“UI生成提示”部分,供人类设计师参考。更新后的
docs/front-end-spec.md
(节选):# ... (其他内容不变) ...## 5. UI生成提示 (Optional: AI UI Generation Prompts)### 为主页温控面板生成的 V0/Lovable AI UI 提示:1. **情感化反馈面板 (Breathing Thermostat Panel):**想象一个会呼吸的温度面板。背景色会根据温度是偏冷还是偏暖,以及系统是否在积极调节,以轻柔的动画渐变和脉冲。当达到目标温度时,界面会短暂地闪烁舒适的暖光或冷光,并伴随一个微弱的“叮”声,给人一种系统“达成目标”的满足感。这旨在通过视觉和听觉的双重刺激,增强用户与系统的情感连接。2. **拟物化高级旋钮 (Minimalist Knob Interface):**一个极简的,像高级音响旋钮一样的实体感拨盘。当手指触碰调节时,拨盘边缘会发出柔和的荧光线条跟随指尖流动,同时中央显示屏数字跳动。非交互时,只显示最重要的当前温度和目标温度。所有次要信息(如湿度、空气质量)在用户轻敲屏幕时以卡片形式浮现,保持界面简洁,只在需要时才提供更多信息。3. **生态友好型节能模式 (Eco-Friendly Mode Visuals):**在节能模式下,界面的背景会变成生动的森林或海洋动态壁纸,并有微小的树叶/水波动画,象征着用户正在为地球节省能源。当用户调节到节能推荐温度时,系统会给予一个虚拟的“赞”或显示“已节省X能量”的动画提示。这种设计旨在通过视觉叙事,鼓励用户采取环保行为。
通过这些步骤,@ux-expert
不仅为SHCCS项目创建了详细的前端规格,还利用AI的创意性,为设计师提供了独特的视觉和交互灵感,大大拓宽了设计的可能性。
4. 架构阶段:@architect
→ *create-doc fullstack-architecture-tmpl.yaml
,结合 UX 结果定义分层、接口、技术栈,并在需要时建议修改 PRD 故事。
深度解析:
在需求和用户体验设计初步确定后,架构师 (@architect
) 代理将介入,从技术视角审视整个系统,并设计其高层结构。这一阶段不仅涉及技术选型,还包括对现有PRD和UX文档的审查,确保技术实现的可行性和合理性。
-
*create-doc fullstack-architecture-tmpl.yaml
:全栈架构文档的生成
@architect
代理通过此任务加载fullstack-architecture-tmpl.yaml
模板。它会以docs/prd.md
和docs/front-end-spec.md
作为主要输入,从中提取功能和非功能性需求,然后逐步定义系统的分层、模块划分、接口设计、技术栈选择、部署策略等。目标是构建一个健壮、可扩展、高性能且安全的系统。 -
结合 UX 结果定义分层、接口、技术栈:
架构师的工作不是孤立的。它需要将产品需求(PRD)和用户体验设计(UX)转化为可实现的技术方案。- 分层设计: 根据PRD的功能模块和响应要求,定义系统的逻辑和物理分层(如表示层、应用层、业务逻辑层、数据访问层、基础设施层)。
- 接口定义: 根据UX设计中的用户操作和数据流,细化前端与后端、后端服务之间、以及后端与外部设备/服务之间的API接口(如RESTful API、MQTT协议、gRPC)。
- 技术栈选型: 基于PRD的非功能性需求(如高性能、可伸缩性、安全性)和UX的交互要求(如实时性),选择合适的技术框架、编程语言、数据库、消息队列、云平台等。
-
在需要时建议修改 PRD 故事:
这是架构师代理智能和协作性的体现。在深入分析PRD和UX规范后,@architect
可能会发现某些需求在技术上实现困难、成本过高,或者与现有系统/技术栈不兼容,甚至是存在潜在的冲突。在这种情况下,@architect
不会盲目接受,而是会向产品负责人 (@pm
) 提出反馈,并建议修改PRD中的相关需求或用户故事,以达成技术可行性和业务价值之间的平衡。这种双向沟通机制是避免“纸上谈兵”和后期返工的重要保障。
实训案例 (SHCCS):架构阶段实践
-
执行
*create-doc fullstack-architecture-tmpl.yaml
生成架构文档:
我们要求@architect
代理根据docs/prd.md
和docs/front-end-spec.md
创建架构文档。npx bmad-method @architect *create-doc templates/fullstack-architecture-tmpl.yaml --output docs/fullstack-architecture.md --inputs prd=docs/prd.md frontendSpec=docs/front-end-spec.md
终端互动与预期输出 (节选):
(BMAD) @architect: 好的,我将基于docs/prd.md
和docs/front-end-spec.md
创建全栈架构文档。我正在分析SHCCS的性能、可扩展性和安全需求。
(BMAD) @architect: 架构考量 - 实时通信: PRD中提到设备控制的实时响应和数据上报。您认为哪种通信协议最适合前端APP与后端、以及后端与智能温控设备之间的实时、低延迟通信?(选项:RESTful, WebSocket, MQTT, gRPC等)
(User): 对于 APP 与后端,考虑到负载,RESTful API 仍是主流。但对于后端与智能设备,MQTT 协议更适合低带宽、高并发的设备连接和实时数据推送。少量关键控制指令可考虑 gRPC 以实现高性能。
(BMAD) @architect: 很好的建议。MQTT确实是智能设备的理想选择。技术栈选型 - 后端: 考虑到PRD对可扩展性、稳定性的要求以及现有的AI集成潜力,您偏好哪种后端语言/框架?(选项:Python/Django/FastAPI, Node.js/Express, Java/Spring Boot, Go/Gin等)
(User): 鉴于SHCCS未来可能涉及更多数据分析和AI算法,Python生态系统强大,Django或FastAPI是不错的选择,易于快速开发和维护。
(BMAD) @architect: 确认。那么数据库选型: 对于设备的历史温度数据和能耗数据,需要高写入吞吐量和查询效率,并且可扩展。您推荐哪种类型?(选项:关系型DB, NoSQL, 时序数据库)
(User): 考虑到时序数据量大,时序数据库(如 InfluxDB, TimescaleDB for PostgreSQL)是最佳选择,同时辅助关系型数据库用于用户和设备的基本信息。
(BMAD) @architect: 明白了。PRD修改建议: 在分析PRD第4.2节“智能温控硬件集成”时,提到“兼容主流智能温控设备协议”。基于我们对MQTT的选型,这暗示我们需要一个统一的设备抽象层来屏蔽不同设备协议的差异。这个可能需要在PRD中更明确地指出,或者在技术上作为P0级任务来保障。您是否同意此PRD修改建议?
(User): 同意。我认为PRD中可以增加对“设备抽象层”的需求描述,确保开发阶段会明确实现。
(BMAD) @architect: 好的,我会将此建议加入到最终的架构文档中,并@pm进行后续的PRD更新。预期输出 (
docs/fullstack-architecture.md
节选示例):# 智能家居气候控制系统 (SHCCS) - 全栈架构设计文档**文档版本:** 1.0 **日期:** 2023年10月27日 **撰写人:** @architect---## 1. 引言 (Introduction)本架构文档旨在详细阐述SHCCS的整体技术架构、分层设计、关键组件、技术栈选型和部署策略,为系统的开发和维护提供指导。## 2. 系统高层架构 (High-Level System Architecture)## 3. 分层架构设计 (Layered Architecture Design)SHCCS将采用经典的分层架构,以确保模块化、可维护性和可扩展性。* **客户端层 (Client Layer):** 移动应用程序 (iOS/Android),提供用户交互界面。 * **API网关层 (API Gateway Layer):** 统一的API入口,负责请求路由、认证、限流等。 * **应用服务层 (Application Service Layer):** 后端核心业务逻辑服务,无状态,可水平扩展。* **用户服务:** 用户注册、登录、权限管理。* **设备管理服务:** 设备注册、绑定、配置。* **排程服务:** 智能排程的创建、管理、调度。* **数据服务:** 提供能耗、温度历史数据查询。* **第三方集成服务:** 天气预报、智能音箱等。 * **调度与智能层 (Scheduling & Intelligence Layer):** 智能调度引擎,用户行为学习算法,数据分析。 * **设备通信层 (Device Communication Layer):** 负责与智能温控设备进行双向通信。* **设备适配器:** 负责设备协议的转换和指令解析(如MQTT、CoAP)。* **设备抽象层:** 提供统一的设备接口,屏蔽底层设备差异。 * **数据存储层 (Data Storage Layer):*** **关系型数据库 (PostgreSQL):** 存储用户账户、设备信息、排程计划等结构化数据。* **时序数据库 (InfluxDB):** 存储高写入量的历史温度、能耗数据。 * **消息队列 (Kafka/RabbitMQ):** 用于服务间异步通信、设备指令排队、数据流处理。## 4. 关键接口设计 (Key Interface Design)### 4.1 客户端与API网关接口 (Client-API Gateway Interface) * **协议:** RESTful API (HTTPS) * **认证:** OAuth2.0 / JWT * **示例 API:*** `POST /users/login`: 用户登录* `GET /devices/{id}/current_status`: 获取设备实时状态* `PUT /devices/{id}/target_temperature`: 设置设备目标温度### 4.2 设备通信接口 (Device Communication Interface) * **协议:** MQTT (TLS加密) * **主题设计:*** `device/{device_id}/telemetry`: 设备上报温度、湿度等传感器数据。* `device/{device_id}/control`: 云端下发控制指令(如设置温度、模式)。 * **指令格式:** JSON格式。## 5. 技术栈选型 (Technology Stack Selection)* **后端开发语言/框架:** Python (FastAPI/Django) - 高效开发,丰富的AI/ML生态。 * **移动应用:** React Native - 跨平台开发,良好的社区支持。 * **API 网关:** Nginx / Kong。 * **消息队列:** Kafka - 高吞吐量、分布式消息流处理。 * **关系型数据库:** PostgreSQL - 健壮、功能丰富、社区活跃。 * **时序数据库:** InfluxDB - 专注于时序数据的高效存储与查询。 * **容器化:** Docker。 * **编排:** Kubernetes (K8s) - 生产环境服务部署、管理与扩展。 * **云平台:** AWS / Azure / GCP (具体选型待定,优先考虑AWS Lambda/EC2)。## 6. 部署策略 (Deployment Strategy) * 所有后端服务容器化,通过Kubernetes部署在云平台上。 * 采用微服务架构,独立部署、独立扩展。 * CI/CD流程自动化。## 7. PRD修订建议 (Suggested PRD Revisions)* **原始PRD 4.2节 (智能温控硬件集成):** 建议在“功能点”中明确增加“**提供统一的设备抽象层,屏蔽底层设备通信协议和指令集差异**”的需求描述。这将确保系统在未来能更灵活地支持更多样化的智能温控设备,而不影响上层业务逻辑。建议 `@pm` 评估并更新 PRD。
通过这一阶段,@architect
为SHCCS项目构建了一个清晰、可行的技术蓝图,并主动识别并提出了对PRD的优化建议,体现了BMAD代理间的高度协作和智能审查能力。
5. 审核阶段:@po
→ *execute-checklist po-master-checklist
全面梳理文档一致性,如有问题退回相关角色修订并重导出 docs/
。
深度解析:
在所有重要的规划文档(项目简报、PRD、前端规格、架构文档)生成后,产品负责人 (@po
) 将发挥其最终把关人的作用。@po
代理会使用 po-master-checklist
进行一次全面的跨文档一致性审查,确保所有工件都相互协调,不存在矛盾或遗漏。
-
*execute-checklist po-master-checklist
:PO的质量门禁
这个命令是@po
代理的核心审查工具。它会加载一个预定义的清单文件 (po-master-checklist.yaml
),其中包含了产品负责人需要检查的所有关键项。这些检查项通常涵盖了文档的完整性、一致性、可实现性以及与业务目标的对齐程度。
检查清单通常会包括:- PRD中的功能需求是否在UX和架构中得到体现?
- UX设计的界面元素是否与PRD的功能描述一致?
- 架构设计是否能支持PRD中定义的非功能性需求(如性能、安全)?
- 所有文档是否都遵循了预设的格式和规范?
- 是否存在任何模糊或矛盾之处?
-
如有问题,退回相关角色修订并重导出
docs/
:
如果@po
在审查过程中发现任何问题或不一致,它将标记这些项,并将其作为反馈,由BMAD系统将任务退回给相应的代理(或通知对应的人工角色)进行修订。例如,如果UX设计中缺少PRD中明确提到的一个重要功能界面,任务将被退回给@ux-expert
。
修订完成后,被退回的代理需要重新执行相应的文档生成任务(如*create-doc
或*amend-doc
),以更新docs/
目录下的文档。这个循环会持续进行,直到@po
对所有规划文档都满意为止,这样才能保证后续的开发工作在一个坚实、无误的基础上进行。
实训案例 (SHCCS):规划文档审核与修订
现在,我们所有的规划文档都已初步完成。@po
代理将进行一次全面的审查。
npx bmad-method @po *execute-checklist po-master-checklist --inputs prd=docs/prd.md architecture=docs/fullstack-architecture.md frontendSpec=docs/front-end-spec.md projectBrief=docs/project-brief.md
终端互动与预期输出 (审查过程,节选):
(BMAD) @po: 好的,我将对SHCCS项目的规划文档进行全面一致性检查。
(BMAD) @po: 检查项 1.1:PRD中的核心功能是否都在前端规格和架构文档中得到体现?
* PRD中提到“智能排程”功能。前端规格有排程界面设计。架构文档有“排程服务”和“调度与智能层”。通过。
(BMAD) @po: 检查项 1.2:前端规格中的所有交互设计是否都有对应的PRD功能支持?
* 前端规格中描绘了主页温控面板的“圆形拨盘”调节。PRD中“远程温度调节”功能明确支持。通过。
(BMAD) @po: 检查项 2.1:架构文档中定义的关键技术栈是否能支撑PRD中的非功能性需求(性能、可扩展性、安全性)?
* 架构文档选择了Kafka作为消息队列,InfluxDB作为时序数据库,Kubernetes进行部署,这些都与PRD中定义的“支持10万并发用户,实时响应”的性能和可扩展性目标一致。通过。
(BMAD) @po: 检查项 3.1:PRD中对“智能温控硬件集成”的需求,在架构文档中是否有清晰的技术方案?
* 架构文档提出了“设备适配器”和“设备抽象层”来处理兼容性问题。这解决了PRD中提出的技术挑战。通过。
(BMAD) @po: 检查项 4.1:是否存在文档中的信息冲突或不一致?
* 发现问题! 在 docs/prd.md
中,第4.1.1节“远程温度调节”的功能点描述为“初期支持单个区域(即整个家)的温度控制”。然而,docs/front-end-spec.md
第3.1节“主页温控面板”中“手势”部分提到“(未来考量)双指捏合缩放可能用于区域控制,但当前版本不启用。”这本身不冲突,但是 @architect
在其架构文档中的“PRD修订建议”已经提出需要在PRD中更明确“设备抽象层”的需求来支持未来区域控制的扩展。
* 行动: PRD虽然描述了单区域控制,但并未强调未来扩展的底层支持。架构师的建议应该被采纳并更新到PRD。
* 结论: 未通过。 需要 @pm
代理根据 @architect
的建议修订 docs/prd.md
。
(BMAD) @po: 审查结果: 规划文档未完全通过一致性检查。
问题描述: docs/prd.md
在“智能温控硬件集成”部分,对未来设备扩展和兼容性的技术要求阐述不足。@architect
已在架构文档中提出明确的修订建议。
需要采取的行动:
1. 请 @pm
代理根据 docs/fullstack-architecture.md
中第7.节的“PRD修订建议”,修订 docs/prd.md
。
2. 修订后,@pm
需重新生成 docs/prd.md
。
3. 待 prd.md
更新后,@po
需再次执行检查。
修订和重导出流程 (假设 @pm
接受建议):
-
@pm
代理修订 PRD:npx bmad-method @pm *amend-doc docs/prd.md --amendment-context "Adding device abstraction layer requirement as per architect's suggestion."
(BMAD) @pm: 好的,我将根据架构师的建议,修订
docs/prd.md
的内容。我正在更新“4.2 智能温控硬件集成”部分。更新后的
docs/prd.md
节选 (在4.2.1功能点下增加):# ... (其他内容不变) ...### 4.2 智能温控硬件集成 (Smart Thermostat Hardware Integration)* **描述:** 系统与家庭现有的智能温控设备进行通信,接收数据并发送控制指令。 * **功能点:*** 兼容主流智能温控设备协议(具体待架构师评估并选型)。* 设备数据(温度、模式、设备状态)实时上报至云端。* 云端控制指令实时下发至设备。* **提供统一的设备抽象层,屏蔽底层设备通信协议和指令集差异,支持未来灵活扩展新型温控设备和区域控制。** (新增) * **验收标准:*** 系统能成功连接至少3种主流品牌智能温控设备。* 数据上报和指令下发延迟 ≤ 5秒。* 设备抽象层能有效隔离设备细节,对外提供统一接口。 (新增)# ... (其他内容不变) ...
-
@po
再次审核:
@pm
更新prd.md
后,@po
会再次运行检查。npx bmad-method @po *execute-checklist po-master-checklist --inputs prd=docs/prd.md architecture=docs/fullstack-architecture.md frontendSpec=docs/front-end-spec.md projectBrief=docs/project-brief.md
(BMAD) @po: 再次审查SHCCS规划文档… 检测到
docs/prd.md
中的“智能温控硬件集成”已根据建议进行了修订。当前所有检查项均通过。规划文档已全面通过产品负责人审核。
通过这种严谨的审核和迭代修订机制,BMAD系统确保了SHCCS项目的所有规划文档都达到了高水平的一致性和质量,为后续的验证、分片和开发阶段奠定了坚实的基础。
验证与分片:将蓝图细化为可执行颗粒 (Validation & Sharding: Granularizing the Blueprint)
在所有规划文档都通过产品负责人 (@po
) 的审核后,下一步是将这些大型、全面的文档进行验证和分片。分片(Sharding)是一个关键的步骤,它将如PRD或架构文档这样可能长达数十页的文档,拆解成逻辑上更小、更独立、更易于消化和引用的模块。这对于在后续的开发循环中,为智能代理提供精确的任务上下文,并便于人工在IDE中快速定位所需信息,具有不可估量的价值。
1. 所有规划文档通过 PO 校验后,@po
→ *shard-doc docs/prd.md docs/prd
与 docs/architecture.md
等,方便 IDE 逐章节查看。
深度解析:
*shard-doc
任务是BMAD中一个极其重要的文档管理功能。它将一个单一的Markdown文档(或其他支持的格式)根据其内部的结构(如H1、H2等标题层级)智能地拆分成多个更小的Markdown文件,并将这些文件存放到指定的输出目录中。
为什么分片至关重要?
- 提供精确上下文: 在开发阶段,
@dev
代理或开发人员在实现某个用户故事时,可能只需要PRD中关于该故事的验收标准或架构文档中某个API的设计细节。通过分片,代理可以直接引用或加载特定的小文件,避免处理整个大型文档,从而提高效率和上下文匹配精度。 - 便于IDE查看: 当文档变得非常庞大时,在传统的文本编辑器或IDE中滚动查找特定章节会非常耗时。分片后,每个章节都成为一个独立的文件,开发人员可以轻松地在文件浏览器中导航,或者直接通过IDE的文件搜索功能定位到所需的具体信息。
- 版本控制友好: 当文档某个小部分发生变更时,只有对应的分片文件会被修改,而不是整个大文件。这使得Git的历史记录更加清晰,减少了合并冲突的可能性。
- 提高可维护性: 小文件更容易进行修改和管理。
实训案例 (SHCCS):对 PRD 和架构文档进行分片
在 docs/prd.md
和 docs/fullstack-architecture.md
都通过 @po
审核后,我们现在对它们进行分片。
-
分片 PRD:
产品负责人 (@po
) 执行分片任务,将docs/prd.md
分片到docs/prd/
目录下。npx bmad-method @po *shard-doc docs/prd.md docs/prd/
终端输出 (示例):
(BMAD) @po: 好的,我将对docs/prd.md
进行分片,目标目录是docs/prd/
。
(BMAD) @po: 正在分析docs/prd.md
的结构…
(BMAD) @po: 检测到以下主要章节:
- 1. 引言
- 2. 产品目标
- 3. 目标用户与用户画像
- 4. 核心功能需求
- 4.1 移动应用程序
- 4.1.1 远程温度调节
- 4.1.2 智能排程
- 4.2 智能温控硬件集成
- 4.3 智能调度引擎
- 4.4 数据存储与分析
- 5. 非功能性需求
- 6. 技术风险与挑战
(BMAD) @po: 正在将章节导出为独立的Markdown文件…
(BMAD) @po: 成功分片docs/prd.md
,并在docs/prd/
目录下创建了多个文件。
(BMAD) @po: 已更新core-config.yaml
中的prdShardedLocation
为docs/prd/
。分片后的
docs/prd/
目录结构和文件内容 (示例):docs/prd/ ├── 1-introduction.md ├── 2-product-goals.md ├── 3-target-users-and-personas.md ├── 4-core-functional-requirements/ │ ├── 4.1-mobile-application/ │ │ ├── 4.1.1-remote-temperature-control.md │ │ └── 4.1.2-smart-scheduling.md │ ├── 4.2-smart-thermostat-hardware-integration.md │ ├── 4.3-smart-scheduling-engine.md │ └── 4.4-data-storage-and-analytics.md ├── 5-non-functional-requirements.md └── 6-technical-risks-and-challenges.md
其中,
docs/prd/4-core-functional-requirements/4.1-mobile-application/4.1.1-remote-temperature-control.md
的内容可能如下:### 4.1.1 远程温度调节 * **描述:** 用户通过APP界面可随时随地查看并调整家中温度。 * **功能点:*** 实时显示当前室内温度和目标温度。* 提供滑块或 +/- 按钮进行目标温度设置(0.5°C精度)。* 支持制冷、制热、自动三种工作模式切换。* (未来扩展)支持按区域(如客厅、卧室)独立控制(当前版本为全屋统一控制)。 * **验收标准:*** APP端实时温度显示误差 ≤ 0.5°C。* 温度调节指令在3秒内响应并更新至设备。* 能在APP上清晰显示当前工作模式。
-
分片架构文档:
同样,对docs/fullstack-architecture.md
进行分片,目标目录是docs/architecture/
。npx bmad-method @po *shard-doc docs/fullstack-architecture.md docs/architecture/
终端输出 (示例):
(BMAD) @po: 好的,我将对docs/fullstack-architecture.md
进行分片,目标目录是docs/architecture/
。
(BMAD) @po: 成功分片docs/fullstack-architecture.md
,并在docs/architecture/
目录下创建了多个文件。
(BMAD) @po: 已更新core-config.yaml
中的architectureShardedLocation
为docs/architecture/
。分片后的
docs/architecture/
目录结构和文件内容 (示例):docs/architecture/ ├── 1-introduction.md ├── 2-system-high-level-architecture.md ├── 3-layered-architecture-design.md ├── 4-key-interface-design/ │ ├── 4.1-client-api-gateway-interface.md │ └── 4.2-device-communication-interface.md ├── 5-technology-stack-selection.md ├── 6-deployment-strategy.md └── 7-prd-revisions.md
经过分片操作,SHCCS项目的核心规划文档被组织成更细致的、易于访问和引用的颗粒,极大地提升了文档的可用性和代理任务执行的精确性。
2. 若需快速复核特定文档,可使用 *execute-checklist architect-checklist
或 story-draft-checklist
等。
深度解析:
分片操作完成后,虽然文档内容在逻辑上保持一致,但有时团队可能需要对某个特定类型的文档(或其分片)进行快速、集中的复核。BMAD提供了针对不同角色和阶段的专用清单 (checklist
),以满足这种按需复核的需求。
-
*execute-checklist architect-checklist
:架构师的专项复核
这个清单通常由@architect
代理执行,用于检查架构文档(或其分片)是否满足特定的架构原则、最佳实践、安全要求或非功能性需求。即使在@po
已经进行了一致性审查之后,@architect
也可能需要进行更深层次的技术细节复核。
例如,对于SHCCS项目的架构文档,architect-checklist
可能会检查:- 微服务划分是否合理?
- API接口设计是否符合RESTful原则或MQTT规范?
- 技术栈选型是否适合项目规模和性能需求?
- 安全性考虑是否贯穿整个架构(如认证、授权、数据加密)?
- 可扩展性设计是否存在瓶颈?
-
story-draft-checklist
:用户故事初稿复核
这个清单通常由@sm
或@pm
代理执行,用于在用户故事初稿生成后,快速核对故事的完整性、清晰度、可独立开发性以及是否满足INVEST原则(Independent, Negotiable, Valuable, Estimable, Small, Testable)。
实训案例 (SHCCS):复核架构分片文档
分片完成后,@architect
决定对SHCCS项目的架构文档进行一次快速复核,以确保所有技术细节都得到妥善考虑。
npx bmad-method @architect *execute-checklist architect-checklist --inputs architectureShardedLocation=docs/architecture/
终端输出 (示例):
(BMAD) @architect: 好的,我将对 docs/architecture/
目录下的SHCCS架构分片文档执行 architect-checklist
。
(BMAD) @architect: 检查项 1.1:分层架构是否清晰定义,职责是否分离?
* docs/architecture/3-layered-architecture-design.md
文件清晰描述了客户端层、API网关层、应用服务层等,并划分了职责。通过。
(BMAD) @architect: 检查项 1.2:关键服务之间(如用户服务、设备管理服务)是否采用异步通信(消息队列)?
* 架构文档中明确提到了Kafka作为消息队列,用于服务间异步通信。通过。
(BMAD) @architect: 检查项 2.1:设备通信接口是否支持高并发和实时性?
* docs/architecture/4-key-interface-design/4.2-device-communication-interface.md
明确选用了MQTT协议,符合低延迟、高并发设备通信需求。通过。
(BMAD) @architect: 检查项 2.2:数据存储选型是否合理,特别是时序数据?
* docs/architecture/5-technology-stack-selection.md
中,时序数据库(InfluxDB)用于存储历史温度和能耗数据,关系型数据库(PostgreSQL)用于结构化数据。选型合理。通过。
(BMAD) @architect: 检查项 3.1:所有关键组件是否容器化并支持Kubernetes部署?
* docs/architecture/6-deployment-strategy.md
明确所有后端服务容器化,并通过Kubernetes部署。通过。
(BMAD) @architect: 架构文档复核完成。所有检查项均通过。
通过这种快速复核,@architect
可以在分片文档的层面再次确认技术决策的合理性和完整性,进一步保障了规划阶段的质量。
3. 使用 *document-project
汇总当前状态,便于跨角色沟通或为后续回顾准备资料。
深度解析:
在一个复杂的项目生命周期中,随着各种文档的生成和分片,很难快速把握项目整体的最新状态。*document-project
任务恰好解决了这个问题。它能够汇总项目当前所有的主要工件和状态,生成一份高层次的总结性文档,如同项目的“快照报告”。
为什么需要汇总项目状态?
- 跨角色沟通: 不同角色(如PM、Dev、QA、Stakeholder)可能只关注项目的一部分。一份汇总报告能让他们快速了解整个项目的进展,促进更高效的跨部门沟通。
- 管理层汇报: 对于项目经理或高层管理人员来说,这份报告提供了项目健康状况和关键决策的概览,便于他们进行评估和决策。
- 回顾会议准备: 在迭代回顾或项目总结时,这份报告是宝贵的输入资料,无需手动整理所有散落的文档。
- 新成员引导: 新加入的团队成员可以快速通过这份报告了解项目的全貌和当前进展,加速他们的融入。
实训案例 (SHCCS):汇总项目状态
在规划文档全部通过审核并完成分片后,我们生成一份SHCCS项目的状态汇总报告。通常,这个任务可以由项目负责人 (@po
) 或Scrum Master (@sm
) 来执行。
npx bmad-method @po *document-project --output docs/project-status-summary-planning-phase.md
注意: --output
参数指定了输出文件名,我们通过文件名来体现这是“规划阶段”的总结。
预期输出 (docs/project-status-summary-planning-phase.md
节选示例):
# 智能家居气候控制系统 (SHCCS) - 项目状态总结 (规划阶段)**日期:** 2023年10月28日
**生成人:** @po---## 1. 项目概览 (Project Overview)SHCCS项目目前已完成核心规划阶段的所有文档工作。通过多代理协同,我们已明确了产品需求、用户体验设计、系统架构和初步用户故事(待细化)。这些文档为后续的开发循环提供了坚实的基础。## 2. 核心里程碑 (Key Milestones Achieved)* **项目简报 (Project Brief) 完成:** 确立项目目标、范围和核心功能。* 文件:`docs/project-brief.md`
* **产品需求文档 (PRD) 完成并审核通过:** 详细定义了SHCCS的功能和非功能性需求。* 文件:`docs/prd.md`* 已分片至:`docs/prd/`
* **前端规格与用户体验文档 (Frontend Spec) 完成:** 明确了SHCCS移动应用的UI/UX设计。* 文件:`docs/front-end-spec.md`* 包含AI生成的UX提示以激发设计灵感。
* **全栈架构设计文档 (Architecture) 完成并审核通过:** 定义了系统技术栈、分层和接口。* 文件:`docs/fullstack-architecture.md`* 已分片至:`docs/architecture/`
* **规划文档一致性检查通过:** @po 已验证所有规划文档之间的一致性。## 3. 当前项目状态 (Current Project Status)* **阶段:** 规划阶段已完成,即将进入开发循环。
* **文档状态:** 所有核心规划文档已生成、审核并通过,并完成分片。
* **风险:*** **已识别风险:** 与多样化智能温控硬件的兼容性问题已通过架构设计中的“设备抽象层”得到解决。* **潜在风险:** 后续开发中,AI智能调度引擎的算法优化和效果验证仍需关注。## 4. 下一步行动 (Next Steps)* Scrum Master (@sm) 将基于分片后的PRD和架构文档,开始起草用户故事。
* 开发团队 (@dev) 将准备开发环境,并等待用户故事的批准。## 附件:关键文档链接* [项目简报](project-brief.md)
* [产品需求文档 (完整版)](prd.md)
* [产品需求文档 (分片目录)](prd/)
* [前端规格与用户体验文档](front-end-spec.md)
* [全栈架构设计文档 (完整版)](fullstack-architecture.md)
* [全栈架构设计文档 (分片目录)](architecture/)
* [产品负责人审核清单](docs/qa/po-master-checklist-report-planning-phase.md) (假设有输出报告)---
这份汇总报告 succinctly 地总结了SHCCS项目在规划阶段的成果,为团队成员提供了清晰的上下文,也为下一步的工作指明了方向。
4. 分片完成后,请确认 core-config
中的 prdShardedLocation
、architectureShardedLocation
已同步生成。
深度解析:
这是一个关键的验证步骤,用于确认BMAD系统内部的状态与用户期望的一致性。当 *shard-doc
任务成功执行后,BMAD系统不仅会创建分片文件,还会智能地更新其内部的核心配置文件 core-config.yaml
,以记录这些分片文档的最新位置。
为什么需要确认?
- 代理上下文感知: BMAD的其他代理(如
@sm
在创建故事时,或@dev
在开发故事时)需要知道在哪里找到分片后的PRD和架构文档,以便获取精确的上下文。core-config.yaml
中记录的路径是它们获取这些信息的官方来源。 - 避免配置漂移: 确保手动检查与系统内部配置同步,防止因为配置不一致导致后续任务失败或引用到旧的、错误的文件。
- 调试和可追溯性: 如果将来出现任何与文档引用相关的问题,
core-config.yaml
将是第一个需要检查的地方,确认其路径的准确性对于排查问题至关重要。
实训案例 (SHCCS):验证 core-config.yaml
更新
在前面我们执行了PRD和架构文档的分片操作。现在,我们需要再次查看 bmad-core/core-config.yaml
来确认这些路径是否已正确更新。
打开 .bmad-core/core-config.yaml
文件:
# .bmad-core/core-config.yaml 内容示例 (更新后)# 定义核心文档在 docs/ 目录下的预期位置
docLocations:projectBrief: "docs/project-brief.md"prd: "docs/prd.md"architecture: "docs/fullstack-architecture.md"frontendSpec: "docs/front-end-spec.md"qaLocation: "docs/qa/"# 定义分片文档的存储路径,这些路径在分片操作后会自动创建和同步到此配置
shardingPaths:prdShardedLocation: "docs/prd/" # 确认此项已更新architectureShardedLocation: "docs/architecture/" # 确认此项已更新# 定义用户故事文件的根目录
storyRoots:default: "stories/"# 其他配置项...
验证结果:
我们应该能看到 prdShardedLocation
的值已更新为 "docs/prd/"
,architectureShardedLocation
的值已更新为 "docs/architecture/"
。这表明BMAD系统已成功识别并记录了分片文档的新位置。如果这些路径没有自动更新,可能意味着分片任务执行失败或出现异常,需要检查任务日志进行排查。
5. 对大型团队,建议将分片结果同步到版本控制,保证多代理共享最新上下文。
深度解析:
在BMAD系统中,docs/
目录下的所有工件,包括分片后的文档,都应该是项目版本控制(如Git)的一部分。这对于大型团队尤其重要,因为它确保了团队中每个人(包括BMAD的智能代理)都能访问和使用最新、最权威的文档版本。
为什么必须同步到版本控制?
- 单一真相来源 (Single Source of Truth): Git仓库成为所有项目文档的唯一真相来源。每个团队成员和代理都从同一个地方获取信息,避免了信息偏差和不一致。
- 版本追溯: 所有的文档变更都存储在Git历史中,可以轻松追溯谁在何时修改了什么。这对于审计、问题排查和理解决策演变过程至关重要。
- 协作与并行: 大型团队 часто会有多名成员或多个代理同时工作。版本控制系统提供了合并、分支等功能,支持并行开发和协作,避免了文档冲突。
- 代理间的上下文共享: 尽管BMAD系统通过
core-config.yaml
了解分片路径,但如果是分布式团队或代理在不同的环境中运行,所有相关文件都存在于版本控制中,可以确保其获取的上下文是同步一致的。 - 灾难恢复: Git仓库作为文档的备份,即使本地环境出现问题,也能从远程仓库恢复。
实训案例 (SHCCS):将分片结果提交到Git
在完成分片并确认 core-config.yaml
已更新后,我们应该将所有新的文件和修改提交到Git仓库中。
-
查看 Git 状态:
git status
预期输出 (示例):
On branch main Untracked files:(use "git add <file>..." to include in what will be committed)docs/prd/docs/architecture/stories/Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory).bmad-core/core-config.yaml # core-config.yaml 的改动# ... 其他文件改动 ...
-
添加并提交所有变更:
git add docs/prd/ docs/architecture/ .bmad-core/core-config.yaml # 添加新的分片目录和 core-config.yaml 的修改 git commit -m "feat: SHCCS project planning documents sharded & core-config updated" git push origin main # 将改动推送到远程仓库
通过这一步,SHCCS项目的所有规划和分片文档都被安全地存储在版本控制系统中,确保了团队所有成员和BMAD代理都能访问到最新、最准确的项目蓝图,为接下来的开发循环做好了准备。
开发循环:从故事到代码的智能旅程 (Development Cycle: Intelligent Journey from Story to Code)
规划文档和分片任务完成后,BMAD项目进入了核心的开发循环阶段。这个阶段是智能代理协同将用户故事转化为可运行代码,并进行测试和质量审查的核心过程。整个循环以迭代的方式进行,每个故事都经过从起草、批准、开发、测试到最终的验收。
1. @sm
→ *draft
(或 create-next-story
)基于分片文档逐个生成故事,默认状态为 Draft。
深度解析:
在BMAD的开发循环中,Scrum Master (@sm
) 代理扮演着连接规划与开发的关键角色。它负责将已经详细规划、并经过分片的文档(如PRD分片、架构分片)转化为开发团队可以理解和实现的用户故事。
-
*draft
:从分片文档中提取用户故事
这个任务是@sm
代理的核心功能之一。它会接收经过分片的PRD和架构文档作为输入,通过智能分析,从中识别出具体的功能点、用户场景和实现细节,并将其组织成标准的用户故事格式。这些故事默认状态为Draft
(草稿),意味着它们还需要进一步的审查和批准才能进入开发流程。 -
create-next-story
:生成下一个用户故事
create-next-story
功能通常用于在迭代过程中,根据项目当前进度和上下文,生成后续的用户故事。它可以根据先前完成的故事、剩余需求以及优先级等因素,智能地推荐并起草下一个最有价值的故事。
为什么默认状态为 Draft
?
将故事的初始状态设置为 Draft
是为了引入人工(或另一个代理,如PM/Analyst)的审查机制。虽然 @sm
代理能够智能地从文档中提取故事,但人类产品经理或分析师的视角对于理解业务价值、确认优先级、调整措辞以确保故事真正反映用户需求仍然至关重要。
实训案例 (SHCCS):基于分片文档生成用户故事
现在,SHCCS项目的规划文档已经分片完成。Scrum Master (@sm
) 将基于 docs/prd/
和 docs/architecture/
目录中的分片文档,开始生成用户故事。
npx bmad-method @sm *draft --inputs prdShardedLocation=docs/prd/ architectureShardedLocation=docs/architecture/ --output-dir stories/
注意: --output-dir
参数指定了故事文件的存放目录。
终端输出 (示例):
(BMAD) @sm: 好的,我将基于SHCCS的分片PRD和架构文档,开始起草用户故事。故事文件将保存在 stories/
目录下。
(BMAD) @sm: 正在分析 docs/prd/4-core-functional-requirements/4.1-mobile-application/4.1.1-remote-temperature-control.md
…
(BMAD) @sm: detected a core feature: Remote Temperature Control via Mobile App.
(BMAD) @sm: Drafted story stories/SHCCS-001-remote-temp-display.md
.
(BMAD) @sm: Drafted story stories/SHCCS-002-remote-temp-adjust.md
.
(BMAD) @sm: 正在分析 docs/prd/4-core-functional-requirements/4.1-mobile-application/4.1.2-smart-scheduling.md
…
(BMAD) @sm: Drafted story stories/SHCCS-003-create-weekly-schedule.md
.
(BMAD) @sm: Drafted story stories/SHCCS-004-manage-vacation-mode.md
.
(BMAD) @sm: 用户故事草稿生成完成。
生成的 stories/SHCCS-001-remote-temp-display.md
文件内容 (示例):
# SHCCS-001: 远程显示当前室内温度**状态:** Draft (草稿)
**分配代理:** @dev
**优先级:** High (高)
**预期点数/工作量:** 2---## 故事标题 (Story Title)
作为一名SHCCS用户,我希望通过移动应用程序远程查看我家的实时室内温度,以便随时了解家中的气候状况。## 故事描述 (Story Description)
本故事旨在实现SHCCS移动应用程序(iOS/Android)上,主页温控面板实时显示用户家中当前室内温度的功能。用户登录APP后,能够一目了然地看到准确的温度数据。## 验收标准 (Acceptance Criteria)
1. 用户成功登录SHCCS移动应用程序。
2. APP主页温控面板中央显著位置显示当前室内温度数值。
3. 当前室内温度数据实时更新,与实际设备传感器数据误差不超过0.5°C。
4. 在无网络连接或设备离线时,APP应显示相应的提示信息(如“数据离线”或上次成功获取的温度)。
5. 考虑UX规格中对温度显示字号和颜色的要求。## 相关文档 (Related Documents)
* [PRD:远程温度调节](docs/prd/4-core-functional-requirements/4.1-mobile-application/4.1.1-remote-temperature-control.md)
* [前端规格:主页温控面板](docs/front-end-spec.md#3.1-主页温控面板-main-thermostat-panel)
* [架构:客户端与API网关接口](docs/architecture/4-key-interface-design/4.1-client-api-gateway-interface.md)
* [架构:设备通信接口(遥测数据)](docs/architecture/4-key-interface-design/4.2-device-communication-interface.md)## 开发代理记录 (Dev Agent Record)
# ... 此处留空,待 @dev 填写 ...## 文件列表 (Files Modified/Created)
# ... 此处留空,待 @dev 填写 ...
这些以 Draft
状态生成的故事文件,为后续的审查和开发工作提供了清晰的指引。
2. 若需额外审核,@pm
或 @analyst
可人工检查故事并更新状态为 Approved。
深度解析:
尽管 @sm
代理能够智能地生成用户故事草稿,但在它们正式进入开发流程之前,通常需要由产品经理 (@pm
) 或分析师 (@analyst
) 进行额外的审查。这个审查环节是确保用户故事真正符合产品愿景、业务价值和需求准确性的关键。
-
人工检查故事:
PM
或Analyst
会打开生成的stories/SHCCS-XXX.md
文件,仔细阅读故事标题、描述和验收标准,并对照原始PRD、UX规范等文档进行核对。他们会关注:- 故事的业务价值是否清晰?
- 验收标准是否明确、可测试?
- 故事粒度是否合适,是否能在一次迭代内完成?
- 是否有遗漏或重复的功能点?
- 措辞是否准确,能被开发团队正确理解?
-
更新状态为
Approved
: 只有通过审查,并确认故事可以进入开发的技术准备阶段后,@pm
或@analyst
才会使用BMAD命令将故事的状态从Draft
更新为Approved
。一旦故事状态变为Approved
,它就具备了被开发者 (@dev
) 代理拾取并开始实现的前提。
实训案例 (SHCCS):审查并批准用户故事
我们作为产品经理,现在审查 stories/SHCCS-001-remote-temp-display.md
。
-
人工审查:
打开stories/SHCCS-001-remote-temp-display.md
。- 故事标题: “远程显示当前室内温度”——清晰。
- 故事描述: 明确了在APP主页显示实时温度。
- 验收标准:
- “实时更新,误差不超过0.5°C”——明确且可测试。
- “无网络连接或离线时显示提示”——考虑了异常情况,很好。
- “考虑UX规格”——与前端规格挂钩,很好。
- 相关文档: 链接到PRD和架构文档的分片,方便开发查阅。
结论: 故事清晰,验收标准明确,符合SHCCS产品预期,可以批准。
-
更新故事状态:
使用@pm
代理更新故事状态为Approved
。npx bmad-method @pm *update-story-status stories/SHCCS-001-remote-temp-display.md Approved
终端输出 (示例):
(BMAD) @pm: 好的,我将故事stories/SHCCS-001-remote-temp-display.md
的状态更新为Approved
。更新后的
stories/SHCCS-001-remote-temp-display.md
文件内容 (节选):# SHCCS-001: 远程显示当前室内温度**状态:** Approved (已批准) # 状态已更新 **分配代理:** @dev **优先级:** High (高) **预期点数/工作量:** 2--- # ... (其他内容不变) ...
通过这个审查和批准流程,SHCCS-001
用户故事现在已经准备就绪,可以被开发者代理 (@dev
) 拾取并开始实现。这确保了进入开发阶段的故事都是经过仔细考量和确认的。
3. @dev
→ *develop-story
实现故事,必须遵循任务顺序:阅读任务 → 开发 → 测试 → 更新故事文件 Dev Agent Record/文件列表。
深度解析:
这是BMAD开发循环的核心环节,由开发者 (@dev
) 代理负责将批准的用户故事转化为实际的代码。@dev
代理执行 *develop-story
任务时,不会盲目地直接开始编码,而是遵循一个结构化的任务序列,确保每一步都深思熟虑且有据可循。
-
*develop-story
:故事实现的核心任务
@dev
代理调用此任务,并传入一个已批准的故事文件路径。这个任务是智能的,它会理解故事的内容,并调用其内部的代码生成、测试框架交互、文档更新等子能力。 -
必须遵循的任务顺序:
-
阅读任务 (Read Task):
@dev
代理首先会仔细阅读用户故事文件 (stories/SHCCS-XXX.md
),包括故事标题、描述、验收标准,以及最重要的“相关文档”部分。它会深入分析链接到的PRD分片(如prd/4.1.1-remote-temperature-control.md
)、前端规格 (front-end-spec.md
) 和架构文档分片(如architecture/4.1-client-api-gateway-interface.md
),以全面理解任务需求、UI/UX要求和实现方案。
SHCCS示例:@dev
会理解SHCCS-001故事要点,即在APP主页显示实时温度,精度要求、离线提示,并了解前端UI(圆形拨盘)、后端API (/devices/{id}/current_status
) 和MQTT通信(device/{device_id}/telemetry
)的细节。 -
开发 (Develop):
在充分理解任务后,@dev
代理开始进行“开发”。这可能不仅仅意味着生成代码,还包括:- 代码生成: 根据需求,智能生成前端UI组件、后端API路由、业务逻辑、数据库交互代码等。
- 现有代码修改: 如果是Brownfield项目或在现有模块上添加功能,
@dev
会识别需要修改的文件,并进行相应的代码修改。 - 架构遵守: 确保新代码符合架构设计中定义的技术栈、分层和接口规范。
SHCCS示例 (SHCCS-001): - 前端(React Native): 生成或修改
src/mobile/components/ThermostatPanel.js
,实现实时温度的文本显示和UI更新逻辑。 - 后端(Python/FastAPI):
- 修改
src/backend/app/api/endpoints/device.py
,添加一个路由如GET /api/v1/devices/{device_id}/current_temperature
,用于前端获取温度数据。 - 修改
src/backend/app/services/device_service.py
,从时序数据库 (InfluxDB
) 获取最新温度数据。 - 确保后端
MQTT
客户端能接收到设备上报的device/{device_id}/telemetry
数据,并将其写入时序数据库。
- 修改
-
测试 (Test):
@dev
代理不仅仅是编码器,它还是自动化测试的执行者。在代码编写完成后,@dev
会自动生成并运行单元测试、集成测试,以验证新实现的功能是否满足故事的验收标准和代码质量要求。
SHCCS示例 (SHCCS-001):- 单元测试: 为
ThermostatPanel.js
编写单元测试,模拟温度数据输入,验证UI显示是否正确。为device_service.py
编写单元测试,验证从DB获取温度数据的逻辑。 - 集成测试: 模拟APP请求
GET /api/v1/devices/{device_id}/current_temperature
接口,验证后端能否正确返回数据。模拟MQTT设备上报数据,验证后端能否正确接收并存储。
- 单元测试: 为
-
更新故事文件
Dev Agent Record
/文件列表 (Update Story File):
这是*develop-story
任务中一个非常关键的文档化步骤。一旦开发和测试完成(无论结果如何),@dev
代理必须更新用户故事文件本身。Dev Agent Record
: 记录开发代理的工作日志,包括采取的步骤、遇到的挑战、做出的决策、以及自评估的测试结果摘要。这提供了高度的透明度和可追溯性。文件列表 (Files Modified/Created)
: 清晰地列出为了实现这个故事,新创建或修改的所有文件及其相对路径。这对于后续的QA审查、代码合并和理解项目变更至关重要。
-
实训案例 (SHCCS):实现 SHCCS-001 故事
我们现在要求 @dev
代理实现 stories/SHCCS-001-remote-temp-display.md
。
npx bmad-method @dev *develop-story stories/SHCCS-001-remote-temp-display.md
终端输出 (示例):
(BMAD) @dev: 好的,我将开始实现故事 SHCCS-001: 远程显示当前室内温度
。
(BMAD) @dev: 阶段 1/4: 阅读任务。 正在解析故事文件、相关PRD、前端规格和架构文档。
(BMAD) @dev: - 目标:APP主页实时显示室内温度,精度0.5°C。
(BMAD) @dev: - 接口:后端 GET /api/v1/devices/{device_id}/current_temperature
。
(BMAD) @dev: - 数据源:时序数据库。
(BMAD) @dev: - UI:圆形拨盘中央。
(BMAD) @dev: 阶段 2/4: 开发。 正在生成/修改代码…
(BMAD) @dev: - 创建 src/mobile/components/ThermostatPanel.js
(或修改)。
(BMAD) @dev: - 修改 src/backend/app/api/endpoints/device.py
(添加温度获取路由)。
(BMAD) @dev: - 修改 src/backend/app/services/device_service.py
(实现时序DB读取)。
(BMAD) @dev: - 确保MQTT数据采集服务 (src/backend/app/mqtt_listener.py
) 将数据写入InfluxDB。
(BMAD) @dev: 代码生成/修改已完成。
(BMAD) @dev: 阶段 3/4: 测试。 正在生成并运行单元测试和集成测试…
(BMAD) @dev: - test_thermostat_panel.js
(通过)
(BMAD) @dev: - test_device_service.py
(通过)
(BMAD) @dev: - test_device_api.py
(通过)
(BMAD) @dev: 所有测试通过。
(BMAD) @dev: 阶段 4/4: 更新故事文件。 正在更新 stories/SHCCS-001-remote-temp-display.md
中的 Dev Agent Record
和 文件列表
。
(BMAD) @dev: 故事 SHCCS-001
的开发和测试已完成。请 QA
代理进行复查。
更新后的 stories/SHCCS-001-remote-temp-display.md
文件内容 (节选):
# SHCCS-001: 远程显示当前室内温度**状态:** Developed (已开发) # 状态更新为Developed
**分配代理:** @dev
**优先级:** High (高)
**预期点数/工作量:** 2---
# ... (故事描述和验收标准不变) ...## 开发代理记录 (Dev Agent Record)
**开发日期:** 2023年10月28日
**开发代理:** @dev
**采取的步骤:**
1. **需求分析:** 仔细阅读SHCCS-001故事,理解用户对远程实时温度显示的需求。查阅了PRD中远程温度调节的细节、前端规格中的UI布局(圆形拨盘)以及架构文档中客户端与API网关接口(获取设备状态),以及MQTT通信层(设备遥测数据上报)。
2. **前端实现:** 在 `src/mobile/components/ThermostatPanel.js` 中实现了实时温度的显示逻辑。通过调用后端API获取数据。
3. **后端实现:*** 在 `src/backend/app/api/endpoints/device.py` 中增加了 `GET /api/v1/devices/{device_id}/current_temperature` 路由。* 在 `src/backend/app/services/device_service.py` 中实现了从 `InfluxDB` (时序数据库) 获取最新温度数据的方法。* 确认MQTT数据采集服务 (`src/backend/app/mqtt_listener.py`) 正确接收并存储 `device/{device_id}/telemetry` 主题的数据到 `InfluxDB`。
4. **接口联调:** 确保前端能正确调用后端API并解析返回数据。
5. **自测试:*** **单元测试:** `test_thermostat_panel.js` (模拟API响应,验证UI显示)。`test_device_service.py` (模拟InfluxDB数据,验证服务逻辑)。* **集成测试:** 通过Postman或集成测试套件调用API,验证从设备数据上报到API响应的整个链路。* **结果:** 所有测试用例均通过,APP显示温度与模拟设备数据一致,误差在0.5°C以内。离线状态提示功能有效。## 文件列表 (Files Modified/Created)
- `src/mobile/components/ThermostatPanel.js` (修改/创建)
- `src/mobile/tests/test_thermostat_panel.js` (创建)
- `src/backend/app/api/endpoints/device.py` (修改)
- `src/backend/app/services/device_service.py` (修改)
- `src/backend/app/tests/test_device_api.py` (创建)
- `src/backend/app/tests/test_device_service.py` (创建)
- `src/backend/app/mqtt_listener.py` (验证/确认无须修改)
通过 *develop-story
任务,@dev
代理不仅完成了编码和测试,还详尽地记录了开发过程,使故事文件的状态更新为 Developed
,并为下一步的QA审查做好了准备。
4. 如用户要求 QA:@qa
→ *review {story}
执行代码与策略审查,可直接修复小问题并留下待办清单。
深度解析:
在开发者 (@dev
) 完成故事的实现并更新状态后,质量保证工程师 (@qa
) 代理将介入,对已开发的故事进行全面的质量审查。这包括对代码本身、实现逻辑以及是否满足产品策略和验收标准的审视。
-
*review {story}
:执行代码与策略审查
@qa
代理调用此任务,并传入已完成开发的故事文件路径。*review
任务是BMAD中QA代理的核心功能,它会执行以下几个维度的审查:-
代码审查 (Code Review):
- 代码规范: 检查代码是否遵循项目定义的代码风格、命名约定和最佳实践。
- 逻辑正确性: 审阅代码逻辑,判断其是否正确实现了故事需求,是否存在潜在的Bug或边界条件处理不当。
- 鲁棒性与错误处理: 检查异常处理机制、输入校验等是否健壮。
- 性能与安全性: 初步评估代码是否存在性能瓶颈或安全漏洞。
- 测试覆盖: 检查
@dev
代理生成的测试用例是否充分,覆盖了关键路径和验收标准。
-
策略审查 (Strategy Review):
- 需求对齐: 核对实现是否完全符合用户故事的验收标准和原始PRD中的功能描述。
- UX一致性: 检查前端实现是否与
front-end-spec.md
中的UI/UX设计保持一致。 - 架构遵守: 确认实现是否遵循了
fullstack-architecture.md
中定义的分层、接口和技术栈规范。 - 非功能性需求: 确认代码在可维护性、可测试性等方面是否达标。
-
-
可直接修复小问题并留下待办清单:
这是@qa
代理智能和高效的体现。- 直接修复: 如果审查发现一些小的、明显的代码问题(如拼写错误、格式不符、简单的逻辑漏洞),
@qa
代理可以直接进行修复,从而避免问题再次流转回@dev
,节省了沟通和迭代时间。 - 留下待办清单: 对于较大或需要开发者深入修改的问题,
@qa
代理会在故事文件中添加一个“QA Review”或“TODO List”部分,详细描述发现的问题、建议的修改,并将故事状态变更为QA_Failed
或Pending_Dev_Fix
,以便通知@dev
代理进行后续处理。
- 直接修复: 如果审查发现一些小的、明显的代码问题(如拼写错误、格式不符、简单的逻辑漏洞),
实训案例 (SHCCS):审查 SHCCS-001 故事
现在,@qa
代理将对 stories/SHCCS-001-remote-temp-display.md
进行审查。
npx bmad-method @qa *review stories/SHCCS-001-remote-temp-display.md
终端输出 (示例):
(BMAD) @qa: 好的,我将审查故事 SHCCS-001: 远程显示当前室内温度
。
(BMAD) @qa: 阶段 1/2: 代码审查。
(BMAD) @qa: - 检查 src/mobile/components/ThermostatPanel.js
…
(BMAD) @qa: - 代码规范:良好。
(BMAD) @qa: - 逻辑:获取API数据并显示,但在网络异常时,UI的离线状态提示不够突出,可能需要更明显的视觉指示。这是一个建议。
(BMAD) @qa: - 测试:test_thermostat_panel.js
覆盖率不错。
(BMAD) @qa: - 检查 src/backend/app/api/endpoints/device.py
…
(BMAD) @qa: - 代码规范:良好。
(BMAD) @qa: - 逻辑:正确实现了温度获取路由。
(BMAD) @qa: - 测试:test_device_api.py
覆盖了主要场景。
(BMAD) @qa: - 检查 src/backend/app/services/device_service.py
…
(BMAD) @qa: - 代码规范:良好。
(BMAD) @qa: - 逻辑:从InfluxDB获取最新数据,但在查询不到数据时,异常处理逻辑不够细致,可能需要返回更清晰的错误码而不只是空值。
(BMAD) @qa: - 小问题修正: src/backend/app/services/device_service.py
中有一处日志打印语句使用了硬编码字符串,我已将其修改为配置常量。
(BMAD) @qa: 阶段 2/2: 策略审查。
(BMAD) @qa: - 需求对齐: 实现了远程实时温度显示,符合验收标准。
(BMAD) @qa: - UX一致性: UI展示与前端规格中的设计基本一致。
(BMAD) @qa: - 架构遵守: 遵循了RESTful API和InfluxDB的使用。
(BMAD) @qa: 审查总结:
- 发现一个小代码规范问题并已直接修复。
- 发现两个潜在的体验/逻辑优化点,已在故事文件中留下待办清单。
- 总体上,故事功能已实现,但建议 @dev
代理考虑并处理这些清单项。
(BMAD) @qa: 正在更新故事文件 stories/SHCCS-001-remote-temp-display.md
。
更新后的 stories/SHCCS-001-remote-temp-display.md
文件内容 (节选):
# SHCCS-001: 远程显示当前室内温度**状态:** Pending_Dev_Fix (待开发修复) # 状态更新
**分配代理:** @dev
**优先级:** High (高)
**预期点数/工作量:** 2---
# ... (其他内容不变) ...## 开发代理记录 (Dev Agent Record)
# ... (内容不变) ...## QA 审查记录 (QA Review Record)
**审查日期:** 2023年10月28日
**审查代理:** @qa
**审查结果:**
* **代码修正:*** 在 `src/backend/app/services/device_service.py` 中发现一处日志打印使用了硬编码字符串,已修改为使用 `config.LOGGING_PREFIX` 配置常量。
* **待办清单 (TODO List) - 建议由 @dev 考虑:**1. **前端优化(UX):** 当APP处于无网络连接或设备离线状态时,当前的离线提示(如文本“数据离线”)可能不够显眼。建议考虑更明显的视觉指示,例如灰色蒙版、醒目的图标或动画,以提升用户体验。2. **后端优化(健壮性):** 在 `src/backend/app/services/device_service.py` 中,当InfluxDB查询不到设备最新温度数据时,当前逻辑可能只是返回空值。建议考虑返回一个明确的错误信息或特定的状态码(如 404 Not Found),以便前端能更好地处理。
* **总体评估:** 故事核心功能已实现,代码质量良好。上述待办项属于优化建议,不阻碍功能的基本可用性,但建议在发布前考虑。## 文件列表 (Files Modified/Created)
- `src/mobile/components/ThermostatPanel.js` (修改/创建)
- `src/mobile/tests/test_thermostat_panel.js` (创建)
- `src/backend/app/api/endpoints/device.py` (修改)
- `src/backend/app/services/device_service.py` (修改)
- `src/backend/app/tests/test_device_api.py` (创建)
- `src/backend/app/tests/test_device_service.py` (创建)
- `src/backend/app/mqtt_listener.py` (验证/确认无须修改)
通过 @qa
的审查,SHCCS-001故事的质量得到了把关。一个小问题被立即修复,而更重要的优化建议则被记录在案,供 dev
代理后续处理,并使故事状态变为 Pending_Dev_Fix
,等待开发者采取行动。
5. 存在未解决的 QA 项时返回 @dev
补齐;全部完成后将故事状态改为 Done,并准备下一个故事。
深度解析:
BMAD的开发循环是一个迭代和精化的过程。当 @qa
代理审查发现需要开发者处理的待办项时,故事将进入一个“修复-复核”的循环。
-
存在未解决的 QA 项时返回
@dev
补齐:
如果@qa
审查后,故事的状态被更新为Pending_Dev_Fix
(待开发修复)或其他类似的“未通过”状态,这意味着@dev
代理需要重新拾取这个故事,根据QA Review Record
中列出的待办清单进行修改和优化。这个过程是智能的:@dev
会读取故事文件,理解QA提出的问题,然后执行修改(*amend-code
或再次执行*develop-story
任务的局部修订),并重新执行测试。
完成修复后,@dev
代理会再次更新故事文件中的Dev Agent Record
和文件列表
,并通知@qa
代理进行二次审查。这个循环会持续进行,直到所有重要的QA项都得到解决。 -
全部完成后将故事状态改为
Done
:
只有当@qa
代理对SHCCS-001
故事的所有方面都满意,确认功能完善、代码高质量、没有遗留的严重问题时,它才会调用命令将故事状态最终更新为Done
。这标志着该用户故事的开发和质量保证工作圆满完成。 -
准备下一个故事:
一个故事进入Done
状态后,团队就可以把注意力转移到下一个高优先级的用户故事上,重复整个开发循环。这个过程持续进行,直到一个Epic(大功能模块)或整个项目的所有关键故事都完成。
实训案例 (SHCCS):修复 QA 待办项并完成故事
SHCCS-001
故事目前状态为 Pending_Dev_Fix
,需要 @dev
代理处理QA提出的优化建议。
-
@dev
代理处理待办清单:
@dev
代理会重新拾取这个故事,并根据QA Review Record
中的待办清单进行代码修改。npx bmad-method @dev *develop-story stories/SHCCS-001-remote-temp-display.md --fix-qa-todos
注意:
--fix-qa-todos
是一个假设的参数,指示@dev
代理要处理QA留下的待办。终端输出 (示例):
(BMAD) @dev: 好的,我将处理故事SHCCS-001
的QA待办清单。
(BMAD) @dev: 处理待办项 1 (前端优化): 我已在src/mobile/components/ThermostatPanel.js
中增加了更明显的离线状态视觉提示,包括一个半透明的灰色蒙版覆盖温度区域,并放大“数据离线”字样。
(BMAD) @dev: 处理待办项 2 (后端优化): 我已修改src/backend/app/services/device_service.py
。现在当InfluxDB查询不到最新温度数据时,API将返回404 Not Found
状态码和明确的错误消息,而不是空值。
(BMAD) @dev: 重新运行所有相关测试… 所有测试通过。
(BMAD) @dev: 正在更新故事文件中的Dev Agent Record
和文件列表
。
(BMAD) @dev:SHCCS-001
故事的QA待办项已处理,请@qa
代理进行复审。更新后的
stories/SHCCS-001-remote-temp-display.md
文件内容 (节选):# SHCCS-001: 远程显示当前室内温度**状态:** Developed (已开发) # 状态再次更新 # ... (其他故事信息不变) ...## 开发代理记录 (Dev Agent Record) **开发日期:** 2023年10月28日 **开发代理:** @dev **采取的步骤:** # ... (原有开发步骤不变) ... **QA待办项处理:** 1. **前端优化:** 根据QA建议,在 `src/mobile/components/ThermostatPanel.js` 增加了更醒目的离线状态UI(灰色蒙版+醒目文字)。 2. **后端优化:** 修改 `src/backend/app/services/device_service.py`。当InfluxDB查询无结果时,相应 API 现在返回 `404 Not Found` 和错误信息。 **自测试结果:** 所有测试用例均通过,包括新的离线UI和错误处理逻辑的验证。## QA 审查记录 (QA Review Record) **审查日期:** 2023年10月28日 **审查代理:** @qa **审查结果:** * **代码修正:** (已处理) 在 `src/backend/app/services/device_service.py` 中发现一处日志打印使用了硬编码字符串,已修改为使用 `config.LOGGING_PREFIX` 配置常量。 * **待办清单 (TODO List) - 建议由 @dev 考虑:** (已处理)1. **前端优化(UX):** 已增加更明显的视觉指示。2. **后端优化(健壮性):** 已修改为返回 `404 Not Found` 和明确错误消息。 * **总体评估:** 故事核心功能已实现,代码质量良好。所有QA待办项已妥善处理。
-
@qa
代理再次复审并标记为Done
:
@dev
完成修改并更新故事文件后,@qa
代理会再次对SHCCS-001
故事进行复审。npx bmad-method @qa *review stories/SHCCS-001-remote-temp-display.md
终端输出 (示例):
(BMAD) @qa: 好的,我将再次审查故事SHCCS-001: 远程显示当前室内温度
。
(BMAD) @qa: 发现@dev
代理已根据待办清单完成了前端离线UI优化和后端错误处理优化。我已验证这些修改符合预期。所有测试已通过。
(BMAD) @qa: 审查结果: 所有QA待办项均已解决,故事功能和质量均达到要求。
(BMAD) @qa: 正在将故事stories/SHCCS-001-remote-temp-display.md
的状态更新为Done
。最终的
stories/SHCCS-001-remote-temp-display.md
文件内容 (节选):# SHCCS-001: 远程显示当前室内温度**状态:** Done (已完成) # 最终状态 # ... (其他故事信息不变) ...## 开发代理记录 (Dev Agent Record) # ... (内容不变) ...## QA 审查记录 (QA Review Record) # ... (内容不变) ... **最终评估:** (QA Final Assessment) * 所有功能均按预期实现,并通过测试。 * 所有遗留的QA待办项已妥善处理并验证。 * 代码质量、性能和安全性符合项目要求。
至此,SHCCS-001
用户故事的开发、测试和质量保障流程完整结束。@qa
代理将其标记为 Done
,团队现在可以聚焦于下一个高优先级的用户故事,持续推进SHCCS项目的开发。这个迭代循环是BMAD系统高效和高质开发的核心体现。
质量与交付:确保产品成功上线 (Quality & Delivery: Ensuring Successful Product Launch)
开发循环的持续进行,使得项目积累了大量的“Done”状态的用户故事和相应的代码。然而,要将这些组件整合成一个可交付的高质量产品,还需要更高层次的质量保障和交付流程。BMAD系统在这个阶段提供了回顾、最终质量门禁、文档同步以及最终档案生成等关键能力,以确保SHCCS项目的成功上线和长久维护。
1. 迭代完成一整个 Epic 后,可选 @po
执行回顾(未来支持 epic-retrospective
任务)总结教训。
深度解析:
在敏捷开发中,回顾会议是团队学习和持续改进的关键机制。当团队完成一个较大的功能模块(通常称为一个“Epic”)的所有用户故事后,进行一次回顾能够帮助团队:
-
总结经验教训: 识别在Epic开发过程中哪些做得好,哪些可以改进。
-
优化流程: 针对团队协作、代理效率、工具使用等方面的问题提出改进措施。
-
知识沉淀: 将学习到的经验融入BMAD的知识库或模板中,提升系统智能水平。
-
epic-retrospective
任务 (未来支持):
虽然当前版本BMAD可能尚未正式提供epic-retrospective
这个具体的任务,但其设计理念已经融入了BMAD。未来,这个任务将允许@po
或@sm
代理自动收集关于一个Epic中所有故事的开发数据、QA报告、代理交互日志等信息,并生成一份结构化的回顾报告,甚至可能具备智能分析和提出改进建议的能力。 -
当前实践:人工回顾与BMAD数据支持:
在epic-retrospective
任务正式可用之前,团队仍然可以组织人工回顾会议。此时,BMAD系统已经生成的各种文档和记录将成为回顾会议的宝贵输入:docs/project-status-summary-planning-phase.md
: 项目规划阶段的整体概览。stories/
目录下所有Done
状态的故事文件: 每个故事的Dev Agent Record
和QA Review Record
都包含了详细的开发过程、遇到的问题和解决方案,以及QA反馈。docs/qa/
目录下的QA门禁报告: 提供了每个故事的最终质量评估。- Git提交历史: 谁在何时修改了哪些文件,变更的范围和影响。
实训案例 (SHCCS):“核心温控功能”Epic 回顾
假设SHCCS项目已完成了“核心温控功能”这个Epic,包括 SHCCS-001
(远程显示温度)、SHCCS-002
(远程调节温度)、SHCCS-003
(创建周排程) 等一系列故事。现在,Scrum Master (@sm
) 组织一次回顾会议。
-
准备回顾材料:
@sm
代理或人工项目经理可以运行*document-project
来汇总当前Epic的所有相关信息,作为回顾的输入。npx bmad-method @sm *document-project --epic-id "SHCCS-CORE-TEMP-EPIC" --output docs/retrospective/SHCCS-core-temp-epic-summary.md
注意:
--epic-id
是假设的参数,让代理聚焦于特定Epic的数据。终端输出 (示例):
(BMAD) @sm: 好的,我将为EpicSHCCS-CORE-TEMP-EPIC
汇总回顾材料,输出到docs/retrospective/SHCCS-core-temp-epic-summary.md
。生成的
SHCCS-core-temp-epic-summary.md
节选 (示例):# SHCCS-核心温控功能 Epic 回顾总结**Epic ID:** SHCCS-CORE-TEMP-EPIC **日期:** 2023年11月10日 **总结人:** (@sm / 人工)---## 1. Epic 目标回顾 (Epic Goal Review)* **目标:** 实现SHCCS的核心温控功能,包括远程温度显示与调节、智能排程管理。 * **完成情况:** 所有计划的核心温控故事均已完成并达到 `Done` 状态。## 2. 完成的故事列表 (Completed Stories)* SHCCS-001: 远程显示当前室内温度 (Done) - [查看详情](../stories/SHCCS-001-remote-temp-display.md) * SHCCS-002: 远程调节目标温度 (Done) - [查看详情](../stories/SHCCS-002-remote-temp-adjust.md) * SHCCS-003: 创建和管理周循环排程 (Done) - [查看详情](../stories/SHCCS-003-create-weekly-schedule.md) * # ... 列出所有完成的故事 ...## 3. 亮点 (What Went Well?)* **清晰的规划文档:** 前期PRD和架构文档的分片非常有助于开发代理理解上下文,减少了疑问。 * **QA代理的及时介入:** `@qa` 代理能够捕捉到前端的用户体验细节和后端的错误处理健壮性问题,并直接修正或提出明确建议,有效保障了质量。 * **代理协同高效:** `@dev` 和 `@qa` 之间的修复-复查循环响应迅速。## 4. 改进点 (What Could Be Improved?)* **故事粒度一致性:** 尽管 `@sm` 尽力拆分故事,但部分故事在开发初期仍然显得略大,导致 `@dev` 代理的 `Dev Agent Record` 比较复杂。未来可进一步细化 `*draft` 任务的粒度控制。 * **AI代码生成效率:** 在某些复杂逻辑的实现上,AI代码生成仍需人工微调,可能需要增强知识库中关于特定领域编程模式的知识。 * **PRD与UX的早期同步:** 在某些体验细节上,PM和UX代理的文档生成可以尝试更早的交叉验证,减少后期审核阶段的互提修改。## 5. 行动计划 (Action Items)1. **产品经理 (`@pm`):** 考虑与UX代理 (`@ux-expert`) 组织小型workshop,针对复杂的用户旅程进行联合设计。 2. **Scrum Master (`@sm`):** 优化 `*draft` 任务的配置,探索更细粒度的故事拆分策略。 3. **技术团队/核心开发 (`@dev`):** 针对SHCCS项目特有的设备通信和调度算法,丰富 `.bmad-core/knowledge_base/` 中的编程模式和最佳实践。---
-
执行回顾会议:
@po
或SM
基于这份总结报告和各个故事的详细记录,主持团队回顾会议,讨论亮点与改进点,并最终确定行动计划。虽然BMAD目前不能亲自“主持会议”,但它提供了所有必需的数据输入,使人类会议更高效、有依据。
通过回顾会议,SHCCS团队能够从“核心温控功能”Epic的开发中汲取经验,为未来的迭代优化流程和代理配置,实现持续的改进。
2. 使用 *execute-checklist story-dod-checklist
确认交付是否满足 Definition of Done。
深度解析:
Definition of Done (DoD) 是敏捷开发中的一个核心概念,它定义了“完成”一个用户故事所必须满足的所有条件。一份清晰的DoD能够确保团队对“完成”有统一的理解,避免“几乎完成”的状态,并保障交付的质量。在BMAD系统中,story-dod-checklist
任务由 QA
代理执行,用于对每个故事进行最终的“质量戳印”。
*execute-checklist story-dod-checklist
:DoD 的最终验证
在故事被标记为Done
之前(或者在Done
之后作为最终审计),@qa
代理会调用此任务,加载story-dod-checklist.yaml
文件中的清单项,全面检查故事是否达到了所有DoD标准。
这些标准通常包括:- 代码已编写并审查。
- 所有自动化测试(单元测试、集成测试)已通过。
- 所有验收标准均已满足并验证。
- 功能已在测试环境中部署并测试通过。
- 相关文档(如故事文件、用户手册片段)已更新。
- 没有遗留的P0/P1级缺陷。
- 代码已提交到版本控制。
- 代码已合并到主分支或发布分支(根据项目策略)。
实训案例 (SHCCS):对 SHCCS-001 故事执行 DoD 检查
尽管 SHCCS-001
故事已被标记为 Done
,但作为最终交付前的一道质量门禁,@qa
代理会再次执行 story-dod-checklist
进行最终确认。
npx bmad-method @qa *execute-checklist story-dod-checklist --story stories/SHCCS-001-remote-temp-display.md
注意: --story
参数指定了需要检查的特定故事文件。
终端输出 (示例):
(BMAD) @qa: 好的,我将对故事 SHCCS-001: 远程显示当前室内温度
执行 story-dod-checklist
。
(BMAD) @qa: Definition of Done Checklist for SHCCS-001:
- 1. 代码已编写并完成审查?
Dev Agent Record
和QA Review Record
显示代码已编写,并经过@qa
代理审查,所有修正和建议已处理。[PASS]
- 2. 所有自动化测试(单元/集成)已通过?
Dev Agent Record
和QA Review Record
均显示所有相关测试已通过。[PASS]
- 3. 所有验收标准已满足并验证?
- 通过前期的QA审查和功能验证,确认:
- APP主页显示实时温度 (PASS)
- 温度数据实时更新,误差 ≤ 0.5°C (PASS)
- 无网络连接/设备离线提示 (PASS)
- 符合UX规格 (PASS)
[PASS]
- 通过前期的QA审查和功能验证,确认:
- 4. 功能已在测试环境中部署并测试通过?
- (假设代理可以模拟部署和简单烟雾测试,或提示人工确认) 已确认模拟部署和功能自测通过。[PASS]
- 5. 相关文档(故事文件、代码注释)已更新?
stories/SHCCS-001-remote-temp-display.md
中的Dev Agent Record
和QA Review Record
完整且最新。代码注释清晰。core-config.yaml
无需修改。[PASS]
- 6. 无P0/P1级遗留缺陷?
QA Review Record
中显示无严重缺陷。[PASS]
- 7. 代码已提交到版本控制?
git log
历史显示SHCCS-001相关代码已提交。[PASS]
- 8. 代码已合并到主分支或发布分支?
- (根据项目策略和CI/CD流程,此项可能需要人工确认或集成CD工具) 假设已自动合并或人工确认合并。[PASS]
(BMAD) @qa: SHCCS-001故事的DoD检查已全部通过。该故事已满足交付标准。
通过 story-dod-checklist
的严格检查,SHCCS-001
故事被最终确认符合所有交付标准,为将其纳入正式发布版本提供了坚实的质量保证。
3. docs/qa/
(见 core-config
中 qaLocation
)存放 QA gate 结果,@qa
→ *gate {story}
输出决策记录。
深度解析:
QA门禁 (QA Gate) 是软件发布前的一个正式决策点,用于正式确认一个特性或一个迭代的质量是否达到可发布标准。BMAD系统通过 @qa
代理的 *gate
任务,自动生成并记录这个关键决策。
-
docs/qa/
存放 QA gate 结果:
core-config.yaml
中定义的qaLocation
(默认为docs/qa/
) 目录,是所有与QA相关的正式输出的存放位置,这包括了QA门禁的决策记录。集中存放便于审计和回顾。 -
@qa
→*gate {story}
:输出决策记录
当一个故事或一组故事(通常在完成story-dod-checklist
后)准备好进行最终的QA门禁时,@qa
代理会执行*gate
任务。这个任务不是再次进行测试,而是对所有前期测试和审查结果进行综合评估,并输出一个正式的“QA门禁决策记录”。
这份记录通常会包含:- 门禁决策 (Pass/Fail)。
- 决策依据(引用
DoD Checklist
结果、重要测试报告摘要等)。 - 发现的任何遗留问题(如果门禁通过,这些问题通常是非关键的)及其风险评估。
- 建议的发布操作。
这个记录是项目正式发布的重要凭证之一,清晰地向项目所有干系人传达了产品质量的最终状态。
实训案例 (SHCCS):为 SHCCS-001 故事生成 QA Gate 决策
在 SHCCS-001
故事完成并通过 story-dod-checklist
之后,@qa
代理将为它生成一份正式的QA门禁决策记录。
npx bmad-method @qa *gate stories/SHCCS-001-remote-temp-display.md
终端输出 (示例):
(BMAD) @qa: 好的,我将为故事 SHCCS-001: 远程显示当前室内温度
生成QA门禁决策记录。
(BMAD) @qa: 正在收集 SHCCS-001
的相关QA数据,包括 story-dod-checklist
结果和 QA Review Record
。
(BMAD) @qa: 门禁决策:通过 (Pass)
(BMAD) @qa: 决策记录已生成到 docs/qa/SHCCS-001-remote-temp-display-gate-report.md
。
生成的 docs/qa/SHCCS-001-remote-temp-display-gate-report.md
文件内容 (示例):
# 智能家居气候控制系统 (SHCCS) - QA 门禁决策报告**故事ID:** SHCCS-001
**故事名称:** 远程显示当前室内温度
**决策日期:** 2023年10月28日
**执行代理:** @qa---## 1. QA 门禁决策 (QA Gate Decision)
**结果:** **通过 (PASS)** - SHCCS-001 故事的功能和质量已达到可接受的发布标准。## 2. 决策依据 (Decision Basis)* **用户故事状态:** `stories/SHCCS-001-remote-temp-display.md` 状态为 `Done`。
* **Definition of Done 检查:** 已成功通过 `story-dod-checklist` 的所有检查项(详见终端输出截图)。* 代码已编写并审查。* 所有自动化测试已通过。* 所有验收标准已满足。* 已在测试环境部署。* 所有文档已更新。* 无P0/P1级缺陷。* 代码已提交至版本控制。
* **代码与策略审查:** 在 `QA Review Record` 中列出的所有代码修正已完成,所有建议的优化点已由 `@dev` 代理处理并验证。
* **功能验证:** 核心功能(APP实时显示室内温度,温度更新及时准确,离线提示有效)已通过测试环境的验证。## 3. 遗留问题与风险 (Outstanding Issues & Risks)
* **无。** 本故事无任何遗留的P0/P1级缺陷。前期发现的优化建议已妥善解决。## 4. 建议 (Recommendations)
建议将此故事相关的代码变更纳入下一次的发布或集成构建中。---
这份门禁报告为 SHCCS-001
故事提供了正式的质量授权,使其可以被安全地推向生产环境。这些报告在 docs/qa/
目录下的积累,构成了项目发布历史和质量审计的重要依据。
4. 维护 docs/fullstack-architecture.md
、docs/front-end-spec.md
与 PRD 的同步,避免实施与文档背离。
深度解析:
软件项目是一个持续演进的过程。随着项目的推进,需求可能会发生变化,技术决策也可能需要调整。因此,确保所有核心规划文档(PRD、UX规范、架构文档)与实际的代码实现保持同步,是避免“文档漂移 (Documentation Drift)”和“实施与文档背离”的关键。
-
文档漂移的危害:
- 信息误导: 过时的文档会误导新成员和决策者。
- 增加沟通成本: 团队成员需要花费时间去确认文档中的信息是否仍然有效。
- 降低信任: 文档不再被信任,可能导致团队放弃文档维护。
- 维护困难: 在需要修改时,找不到准确的文档作为参考。
-
BMAD如何支持同步:
BMAD系统鼓励“谁创建、谁维护”的责任链原则,这同样适用于文档的持续同步。@pm
维护 PRD: 当SHCCS项目需求发生变更时(例如增加对新传感器的支持),@pm
代理需要重新评估docs/prd.md
(或其分片),并使用*amend-doc
任务对其进行修改。@ux-expert
维护前端规格: 如果界面设计需要根据新需求进行调整,@ux-expert
需要更新docs/front-end-spec.md
。@architect
维护架构文档: 如果由于功能扩展或技术升级导致系统架构发生变化(例如引入新的消息队列),@architect
必须修订docs/fullstack-architecture.md
。
-
避免背离的策略:
- 主动更新: 当任何决策或实现发生变化时,立即通过相应的BMAD代理更新受影响的文档。
- 变更影响评估: 在修改任何文档之前,应评估其对其他文档和实现可能产生的影响。BMAD的代理在执行修改任务时,通常会辅助进行这种评估。
- 定期审查: 可以设定定期的任务(例如在每个Epic完成后),由
@po
或@architect
代理进行一次“文档一致性审查”,使用*execute-checklist
检查核心文档之间是否存在重大不一致。 - 将文档作为代码: 将文档视为与代码同等重要的资产,纳入版本控制,进行分支、合并和Code Review。任何文档的变更都应像代码变更一样受到审查。
实训案例 (SHCCS):更新文档以适应新功能
假设在SHCCS项目上线后,我们决定增加对“智能窗帘”设备的整合。这将影响PRD、前端规格和架构文档。
-
@pm
更新 PRD:
@pm
首先更新docs/prd.md
,增加对智能窗帘控制的需求。npx bmad-method @pm *amend-doc docs/prd.md --amendment-description "Add support for smart curtains control"
(BMAD) @pm: 好的,我将修改
docs/prd.md
。正在添加新功能“智能窗帘控制”的部分。 -
@ux-expert
更新前端规格:
随后,@ux-expert
根据更新后的PRD,修改docs/front-end-spec.md
,添加窗帘控制的UI/UX设计。npx bmad-method @ux-expert *amend-doc docs/front-end-spec.md --amendment-description "Add UI/UX for smart curtains control"
(BMAD) @ux-expert: 好的,我将修改
docs/front-end-spec.md
。正在为智能窗帘添加新的UI元素和交互流程。 -
@architect
更新架构文档:
最后,@architect
根据PRD和UX的更新,修订docs/fullstack-architecture.md
,增加与智能窗帘设备通信的协议、API接口和可能的第三方集成点。npx bmad-method @architect *amend-doc docs/fullstack-architecture.md --amendment-description "Update architecture for smart curtains integration"
(BMAD) @architect: 好的,我将修改
docs/fullstack-architecture.md
。正在更新设备通信层和API网关以支持智能窗帘。
通过这种方式,BMAD系统确保了SHCCS项目的文档能够随着项目的演进而同步更新,从而避免了文档与实际实现之间的脱节,维护了项目信息的准确性和一致性。
5. 终态时,通过 *document-project
或自定义总结,产出可用于上线/交接的完全档案。
深度解析:
当一个项目达到最终发布阶段或主要里程碑时,生成一份完整、权威的档案是至关重要的。这份档案将作为项目交付物的一部分,用于上线发布、审计、知识共享、新成员培训或项目交接。
-
*document-project
产出完全档案:
BMAD中的*document-project
任务不仅可以在项目中期生成状态总结,其真正的威力体现在项目终态时。在项目结束或主要版本发布前,@po
或一个专门的Delivery Agent
可以调用此任务,生成一份最终的“项目完全档案”。
这份档案将自动汇总项目生命周期中的所有关键工件,包括:- 最新的 项目简报、PRD、前端规格、架构文档 (及其分片)。
- 所有已完成的 用户故事文件 (包含详细的开发和QA记录)。
- 所有 QA门禁决策报告 和最终的质量评估。
- 回顾总结 (如果已进行)。
- 操作手册、部署指南 (如果它们也是由BMAD生成的)。
*document-project
任务通过智能地收集和组织这些分散在docs/
和stories/
目录下的信息,形成一个结构化、可阅读的单一文档,省去了人工耗时费力的汇总工作。
-
自定义总结:
除了自动生成的*document-project
,团队也可以根据特定需求进行“自定义总结”。例如,针对外部客户的发布说明、针对运维团队的详细部署清单,或者针对管理层的项目成果高层报告。BMAD的灵活性允许团队根据需要,结合代理的文本生成能力和人工编辑,来定制这些最终输出。
为什么需要完全档案?
- 上线审核: 完整档案是发布前进行最终合法合规、功能和安全审核的关键依据。
- 知识库: 成为组织知识库的一部分,供未来项目参考和学习。
- 新成员培训: 新加入的团队成员可以快速理解项目背景、设计和实现细节。
- 项目交接: 如果项目需要移交给另一个团队或维护人员,这份档案是无价的。
- 审计与合规: 提供项目决策和实现过程的完整证据链。
实训案例 (SHCCS):生成最终项目档案
假设SHCCS项目所有Epic都已完成,并通过了最终测试,现在准备发布第一个大版本。我们要求 @po
代理生成一份最终的项目完全档案。
npx bmad-method @po *document-project --output docs/final-release-archive-v1.0.md --full-archive
注意: --full-archive
是一个假设的参数,指示代理生成最全面的档案。
终端输出 (示例):
(BMAD) @po: 好的,我将为SHCCS项目V1.0版本生成最终的项目完全档案。这将是一个全面的文档汇总。
(BMAD) @po: 正在收集:项目简报、PRD、前端规格、架构文档、所有完成的故事、QA门禁报告、回顾总结… 这可能需要一些时间。
(BMAD) @po: 项目完全档案已成功生成至 docs/final-release-archive-v1.0.md
。
生成的 docs/final-release-archive-v1.0.md
文件内容 (节选,会非常庞大):
# 智能家居气候控制系统 (SHCCS) - V1.0 发布完全档案**发布版本:** 1.0
**日期:** 2023年11月15日
**撰写人:** @po---## 1. 项目概述 (Project Overview)本档案汇总了智能家居气候控制系统 (SHCCS) V1.0 版本从概念到交付的所有关键信息和工件。SHCCS V1.0 成功实现了远程温度显示与调节、智能排程和能源优化等核心功能。## 2. 核心规划文档 (Core Planning Documents)### 2.1 项目简报
* [docs/project-brief.md](./project-brief.md)* (在此处直接嵌入或引用文件内容)### 2.2 产品需求文档 (PRD)
* [docs/prd.md](./prd.md)
* 分片详细:[docs/prd/](./prd/)* (在此处直接嵌入或引用文件内容或分片内容)### 2.3 前端规格与用户体验文档 (Frontend Spec)
* [docs/front-end-spec.md](./front-end-spec.md)* (在此处直接嵌入或引用文件内容)### 2.4 全栈架构设计文档 (Fullstack Architecture)
* [docs/fullstack-architecture.md](./fullstack-architecture.md)
* 分片详细:[docs/architecture/](./architecture/)* (在此处直接嵌入或引用文件内容或分片内容)## 3. 完成的用户故事 (Completed User Stories)### 3.1 SHCCS-001: 远程显示当前室内温度
* 状态:Done
* [故事详情](./stories/SHCCS-001-remote-temp-display.md)* (在此处直接嵌入故事的完整内容,包括Dev/QA记录)### 3.2 SHCCS-002: 远程调节目标温度
* 状态:Done
* [故事详情](./stories/SHCCS-002-remote-temp-adjust.md)* (在此处直接嵌入故事的完整内容)# ... (列出所有完成的故事及详细内容) ...## 4. 质量保障与门禁报告 (Quality Assurance & Gate Reports)### 4.1 SHCCS-001 QA 门禁报告
* [报告详情](./qa/SHCCS-001-remote-temp-display-gate-report.md)* (在此处直接嵌入报告内容)# ... (列出所有故事的QA门禁报告) ...## 5. 项目回顾总结 (Project Retrospective Summary)
* [SHCCS-核心温控功能 Epic 回顾](retrospective/SHCCS-core-temp-epic-summary.md)* (在此处直接嵌入回顾总结 )## 6. 其他相关文档 (Other Related Documents)
* 项目环境配置
* 部署指南 (如适用)
* ...
这份 final-release-archive-v1.0.md
是SHCCS项目所有努力的结晶,它提供了一个单一的、全面的文档,囊括了项目从初期规划到最终交付的所有关键信息,为SHCCS的成功运营、未来迭代和团队知识沉淀提供了全面的保障。
技巧与建议:BMAD系统高效使用的秘诀 (Tips & Tricks: Secrets for Efficient BMAD System Usage)
掌握BMAD系统的核心工作流仅仅是开始,要真正发挥其最大潜力,还需要了解一些高级技巧和使用建议。这些技巧能够帮助团队更灵活、更高效地运用BMAD,解决在实际开发中可能遇到的各种情况。
1. 创建文档时,elicit=true
段必须执行 1-9 互动流程,可通过 *yolo
切换快速模式(仅在用户许可下使用)。
深度解析:
elicit=true
是BMAD代理在创建文档(如PRD)时,强制保证信息完整性和准确性的强大机制。它要求代理与用户进行多轮、深入的问答互动(我们称之为“1-9互动流程”),以确保所有关键信息都被捕获,避免遗漏关键细节。
-
elicit=true
的重要性:
这个机制就像一个经验丰富的咨询师,通过结构化的提问,帮助产品经理或分析师梳理出所有深层次的需求和考量。严格遵守这一流程,是生成高质量、无遗漏、无歧义文档的根本保障。在SHCCS项目的PRD创建阶段,我们已经亲身体验了其价值。 -
*yolo
快速模式:
虽然elicit
流程对于确保质量至关重要,但在某些特定场景下,团队可能需要更快的文档生成速度,例如:- 非正式草稿: 快速生成一个内部讨论用的、不需要完全精确的初步草稿。
- 小幅修订: 对现有文档进行少量、明确的修改,且这些修改不需要重新进行全面的
elicit
问答。 - 紧急情况: 在严格的时间限制下,需要快速产出某个文档的初步版本。
在这种情况下,BMAD提供了*yolo
(You Only Live Once)模式。当用户明确在任务命令中添加*yolo
参数时,elicit=true
的交互式问答将被跳过,代理将尝试直接根据其上下文和输入(可能包括模板中的默认值)生成内容。
使用 *yolo
的注意事项和风险:
-
用户许可:
*yolo
模式应仅在用户明确理解并承担风险的前提下使用。它适合高级用户或在特定受控环境中使用。 -
降低准确性: 跳过
elicit
意味着代理没有机会通过互动来澄清模糊点或获取用户未明确提供的细节信息。这可能导致生成的文档不完整、包含假设或与实际需求有所偏差。 -
不适用于关键文档: 对于PRD、架构文档等核心规划文档的首次创建或重大修改,强烈不建议使用
*yolo
模式。这些文档的准确性直接关系到项目的成功。 -
示例:
例如,如果你需要快速修改docs/project-brief.md
中的一个错别字,或者添加一个非常小的、不影响整体结构和含义的段落,你可以尝试:npx bmad-method @analyst *amend-doc docs/project-brief.md --amendment-content "修正了一个关于xxx的描述。" *yolo
这将指示
@analyst
代理在没有额外互动的情况下,直接进行修改。但如果是添加一个全新的核心功能描述,则应避免使用*yolo
。
2. 在任何阶段使用 *kb
进入知识库模式,回答流程、最佳实践或常见问题;再次输入 *kb
可关闭。
深度解析:
BMAD的知识库 (knowledge_base
) 是一个宝贵的资源,它存储了关于BMAD系统本身、开发流程、技术最佳实践、领域知识等各种信息。*kb
命令是访问这个知识库的统一入口,它允许团队成员在任何时候、任何任务中获取上下文相关的帮助。
-
*kb
知识库模式:
当你在终端中与BMAD代理交互时,随时可以输入*kb
进入知识库模式。代理会切换到问答模式,等待你提出问题。你可以询问关于当前任务、BMAD流程、特定技术或任何与项目相关的问题。 -
获取流程、最佳实践或常见问题:
知识库可以回答多种类型的问题:- 流程指导: “
@dev
代理在开发一个故事时,测试阶段应该包含哪些类型的测试?” - 最佳实践: “在SHCCS项目中,处理用户隐私数据有哪些最佳实践?”
- 常见问题: “为什么我无法调用
@pm
代理来创建架构文档?” - 技术细节: “SHCCS后端如何安全地与MQTT设备进行认证?”
- 流程指导: “
-
再次输入
*kb
可关闭:
当你通过知识库获取了所需信息后,只需再次输入*kb
即可退出知识库模式,回到之前的任务上下文。
实训案例 (SHCCS):在开发阶段查询知识库
假设 @dev
代理在实现一个SHCCS的故事时,遇到关于“智能家居设备通信协议安全”的问题,希望了解BMAD知识库中的最佳实践。
-
进入知识库模式:
在终端中,即使当前正在执行一个任务(或者只是在等待输入),都可以输入*kb
。npx bmad-method @dev *kb
终端互动 (示例):
(BMAD) @dev: 已进入知识库模式。请问您有什么问题?
(User): 在SHCCS中,智能家居设备与后端进行MQTT通信时,有哪些最佳实践来确保数据传输的安全性和设备的身份验证?
(BMAD) @dev (查询知识库): 好的,关于MQTT通信的安全性和设备身份验证,BMAD知识库中有以下最佳实践:
1. 使用 TLS/SSL 加密: 确保所有MQTT连接都通过TLS/SSL加密,防止数据在传输过程中被窃听和篡改。
2. 基于证书的身份验证 (mTLS): 推荐使用双向TLS认证 (mTLS),即客户端(设备)和服务器(MQTT Broker)都验证对方的证书,确保通信双方的身份。
3. 弱密码禁用: 避免使用弱密码或默认密码。
4. ACL (Access Control List): 配置MQTT Broker的ACL,限制每个设备可以发布和订阅的主题权限,实现最小权限原则。例如,设备A只能发布其遥测数据和订阅其控制指令主题。
5. 定期证书轮换: 定期更新和轮换设备证书,降低密钥泄露风险。
6. 设备唯一标识: 每个设备应有唯一的Client ID,并绑定到其证书或凭证。
(BMAD) @dev: 这些信息对您有帮助吗?是否还有其他问题?
(User): 很有帮助,谢谢! -
退出知识库模式:
npx bmad-method @dev *kb
(BMAD) @dev: 已退出知识库模式。
通过 *kb
,@dev
代理(和人工开发者)能够快速获取专业知识,从而在开发过程中做出更明智的决策,提高代码的质量和安全性。
3. 若需同步或拆分大文档给不同成员,*shard-doc
支持选择目标路径;使用前确认写入目录具备权限。
深度解析:
我们已经了解了 *shard-doc
任务将一个大文档分解成小文件的能力。在大型团队协作中,这个任务还有更高级的用途,可以帮助进行文档的物理分发或按团队职责进行组织。
-
*shard-doc
选择目标路径:
*shard-doc
命令的一个关键参数是target_dir_path
。这意味着你可以将一个文档分片到你想要的任何目录,而不仅仅是默认的docs/
下的子目录。
例如,你有一个非常大的API接口文档 (docs/api-spec.md
),你想把其中关于前端API的部分分发给前端团队,而把关于后端API的部分分发给后端团队,甚至可以将特定微服务的API分片到该微服务的代码仓库中。# 将PRD的特定章节分片到前端团队的文档目录 npx bmad-method @po *shard-doc docs/prd.md docs/frontend-team-docs/ --filter_chapters "4.1 Mobile Application"# 将架构文档的数据库部分分片到DBA团队的文档目录 npx bmad-method @architect *shard-doc docs/fullstack-architecture.md docs/dba-team-docs/ --filter_chapters "数据存储层"
注意:
--filter_chapters
是一个假设的参数,表示只分片特定章节。实际BMAD的shard-doc
可能会有更精细的章节选择功能。 -
确认写入目录具备权限:
这是一个非常重要的操作性提示。当*shard-doc
命令尝试在指定的target_dir_path
创建文件和目录时,运行BMAD命令的用户或BMAD系统本身必须具备对该目标目录的写入权限。- 本地环境: 确保当前用户对目标文件夹有读写权限。
- CI/CD环境: 确保CI/CD管道中运行BMAD的Runner对其工作目录和任何指定的目标输出目录有足够的权限。
- 容器化环境: 如果BMAD运行在Docker容器中,需要确保容器内部的用户对挂载的卷或其内部路径有正确的权限配置。
实训案例 (SHCCS):权限管理与分片到特定团队目录
假设SHCCS项目有一个专门的前端团队仓库 shccs-frontend-repo/
和一个后端团队仓库 shccs-backend-repo/
。我们现在需要将PRD和架构文档的相应分片同步过去。
-
确认权限:
首先,确保BMAD执行环境对shccs-frontend-repo/docs/
和shccs-backend-repo/docs/
目录有写入权限。在Linux系统上,可以使用ls -ld
和chmod
命令检查和修改权限。 -
分片给前端团队:
将PRD中所有与手机APP相关的分片,以及前端规格文档的完整分片,同步到前端团队的文档目录。# 假设BMAD可以智能识别并分片相关章节 npx bmad-method @po *shard-doc docs/prd.md shccs-frontend-repo/docs/prd-parts/ --related-to "Mobile Application" npx bmad-method @po *shard-doc docs/front-end-spec.md shccs-frontend-repo/docs/ --as-is # 完整复制UX文档
-
分片给后端团队:
将架构文档中所有与后端服务、数据库、设备通信相关的分片,同步到后端团队的文档目录。npx bmad-method @architect *shard-doc docs/fullstack-architecture.md shccs-backend-repo/docs/architecture-parts/ --related-to "Backend Services, Data Storage, Device Communication"
这种高级用法使得BMAD能够作为文档自动化分发和同步的工具,极大地提高了大型分布式团队的协作效率。
4. 建议把代理输出立即保存到 docs/
中的对应文件,并在 Git 中创建分支或提交,保证追溯性。
深度解析:
这是一个关于BMAD输出管理和版本控制的最佳实践,对于任何认真对待项目可维护性和可追溯性的团队来说都至关重要。
-
立即保存到
docs/
:
BMAD代理的大多数任务输出都是有价值的项目工件(如PRD、架构文档、故事文件、QA报告)。这些输出应该被立即保存到docs/
目录中,因为docs/
是项目的“唯一真相来源 (Single Source of Truth)”。这确保了所有正式的文档和记录都集中存放在一个可访问、可管理的位置。 -
在 Git 中创建分支或提交:
一旦BMAD代理生成或修改了任何文档或文件,这些变更就应该被纳入版本控制系统(如Git)。- 创建分支: 在进行重大的规划或开发工作时,应优先创建一个新的Git功能分支。例如,在一个Epic开始时创建分支,所有与该Epic相关的文档生成、故事创建、代码实现等都在这个分支上进行。
- 提交变更: 每次BMAD代理有重要的输出或修改时,都应该立即执行
git add
和git commit
操作。每个提交都应该清晰地说明所做的工作,例如“feat: PM创建SHCCS产品的PRD”或“docs: Architect更新架构文档以支持智能窗帘”。- 这包括
.bmad-core/core-config.yaml
的任何自动修改。 docs/
目录下所有新的或修改过的Markdown文件。stories/
目录下新的故事文件或更新过的故事记录。- 生成的代码文件和测试文件。
- 这包括
为什么这样做?
- 完整追溯性: Git的历史记录将成为项目从概念到实现的详细日志。你可以随时回溯到任何一个时间点,查看所有文档和代码当时的状态。
- 变更管理: 明确每个变更的来源(哪个代理执行的任务),有助于更好地管理和理解项目演进。
- 协作与冲突解决: 在团队成员或代理并行工作时,Git提供了强大的合并和冲突解决机制。
- 灾难恢复和审计: Git仓库是项目数据的最可靠备份。同时,完善的提交历史对于安全审计和合规性检查非常有价值。
实训案例 (SHCCS):提交 BMAD 代理的输出
以SHCCS项目为例,当 @pm
代理完成PRD的创建后:
-
代理生成
docs/prd.md
:
npx bmad-method @pm *create-doc templates/prd-tmpl.yaml --output docs/prd.md ...
-
立即检查 Git 状态:
git status
(BMAD) @pm:
docs/prd.md
已生成。请记得提交您的变更。
预期输出:Untracked files:(use "git add <file>..." to include in what will be committed)docs/prd.md
-
添加并提交:
git add docs/prd.md git commit -m "feat: SHCCS PM生成产品需求文档 (PRD)" git push origin feature/shccs-planning
通过这种“生成即提交”的习惯,确保了SHCCS项目的所有BMAD代理输出都以结构化、可追溯的方式得到管理。
5. 每轮循环结束时,运行 git status
检查未提交变更,确保故事文件、实现代码与文档一起提交。
深度解析:
这是一个持续的好习惯,确保了Git仓库的清洁、一致性和原子性提交。在每个开发循环(例如完成一个用户故事的开发和QA)结束时,都应该运行 git status
来检查是否存在任何未提交的变更。
-
原子性提交 (Atomic Commits):
理想的Git提交应该是“原子性的”,这意味着一个提交应该只包含一个逻辑功能的完整变更。对于BMAD驱动的开发循环,这意味着一个用户故事的实现,从其故事文件本身的更新(Dev Agent Record
、QA Review Record
),到实现该故事的代码,再到相应的测试文件,以及可能更新的规划文档(如果发现文档不一致并随即修正),都应该一起提交。 -
为什么要一起提交?
- 上下文完整性: 当你日后查看一个提交时,你不仅能看到代码变更,还能看到为什么进行了这些变更(通过故事文件),以及这些变更的影响(通过文档更新),从而提供完整的上下文。
- 易于回溯和回滚: 如果某个功能引入了Bug,你可以很容易地通过一个提交,完整地回溯到该功能的实现,并决定是否回滚整个功能。
- 减少未来合并冲突: 确保所有相关文件同时更新和提交,可以防止在其他文件中引入基于旧版状态的修改,从而减少未来的合并冲突。
实训案例 (SHCCS):结束 SHCCS-001 故事开发循环后的 git status
检查
当 SHCCS-001
故事完成并被 @qa
代理标记为 Done
后,@dev
代理或Scrum Master (@sm
) 应进行最终的 git status
检查。
-
BMAD代理完成任务:
@dev
完成开发和测试,更新stories/SHCCS-001-remote-temp-display.md
和代码文件。@qa
审查并通过,将故事状态改为Done
,更新stories/SHCCS-001-remote-temp-display.md
和生成docs/qa/SHCCS-001-gate-report.md
。
-
运行
git status
:git status
预期输出 (示例):
(BMAD) @sm:SHCCS-001
故事已完成。请检查并提交所有变更。On branch feature/shccs-core-temp Changes to be committed:(use "git restore --staged <file>..." to unstage)modified: stories/SHCCS-001-remote-temp-display.mdnew file: docs/qa/SHCCS-001-remote-temp-display-gate-report.mdmodified: src/mobile/components/ThermostatPanel.jsnew file: src/mobile/tests/test_thermostat_panel.jsmodified: src/backend/app/api/endpoints/device.pymodified: src/backend/app/services/device_service.pynew file: src/backend/app/tests/test_device_api.pynew file: src/backend/app/tests/test_device_service.py
-
原子性提交:
git add . git commit -m "feat: Implement SHCCS-001 Remote Temperature Display [Done]" git push origin feature/shccs-core-temp
通过这种严谨的提交策略,SHCCS项目的Git仓库始终保持着高度的组织性和可追溯性,每个逻辑变更都被完整地记录下来,为项目的长期健康发展提供了坚实的基础。
BMAD 系统在软件开发工作流的全周期流程图 (BMAD System Full Lifecycle Workflow Diagram)
下面是BMAD系统在软件开发全周期工作流的流程图描述:
流程图应类似于一个复杂的泳道图或UML活动图,包含以下主要阶段和代理交互:
I. 准备与初始化 (Preparation & Initialization)
- 起始点
- 人工操作: 克隆BMAD仓库
- 人工操作: 阅读
.bmad-core/core-config.yaml
确认路径 - Agent: @admin / 人工:
npx bmad-method list:agents
(熟悉代理) - 人工操作:
mkdir docs/
,touch docs/project-brief.md
(创建初始文档结构) - 人工操作: 确认团队偏好 (AI UI, QA, 回顾等)
- 人工操作: 阅读
.bmad-core/workflows/greenfield-fullstack.yaml
(了解完整流程蓝本)
II. 规划与设计 (Planning & Design)
- 泳道: 分析师 (@analyst)
- 任务:
facilitate-brainstorming-session
(获取灵感) - 输出: 原始需求与创意,可能保存为
docs/brainstorm_notes.md
- 任务:
document-project
(生成项目简报) - 输出:
docs/project-brief.md
- 任务:
- 泳道: 产品经理 (@pm)
- 任务:
*create-doc prd-tmpl.yaml
(生成PRD) - 输入:
docs/project-brief.md
- 互动: 严格执行 1-9
elicit=true
流程 (关键决策点) - 输出:
docs/prd.md
- 任务:
- 泳道: UX专家 (@ux-expert)
- 任务:
*create-doc front-end-spec-tmpl.yaml
(生成前端规格) - 输入:
docs/prd.md
- 输出:
docs/front-end-spec.md
- (Optional) 任务:
*task generate-ai-frontend-prompt
(生成V0/Lovable UI提示) - 输出: UI提示 (追加到
docs/front-end-spec.md
)
- 任务:
- 泳道: 架构师 (@architect)
- 任务:
*create-doc fullstack-architecture-tmpl.yaml
(生成架构文档) - 输入:
docs/prd.md
,docs/front-end-spec.md
- 输出:
docs/fullstack-architecture.md
- 决策点: 提出PRD修改建议? -> [否] -> 继续; [是] -> 回退到PM修订PRD。
- 任务:
- 泳道: 产品负责人 (@po)
- 任务:
*execute-checklist po-master-checklist
(全面梳理文档一致性) - 输入:
docs/project-brief.md
,docs/prd.md
,docs/front-end-spec.md
,docs/fullstack-architecture.md
- 决策点: 整体通过? -> [否] -> 回退到相关代理修订并重导出 docs/ (PM/UX/Architect) -> 再次检查; [是] -> 继续
- 任务:
*shard-doc docs/prd.md docs/prd/
(分片PRD) - 输出:
docs/prd/
(分片目录) - 任务:
*shard-doc docs/fullstack-architecture.md docs/architecture/
(分片架构文档) - 输出:
docs/architecture/
(分片目录) - 人工操作: 确认
.bmad-core/core-config.yaml
中shardingPaths
已更新 - 人工操作:
git add .
&git commit
(提交所有规划文档及分片结果到版本控制)
- 任务:
III. 开发循环 (Development Cycle)
- 泳道: Scrum Master (@sm)
- 任务:
*draft
(或create-next-story
) (基于分片文档生成用户故事) - 输入:
docs/prd/
,docs/architecture/
- 输出:
stories/SHCCS-XXX.md
(状态: Draft)
- 任务:
- 泳道: 产品经理 (@pm) / 分析师 (@analyst)
- 人工操作: 审查
stories/SHCCS-XXX.md
- 任务:
*update-story-status stories/SHCCS-XXX.md Approved
(批准故事)
- 人工操作: 审查
- 泳道: 开发者 (@dev)
- 任务:
*develop-story stories/SHCCS-XXX.md
(实现故事) - 内部流程:
- 阅读任务 (故事文件 & 相关文档分片)
- 开发 (生成/修改代码)
- 测试 (执行单元/集成测试)
- 更新故事文件
Dev Agent Record
&文件列表
- 输出: 源代码 (
src/...
), 测试代码 (tests/...
), 更新stories/SHCCS-XXX.md
(状态: Developed)
- 任务:
- 泳道: QA工程师 (@qa)
- 任务:
*review stories/SHCCS-XXX.md
(执行代码与策略审查) - 输出: 更新
stories/SHCCS-XXX.md
(QA Review Record
) - 决策点: 存在未解决QA项? -> [是] -> 回退到
@dev
补齐 -> 再次检查; [否] -> 继续 - 任务:
*update-story-status stories/SHCCS-XXX.md Done
(更新故事状态为Done)
- 任务:
IV. 质量与交付 (Quality & Delivery)
- (Optional) 泳道: 产品负责人 (@po) / Scrum Master (@sm)
- 任务:
*document-project
(汇总Epic完成情况,作为回顾输入) - 人工操作: 执行 Epic 回顾 (未来支持
epic-retrospective
)
- 任务:
- 泳道: QA工程师 (@qa)
- 任务:
*execute-checklist story-dod-checklist
(确认交付满足 DoD) - 输入:
stories/SHCCS-XXX.md
- 任务:
*gate stories/SHCCS-XXX.md
(输出 QA Gate 决策记录) - 输出:
docs/qa/SHCCS-XXX-gate-report.md
- 任务:
- 泳道: 各代理 (PM, UX, Architect)
- 持续维护: 持续
*amend-doc
docs/fullstack-architecture.md
,docs/front-end-spec.md
, PRD (避免与实施背离,确保文档同步)
- 持续维护: 持续
- 泳道: 产品负责人 (@po)
- 任务:
*document-project --full-archive
(产出可用于上线/交接的完全档案) - 输出:
docs/final-release-archive-vX.X.md
- 任务:
- 结束点
通过这篇详尽的指南,我们不仅深入理解了BMAD系统的核心理念和架构,更通过“智能家居气候控制系统”的实战案例,一步步走过了从需求分析到最终交付的整个软件开发生命周期。BMAD系统以其独特的多代理协同、模板化任务和强化的责任链,为现代软件开发提供了一套革命性的解决方案。
实践证明,BMAD能够显著提升开发效率、保障项目质量、促进团队协作,并能够将宝贵的项目经验和知识有效沉淀。掌握BMAD,您将不再仅仅是代码的编写者,而是智能开发流程的驾驭者,将复杂挑战转化为高效、高质量交付的机遇。现在,就拿起您的键盘,开始您的BMAD智能开发之旅吧!