Files
XCEngine/docs/blueprint-skill.md

239 lines
5.6 KiB
Markdown
Raw Normal View History

2026-03-20 02:36:29 +08:00
# XCEngine 蓝图文档编写与校验 Skill
## 用途
2026-04-08 16:07:03 +08:00
根据 XCEngine 当前工作树生成或重写 `docs/blueprint.md`,用于描述真实已落地的系统结构、子系统依赖、关键数据模型和当前演进方向。
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
蓝图不是愿景文档,也不是过期设计稿的搬运。它必须服从当前 checkout、当前 `CMakeLists.txt`、当前测试、当前项目布局和当前文档主线。
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
## 当前仓库里的事实来源顺序
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
处理蓝图任务时,按下面顺序建立上下文:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
1. 当前工作树与相关 `CMakeLists.txt`
2. [AGENT.md](../AGENT.md)
3. [README.md](../README.md) 与 [editor/README.md](../editor/README.md)
4. 对应模块的测试目录与聚合 target
5. `docs/plan/` 下仍活跃的设计 / 计划文档
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
如果旧文档与当前代码冲突,先信当前代码,再修文档。
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
## 必须同步的活跃文档
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
当蓝图所描述的架构事实发生变化时,不要只改 `docs/blueprint.md`
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
通常至少要检查这些活跃文档是否需要同步:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- `docs/blueprint.md`
- `docs/blueprint-skill.md`
- `README.md`
- `editor/README.md`
- `AGENT.md`
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
如果同时触及 API 术语、Editor 调用链或 source-backed API 页面:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
1. 先检查 `docs/plan/` 下是否有更新的 API 相关任务池或计划。
2. 再检查 `docs/api-skill.md`
3. 必要时同步对应 `docs/api/**` 页面。
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
## 不要改的归档区域
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
以下目录默认视为归档背景材料,只读,不在本轮蓝图收口里直接改写:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- `docs/plan/used/**`
- `docs/used/**`
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
如果需要引用归档内容,只把它当历史上下文,不能让它覆盖当前事实。
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
## 蓝图写作的硬约束
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
### 1. 必须以当前工程结构为准
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
当前蓝图至少要覆盖这些活跃部分:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- `engine/`
- `editor/`
- `managed/`
- `project/`
- `tests/`
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
不要再传播这些过期说法:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- “只有 D3D12 和 OpenGL 双后端”
- “还没有脚本系统”
- “还没有 Editor 主链”
-`project/Library/` 可以忽略”
- “根目录存在 `native/` 占位项”
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
### 2. Project / Library 是当前 workflow 的一部分
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
蓝图必须明确当前工程真实采用:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- `Assets/ + .meta + Library/`
- `Project.xcproject`
- `Library/SourceAssetDB/assets.db`
- `Library/ArtifactDB/artifacts.db`
- `Library/Artifacts/`
- `Library/ScriptAssemblies/`
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
不要把 `project/Library/` 写成“无关生成垃圾目录”。
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
### 3. Editor 是宿主,不是第二套渲染器
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
蓝图里描述 editor 时,要保持当前口径:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- editor 是 `D3D12` 宿主应用
- Scene / Game viewport 通过引擎 `Rendering + RHI` 离屏渲染
- Scene View 当前 helper 链要按真实实现书写
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
当前主链以实际代码为准,最近主线是:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
`SceneViewportChrome -> SceneViewportInteractionFrame -> SceneViewportNavigation -> SceneViewportTransformGizmoCoordinator -> ViewportHostService`
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
### 4. 脚本系统必须按当前 Mono 链路描述
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
蓝图必须体现当前脚本链路至少由这几部分构成:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- `managed/XCEngine.ScriptCore/`
- `managed/GameScripts/`
- `project/Assets/**/*.cs`
- `project/Library/ScriptAssemblies/`
- `engine/src/Scripting/`
- `editor/src/Scripting/`
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
如果本轮涉及脚本蓝图,额外核对:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- `managed/CMakeLists.txt`
- `editor/src/Scripting/EditorScriptAssemblyBuilder.cpp`
- `tests/Scripting/`
- `tests/Editor/`
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
### 5. Windows 路径大小写按真实目录名写
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
文档里统一写真实目录名,例如:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- `tests/Core/`
- `tests/Rendering/`
- `tests/Editor/`
- `tests/Scripting/`
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
不要制造无意义的大小写漂移。
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
## 蓝图文档结构
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
`docs/blueprint.md` 维持以下固定章节:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
```markdown
# XCEngine 蓝图
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
---
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
# SYSTEM_META
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
```yaml
...
```
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
---
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
# SYSTEM_STRUCTURE
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
```yaml
...
```
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
---
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
# EVOLUTION_MODE
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
```yaml
...
```
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
# REQUIREMENTS
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
```yaml
...
```
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
---
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
# MVS_DEFINITION
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
```yaml
...
```
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
# DATA_MODELS
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
```yaml
...
```
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
---
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
# EVOLUTION_PLAN
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
```yaml
...
```
```
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
要求:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- 所有 YAML 代码块都必须能被正常解析
- `SYSTEM_STRUCTURE` 里的子系统、依赖和模块名称要能在当前代码里找到对应锚点
- 不要在同一份蓝图里同时保留互相矛盾的新旧架构
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
## 推荐收口流程
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
1. 先读 `AGENT.md``README.md`、相关 `CMakeLists.txt`
2. 只抽取与本次蓝图相关的关键头文件、关键源文件、测试目录。
3. 识别当前真实子系统边界,而不是沿用旧蓝图里的命名。
4. 重写 `SYSTEM_META``SYSTEM_STRUCTURE``EVOLUTION_MODE`
5. 再补 `REQUIREMENTS``MVS_DEFINITION``DATA_MODELS``EVOLUTION_PLAN`
6. 回读整份蓝图,检查有没有把旧时期说法残留到新结构里。
7. 如涉及主文档口径变化,同步检查 `README.md` / `editor/README.md` / `AGENT.md`
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
## 一致性检查清单
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
完成蓝图修改后,至少确认:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
1. 后端数量与当前代码一致,`RHI` 现在是 `D3D12 / OpenGL / Vulkan`
2. `Rendering` 主链写成当前真实链路,而不是旧 sample 分支。
3. `Editor` 被描述为宿主层Scene View helper 链与当前实现一致。
4. `Resources` / `Core/Asset` 明确覆盖 `.meta``assets.db``artifacts.db``Artifacts/`
5. `Scripting` 明确覆盖 `XCEngine.ScriptCore.dll``GameScripts.dll``project/Assets/**/*.cs``Library/ScriptAssemblies/`
6. `Project` 明确覆盖 `Project.xcproject``Assets/Scenes/*.xc``Library/`
7. `Tests` 与当前 `tests/` 目录和聚合 target 口径一致。
8. 没有修改归档目录。
2026-03-20 02:36:29 +08:00
---
2026-04-08 16:07:03 +08:00
## 目标
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
最终产物应当让后来者只看当前蓝图,就能理解:
2026-03-20 02:36:29 +08:00
2026-04-08 16:07:03 +08:00
- 这套工作区现在真正有哪些子系统
- 它们通过什么链路接起来
- 当前稳定的数据边界在哪里
- 下一阶段应该在什么约束下继续演进