Files
XCEngine/docs/blueprint-skill.md

14 KiB
Raw Blame History

XCEngine 蓝图文档编写与校验 Skill

用途

根据 XCEngine C++ 引擎源码生成符合规范的蓝图文档(系统架构设计文档),用于在 XCSDD 中 以 3D 可视化图谱方式展示系统的模块结构、子系统依赖关系和接口定义。

在开始编写任何蓝图文档之前,必须先完整阅读并深刻理解目标系统的源码上下文——包括设计目的、 模块划分、依赖关系、数据流、边界条件等。切忌在未读懂系统架构的情况下仅凭目录结构或猜测 来编写蓝图文档。


文档目录结构

docs/
├── blueprint.md              # 蓝图总文档
├── plan/                     # 规划类文档
└── api/                      # API 文档(由 api-skill 管理)

文件命名: 蓝图文档统一命名为 blueprint.md,放在 docs/ 目录下。


文档整体结构

蓝图文档由多个 YAML 代码块通过 Markdown 标题分隔组成,所有 YAML 代码块共同构成 系统的完整蓝图定义。文档结构如下:

# {系统名称} 蓝图

---

# SYSTEM_META

```yaml
# 系统元信息

SYSTEM_STRUCTURE

# 系统结构定义(核心必填)

EVOLUTION_MODE

# 演化模式

REQUIREMENTS

# 需求列表

MVS_DEFINITION

# 最小可行方案定义

DATA_MODELS

# 数据模型定义

EVOLUTION_PLAN

# 演化计划

页面类型与模板

1. SYSTEM_META元信息

SYSTEM_META 是整个蓝图文档的元信息区,必须完整填写。

name: {系统名称}
version: {版本号}
type: {系统类型}
description: "{系统一句话描述}"
target_runtime: {目标运行时}

2. SYSTEM_STRUCTURE系统结构—— 核心必填

SYSTEM_STRUCTURE 定义系统的子系统和模块结构,是 XCSDD 3D 可视化的核心数据来源。 subsystemsmodules 两个数组都被解析为 3D 图谱节点,依赖关系(depends_on)被解析为连线。

root: {根模块名}

subsystems:
  - name: {子系统名}
    responsibilities:
      - "{职责描述1}"
      - "{职责描述2}"
    provides: [{提供的接口1}, {提供的接口2}]
    depends_on: [{依赖的子系统名}]
    boundary:
      inputs: [{输入}]
      outputs: [{输出}]

modules:
  - name: {模块名}
    parent_subsystem: {所属子系统名}
    responsibility: "{模块职责描述}"
    public_api:
      - fn: {函数名}
        params:
          - name: {参数名}
            type: {参数类型}
        returns: type: {返回类型}

3. EVOLUTION_MODE演化模式

mode: {build|evolve|maintain}
description: "{模式描述}"
context: |
  {多行上下文说明}

4. REQUIREMENTS需求列表

- id: {REQ-ID}
  title: {需求标题}
  description: "{需求描述}"
  source: {user|constraint}
  type: {functional|non-functional}
  acceptance_criteria:
    - "{验收标准1}"
  priority: {P0|P1|P2}

5. MVS_DEFINITIONMVS 最小可行方案)

mvs_solutions:
  - id: {MVS-ID}
    name: {方案名称}
    goal: "{目标描述}"
    
    verification_criteria:
      - "{验证标准1}"
    
    scope:
      - subsystem: {子系统名}
        components: [{组件名}]
      - external: [{外部依赖}]
    
    code_structure:
      - file: {文件名}
        purpose: "{文件用途}"
        contains:
          - "{包含的功能1}"
        standalone: {true|false}
    
    integration_plan:
      - step: "{集成步骤1}"
    
    status: {pending|in_progress|completed}

6. DATA_MODELS数据模型

- name: {模型名}
  description: "{模型描述}"
  fields:
    - name: {字段名}
      type: {类型}
      default: {默认值}
      constraints: {required|optional}

7. EVOLUTION_PLAN演化计划

fix_plan:
  - issue_id: {BUG-ID}
    description: "{问题描述}"
    root_cause: "{根本原因}"
    minimal_change:
      - file: {文件路径}
    verification: "{验证方法}"

refactor_plan:
  - target: "{重构目标}"
    constraints: ["{约束条件}"]
    steps: ["{步骤1}"]

feature_plan:
  - feature_id: {FEAT-ID}
    name: "{功能名称}"
    addition: "{功能描述}"
    integration_point: "{集成点}"
    steps: ["{步骤1}"]

元信息字段规范

SYSTEM_META

字段 必需 说明
name 系统名称,唯一标识
version 版本号,格式 x.y.z
type 系统类型,如 game-engineweb-frameworkapi-service
description 系统一句话功能描述
target_runtime 目标运行时,如 C++17WebAssemblyPython 3.10

SYSTEM_STRUCTURE

subsystems 数组

字段 必需 说明
name 子系统名称,唯一标识
responsibilities 职责列表,至少 1 项
provides 提供的接口列表,表示该子系统对外暴露的能力
depends_on 依赖的子系统列表,引用的子系统必须存在
boundary 边界定义
boundary.inputs 该子系统的外部输入项
boundary.outputs 该子系统的外部输出项

modules 数组

字段 必需 说明
name 模块名称,唯一标识
parent_subsystem 所属子系统名称,引用的子系统必须存在
responsibility 模块职责描述
public_api 公共 API 列表,至少 1 项
public_api[].fn 函数名
public_api[].params 参数列表
public_api[].params[].name 参数名
public_api[].params[].type 参数类型
public_api[].returns 返回值定义
public_api[].returns.type 是(当有 returns 时) 返回类型

EVOLUTION_MODE

字段 必需 说明
mode build(从零构建)、evolve(演进迭代)、maintain(维护修复)
description 模式一句话描述
context 多行详细上下文说明,使用 | 语法

REQUIREMENTS

字段 必需 说明
id 需求 ID格式 REQ-XXX
title 需求标题,简短明确
description 需求详细描述
source user(用户需求)、constraint(约束条件)
type functional(功能性)、non-functional(非功能性)
acceptance_criteria 验收标准,至少 1 项
priority P0(关键,阻塞开发)、P1(重要)、P2(次要)

MVS_DEFINITION

字段 必需 说明
id MVS ID格式 MVS-XXX
name 最小可行方案名称
goal 目标描述
verification_criteria 验证标准,至少 1 项
scope 涉及范围(子系统 + 外部依赖)
code_structure 代码结构文件列表,至少 1 项
code_structure[].file 文件名
code_structure[].purpose 文件用途描述
code_structure[].contains 包含的功能列表
code_structure[].standalone 是否独立可运行
integration_plan 集成计划步骤
status pending(待开始)、in_progress(进行中)、completed(已完成)

DATA_MODELS

字段 必需 说明
name 模型名称
description 模型描述
fields 字段列表
fields[].name 字段名
fields[].type 字段类型
fields[].default 默认值
fields[].constraints required(必填)或 optional(可选)

EVOLUTION_PLAN

字段 必需 说明
issue_id 是(在 fix_plan 项中) 缺陷 ID格式 BUG-XXX
description 问题描述
root_cause 是(在 fix_plan 项中) 根本原因
minimal_change 是(在 fix_plan 项中) 最小修改文件列表
verification 是(在 fix_plan 项中) 验证方法
target 是(在 refactor_plan 项中) 重构目标
constraints 是(在 refactor_plan 项中) 约束条件列表
steps 是(在 refactor_plan 项中) 重构步骤列表
feature_id 是(在 feature_plan 项中) 特性 ID格式 FEAT-XXX
name 是(在 feature_plan 项中) 功能名称
addition 是(在 feature_plan 项中) 功能描述
integration_point 是(在 feature_plan 项中) 集成点

必需章节规范

SYSTEM_META

  1. name — 系统名称
  2. version — 版本号
  3. type — 系统类型
  4. description — 系统描述
  5. target_runtime — 目标运行时

SYSTEM_STRUCTURE

  1. root — 根模块名
  2. subsystems — 子系统列表,每个子系统至少包含 name、responsibilities、provides、depends_on
  3. modules — 模块列表,每个模块至少包含 name、parent_subsystem、responsibility、public_api

EVOLUTION_MODE

  1. mode — 演化模式
  2. description — 模式描述
  3. context — 详细上下文

REQUIREMENTS

每个需求项至少包含 id、title、description、source、type、acceptance_criteria、priority。

MVS_DEFINITION

每个 MVS 方案至少包含 id、name、goal、verification_criteria、scope、code_structure、integration_plan、status。

DATA_MODELS

每个数据模型至少包含 name、description、fields。

EVOLUTION_PLAN

fix_plan、refactor_plan、feature_plan 至少包含各自必需字段。


依赖关系规范

子系统依赖

  • subsystems[].depends_on 中引用的子系统名称必须在 subsystems 数组中存在
  • 不允许循环依赖A → B → A应在校验阶段检测并报告
  • 每个子系统的 provides 接口应当被其他子系统的 depends_on 引用(强推荐)

模块归属

  • modules[].parent_subsystem 引用的子系统必须在 subsystems 数组中存在

命名规范

驼峰命名(必需)

所有标识符(子系统名、模块名)必须使用驼峰命名法,严禁使用下划线分隔。

正确示例 错误示例
CoreTypes Core_TypesCoreTypes_
MathVector Math_Vectormathvector
RHICommandList RHI_CommandListRHICommand_List
DebugLogger Debug_Logger
ResourcesManager Resources_Manager

规则:

  • 子系统名:{子系统}{子模块} 或直接 {子系统}(如 CoreMathRHI
  • 模块名:{子系统}{功能描述}(如 CoreTypesMathVectorRHICommandList
  • 若子系统名本身是多词组合(如 RHI_D3D12),模块名前缀应使用完整子系统名(如 RHID3D12Device

ID 格式

对象 ID 格式 示例
需求 REQ-XXX REQ-001REQ-002
MVS 方案 MVS-XXX MVS-001MVS-002
缺陷 BUG-XXX BUG-001BUG-002
特性 FEAT-XXX FEAT-001FEAT-002

文档一致性检查

生成或修改蓝图文档时,需检查:

  1. 驼峰命名规范 — 所有子系统名和模块名必须使用驼峰命名,严禁下划线
  2. SYSTEM_STRUCTURE 一致性modules[].parent_subsystem 引用的子系统必须存在
  3. 依赖关系一致性subsystems[].depends_on 引用的子系统必须存在,无循环依赖
  4. 命名唯一性subsystems[].namemodules[].name 在各自数组内唯一
  5. ID 格式一致性 — 所有 ID 字段遵循统一格式REQ-XXX、MVS-XXX 等)
  6. provides/depends_on 配对 — 子系统的对外接口最好被依赖方引用
  7. MVS 与 REQUIREMENTS 关联 — MVS 的 scope 应覆盖对应 REQ 涉及的所有子系统
  8. YAML 语法正确性 — YAML 代码块可正常解析,无缩进错误、无重复键

生成流程

核心原则:在动手写蓝图文档之前,必须先完整阅读并深刻理解系统源码上下文。

  1. 阅读源码:完整阅读目标系统的核心头文件和关键实现,理解设计目的、模块划分、 数据流、依赖关系、边界条件。不要只看目录结构就写蓝图。
  2. 识别子系统:根据功能边界和依赖关系,划分子系统。每个子系统应有明确的职责边界 和对外接口。子系统划分不宜过粗(导致职责重叠)也不宜过细(导致过度碎片化)。
  3. 提取模块和接口:从代码中提取核心模块及其 public API函数签名、参数、返回值
  4. 构建依赖图:分析子系统间的依赖关系,确保无循环依赖。
  5. 生成 SYSTEM_META:填写系统元信息。
  6. 生成 SYSTEM_STRUCTURE:构建 subsystems 和 modules确保依赖关系准确。
  7. 生成 REQUIREMENTS:从源码 TODO、BUG 注释、需求文档中提取需求。
  8. 生成 MVS_DEFINITION:为关键功能生成最小可行方案,指导分阶段实现。
  9. 补充可选章节:根据需要补充 DATA_MODELS 和 EVOLUTION_PLAN。
  10. 校验输出:运行所有一致性检查,检查依赖关系和命名一致性。
  11. 输出报告:列出生成内容、子系统划分理由、缺失信息和发现的问题。

使用示例

用户输入:

为 XCEngine 生成蓝图文档

AI 执行:

  1. 扫描 XCEngine 源码目录,分析代码结构和模块划分
  2. 识别核心子系统Core、Rendering、Physics、Resource、Scripting 等)
  3. 提取各子系统的模块和 public API
  4. 分析子系统间的依赖关系,构建依赖图
  5. 生成 blueprint.md 文件
  6. 运行校验检查 YAML 结构和依赖关系
  7. 输出报告:子系统划分理由、生成内容、缺失信息