@realsee/five
Version:
Realsee Renderer SDK
103 lines (79 loc) • 6.82 kB
Markdown
<!-- AI-friendly guide template for `ai_guides/` -->
# AI 文档与维护指南 (AI Documentation & Maintenance Guide)
## Summary
本文档包含两部分内容:
1. **Writing Guide**: 供 AI 和人类编写新文档时的标准模板与风格规范。
2. **Maintenance Guide**: 供 AI 维护者进行文档更新、同步与体检的操作指南。
---
# Part 1: Writing Guide (编写指南)
## 目的
提供统一、结构化的 Markdown 模板,便于 AI 自动解析、索引与生成功能性示例。
## 建议风格
- 使用中文为主,代码示例使用 TypeScript。
- **受众意识**: 文档面向 SDK 的**外部使用者**。避免暴露无用的内部实现细节(如私有属性、临时状态),除非对调试有帮助。
- **结构规范**: 严格使用二级标题 (`##`) 作为主要段落分割(如 `## Schema`, `## Concepts`),避免使用中文标题(如 `## 格式说明`)。
- **代码缩进**: 强制使用 **两个空格** 缩进。
- **相对路径**: 内部文档链接必须使用 **相对路径**(如 `./state.md`)。
- **Schema**: 必须提供 TypeScript Interface 定义,并保留关键字段的注释(JSDoc)。
- **精简原则**: 仅展示核心与常用字段,避免列出所有内部或废弃字段。
- **Configuration**: 对于参数较多的配置项,建议按 **“常用 (Common)”**、**“进阶 (Advanced)”**、**“内部 (Internal)”** 进行分类表格展示,并在内部参数处添加“不建议修改”的警告。
- **Source Link**: 引用源码文件时,请在 `## Schema` 章节中使用 `> **Definition**: [InterfaceName](../../path/to/source.ts)` 的格式。**支持多个链接**(如 `[Five](...), [EventTypes](...)`),以便完整覆盖相关类型。**必须** 指向 `lib/` 目录下的 `.ts` 文件。构建脚本会自动将其转换为发布包中的 `.d.ts` 链接。
- **Related**: 文档末尾建议包含 `## Related` 章节,提供相关文档的**相对路径链接**。
- **语义化**: 链接文字应准确反映目标文档的主题(如 `[Coordinate System](./coordinate.md)`)。
- **Metadata**: 结尾必须包含 YAML 格式的 `tags`。
- **文档拆分与审查**: 单个文档应保持精简。若内容过多需拆分为新专题,**必须**在创建新文件前向用户确认并获得批准,严禁擅自创建新文件。
## 最佳实践 (Best Practices)
### 1. 变量命名语义化 (Semantic Variable Naming)
在示例代码中,变量名应准确反映其通用性或特定上下文。
- **Good**: `parentParameter` (暗示可用于 Model, ViewLayer 等多种父级)
- **Bad**: `modelParam` (若该逻辑同样适用于 ViewLayer,则会误导用户)
### 2. 区分属性与方法 (Property vs Method)
明确区分“直接访问属性”与“调用方法计算”。
- 若 API 设计为 Getter (如 `parameter.opacity`),文档应引导用户直接访问属性,避免混淆使用 `get()` 方法。
- 对于涉及计算或继承的逻辑 (如 `resolveValue()`),应显式说明其与直接访问的区别。
### 3. 显式说明默认行为 (Explicit Default Behavior)
对于有默认值或继承逻辑的方法,务必说明“不传参”时的行为。
- 例如:`resolveValue()` 不传参时仅计算默认值;传入 `upstream` 时会包含继承逻辑。
## 标准模板结构 (Standard Template Structure)
无论是**新建文档**还是**维护现有文档**,都请参考独立模板文件:[template.md](./template.md)。
- **新建文档**: 直接复制模板内容开始编写。
- **维护文档**: 在修改现有文档时,请检查其结构是否符合模板要求(如 Schema 的 Definition 引用、Configuration 的分类等)。如果发现结构过时,请顺手将其标准化。
- **特殊说明 (Special Notes)**:
- **模板链接格式 (Template Link Format)**:
- 模板(`template.md`)中所有的占位符链接(如 `Definition` 处的 `[InterfaceName](...)` 或 `Related` 处的 `[RelatedConcept](...)`)均使用了**代码块**包裹,以避免构建时因路径不存在而报错。
- **AI 操作**: 在编写正式文档时,**必须将其还原为可点击的标准 Markdown 链接**(即去掉反引号),并确保路径指向真实存在的文件。
请严格遵循该模板的结构,以保证文档风格一致性。
---
# Part 2: Maintenance Guide (维护指南)
## 核心原则 (Core Principles)
为了防止文档与代码脱节,我们遵循 **“代码变更驱动文档更新”** 的原则。
## 1. 语义化检索 (Semantic Retrieval)
不再维护硬编码的“源码-文档”映射表。AI 维护者在修改代码后,应利用自身的语义搜索能力(如 `SearchCodebase` 或 `Grep`)来定位需要更新的文档。
**推荐策略**:
- 搜索**类名/方法名**: 如修改了 `five.load`,搜索 `five.load` 或 `load`。
- 搜索**概念关键词**: 如修改了射线检测逻辑,搜索 `Raycast` 或 `project2d`。
## 2. 单一事实来源 (Single Source of Truth)
- **API 签名**: 以 `package/five/index.d.ts` 和代码中的 TSDoc 为准。
- **ai_guides/api.md**: 仅作为 **索引 (Index)** 和 **摘要 (Summary)**。不要试图复制所有参数细节,除非是核心参数。
- **ai_guides/features/*.md**: 重点解释 **“为什么”** 和 **“怎么用”**,避免机械复制类型定义。
## 3. 维护工作流 (Maintenance Workflow)
### 场景 A:代码功能迭代后 (Post-Coding)
当修改了 SDK 源码后,请执行以下检查:
1. **反向查找**: 利用工具搜索关键词(API 名称、Feature 名称),找到 `ai_guides/` 下相关的文档。
2. **更新文档**:
* 如果修改了 API 签名 -> 更新对应的 `Schema` 和 `Examples`。
* 如果废弃了功能 -> 在文档中添加 `> [!WARNING] Deprecated` 提示。
3. **更新索引**: 如果是新功能,确保将其添加到 `ai_guides/README.md` 的合适章节中。
4. **同步 llms.txt**: 若新增了文档或修改了文档路径,**必须**同步更新项目根目录下的 `llms.txt`,确保外部索引与 `ai_guides/` 保持一致。
### 场景 B:API 文档同步 (Sync API Doc)
定期检查 `ai_guides/api.md` 的完整性:
1. 读取 `package/five/index.d.ts` 获取最新公开 API。
2. 对比 `ai_guides/api.md`,找出缺失的高频 API 或已删除的 API。
3. **注意**: 只收录高频/核心 API,低频 API 应引导用户查看源码或专门的 Feature 文档。
## 目录结构说明
- `ai_guides/`: 文档根目录。
- `ai_guides/features/`: 功能性文档 (Features)。
- `ai_guides/release_notes/`: 版本更新记录。
- `ai_guides/api.md`: 核心 API 索引。
- `ai_guides/README.md`: 文档总索引。
- `package/five/index.d.ts`: **API 签名的真理来源**。