质量门控体系概述

PinableAgents 的质量门控是一套多维度的质量保障体系,贯穿从需求定义到代码交付的整个工作流。每个关键阶段都设有质量检查点(Gate),只有通过检查的交付物才能进入下一阶段。这一机制确保了最终产出的可靠性和一致性。

质量门控体系包含三个层级:

  • 文档层 - 对需求文档(PRD)和架构设计文档进行结构化评分
  • 规格层 - 通过 SPARV 标准验证实现规格的完整性和精确性
  • 代码层 - 对代码实现进行多维度的质量审查

门控的核心理念是"左移质量",即在开发流程的早期阶段发现和修复问题,而非在代码提交后才进行补救。统计数据表明,需求阶段发现的缺陷修复成本仅为代码阶段的十分之一。

质量门控不是阻碍开发效率的障碍,而是防止技术债务累积的保险机制。通过合理配置阈值,你可以在速度和质量之间找到适合团队的平衡点。

BMAD PRD 评分标准

在 BMAD 工作流中,产品经理智能体生成的 PRD 文档需要通过一个 100 分制的评分门控。评分由 10 个维度组成,每个维度满分 10 分。只有总分达到配置的阈值(默认 70 分)才能通过门控。

维度 满分 评分标准
完整性(Completeness) 10 所有必要章节是否齐全,包括背景、目标、用户故事、验收标准
清晰度(Clarity) 10 描述是否无歧义,术语是否统一定义,是否避免了模糊措辞
可测试性(Testability) 10 每个需求是否可验证,验收标准是否具体可量化
一致性(Consistency) 10 需求之间是否存在矛盾,优先级是否合理
可行性(Feasibility) 10 技术可行性是否经过评估,是否考虑了现有架构约束
范围界定(Scope) 10 范围是否明确,是否有清晰的"不做"列表
用户视角(User Focus) 10 是否从用户角度描述需求,用户故事是否遵循 INVEST 原则
非功能需求(NFR) 10 性能、安全、可用性、可维护性等非功能需求是否覆盖
依赖标注(Dependencies) 10 外部依赖、前置条件和风险是否明确标注
交付标准(Delivery Criteria) 10 上线标准、监控指标和回滚计划是否定义
# 手动触发 PRD 评分
pinable-agents gate prd-score --file docs/prd-user-auth.md

# 输出示例:
# PRD Scoring Report: docs/prd-user-auth.md
# ──────────────────────────────────────────
# Completeness:       8/10
# Clarity:            9/10
# Testability:        7/10
# Consistency:        9/10
# Feasibility:        8/10
# Scope:              6/10  ← 需要改进
# User Focus:         8/10
# NFR:                5/10  ← 需要改进
# Dependencies:       7/10
# Delivery Criteria:  6/10  ← 需要改进
# ──────────────────────────────────────────
# Total: 73/100 | Threshold: 70 | Status: PASSED

架构评审评分标准

架构设计文档同样采用 100 分制的评审机制。架构评审关注系统设计的合理性、可扩展性和技术选型的准确性。评分维度包括:

  1. 系统分解(15 分) - 模块划分是否合理,职责是否单一,边界是否清晰
  2. 接口设计(15 分) - API 契约是否完整,版本策略是否明确,错误处理是否规范
  3. 数据模型(15 分) - 数据结构是否满足查询需求,索引策略是否合理
  4. 可扩展性(10 分) - 是否为未来变更预留了扩展点,但避免过度设计
  5. 安全设计(10 分) - 认证授权方案是否完备,数据加密和传输安全是否考虑
  6. 容错设计(10 分) - 故障恢复策略、降级方案和超时处理是否定义
  7. 性能预估(10 分) - 关键路径的延迟预估、吞吐量设计和瓶颈分析
  8. 技术选型(10 分) - 工具和框架的选择是否有依据,是否考虑了团队熟悉度
  9. 依赖管理(5 分) - 第三方依赖的版本锁定和更新策略

SPARV 10 项规格门控

SPARV(Specification, Precision, Accuracy, Relevance, Validation)是 PinableAgents 用于验证实现规格的 10 项检查标准。每一项为通过/不通过的二元判定,要求全部 10 项通过才能放行。

序号 检查项 描述
1需求追溯每个实现单元都能追溯到具体的需求条目
2接口一致实际实现的接口与设计文档定义完全一致
3错误处理所有已知错误路径都有明确的处理逻辑
4边界覆盖输入参数的边界值和极端情况都有处理
5安全合规敏感数据处理符合安全规范,无硬编码密钥
6性能基线关键路径的响应时间在设定基线以内
7日志规范关键操作有适当级别的日志记录,不泄露敏感信息
8配置外置环境相关的值通过配置或环境变量注入,不硬编码
9向后兼容变更不破坏现有公开接口的行为契约
10文档同步代码变更对应的文档已同步更新
# 运行 SPARV 门控检查
pinable-agents gate sparv --scope src/auth/

# 输出示例:
# SPARV Gate Check: src/auth/
# [PASS] 1. 需求追溯 - 所有函数均有对应 story ID 注释
# [PASS] 2. 接口一致 - 3 个 API 端点与设计文档匹配
# [FAIL] 3. 错误处理 - handleTokenRefresh() 缺少网络超时处理
# [PASS] 4. 边界覆盖 - 输入验证覆盖所有声明的约束
# ...
# Result: 9/10 PASSED | Status: BLOCKED

代码审查质量清单

代码审查门控使用结构化的清单来确保审查的全面性和一致性。审查者(无论是智能体还是人工)需要逐项确认以下检查点:

功能正确性

  • 实现是否完整满足需求描述
  • 边界条件和异常路径是否正确处理
  • 业务逻辑是否与验收标准对齐

代码质量

  • 命名是否清晰表达意图
  • 函数长度是否合理(建议不超过 40 行)
  • 嵌套层级是否在 3 级以内
  • 是否存在重复代码可以提取

安全性

  • 用户输入是否经过验证和消毒
  • 是否存在 SQL 注入、XSS 等常见漏洞
  • 敏感数据是否加密存储和传输

测试覆盖率要求

不同工作流对测试覆盖率有不同的要求:

工作流 行覆盖率 分支覆盖率 关键路径覆盖
essentials60%50%必须
do70%60%必须
omo75%65%必须
bmad80%70%必须

自动化检查与人工评审

质量门控分为自动化检查和人工评审两类。自动化检查由系统在工作流执行过程中自动触发,包括格式验证、静态分析、测试运行和覆盖率统计。人工评审则由团队成员或高级智能体在关键节点手动执行,聚焦于自动化工具难以覆盖的领域,如设计合理性、业务逻辑正确性和用户体验评估。

建议的分工策略:

  • 自动化 - 格式检查、lint 规则、类型检查、测试运行、覆盖率统计、安全扫描
  • 人工/高级智能体 - 架构评审、PRD 评分、业务逻辑验证、性能设计评估

自定义质量阈值

所有质量门控的阈值都可以通过配置文件调整。这让团队可以根据项目阶段和成熟度灵活设定标准。

{
  "quality_gates": {
    "prd_score_threshold": 70,
    "architecture_score_threshold": 65,
    "sparv_required_pass": 10,
    "code_review": {
      "max_function_length": 40,
      "max_nesting_depth": 3,
      "require_error_handling": true
    },
    "test_coverage": {
      "line_coverage_min": 70,
      "branch_coverage_min": 60
    },
    "strict_mode": false
  }
}

strict_mode 设为 true 时,任何门控失败都会立即中断工作流。设为 false 时,系统会生成警告但继续执行,适合项目初期逐步引入质量标准的场景。

质量指标仪表盘

PinableAgents 桌面端提供了质量指标仪表盘,实时展示项目的质量趋势。仪表盘包含以下模块:

  • 门控通过率 - 过去 30 天内各门控的通过率趋势图
  • 评分分布 - PRD 和架构评审的分数分布直方图
  • 常见失败项 - 最频繁触发的门控失败项排名
  • 修复时间 - 从门控失败到修复通过的平均时间

实战:质量门控失败与修复

以下是一个完整的门控失败与修复流程示例。假设团队正在开发用户认证功能,PRD 评分门控未通过:

# 1. 工作流在 PRD 评分阶段阻塞
# pinable-agents run bmad --task "实现用户 OAuth2 认证"
# [GATE BLOCKED] PRD Score: 62/100 (threshold: 70)
# Failed dimensions: NFR (4/10), Scope (5/10), Delivery Criteria (3/10)

# 2. 查看详细的评分报告
pinable-agents gate report --latest

# 3. 根据报告修复 PRD
# - NFR: 补充性能要求(登录响应 < 500ms)和安全要求(密码哈希算法)
# - Scope: 添加"不做"列表(本期不支持 SAML、不支持多因素认证)
# - Delivery Criteria: 定义上线标准和监控告警规则

# 4. 重新提交评分
pinable-agents gate prd-score --file docs/prd-user-auth-v2.md
# [GATE PASSED] PRD Score: 81/100

# 5. 工作流继续执行

CI/CD 流水线集成

质量门控可以集成到 CI/CD 流水线中,作为合并请求的必要检查项。

# .github/workflows/quality-gate.yml
name: Quality Gate
on: [pull_request]
jobs:
  quality-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install PinableAgents CLI
        run: npm install -g @pinable/agents-cli
      - name: Run SPARV Gate
        run: pinable-agents gate sparv --scope src/ --ci
      - name: Run Code Review Gate
        run: pinable-agents gate review --diff origin/main...HEAD --ci
      - name: Check Test Coverage
        run: pinable-agents gate coverage --threshold 70 --ci

质量门控的最终目标不是追求完美的分数,而是建立团队对质量的共识和持续改进的习惯。从低阈值开始,随着团队成熟度的提升逐步提高标准,才是可持续的质量策略。