Apache 2.0 — 全开源,商用免费。
- GitHub:https://github.com/pirua-game/ai_game_base_analysis_cli_mcp_tool
- 支持:Unity(C#)· UE5(C++)· Axmol(C++)· .NET · C++
因为我很开心地看到AI浪费了我太多时间,所以我就创建了这个工具。我希望它也会帮助你。
问题
你知道当你问卡尔杜或者卡塞什“如果我重新编写这个管理类的哪些事情会发生?”并且它会读取30个.cs文件,错过了每一个prefab参考,没有了解UnityEvent调试器上的绑定,并且告诉你一个错误的答案是有多烦人的时候。
我的一个项目有50+个MonoBehaviour管理类。AI无法解释哪个prefab引用了哪个脚本,无法在调试器中找到UnityEvent(因为它们没有存在于代码中),并且无法追踪更改一个类实际上的影响。它花费了更多的时间读取文件,而我会花更少时间手工分析。
现实世界的比较
我在实际的Unity卡牌游戏项目中测试了两种相同的提示和AI:
提示:“分析BattleManager中的PlayHand函数在BattleCore中的角色,包括ManagerBattle和BattleCore之间的关系,以及Unity事件。”
没有gdep(3分钟35秒):
* AI花费了整个时间在多次grep搜索和读取文件
* 必须对不同的模式中OnPlayHand函数进行5次单独搜索,AI一直在说“我要搜索更多”
* 错误地得出结论:OnPlayHand函数是死代码——“任何地方都没有被调用过”(真实情况是,它的确被调用过,只不过AI无法通过文件逐一查找)
* 无法探测Inspector Button绑定 — 必须手动读取prefab YAML文件
* 部分类文件(13个文件for ManagerBattle,19个文件for BattleCore)使文件逐一查找非常痛苦
有了gdep MCP(1分钟49秒):
* explore_class_semantics即时绘制了ManagerBattle和BattleCore之间的所有文件
* trace_gameplay_flow在一个函数调用中返回了完整的五级调用树 - 从PlayHand到BattleCore管道的四个阶段中的所有阶段
* explain_method_logic给出了结构化控制流程 — guard → 分支 → 循环 → 总是
* find_unity_event_bindings("OnClickPlayingCard") — —instantly找到两个Inspector绑定在battle_bottom_ui.prefab中 — 这些是完全不可见的代码搜索
* 正确的映射了整个数据流:Button Click → ManagerBattle(协调员)→ BattleCore(逻辑引擎)→ BattleLog → UI事件
| 没有gdep | 有gdep MCP |
|---|---|
| 时间 | 3分钟35秒 |
| UnityEvent绑定 | 无法找到(手动读取prefab YAML文件) |
| 部分类 文件 | 痛苦多文件grep |
| 准确度 | 被错误标记为“死代码”的真实事件 |
| 调用树深度 | 手动文件逐一查找 |
没有gdep AI的结果是错误的。它认为一个正在运行的事件是一个死代码,因为AI无法在19个部分类文件中查找到它。有了gdep,在相同时间内的AI得到了正确的答案。
我创建了什么
gdep是CLI + MCP 服务器,是一个全开源工具,它在0.49秒内扫描整个Unity项目,并通过结构化地理解 Unity 的方式给AI助手提供了一个结构化的图谱。
Unity特定的功能
- Prefab / Scene backreferences — 认识哪些prefab/scenes引用了哪些脚本。当你修改HealthManager时,gdep会告诉你哪些prefab会受到影响。
- UnityEvent绑定发现 — 在调试器中无关之find出绑定在Inspector上的永久化UnityEvent调用,这些绑定是完全不可见的代码搜索的。
- Animator状态机分析-解析AnimatorController资产:层、状态、转移、混合树。AI可以理解动画流程而不需要打开Animator窗口。
- 未使用的资产检测 - 扫描.meta文件的GUID与prefab/scene/资产参考的GUID。发现不再被任何脚本引用的脚本。
- 调用路径查找 — “玩家输入.PlayerInput.OnAttack事件如何最终到达DamageCalculator.Apply?” - 找到任何两个方法之间的最短调用链。
- 受影响分析 - 将任何类修改的影响扫描到。直接依赖者、间接依赖者、受影响的资产以及建议的测试文件。
- Unity特定的lint规则:
- GetComponent()/Find()在Update()(UNI-PERF-001)
- new/Istantiate allocation在Update()(UNI-PERF-002)
- Coroutine while(true)没有yield(UNI-ASYNC-001)
- FindObjectOfType/Resources.Load内Coroutine(UNI-ASYNC-002)
- Prefab脚本引用broken .meta GUID(UNI-ASSET-001)
如何使用
# 安装
pip install gdep
npm install -g gdep-mcp # 对卡尔杜/卡塞什的集成
# CLI例子
gdep scan {path} --circular --top 20 # 找到循环依赖和高耦合类
gdep impact {path} HealthManager --depth 5 # 如果我更改这个类,会引起什么变化?
gdep lint {path} # Unity特定的反模式
gdep flow {path} --class CombatManager --method ExecuteAction # 链路
或者通过MCP — 在卡尔杜/卡塞什的配置中添加这个,AI助手就能获得26个游戏感知工具:
{
"mcpServers": {
"gdep": {
"command": "gdep-mcp",
"env": { "PYTHONUTF8": "1" }
}
}
}
还包括一个Web UI,有一个类浏览器(可以展开类继承链、动态图谱、工程健康度图表、一个监听文件变化的自动分析者以及一个AI聊天助手)。
每个结果都具有信心
源码分析 = 高信心。资产/二进制扫描 = 中信心。gdep在每个结果上都放置这个,说明什么时候需要双重检查。无疑不。
这不是
- 不是Unity编辑器替代品。想象一下,在项目上给AI提供一个地图和一个侦察无人机,读取并分析而不是修改资产和场景。
- 不是魔法。即使具有完整的项目地图,AI仍无法做到Everything。gdep帮助AI理解项目的大部分,但将所有任务委托给AI是不恰当的。
- 不是云本地的。100% 本地。没有任何文件离开你的机器。没有账号,没有收集数据。如果你怀疑,那么扫描整个代码base - 说实话,没有什么值得取,我的电脑也不会被拘留。
评论 (0)