vault backup: 2026-05-31 14:42:42

This commit is contained in:
2026-05-31 14:42:42 +08:00
parent 7dcd2a35c2
commit a507664f3e

View File

@@ -80,12 +80,13 @@ gitnexus MCP (单实例)
--- ---
## Q1Claude Code 怎么知道查哪个仓库? ## Q&A
### Q1Claude 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有了 GroupQ1 的问题是不是可以更简单地解决?
|------|------|
| 新项目加入 | `analyze` → 创建 `group.yaml``group sync` |
| 引擎更新 | `analyze`(引擎目录),所有 Group 自动生效 |
| 项目间隔离 | 每个项目独立 Group不交叉污染 |
---
## Q3有了 GroupQ1 的问题是不是可以更简单地解决?
**是的。** Group 从根本上改变了 Q1 的路由方式。 **是的。** Group 从根本上改变了 Q1 的路由方式。
### 没有 GroupQ1 的困境) #### 没有 GroupQ1 的困境)
``` ```
CC 收到 "查 AActor" → 猜引擎 → 指定 repo: "UE_5.7" CC 收到 "查 AActor" → 猜引擎 → 指定 repo: "UE_5.7"
CC 收到 "查 URPGAttributeComponent" → 猜项目 → 指定 repo: "AIDM" CC 收到 "查 URPGAttributeComponent" → 猜项目 → 指定 repo: "AIDM"
猜错了 → 重试另一个仓库 → 浪费 token 和时间 猜错了 → 重试另一个仓库 → 浪费 token 和时间
``` ```
### 有了 GroupQ3 的解决方案) #### 有了 GroupQ3 的解决方案)
``` ```
CC 收到任何查询 → repo: "@ue5-aidm" CC 收到任何查询 → repo: "@ue5-aidm"
GitNexus 自动跨仓库搜索 → 返回结果(注明了来自哪个仓库) GitNexus 自动跨仓库搜索 → 返回结果(注明了来自哪个仓库)
@@ -217,7 +209,7 @@ GitNexus 自动跨仓库搜索 → 返回结果(注明了来自哪个仓库)
> >
> **CC 不再需要猜测符号属于哪个仓库。** 始终用 Group 名查询即可。 > **CC 不再需要猜测符号属于哪个仓库。** 始终用 Group 名查询即可。
### 更新后的路由规则 #### 更新后的路由规则
有了 GroupCLAUDE.md 路由可以简化为: 有了 GroupCLAUDE.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 下,跨组查询使用 。