docs: add blueprint documentation

This commit is contained in:
2026-03-20 02:36:29 +08:00
parent 77ef74bec6
commit ad0c265c4c
2 changed files with 1489 additions and 0 deletions

469
docs/blueprint-skill.md Normal file
View File

@@ -0,0 +1,469 @@
# XCEngine 蓝图文档编写与校验 Skill
## 用途
根据 XCEngine C++ 引擎源码生成符合规范的蓝图文档(系统架构设计文档),用于在 XCSDD 中
以 3D 可视化图谱方式展示系统的模块结构、子系统依赖关系和接口定义。
在开始编写任何蓝图文档之前,必须先完整阅读并深刻理解目标系统的源码上下文——包括设计目的、
模块划分、依赖关系、数据流、边界条件等。切忌在未读懂系统架构的情况下仅凭目录结构或猜测
来编写蓝图文档。
---
## 文档目录结构
```
docs/
├── blueprint.md # 蓝图总文档
├── plan/ # 规划类文档
└── api/ # API 文档(由 api-skill 管理)
```
**文件命名:** 蓝图文档统一命名为 `blueprint.md`,放在 `docs/` 目录下。
---
## 文档整体结构
蓝图文档由多个 YAML 代码块通过 Markdown 标题分隔组成,所有 YAML 代码块共同构成
系统的完整蓝图定义。文档结构如下:
```markdown
# {系统名称} 蓝图
---
# SYSTEM_META
```yaml
# 系统元信息
```
---
# SYSTEM_STRUCTURE
```yaml
# 系统结构定义(核心必填)
```
---
# EVOLUTION_MODE
```yaml
# 演化模式
```
---
# REQUIREMENTS
```yaml
# 需求列表
```
---
# MVS_DEFINITION
```yaml
# 最小可行方案定义
```
---
# DATA_MODELS
```yaml
# 数据模型定义
```
---
# EVOLUTION_PLAN
```yaml
# 演化计划
```
---
## 页面类型与模板
### 1. SYSTEM_META元信息
SYSTEM_META 是整个蓝图文档的元信息区,必须完整填写。
```yaml
name: {系统名称}
version: {版本号}
type: {系统类型}
description: "{系统一句话描述}"
target_runtime: {目标运行时}
```
### 2. SYSTEM_STRUCTURE系统结构—— 核心必填
SYSTEM_STRUCTURE 定义系统的子系统和模块结构,是 XCSDD 3D 可视化的核心数据来源。
`subsystems``modules` 两个数组都被解析为 3D 图谱节点,依赖关系(`depends_on`)被解析为连线。
```yaml
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演化模式
```yaml
mode: {build|evolve|maintain}
description: "{模式描述}"
context: |
{多行上下文说明}
```
### 4. REQUIREMENTS需求列表
```yaml
- id: {REQ-ID}
title: {需求标题}
description: "{需求描述}"
source: {user|constraint}
type: {functional|non-functional}
acceptance_criteria:
- "{验收标准1}"
priority: {P0|P1|P2}
```
### 5. MVS_DEFINITIONMVS 最小可行方案)
```yaml
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数据模型
```yaml
- name: {模型名}
description: "{模型描述}"
fields:
- name: {字段名}
type: {类型}
default: {默认值}
constraints: {required|optional}
```
### 7. EVOLUTION_PLAN演化计划
```yaml
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-engine``web-framework``api-service` |
| `description` | 是 | 系统一句话功能描述 |
| `target_runtime` | 否 | 目标运行时,如 `C++17``WebAssembly``Python 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_Types``CoreTypes_` |
| `MathVector` | `Math_Vector``mathvector` |
| `RHICommandList` | `RHI_CommandList``RHICommand_List` |
| `DebugLogger` | `Debug_Logger` |
| `ResourcesManager` | `Resources_Manager` |
**规则:**
- 子系统名:`{子系统}{子模块}` 或直接 `{子系统}`(如 `Core``Math``RHI`
- 模块名:`{子系统}{功能描述}`(如 `CoreTypes``MathVector``RHICommandList`
- 若子系统名本身是多词组合(如 `RHI_D3D12`),模块名前缀应使用完整子系统名(如 `RHID3D12Device`
### ID 格式
| 对象 | ID 格式 | 示例 |
|------|---------|------|
| 需求 | `REQ-XXX` | `REQ-001``REQ-002` |
| MVS 方案 | `MVS-XXX` | `MVS-001``MVS-002` |
| 缺陷 | `BUG-XXX` | `BUG-001``BUG-002` |
| 特性 | `FEAT-XXX` | `FEAT-001``FEAT-002` |
---
## 文档一致性检查
生成或修改蓝图文档时,需检查:
1. **驼峰命名规范** — 所有子系统名和模块名必须使用驼峰命名,严禁下划线
2. **SYSTEM_STRUCTURE 一致性**`modules[].parent_subsystem` 引用的子系统必须存在
3. **依赖关系一致性**`subsystems[].depends_on` 引用的子系统必须存在,无循环依赖
4. **命名唯一性**`subsystems[].name``modules[].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. 输出报告:子系统划分理由、生成内容、缺失信息

1020
docs/blueprint.md Normal file

File diff suppressed because it is too large Load Diff