docs(godot): 收口旧文档口吻与采用说明

- 更新 Godot 与教程细页的 reader-facing 采用说明

- 修复旧文档、ai-libs 与内部术语在公开页面中的暴露

- 更新文档治理恢复点并记录接近阈值的停止状态
This commit is contained in:
gewuyou 2026-04-27 09:02:48 +08:00
parent 979db3b5a5
commit 5778782df0
12 changed files with 77 additions and 29 deletions

View File

@ -12,13 +12,13 @@
## 当前恢复点
- 恢复点编号:`DOCUMENTATION-FULL-COVERAGE-GOV-RP-042`
- 恢复点编号:`DOCUMENTATION-FULL-COVERAGE-GOV-RP-043`
- 当前阶段:`Phase 5 - Governance Maintenance`
- 当前焦点:
- 继续以最新 `origin/main``617e0bf``2026-04-26 12:17:15 +08:00`)作为 baseline当前批处理 stop condition 仍是 branch diff vs baseline 接近 `50` changed files
- 本轮已扩成 3 个连续低风险切片:入口页 reader-facing 改写、公开 README / Godot 页面去内部口吻,以及剩余 GitHub blob README 外链改回站内导航
- 当前工作树相对 `origin/main` 的 tracked diff 已到 `36` files / `500` changed lines仍低于 `50` 文件阈值,但继续扩批前应先提交当前稳定批次,避免 review 面继续发散
- 已接受 subagent 结论:当前最划算的修正不是扩新栏目,而是统一入口页骨架、清掉公开页面中的治理口吻、以及把站外 README 入口降回站内专题页
- 本轮已扩成 4 个连续低风险切片:入口页 reader-facing 改写、公开 README / Godot 页面去内部口吻剩余 GitHub blob README 外链改回站内导航,以及最后一批 `旧文档` / `ai-libs` 口吻改写
- 当前工作树相对 `origin/main` 的 tracked diff 已到 `46` files已接近 `50` 文件阈值,当前建议停止继续扩批并提交收口,避免 review 面继续发散
- 已接受 subagent 结论:当前最划算的修正不是扩新栏目,而是统一入口页骨架、清掉公开页面中的治理口吻、以及把站外 README 入口降回站内专题页;最后一批只应挑新的 reader-facing 文案文件补齐到接近阈值
## 当前状态摘要
@ -37,6 +37,7 @@
- `2026-04-27` `docs/zh-CN/getting-started/index.md``core/index.md``game/index.md``api-reference/index.md``source-generators/index.md` 已统一收敛为“适用场景 / 起步路线 / 继续阅读”式 reader-facing 入口,不再把 GitHub blob README 或治理说明当作主导航。
- `2026-04-27` `GFramework.Game/README.md``GFramework.Game.Abstractions/README.md``GFramework.Godot/README.md``GFramework.Cqrs.Abstractions/README.md``GFramework.Ecs.Arch/README.md` 已收口 `ai-libs``family``seam``ReadMe.md` 等内部化或文件名式表述。
- `2026-04-27` `docs/zh-CN` 当前已清空所有指向 `github.com/GeWuYou/GFramework/blob/main/.../README.md` 的公开外链,相关入口统一回到站内栏目页、专题页或 API 导航。
- `2026-04-27` `docs/zh-CN/tutorials/godot-integration.md``game/setting.md``game/serialization.md``godot/index.md``godot/architecture.md``godot/storage.md``godot/logging.md``godot/setting.md``godot/extensions.md``core/architecture.md` 已把 `旧文档` / `ai-libs` / `.Wait()` / `family` 这类维护与内部语气改写成当前采用说明。
- `2026-04-25` 当前批次已补齐 meta-package / 安装面:`GFramework.csproj` 不再保留占位描述,`README.md``docs/zh-CN/index.md``docs/zh-CN/getting-started/installation.md` 当前明确说明聚合元包只聚合 `Core` + `Game`,并把安装入口更新到当前 `net8.0/net9.0/net10.0` 与 Godot `4.6.2` 基线。
- `2026-04-25` `docs/zh-CN/game/config-tool.md` 已新增为 reader-facing 工具页,`docs/zh-CN/game/index.md``config-system.md``docs/.vitepress/config.mts``tools/gframework-config-tool/README.md` 当前把 VS Code 配置工具纳入 `Game` 配置工作流入口。
- `2026-04-25` source-generators 栏目已修正 4 处真实契约问题:`GetNode` 显式路径 / `Lookup` 语义、枚举生成器实际开关、`Context Get` 集合注入边界,以及 `GFramework.SourceGenerators.Common` / `*.SourceGenerators.Abstractions` 的共享支撑层说明。
@ -117,6 +118,26 @@
- 结果通过Game UI 页相关推荐改回站内入口后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/ecs/arch.md`
- 结果通过ECS Arch 页入口改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/tutorials/godot-integration.md`
- 结果通过Godot 集成教程的接线口吻改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/game/setting.md`
- 结果:通过;设置系统页初始化语义改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/game/serialization.md`
- 结果:通过;序列化页生命周期说明改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/index.md`
- 结果通过Godot landing page 的采用说明改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/architecture.md`
- 结果通过Godot 架构页异步初始化口吻改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/storage.md`
- 结果通过Godot 存储页示例口吻改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/logging.md`
- 结果通过Godot 日志页 provider 接线说明改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/setting.md`
- 结果通过Godot 设置页 applicator 接线口吻改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/extensions.md`
- 结果通过Godot 扩展页边界说明改写后页面校验通过。
- `2026-04-27` `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/core/architecture.md`
- 结果通过Core 架构页旧初始化入口改写后页面校验通过。
- `2026-04-27` `bun run build`(工作目录:`docs/`
- 结果:通过;本轮 README、安装页与公开文案改写后站点仍可构建仅保留既有大 chunk warning。
- `2026-04-25` `bun run build`(工作目录:`docs/`
@ -205,8 +226,8 @@
## 下一步
1. 提交当前 `36` files / `500` changed lines 的稳定批次后,重新计算 branch diff若仍低于 `50` 且 reviewability 可接受,再继续选择一组不超过 `10` files 的 reader-facing 收口
2. 优先扫描还残留 `ai-libs``旧文档``README.md` / 路径式标签或内部术语的公开页面,而不是扩新栏目
1. 提交当前接近阈值的稳定批次后,优先重新抓取 `$gframework-pr-review` 或在新一轮里按 `46 / 50` 的 branch diff 重新评估是否还适合继续扩批
2. 若后续还要继续文档治理,优先复核尚未触达的 `Game` persistence、Godot runtime 细页与少量残余 `ai-libs` 口吻,而不是继续扩大同一轮 review 面
3. 若后续分支继续调整 `Game` persistence runtime、README 或公共 API优先复核 `docs/zh-CN/game/data.md`
`storage.md``serialization.md``setting.md` 与 landing page 是否仍保持同一套职责边界。
4. 若后续分支继续调整 `Godot` generator 接法,优先复核 `GFramework.Godot.SourceGenerators/README.md`

View File

@ -2,6 +2,35 @@
## 2026-04-27
### 当前恢复点RP-043
- 在提交 `docs(reader-facing): 统一站内入口与公开术语` 后重新计算 branch diff确认当前工作树继续补一批新文件后已到 `46` changed files已经接近 `$gframework-batch-boot 50` 的停止线。
- 因此本轮最后只接受 10 个还没进入 branch diff 的文件:`tutorials/godot-integration.md``game/setting.md``game/serialization.md``godot/index.md``godot/architecture.md``godot/storage.md``godot/logging.md``godot/setting.md``godot/extensions.md``core/architecture.md`
- 这批文件统一收口的是同一类问题:把 `旧文档``ai-libs``.Wait()``family` 之类维护 / 内部口吻改成当前采用指导,不扩新结构、不重写示例体系。
### 当前决策RP-043
- 当前 stop condition 已接近阈值,因此这批验证通过后立即停止继续扩批,避免 branch diff 超过 `50` files 或让 review 面退化。
- 提交后本轮默认结束;后续若继续,应从 PR review 或剩余未触达的细页重新开一轮,而不是在同一轮里继续堆文件数。
### 当前验证RP-043
- 单页校验:
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/tutorials/godot-integration.md`
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/game/setting.md`
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/game/serialization.md`
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/index.md`
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/architecture.md`
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/storage.md`
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/logging.md`
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/setting.md`
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/godot/extensions.md`
- `bash .agents/skills/gframework-doc-refresh/scripts/validate-all.sh docs/zh-CN/core/architecture.md`
- 结果:通过;本轮 10 个新文件的 frontmatter、链接与代码块校验全部通过。
- 站点构建:
- `bun run build`(工作目录:`docs/`
- 结果:通过;接近阈值前的最后一批文案收口后站点仍可构建,仅保留既有大 chunk warning。
### 当前恢复点RP-042
- 用户明确要求在当前阈值内循环推进,并允许使用 subagent 降低主线程上下文压力;因此本轮在主线程保留实现与验证,把热点识别委派给 3 个 explorer。

View File

@ -61,7 +61,7 @@ await architecture.WaitUntilReadyAsync();
## 初始化时机
当前版本不再使用旧文档里的 `Init()` 入口。注册逻辑必须写在:
当前 `Architecture`注册逻辑必须写在:
```csharp
protected override void OnInitialize()
@ -77,7 +77,7 @@ protected override void OnInitialize()
4. 按阶段初始化 `Utility -> Model -> System`
5. 进入 `Ready`
如果你还看到旧示例里写 `protected override void Init()`,那就是过时内容
如果项目里仍保留 `protected override void Init()` 风格的旧代码,应迁移到 `OnInitialize()`
## 组件注册顺序

View File

@ -46,7 +46,7 @@ IRuntimeTypeSerializer runtimeSerializer = new JsonSerializer();
## 配置生命周期
部分是当前实现最容易被旧文档说错的地方
里最需要先确认的是序列化器的配置生命周期
`JsonSerializer` 不会复制你传入的 `JsonSerializerSettings`。它会直接持有并复用这份实例,以及里面的 `Converters` 集合。

View File

@ -16,7 +16,7 @@ description: 以当前 SettingsModel、SettingsSystem 与相关测试为准,
- `SettingsModel<TRepository>`
- `SettingsSystem`
而不是旧文档里那种“只靠若干 `Get<T>() / Register(...)` 辅助方法就能自动完成一切的模型。
而不是只靠若干 `Get<T>() / Register(...)` 辅助方法就能自动完成一切的模型。
## 当前公开入口
@ -91,7 +91,7 @@ applicator 的职责不是保存数据,而是把设置结果作用到实际运
## 初始化与迁移的真实语义
`SettingsModel<TRepository>.InitializeAsync()` 的当前行为,比旧文档里“加载一下就好”更严格一些
`SettingsModel<TRepository>.InitializeAsync()` 会按更完整的初始化与迁移顺序工作
- 它会先调用 `ISettingsDataRepository.LoadAllAsync()`
- 再逐个匹配当前模型里已经登记的设置类型

View File

@ -1,6 +1,6 @@
---
title: Godot 架构集成
description: 说明 AbstractArchitecture、ArchitectureAnchor 和 Godot 模块挂接的当前生命周期语义,避免继续沿用旧版 `.Wait()` 接法
description: 说明 AbstractArchitecture、ArchitectureAnchor 和 Godot 模块挂接的当前生命周期语义,以及推荐的初始化路径
---
# Godot 架构集成
@ -33,7 +33,7 @@ Godot 场景树销毁”,而不是改变注册方式。
### 常规模块仍然用 `InstallModule(...)`
当前消费者 `ai-libs/CoreGrid` 的默认做法,是保持普通模块注册方式:
当前更稳的默认做法,是保持普通模块注册方式:
```csharp
using GFramework.Core.Abstractions.Architectures;
@ -95,8 +95,7 @@ public sealed class HudModule : AbstractGodotModule
```
这类模块的关键点不是“注册更多框架能力”,而是“让模块节点跟着架构锚点进出场景树”。
真正调用 `InstallGodotModule(...)` 时,也应该把它放在能够接受异步挂接流程的初始化路径里,而不是继续沿用旧文档里的
`.Wait()` 叙述。
真正调用 `InstallGodotModule(...)` 时,也应该把它放在能够接受异步挂接流程的初始化路径里。
## 当前生命周期
@ -148,7 +147,7 @@ public sealed class HudModule : AbstractGodotModule
- 当锚点尚未初始化时,`InstallGodotModule(...)` 会直接抛 `InvalidOperationException("Anchor not initialized")`
- 失败发生在 `module.Install(...)` 之前,因此不会留下半安装副作用
这也是为什么文档不应该再把 `InstallGodotModule(...).Wait()` 写成一种随处可用的默认初始化方式
这也是为什么 `InstallGodotModule(...)` 更适合放在异步初始化路径里,而不是同步阻塞地等待挂接结果
### `AbstractGodotModule` 只是便捷基类,不代表自动阶段广播

View File

@ -12,7 +12,7 @@ description: 以当前 GFramework.Godot.Extensions 源码为准,说明路径
- `SignalFluentExtensions`
- `UnRegisterExtension`
这页的重点应该是识别这些扩展各自解决什么问题,以及哪些旧文档里的“大而全能力”现在并不存在
这页的重点是识别这些扩展各自解决什么问题,以及哪些能力属于单一运行时辅助,而不是统一入口
## 当前公开入口
@ -166,7 +166,7 @@ public override void _Ready()
## 当前边界
- 当前 `NodeExtensions` 没有 `GetNodeX()``CreateSignalBuilder()` 之类旧文档里提过的 API
- 当前 `NodeExtensions` 不提供 `GetNodeX()``CreateSignalBuilder()` 这类额外包装 API
- 它不是 router、scene factory、UI factory 或生成器的替代层
- `GetOrCreateNode<T>()` 只会创建一个直接子节点,不会递归补整条路径
- `SafeCallDeferred(...)` 只有在 `IsValidNode()``true` 时才会调用;节点未入树时不会执行

View File

@ -60,7 +60,7 @@ dotnet add package GeWuYou.GFramework.Godot.SourceGenerators
### 2. 让架构继续负责注册,让 Godot 节点负责场景接线
`ai-libs/CoreGrid` 当前的真实做法,是让架构继承 `AbstractArchitecture`,但模块注册依然使用普通的
当前更稳的接法,是让架构继承 `AbstractArchitecture`,但模块注册依然使用普通的
`InstallModule(...)`
```csharp
@ -150,7 +150,7 @@ public partial class SettingsPanel : Control
- `AbstractArchitecture` 会在 `SceneTree.Root` 下创建 `ArchitectureAnchor`,并在锚点退出场景树时触发架构销毁观察流程
- `InstallGodotModule(...)` 会先检查锚点是否存在;测试覆盖了“锚点缺失时直接抛 `InvalidOperationException`,且不会执行
`module.Install(...)`”这一路径
- `Signal(...)` 是当前 fluent API 入口,不是旧文档里的 `CreateSignalBuilder(...)`
- `Signal(...)` 是当前 fluent API 入口
- `NodeExtensions` 目前保留的是 `FindChildX<T>()``GetParentX<T>()``GetOrCreateNode<T>()``QueueFreeX()`
`FreeX()``WaitUntilReadyAsync()` 这一类运行时辅助;不要再把它描述成一个“默认覆盖所有 Godot 节点操作”的大而全层
- Scene / UI 工厂依赖显式 registry 与 `PackedScene` 资源,不存在“运行时自动扫描所有场景并完成统一注册”的当前契约

View File

@ -67,8 +67,8 @@ public sealed class GodotLoggerFactoryProvider : ILoggerFactoryProvider
### 1. 在 `ArchitectureConfiguration` 中挂上 Godot provider
当前仓库里更稳的接法,不是到处直接改全局 `LoggerFactoryResolver.Provider`,而是在架构配置里显式提供
`LoggerProperties.LoggerFactoryProvider``ai-libs/CoreGrid/global/GameEntryPoint.cs` 现在就是这样接的。
当前更稳的接法,不是到处直接改全局 `LoggerFactoryResolver.Provider`,而是在架构配置里显式提供
`LoggerProperties.LoggerFactoryProvider`
```csharp
using GFramework.Core.Abstractions.Environment;

View File

@ -72,8 +72,7 @@ description: 以当前 GFramework.Godot 源码、测试与 CoreGrid 接线为准
## 最小接入路径
当前消费者 `ai-libs/CoreGrid` 的接法,是先注册 `SettingsModel<ISettingsDataRepository>`,再把 Godot applicator
挂进去:
当前更常见的接法,是先注册 `SettingsModel<ISettingsDataRepository>`,再把 Godot applicator 挂进去:
```csharp
using GFramework.Game.Abstractions.Data;
@ -101,7 +100,7 @@ architecture.RegisterModel(
- 设置数据和生命周期由 `SettingsModel`
- `GodotAudioSettings` / `GodotGraphicsSettings` / `GodotLocalizationSettings` 只是 applicator
- 保存、加载和迁移仍然走 `ISettingsDataRepository``SettingsModel.InitializeAsync()``SaveAllAsync()``Game`
family 入口
模块入口
## 运行时使用方式

View File

@ -60,7 +60,7 @@ description: 以当前 GFramework.Godot 源码与 CoreGrid 接线为准,说明
## 最小接入路径
当前消费者 `ai-libs/CoreGrid` 的接法是先注册同一个序列化器和存储实例,再让设置仓库、存档仓库等上层组件复用它:
当前更常见的接法,是先注册同一个序列化器和存储实例,再让设置仓库、存档仓库等上层组件复用它:
```csharp
using GFramework.Core.Abstractions.Serializer;

View File

@ -65,7 +65,7 @@ dotnet add package GeWuYou.GFramework.Godot.SourceGenerators
## 第二步:把架构和 Godot 节点分开看
当前真实消费者 `ai-libs/CoreGrid` 的默认接入方式,是:
当前更稳的默认接入方式,是:
- 架构层继续用常规 `InstallModule(new SomeModule())`
- Godot 节点脚本通过运行时扩展和源码生成器接入场景
@ -195,7 +195,7 @@ public override void _Ready()
}
```
这也是 `ai-libs/CoreGrid`项目侧节点类的真实顺序。
这也是项目侧节点类更稳妥的顺序。
## 第五步:只在运行时处理真正需要运行时决定的东西
@ -226,7 +226,7 @@ public partial class SettingsPanel : Control, IController
}
```
手动信号接线时,当前 API 叫 `Signal(...)`,不是旧文档里的 `CreateSignalBuilder(...)`
手动信号接线时,当前入口是 `Signal(...)`
```csharp
using GFramework.Godot.Extensions.Signal;