diff --git a/07-Other/AI/AI Agent/UnrealEngine/GitNexus 知识图谱.md b/07-Other/AI/AI Agent/UnrealEngine/GitNexus 知识图谱.md index 0d21425..8baa5d5 100644 --- a/07-Other/AI/AI Agent/UnrealEngine/GitNexus 知识图谱.md +++ b/07-Other/AI/AI Agent/UnrealEngine/GitNexus 知识图谱.md @@ -80,12 +80,13 @@ gitnexus MCP (单实例) --- -## Q1:Claude Code 怎么知道查哪个仓库? +## Q&A +### Q1:Claude Code 怎么知道查哪个仓库? > [!important] 核心问题 > GitNexus MCP **没有** "搜索所有仓库" 的全局查询能力。每个查询必须指定 `repo` 参数。 > CC 不会自动知道 `AActor` 在 AIDM 还是 UE_5.7——它需要靠规则判断。 -### 当前机制:命名约定 + 试探查询 +#### 当前机制:命名约定 + 试探查询 GitNexus 仓库之间是**互相隔离**的。验证结果: | 查询 | repo | 结果 | @@ -114,7 +115,7 @@ graph TD > - **项目符号**:`URPGAttributeComponent`、`ULWSWorldGenerator`、`CelpecTalent`... > - 引擎类前缀短且通用,项目类前缀长且带业务含义 -### 更优方案:预构建符号→仓库映射表 +#### 更优方案:预构建符号→仓库映射表 可以写一个脚本,每次索引完成后生成映射文件: @@ -127,8 +128,8 @@ CC 读取这个映射表就能精确路由。这是一次性开销,可以放 --- -## Q2:多个项目共用一个引擎,Group 怎么配? -### 推荐方案:每个项目独立 Group +### Q2:多个项目共用一个引擎,Group 怎么配? +#### 推荐方案:每个项目独立 Group 假如你有 3 个项目都基于 UE_5.7: ``` @@ -148,12 +149,12 @@ UE_5.7 (引擎,公共) > [!warning] 不要把所有项目放进一个 Group > 如果 `@ue5-all` 包含所有项目,在 AIDM 上做 impact 分析会 fan-out 到 ProjectB/ProjectC 的符号,造成**跨项目污染**。 -### 为什么不能一个引擎 Group 被多个项目引用? +#### 为什么不能一个引擎 Group 被多个项目引用? Group 的 `group_sync` 是**显式的**——它把 Group 内所有仓库的 IMPORTS/EXTENDS 边做精确匹配并建立桥接。如果把三个项目放进一个 Group: - `URPGAttributeComponent`(AIDM)→ `UActorComponent`(引擎) ← 正确 - `USomeManager`(AIDM)→ `USomeManager`(ProjectB 恰好同名) ← **误匹配!** -### 具体步骤 +#### 具体步骤 ```bash # 1. 索引引擎(一次性,所有项目共享) cd D:\UnrealEngine\UE_5.7\Engine\Source @@ -185,27 +186,18 @@ npx gitnexus group sync @ue5-aidm > [!note] 引擎只索引一次 > 所有项目的 `group.yaml` 指向同一个引擎路径,引擎重新索引后所有 Group 自动更新。 -### 多项目管理速查 -| 操作 | 命令 | -|------|------| -| 新项目加入 | `analyze` → 创建 `group.yaml` → `group sync` | -| 引擎更新 | `analyze`(引擎目录),所有 Group 自动生效 | -| 项目间隔离 | 每个项目独立 Group,不交叉污染 | - ---- - -## Q3:有了 Group,Q1 的问题是不是可以更简单地解决? +### Q3:有了 Group,Q1 的问题是不是可以更简单地解决? **是的。** Group 从根本上改变了 Q1 的路由方式。 -### 没有 Group(Q1 的困境) +#### 没有 Group(Q1 的困境) ``` CC 收到 "查 AActor" → 猜引擎 → 指定 repo: "UE_5.7" CC 收到 "查 URPGAttributeComponent" → 猜项目 → 指定 repo: "AIDM" 猜错了 → 重试另一个仓库 → 浪费 token 和时间 ``` -### 有了 Group(Q3 的解决方案) +#### 有了 Group(Q3 的解决方案) ``` CC 收到任何查询 → repo: "@ue5-aidm" GitNexus 自动跨仓库搜索 → 返回结果(注明了来自哪个仓库) @@ -217,7 +209,7 @@ GitNexus 自动跨仓库搜索 → 返回结果(注明了来自哪个仓库) > > **CC 不再需要猜测符号属于哪个仓库。** 始终用 Group 名查询即可。 -### 更新后的路由规则 +#### 更新后的路由规则 有了 Group,CLAUDE.md 路由可以简化为: ``` 1. 任何符号查询 → 始终用 repo: "@ue5-aidm" @@ -229,6 +221,17 @@ GitNexus 自动跨仓库搜索 → 返回结果(注明了来自哪个仓库) --- +### 多项目管理速查 + +| 操作 | 命令 | +| ----- | ------------------------------------------ | +| 新项目加入 | `analyze` → 创建 `group.yaml` → `group sync` | +| 引擎更新 | `analyze`(引擎目录),所有 Group 自动生效 | +| 项目间隔离 | 每个项目独立 Group,不交叉污染 | + +--- + + ## 实战经验:UE5.7 引擎全模块索引 ### 一、遇到的坑与规避方法 @@ -386,31 +389,32 @@ npx gitnexus status #### 推荐 Group 结构 -不要把所有 188 模块放一个 flat group——按功能域分组更高效: +不要把所有模块放一个 flat group——按功能域分组更高效。实际采用了 **188 模块 → 11 功能组** 的合并方案: ```yaml -# ~/.gitnexus/groups/UE5-Gameplay/group.yaml +# ~/.gitnexus/groups/UE5-Engine/group.yaml +version: 1 +name: UE5-Engine repos: - AIModule: ... - NavigationSystem: ... - GameplayTasks: ... - GameplayTags: ... - Engine: ... - Core: ... - CoreUObject: ... - -# ~/.gitnexus/groups/UE5-All/group.yaml (总 Group) -repos: - # 所有 188 模块 + Core: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime\Core + Engine: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime\Engine + Gameplay: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime-Merged\Gameplay + Rendering: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime-Merged\Rendering + UI: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime-Merged\UI + AudioSignal: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime-Merged\AudioSignal + MediaMovieScene: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime-Merged\MediaMovieScene + Networking: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime-Merged\Networking + PhysicsAnimation: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime-Merged\PhysicsAnimation + Platform: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime-Merged\Platform + Experimental: D:\UnrealEngine\UE_5.7\Engine\Source\Runtime-Merged\Experimental ``` -日常开发用 `@UE5-Gameplay`(小且精准),全局搜索用 `@UE5-All`(大且全)。 +日常开发用 `@UE5-Engine` 检索全引擎,单领域深挖用 `repo: "Gameplay"` 等组名,精准匹配用 `repo: "Engine"`(单模块)。 #### 检索优先级 -同一页面上给检索工具一个优先级: ``` -1. 当前模块 repo → 2. 领域 Group → 3. 全局 Group → 4. grep 兜底 +1. 领域 Group(如 @UE5-Engine)→ 2. 功能组 repo(如 Gameplay)→ 3. 单模块 repo(如 Engine)→ 4. grep 兜底 ``` --- @@ -503,6 +507,3 @@ repos: #### Experimental (1397 files) - Experimental -### Group 配置 - -合并后统一放在 Group 下,跨组查询使用 。 \ No newline at end of file