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