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] 核心问题
|
||||
> 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 下,跨组查询使用 。
|
||||
Reference in New Issue
Block a user