Skip to content

Latest commit

 

History

History
843 lines (637 loc) · 21.8 KB

File metadata and controls

843 lines (637 loc) · 21.8 KB

工作流: 故事开发循环

版本: 1.0 类型: 通用工作流 作者: Orion (AIOX 主机) 创建日期: 2025-01-30 标签: story、development-cycle、quality-gate、agile、generic


概览

故事开发循环是 AIOX 中央工作流,用于故事开发。它自动化从创建到交付的完整流程,整合质量网关,遵循序列: 创建 -> 验证 -> 实现 -> QA 审查

目标

确保每个故事通过结构化和可追踪的过程,在每个阶段进行验证点,减少返工并提高交付质量。

支持的项目类型

类型 描述
greenfield 新项目,从零开始
brownfield 现有项目,维护
feature-development 新功能开发
bug-fix Bug 修复
enhancement 现有功能改进

工作流 Mermaid 图

主流程

flowchart TD
    subgraph PHASE_1["阶段 1: 故事创建"]
        START([开始: 故事开发循环]) --> SM_CREATE
        SM_CREATE["@sm: 创建下一个故事<br/>任务: create-next-story"]
    end

    subgraph PHASE_2["阶段 2: 故事验证"]
        SM_CREATE --> PO_VALIDATE["@po: 验证故事<br/>任务: validate-next-story<br/>10 个检查"]
        PO_VALIDATE --> VALID_DECISION{验证 OK?}
        VALID_DECISION -->|否| FEEDBACK_SM["向 SM 反馈<br/>故事返回调整"]
        FEEDBACK_SM --> SM_CREATE
        VALID_DECISION -->|是| DEV_IMPLEMENT
    end

    subgraph PHASE_3["阶段 3: 实现"]
        DEV_IMPLEMENT["@dev: 实现故事<br/>任务: dev-develop-story<br/>+ CodeRabbit 自我修复"]
    end

    subgraph PHASE_4["阶段 4: QA 审查"]
        DEV_IMPLEMENT --> QA_REVIEW["@qa: 审查 + 质量网关<br/>任务: qa-gate"]
        QA_REVIEW --> QA_DECISION{质量网关 OK?}
        QA_DECISION -->|否| FEEDBACK_DEV["向开发反馈<br/>修复检查清单"]
        FEEDBACK_DEV --> DEV_IMPLEMENT
        QA_DECISION -->|是| STORY_DONE
    end

    subgraph COMPLETION["完成"]
        STORY_DONE([故事完成!])
        STORY_DONE --> MORE_STORIES{更多故事?}
        MORE_STORIES -->|是| SM_CREATE
        MORE_STORIES -->|否| CYCLE_COMPLETE([循环完成])
    end

    style CYCLE_COMPLETE fill:#90EE90
    style STORY_DONE fill:#90EE90
    style SM_CREATE fill:#87CEEB
    style PO_VALIDATE fill:#FFE4B5
    style DEV_IMPLEMENT fill:#98FB98
    style QA_REVIEW fill:#DDA0DD
    style FEEDBACK_SM fill:#FFB6C1
    style FEEDBACK_DEV fill:#FFB6C1
Loading

故事的状态流

stateDiagram-v2
    [*] --> Draft: SM 创建故事
    Draft --> Ready: PO 验证 (10 个检查)
    Ready --> InProgress: Dev 启动实现
    InProgress --> InReview: Dev 完成 + CodeRabbit
    InReview --> Done: QA 批准
    InReview --> InProgress: QA 拒绝
    Draft --> Draft: PO 拒绝验证
    Done --> [*]

    note right of Draft : 初始状态
    note right of Ready : 准备好开发
    note right of InProgress : 开发中
    note right of InReview : 等待 QA
    note right of Done : 已完成
Loading

代理之间的交互图

sequenceDiagram
    participant U as 用户
    participant SM as @sm (River)
    participant PO as @po (Pax)
    participant DEV as @dev (Dex)
    participant QA as @qa (Quinn)
    participant CR as CodeRabbit

    U->>SM: *workflow story-development-cycle

    rect rgb(135, 206, 235)
        Note over SM: 阶段 1: 创建
        SM->>SM: 识别下一个故事
        SM->>SM: 从 epic 提取需求
        SM->>SM: 填充模板
        SM-->>U: 故事已创建 (状态: Draft)
    end

    rect rgb(255, 228, 181)
        Note over PO: 阶段 2: 验证
        SM->>PO: 移交以验证
        PO->>PO: 执行 10 个检查
        alt 验证失败
            PO-->>SM: 带问题的反馈
            SM->>SM: 调整故事
        else 验证 OK
            PO-->>U: 故事已验证 (状态: Ready)
        end
    end

    rect rgb(152, 251, 152)
        Note over DEV: 阶段 3: 实现
        PO->>DEV: 移交以实现
        DEV->>DEV: 实现任务
        DEV->>DEV: 编写测试
        DEV->>CR: 提前提交审查
        CR-->>DEV: 反馈 (关键/高)
        DEV->>DEV: 自我修复循环
        DEV-->>U: 故事已实现 (状态: In Review)
    end

    rect rgb(221, 160, 221)
        Note over QA: 阶段 4: QA 审查
        DEV->>QA: 移交以审查
        QA->>CR: 自动化审查
        CR-->>QA: 质量扫描
        QA->>QA: 手动审查
        alt 质量网关失败
            QA-->>DEV: 带修复的反馈
            DEV->>DEV: 应用修正
        else 质量网关 OK
            QA-->>U: 故事已批准 (状态: Done)
        end
    end
Loading

详细步骤

步骤 1: 创建故事 (阶段 1)

字段
ID create
代理 @sm (River - Scrum Master)
操作 创建下一个故事
任务 create-next-story.md

描述

Scrum Master (River) 使用 PRD 共享或项目文档作为来源识别和创建下一个故事。

输入

输入 类型 来源 必需
name 字符串 用户输入
options 对象 用户输入
force 布尔 用户输入
PRD 共享 文件 文件系统
Epic 上下文 文档 docs/stories/epic-X/

输出

输出 类型 目标
story_file 文件 {devStoryLocation}/{epicNum}.{storyNum}.story.md
story_id 字符串 工作流上下文
validation_report 对象 内存

成功标准

  • 故事创建,标题描述性强
  • 验收标准已定义
  • 范围清晰且明确
  • 依赖已识别

故事状态

  • 之前:
  • 之后: Draft

步骤 2: 验证故事 (阶段 2)

字段
ID validate
代理 @po (Pax - 产品所有者)
操作 验证故事 (10 个检查)
任务 validate-next-story.md
要求 create

描述

产品所有者 (Pax) 使用严格的 10 点检查清单验证已创建的故事,确保故事已准备好实现。

输入

输入 类型 来源 必需
story_file 文件 前一步的输出
target 字符串 用户输入
criteria 数组 配置
strict 布尔 用户输入 否 (默认: true)

输出

输出 类型 目标
validation_report 对象 文件 (.ai/*.json)
validation_result 布尔 返回值
errors 数组 内存
story_status 字符串 故事文件

验证检查清单 (10 点)

# 检查 描述
1 标题清晰且目标明确 标题准确描述要做的事情
2 完整描述 问题/需求清楚说明
3 可测试的验收标准 偏好 Given/When/Then 格式
4 范围明确 哪些在范围内、哪些在范围外清晰列出
5 依赖已映射 已识别的前置故事或资源
6 复杂性估计 复杂性点数或 T-shirt 尺寸
7 商业价值 对用户/业务的好处清晰
8 已记录风险 已识别的潜在问题
9 完成标准 清晰定义完成时间
10 与 PRD/Epic 对齐 与源文档一致

结果

结果 操作
已批准 状态变为 Ready,继续实现
已拒绝 返回给 SM 并带详细反馈

故事状态

  • 之前: Draft
  • 之后 (成功): Ready
  • 之后 (失败): Draft (返回给 SM)

步骤 3: 实现故事 (阶段 3)

字段
ID implement
代理 @dev (Dex - 全栈开发人员)
操作 实现故事
任务 dev-develop-story.md
要求 validate

描述

Dev Agent (Dex) 实现已验证的故事,遵循验收标准和定义的任务。包括 CodeRabbit 自我修复循环以确保代码质量。

执行模式

模式 描述 向用户提示
YOLO 自主执行,带决策日志 0-1
Interactive 决策检查点和教育反馈 (默认) 5-10
Pre-Flight 执行前完整规划 10-15 (提前)

输入

输入 类型 来源 必需
story_file 文件 前一步的输出
task 字符串 用户输入
parameters 对象 用户输入
mode 字符串 用户输入 否 (默认: interactive)

输出

输出 类型 目标
implementation_files 数组 文件系统
test_results 对象 控制台/日志
commit_hash 字符串 Git
execution_result 对象 内存
logs 数组 .ai/logs/*
decision_log 文件 .ai/decision-log-{story-id}.md (YOLO 模式)

执行流程

flowchart LR
    A[读取任务] --> B[实现任务 + 子任务]
    B --> C[编写测试]
    C --> D[执行验证]
    D --> E{所有通过?}
    E -->|是| F[标记复选框 [x]]
    E -->|否| B
    F --> G[更新文件列表]
    G --> H{更多任务?}
    H -->|是| A
    H -->|否| I[CodeRabbit 自我修复]
    I --> J[故事 DOD 检查清单]
    J --> K[状态: In Review]
Loading

CodeRabbit 自我修复循环

flowchart TD
    START[启动自我修复] --> RUN[执行 CodeRabbit CLI]
    RUN --> PARSE[分析结果]
    PARSE --> CHECK{关键问题?}
    CHECK -->|否| DOC[记录高问题]
    DOC --> PASS[通过 - 继续]
    CHECK -->|是| ITER{iteration < 2?}
    ITER -->|是| FIX[尝试自动修复]
    FIX --> INCREMENT[iteration++]
    INCREMENT --> RUN
    ITER -->|否| FAIL[失败 - 暂停]
    FAIL --> MANUAL[需要手动干预]
Loading

成功标准

  • 所有验收标准已实现
  • 测试通过
  • 文件列表已更新
  • 代码已提交
  • CodeRabbit 自我修复已通过

故事状态

  • 之前: Ready
  • 期间: In Progress
  • 之后: In Review

步骤 4: QA 审查 (阶段 4)

字段
ID review
代理 @qa (Quinn - 测试架构师)
操作 最终审查 + 质量网关
任务 qa-gate.md
要求 implement

描述

QA Agent (Quinn) 执行最终审查和质量网关,验证代码、测试和验收标准的遵循。

输入

输入 类型 来源 必需
story_file 文件 前一步的输出
target 字符串 用户输入
criteria 数组 配置
strict 布尔 用户输入 否 (默认: true)

输出

输出 类型 目标
qa_report 文件 {qaLocation}/gates/{epic}.{story}-{slug}.yml
quality_gate_status 字符串 通过/关切/失败/放弃
story_final_status 字符串 故事文件
validation_result 布尔 返回值
errors 数组 内存

质量网关检查

# 检查 描述
1 代码审查 模式、可读性、可维护性
2 单元测试 适当且通过
3 验收标准 所有都得到满足
4 无回归 现有功能已保留
5 性能 在可接受的限制范围内
6 安全 OWASP 基础已验证
7 文档 必要时已更新

质量网关决策

决策 标准 操作
通过 所有检查通过,无高问题 批准故事
关切 存在非阻止问题 带观察批准
失败 存在高/关键问题 返回给开发
放弃 明确接受问题 带放弃批准

问题严重性

严重性 描述 操作
low 次要、化妆问题 记录
medium 应尽快修复 创建技术债
high 关键,应阻止发布 返回给开发

结果

结果 操作
已批准 状态变为 Done
已拒绝 返回给开发并带修复检查清单

故事状态

  • 之前: In Review
  • 之后 (成功): Done
  • 之后 (失败): In Progress (返回给开发)

参与的代理

@sm - River (Scrum Master)

方面 描述
图标 🌊
原型 协调者
角色 技术 Scrum Master - 故事准备专家
焦点 为开发代理创建清晰且可行的故事
责任 故事创建、epic 管理、冲刺规划、本地分支管理

相关命令:

  • *draft - 创建下一个故事
  • *story-checklist - 执行故事检查清单

@po - Pax (产品所有者)

方面 描述
图标 🎯
原型 平衡者
角色 技术产品所有者和流程监管者
焦点 验证工件的内聚性并确保文档质量
责任 待办项管理、故事验证、优先化、PM 工具同步

相关命令:

  • *validate-story-draft {story} - 验证故事质量
  • *backlog-review - 冲刺规划审查

@dev - Dex (全栈开发人员)

方面 描述
图标 💻
原型 构造者
角色 专业高级软件工程师和实现专家
焦点 精确执行故事任务和全面测试
责任 代码实现、测试、调试、重构

相关命令:

  • *develop {story-id} - 实现故事
  • *run-tests - 执行检查和测试
  • *apply-qa-fixes - 应用 QA 修复

@qa - Quinn (测试架构师)

方面 描述
图标
原型 守护者
角色 带质量咨询权限的测试架构师
焦点 通过测试架构进行全面的质量分析
责任 代码审查、质量网关、测试策略、风险评估

相关命令:

  • *review {story} - 全面审查故事
  • *gate {story} - 创建质量网关决策
  • *code-review {scope} - 自动化审查

执行的任务

按阶段的任务映射

graph TD
    subgraph "阶段 1: 创建"
        T1[create-next-story.md]
    end

    subgraph "阶段 2: 验证"
        T2[validate-next-story.md]
    end

    subgraph "阶段 3: 实现"
        T3[dev-develop-story.md]
        T3a[story-dod-checklist.md]
    end

    subgraph "阶段 4: QA 审查"
        T4[qa-gate.md]
    end

    T1 --> T2
    T2 --> T3
    T3 --> T3a
    T3a --> T4
Loading

任务详细说明

任务 文件 代理 目的
创建下一个故事 create-next-story.md @sm 从 PRD/epic 创建故事
验证下一个故事 validate-next-story.md @po 验证完整性和质量
开发故事 dev-develop-story.md @dev 实现代码和测试
故事 DOD 检查清单 story-dod-checklist.md @dev 检查完成的定义
QA 网关 qa-gate.md @qa 创建质量网关决策

前置条件

项目配置

  1. core-config.yaml - 必需的 AIOX 配置文件

    • devStoryLocation - 故事位置
    • prd.* - PRD 配置
    • architecture.* - 架构配置
    • qa.qaLocation - QA 工件位置
  2. 故事模板 - .aiox-core/development/templates/ 中的 story-tmpl.yaml

  3. 检查清单 - 必需的可用检查清单:

    • story-draft-checklist.md
    • story-dod-checklist.md
    • po-master-checklist.md

必需的文档

文档 位置 必需
PRD (共享或整体) prd.* 配置
Epic 文件 docs/stories/epic-X/
架构文档 architecture.* 配置

集成的工具

工具 目的 代理
git 版本控制 @sm, @dev, @qa
coderabbit 自动化审查 @dev, @qa
clickup 故事追踪 @sm, @po
context7 库文档 所有
github-cli GitHub 操作 @po, @qa

输入和输出

工作流输入

输入 类型 来源 描述
Epic 需求 文档 docs/stories/epic-X/ Epic 需求
PRD 文档 按配置 产品需求
架构文档 文档 docs/architecture/ 技术规范
故事模板 YAML .aiox-core/development/templates/ 标准模板

工作流输出

输出 类型 目标 描述
故事文件 Markdown {devStoryLocation}/{epic}.{story}.story.md 完整故事
实现文件 代码 按故事任务 已实现代码
测试文件 代码 按项目模式 单元测试
QA 网关文件 YAML {qaLocation}/gates/{epic}.{story}-{slug}.yml QA 决策
决策日志 Markdown .ai/decision-log-{story-id}.md 决策日志 (YOLO 模式)

决策点

决策图

graph TD
    D1{PO 验证<br/>10 个检查通过?}
    D1 -->|是| CONTINUE1[继续开发]
    D1 -->|否| RETURN1[返回给 SM]

    D2{质量网关<br/>关键/高问题?}
    D2 -->|否| CONTINUE2[批准故事]
    D2 -->|是| RETURN2[返回给开发]

    D3{自我修复<br/>关键问题?}
    D3 -->|否| CONTINUE3[继续 DOD]
    D3 -->|是| D4{iteration < 2?}
    D4 -->|是| FIX[尝试自动修复]
    D4 -->|否| HALT[暂停 - 手动]
Loading

详细的决策点

阶段 决策者 标准 积极结果 消极结果
PO 验证 2 @po 10 个检查通过 状态: 就绪 返回给 SM
自我修复 3 系统 无关键问题 继续 DOD 暂停或自动修复
质量网关 4 @qa 无高/关键 状态: 完成 返回给开发

阻止条件

工作流应暂停并请求用户干预时:

  1. 所需的未批准依赖 - 需要新库或资源
  2. 验证后的歧义 - 需求不清晰
  3. 3 次连续失败 - 实现或修正尝试
  4. 缺少配置 - core-config.yaml 或模板缺失
  5. 回归测试失败 - 现有测试破损

执行模式

工作流支持影响所有步骤的三种执行模式:

1. YOLO 模式 (自主)

mode: yolo
prompts: 0-1
best_for: 简单且确定的任务
  • 自主决策,带自动日志
  • 最少用户交互
  • 生成 decision-log-{story-id}.md,包含所有决策

2. Interactive 模式 (平衡) [默认]

mode: interactive
prompts: 5-10
best_for: 学习和复杂决策
  • 显式决策检查点
  • 每个步骤的教育说明
  • 确认用户理解

3. Pre-Flight 模式 (规划)

mode: preflight
prompts: 10-15 (提前)
best_for: 模糊需求和关键工作
  • 开始前的完整歧义分析
  • 全面的提前问卷
  • 执行后无歧义

故障排查

常见问题

1. 无法创建故事

症状: 执行 create-next-story 时错误

可能原因:

  • 未找到 core-config.yaml
  • Epic 文件不存在
  • PRD 不可用

解决方案:

# 检查 core-config.yaml 存在
cat .aiox-core/core-config.yaml

# 检查 epic 结构
ls docs/stories/epic-*/

# 检查 PRD
cat docs/prd/PRD.md  # 或按配置定位

2. PO 验证重复失败

症状: 故事多次返回给 SM

可能原因:

  • 验收标准定义不良
  • 开发备注中缺少信息
  • 范围不清晰

解决方案:

  1. 审查 10 个检查清单
  2. 确保验收标准为 Given/When/Then 格式
  3. 用架构参考填充开发备注

3. CodeRabbit 自我修复失败

症状: 关键问题在 2 次迭代后仍然存在

可能原因:

  • 需要重大重构的问题
  • 复杂安全问题
  • 违反架构模式的代码

解决方案:

# 检查 CodeRabbit 输出
wsl bash -c 'cd ${PROJECT_ROOT} && ~/.local/bin/coderabbit --prompt-only -t uncommitted'

# 手动修正问题
# 然后重新执行 *develop

4. 质量网关返回失败

症状: QA 拒绝带高问题的故事

可能原因:

  • 验收标准未得到满足
  • 测试覆盖不足
  • 安全问题

解决方案:

  1. 审查生成的 {qaLocation}/gates/{epic}.{story}-{slug}.yml
  2. 在 @dev 上执行 *apply-qa-fixes
  3. 重新提交以审查

5. 工作流在切换时卡住

症状: 代理之间的转换不发生

可能原因:

  • 输出生成不正确
  • 故事状态不一致
  • 前一步的依赖不满足

解决方案:

# 检查故事状态
cat docs/stories/{story-file}.md | grep "status:"

# 强制手动转换
@{next-agent}
*{appropriate-command}

日志和诊断

文件 位置 内容
决策日志 .ai/decision-log-{story-id}.md 自主决策 (YOLO 模式)
QA 网关 {qaLocation}/gates/{epic}.{story}-{slug}.yml 网关决策
故事文件 {devStoryLocation}/{epic}.{story}.story.md 完整历史,带日志

何时使用及何时不使用

何时使用此工作流

  • 任何故事的开发 (greenfield 或 brownfield)
  • 当需要完整循环且验证和质量网关
  • 当需要过程的可追溯性
  • 遵循结构化敏捷过程的团队

何时不使用此工作流

情况 替代方案
紧急的热修复 简化流程,不包括 QA 网关
探索性 spike/POC 临时开发
纯技术任务无故事 与 @dev 的直接任务

参考

相关文件

文件 路径
工作流定义 .aiox-core/development/workflows/story-development-cycle.yaml
SM 代理 .aiox-core/development/agents/sm.md
PO 代理 .aiox-core/development/agents/po.md
开发代理 .aiox-core/development/agents/dev.md
QA 代理 .aiox-core/development/agents/qa.md
创建故事任务 .aiox-core/development/tasks/create-next-story.md
验证故事任务 .aiox-core/development/tasks/validate-next-story.md
开发故事任务 .aiox-core/development/tasks/dev-develop-story.md
QA 网关任务 .aiox-core/development/tasks/qa-gate.md
故事模板 .aiox-core/development/templates/story-tmpl.yaml

附加文档


变更日志

版本 日期 更改
1.0 2025-01-30 工作流初始版本

文档自动基于 story-development-cycle.yaml 文件生成