Godot AI 使用文档与踩坑记录
Godot AI 是一个开源的 Godot 编辑器插件,它把正在运行的 Godot 编辑器接入 MCP,让 Claude Code、Claude 桌面版、Codex、Cursor 这类 AI 客户端可以直接建场景、改节点、写脚本、连信号、运行游戏。我的五子棋、十点半、大富翁都是用它加 Claude Code 做的。
这篇是我自己的使用笔记,前半部分是用法,后半部分是实际踩过的坑。插件更新很快,具体细节以官方 README 为准。
它是怎么工作的
AI 客户端(Claude Code 等)
→ godot-ai attach(stdio,客户端自己拉起)
→ Python 后端(本机 HTTP,默认端口 8000)
→ Godot 编辑器插件(本机 WebSocket,默认端口 9500)
几点要先搞清楚,后面排错全靠它:
- 插件版本和 Godot 版本是两回事。 插件也叫 v4.x,很容易跟 Godot 4.x 搞混。v4 插件要求 Godot 4.7 及以上。
- 后端是 Python,用
uvx临时下载运行,所以电脑上必须装 uv。 - 两段连接都只走本机(127.0.0.1),而且带轮换的认证。所以客户端配置不能手写成一个
http://127.0.0.1:8000/mcp地址,必须用插件生成的那条godot-ai attach命令。 - GDScript 完全支持;C# 只能写文件,不会帮你编译、也不报编译错误。
安装
新项目
- 装好 uv(Windows 用官方安装命令,不要用来路不明的“懒人包”)。
- 从 GitHub Releases 下载发布包,不要直接下载仓库源码。
- 放到
你的项目/addons/godot_ai/,确认plugin.cfg就在这个目录里,而不是在addons/plugin.cfg。 - Godot 里打开 项目 → 项目设置 → 插件,勾选 Godot AI。右侧会出现 Godot AI 面板。
已经装过的项目
在 Godot AI 面板里点 Update。不要把新版本解压覆盖到旧的 addons/godot_ai 上,原因见后面“插件更新/迁移”一节。
小技巧:做一个模板项目
我把一个装好插件、写好通用 CLAUDE.md(用 GDScript、注释用中文、先讲方案再写代码)的空项目存成模板。以后开新游戏就复制整个文件夹、改名,在项目管理器里点 导入,再到 项目设置 → 应用 → 配置 → 名称 改成新名字。
连接 AI 客户端
- 在 Godot AI 面板里,找到要用的客户端,点它那行的 Configure(或者 Configure all)。
- 完全重启客户端:
- Claude Code:退出后在项目根目录重新运行
claude。 - Claude 桌面版:不只是关窗口,要在任务栏托盘图标上右键退出,再重新打开。
- Claude Code:退出后在项目根目录重新运行
- 确认连上了:
- Claude Code:输入
/mcp,看 godot-ai 是否为 connected。 - Claude 桌面版:看 设置 → 开发者(不是“连接器”页面),godot-ai 显示 running 就成功。
- Claude Code:输入
几条容易忽略的规则:
- 生成的命令很长(pythonw 包一层 uvx 再调 godot-ai),不要手动“简化”它。Windows 上 pythonw 那层是必需的。
- 改了端口、遥测设置或工具范围之后,要重新点一次 Configure。
- Claude Code 默认写入全局(user)配置。想按项目配置,在 编辑器设置 → Plugins →
godot_ai/mcp_client_scope改成project,再点 Configure。注意 Configure 会先删掉其他范围里的 godot-ai 条目,可能改到你提交过的.mcp.json。 - 最好从项目目录启动 Godot 和 Claude Code。Claude Code 第一次在项目里用项目级配置,还需要在项目里运行
claude批准一次。
日常用法
在 Claude Code 里直接用中文说需求,它会自己调用 Godot 的工具。先试几个简单的确认能用:
看一下当前场景里有哪些节点
在 /Main 下面建一个叫 MainCamera 的 Camera3D
然后再做正经的东西。我总结的几个习惯:
- 先让它用中文讲方案,确认后再写代码。 能避免它跑偏、白白浪费 token。
- 开发文档放进项目文件夹(比如
docs/设计文档.md),用@docs/设计文档.md引用,不要整段粘贴。长期要遵守的规则写进CLAUDE.md,它每次启动都会自动读。 - Godot 编辑器要一直开着这个项目,插件服务跟着编辑器跑。
- 从项目根目录启动
claude,不要在scripts之类的子文件夹里启动,否则它看不到整个项目和CLAUDE.md。 - 手感还得自己试。 AI 能自己运行游戏、截图检查,但像素级对齐、动画手感这些,还是自己按 F5 玩一下,再给具体反馈(比如“粒子出现在棋盘左侧,应该在落子位置”)。
- 开工前先 git 初始化并提交一次,改坏了能回退。
踩坑记录
1. Claude 桌面版显示 “Server disconnected”
现象: Claude 桌面版里的 godot-ai 一直是 Server disconnected。
排查: 在 设置 → 开发者 里点 查看日志。我的日志里每次启动都报:
godot-ai attach [PORT_OCCUPIED]: Port 8001 is occupied by a process the bridge cannot adopt
意思是端口被别的东西占着,attach 桥既不能复用它,也起不了自己的后端,只能退出。
原因: 出问题那天我刚装了 WSL 和 Docker。装了 WSL、Docker 或 Hyper-V 之后,Windows 会随机保留一批端口给虚拟网络用。被保留的端口在 netstat 里看不到任何程序在监听,但谁都绑不上。
解决:
-
先看是不是真有程序占着:
netstat -ano | findstr :8001 tasklist /fi "pid eq 这里填PID"如果是残留的
python.exe、pythonw.exe或godot-ai.exe,关掉 Godot 和 Claude,再taskkill /pid PID /f。 -
netstat什么都没有,就看是不是被系统保留了:netsh interface ipv4 show excludedportrange protocol=tcp如果 8001 落在某个保留段里,换一对不在保留段里的端口(比如 8765/8766):在 编辑器设置 → Plugins → godot_ai 里改端口,然后在面板里重新点 Configure,再彻底退出并重开 Claude。
也可以用管理员身份运行
net stop winnat和net start winnat让系统重新分配,但保留段每次重启都可能变,换端口更省心。
其他可能原因: Windows 上 uvx 安装 pywin32 失败;第一次从 PyPI 下载太慢导致超时。通用处理方法都是:关掉 Godot 和客户端,结束残留的 Python 进程,重开 Godot,点 Configure,再开客户端。
2. 插件更新/迁移被拦下:“An open scene or resource references addon script…”
现象: 在面板里点更新,提示:
An open scene or resource references addon script res://addons/godot_ai/migration_bridge.gd.
In-editor activation would change its saved script path. Close the scene or resource
before retrying; the update was not installed.
意思是:有一个打开着的场景或资源引用了插件的 migration_bridge.gd,这时激活新版会改掉它保存的脚本路径,所以更新没装。
处理顺序:
- 关掉所有场景标签页,再点 Retry migration。
- 还不行,去 脚本 工作区,用 文件 → 全部关闭 关掉所有打开的脚本。脚本编辑器里开着的文件也算“打开的资源”。
- 再不行,项目 → 重新加载当前项目。重开后先别打开任何场景或脚本,直接点 Retry migration。
不要做的事:
- 不要把新版解压覆盖到旧的
addons/godot_ai上。 官方迁移是“校验新版文件 → 准备一份全新目录 → 整个替换旧目录,旧目录移到项目外的恢复位置”,新旧版本的文件从不混在一起。手动覆盖会把两个版本混在一起。 - 不要为了“强制推进”去删
.godot里的迁移记录、插件目录或恢复目录。 迁移是有记录的,重开项目时由这些记录决定是继续、回滚还是停住。 - 如果提示需要修复(repair required),关掉 Godot,保留完整的报错和那些目录,带着报错里的原始路径去 GitHub Issues 或 Discord 提问。
迁移前最好先 git 提交一次。Godot 4.5/4.6 只能看到“需要 Godot 4.7”的提示,先升级 Godot 再点 Retry migration。
3. 复制插件到新项目后报 Parse error
现象: Failed to load script "res://addons/godot_ai/utils/release_verifier.gd" with error "Parse error"。
原因: 多半是插件刚复制进来或刚更新,Godot 还没扫描完所有文件,插件脚本互相引用时误报;也可能是 Godot 开着时复制,文件没复制完整。
解决: 先 项目 → 重新加载当前项目,一般就好了。不行的话,关掉 Godot 重新完整复制一份插件。
现在回头看,新项目更规范的做法是从 Release 包安装,而不是从旧项目复制插件文件夹。另外,如果插件正在迁移中,不要去删
.godot(见上一条)。
4. 插件被 .gitignore 排除后,别的电脑打不开项目
现象: 项目里把 addons/godot_ai 加进了 .gitignore,但 project.godot 是提交的。
问题: 插件可能会往 project.godot 里注册东西(比如 [autoload] 下的 _mcp_game_helper,或者 [editor_plugins] 里的启用项)。换台电脑拉代码时插件不在,autoload 指向的文件找不到,项目就会报错;导出的安装包里也可能带上这个调试辅助脚本。
检查方法:
- 快速看:用记事本打开
project.godot,搜godot_ai和_mcp_game_helper。出现在[autoload]下就有问题;只在[editor_plugins]下问题不大,只是没装插件时编辑器提示一下。 - 实际验证:
git clone 项目目录 项目目录_check,克隆出的副本没有插件,用 Godot 导入打开、按 F5 跑一下,看有没有相关报错。检查完在项目管理器里移除它,再删掉文件夹。
解决: 让 Claude Code 改成“没装插件的副本也能正常打开运行,导出包里不包含插件和它的辅助脚本”。
5. 用 DeepSeek 跑 Claude Code 时报 422
这个不是插件本身的问题,但装了 Godot AI 后工具变多,很容易遇到。
Invalid schema for function 'Artifact': DeepSeek 的兼容接口不认 Claude Code 某些内置工具的参数格式。启动时禁掉它:claude --disallowedTools Artifact,报别的工具名就一起加上。- 会话前半段是 Claude 做的,切到 DeepSeek 后一直 422: 聊天记录里已经混进了 DeepSeek 不认的格式。开新会话(
/clear),用进度文件交接,不要让 DeepSeek 接着 Claude 做了一半的会话。 - 在 DeepSeek 下也先
/mcp看看 godot-ai 连没连上,再给个只读的小任务试一下工具调用。 - Godot 编辑器的操作最好只让一个窗口做,两个窗口同时操作编辑器、同时改同一个文件,容易互相覆盖。
一张速查表
| 现象 | 先做什么 |
|---|---|
| 插件列表里没有 Godot AI | 确认 plugin.cfg 在 addons/godot_ai/ 里 |
| 客户端看不到工具 | 重新 Configure,再彻底重启客户端 |
| Server disconnected | 看日志;端口被占或被保留就换端口 |
| 更新提示有场景/资源引用插件脚本 | 关场景、关脚本,重新加载项目,Retry migration |
| 插件脚本 Parse error | 重新加载项目 |
| 别的电脑打不开项目 | 查 project.godot 里的 autoload |
| DeepSeek 422 | 禁掉不兼容的工具,开新会话 |