← 返回主题列表
✨步子哥
@steper · 2026年05月20日 05:42 · 17浏览

GoDotter 项目全面解析

GoDotter 架构说明

> 本文档描述 godotter 仓库的技术架构、模块边界与数据流。 > 产品定位:面向 Godot 4.3+ 的 AI 原生编辑器插件(「Godot 版 Cursor」)。

---

1. 概述

维度说明
形态Godot EditorPlugin + 本机 Python FastAPI 后端
分发仅需拷贝 addons/GoDotter/ 到任意 Godot 项目的 addons/
AI以 Google Gemini 为主;设置层支持 OpenAI、Claude 及 OpenAI 兼容端点
部署本地优先(默认 127.0.0.1:8765);项目文件留在本机,仅 LLM API 出网
设计原则先规划 → 再 diff → 再执行;默认保守,文件写入需显式授权
根目录 project.godotGoDotter Dev)供贡献者在仓库内开发插件;游戏项目通常只 vendor addons/GoDotter/

---

2. 系统架构

2.1 双层结构

flowchart TB
    subgraph GodotEditor["Godot 编辑器"]
        GP[GoDotter.gd<br/>EditorPlugin]
        FD[ForgeDock<br/>主 UI]
        FS[ForgeState<br/>状态与设置]
        EB[EditorBridge<br/>编辑器上下文]
        AC[AgentClient<br/>HTTP 客户端]
        SM[SafetyManager / DiffManager / DebugVisualizer 等]
        GP --> FD
        FD --> FS
        FD --> EB
        FD --> AC
        FD --> SM
    end

    subgraph LocalBackend["本机 Python 后端"]
        APP[app.py<br/>FastAPI]
        ORCH[task_orchestrator<br/>规划 / 执行]
        RUN[agent_run<br/>完整 Agent 会话]
        IDX[project_indexer<br/>项目索引]
        GEM[gemini_client<br/>LLM 适配]
        TOOLS[code_tools / safety / git_tools]
        APP --> ORCH
        APP --> RUN
        APP --> IDX
        ORCH --> GEM
        RUN --> ORCH
        TOOLS --> APP
    end

    AC -->|HTTP JSON| APP
    EB -->|context_bundle| AC
    GP -->|OS.create_process| APP

2.2 典型请求链路

1. 用户在 Forge Dock 输入目标(自然语言或 /plan/do 等斜杠命令)。 2. EditorBridge 采集当前场景、选中节点、打开脚本、项目根路径等,组装 context bundle。 3. AgentClient 通过 HTTPRequest 异步 POST 到本机后端。 4. 后端结合项目索引、记忆文件、token 策略构建提示词,调用 LLM,返回结构化 JSON(如 Plan)。 5. UI 展示计划、diff、思考 trace;若用户开启文件编辑且通过审批,经双重安全门禁后写盘。

---

3. 目录结构

godotter/
├── project.godot              # 开发用 Godot 工程(启用插件)
├── README.md / INSTALL.md     # 用户与安装文档
├── 架构.md                    # 本文档
├── LICENSE                    # MIT
└── addons/GoDotter/           # ★ 唯一需要分发的目录
    ├── plugin.cfg             # 插件元数据(当前 v0.2.0)
    ├── GoDotter.gd            # EditorPlugin 入口
    ├── core/                  # GDScript 核心逻辑
    ├── ui/                    # Dock、Diff、向导等 UI
    ├── agents/                # 客户端 Schema / Prompt 参考
    ├── icons/
    └── backend/               # Python FastAPI(随插件打包)
        ├── main.py            # uvicorn 入口
        ├── requirements.txt
        ├── .env.example
        └── src/               # 后端实现
            └── tests/         # 单元 / 集成测试

约定:一个 addon 文件夹 = 完整产品(含 Python 后端),无需单独安装 agent 服务。

---

4. Godot 插件层(GDScript)

4.1 入口:GoDotter.gd

职责说明
Dock 挂载动态加载 ui/ForgeDock.gd,避免硬编码 res:// 路径失效
后端进程OS.create_process 启动 backend/main.py,传入 --project-root--host--port--no-reload
端口策略首选 8765;占用时扫描最多 64 个端口,并写回项目 Settings
日志捕获GoDotterEditorLogger + GoDotterDebuggerHookLogCollector(支撑 /fixlogs
编辑器信号选择变化、场景切换、文件系统变化 → 刷新 Dock 上下文

4.2 状态:ForgeState.gd

设置分为两类,均存于 EditorSettings,但语义不同:

类型键前缀典型字段
机器级godotter/machine/backend_dirbackend_pythonprovider_api_keysautostart_backend
项目级godotter/project/(按项目路径)modelai_settingsapproval_modeenable_file_edits
运行时状态(不持久化):backend_onlineproject_indexlast_planactive_task_id 等。

默认安全enable_file_edits = falseapproval_mode = "review"

4.3 主 UI:ForgeDock.gd

Tab功能
Chat多模式、多会话、图片附件、思考 trace、计划审批模式
Plan结构化计划、步骤勾选、可选自动审批倒计时
Inspect场景 / 节点摘要
Diff变更预览、按文件 revert
Memory.godot_forge/memory/ 下 Markdown
Settings后端 URL、Provider/模型、MCP 探测、文件编辑开关
聊天模式(无需记斜杠命令):Full agent、Plan、Execute、Scene、Node、Index、Memory、Fix logs、Visual map、Help。

4.4 核心模块一览

模块职责
AgentClient.gd与后端 REST 通信;长请求自适应超时与重试
EditorBridge.gd构建发往后端的 context bundle
ProjectScanner / SceneScanner / ScriptScanner / ResourceScanner本地项目扫描
TaskQueue.gd任务队列与状态机
DiffManager.gddiff 展示与回滚协调
DebugVisualizer.gdNeon Visual Map(节点着色 + 视口截图)
ScreenshotCapture.gd编辑器视口截图
LogCollector.gd聚合 Output / 调试器日志
ValidationRunner.gd / TestRunner.gd验证与测试钩子
MemoryIndex.gd记忆文件索引
SafetyManager.gd客户端路径与操作门禁
SetupWizard.gd首次运行向导(Python / venv / API key)

4.5 客户端 Schema:agents/

  • AgentSchemas.gd:与后端 schemas.py 对齐的 Plan 等结构校验与文档化 schema。
  • AgentPrompts.gd:提示词片段(供 UI 或文档参考)。
---

5. Python 后端层

5.1 技术栈

  • FastAPI + uvicorn
  • google-genaihttpxPydantic v2Pillowpython-dotenv
入口:backend/main.pyuvicorn.run("src.app:app", ...)

5.2 HTTP API 概览

类别方法路径说明
健康GET/health状态与 API key 检测
AIGET/ai/capabilities模型能力
AIPOST/ai/test_model_settings测试模型配置
项目POST/project/index扫描并索引项目
项目POST/project/context按查询检索相关上下文
AgentPOST/agent/planArchitect:生成结构化 Plan
AgentPOST/agent/executeCode Agent:执行计划写文件
AgentPOST/agent/run完整会话:plan → 校验 →(可选)execute
视觉POST/agent/visual_mapNeon 2D 空间分析
视觉POST/agent/visual_review_3d3D 资产多角度审查
日志POST/agent/fix_from_logs从运行日志生成修复计划
工具POST/tools/read_file安全读文件
工具POST/tools/write_file安全写文件(含备份)
工具POST/tools/revert_file从备份恢复
GitGET/tools/git_statusGit 状态
记忆GET/memory读取项目记忆 Markdown
部分路由(如 /agent/validate/tasks/*)为内部或演进接口,include_in_schema=False

详细列表见 addons/GoDotter/backend/README.md

5.3 核心模块

模块职责
app.pyFastAPI 应用、生命周期、路由注册、配置加载
task_orchestrator.pyArchitect 提示词与 build_plan / execute_plan
agent_run.py单次 HTTP 内的 plan → validate → execute 闭环
project_indexer.py场景/脚本索引与紧凑上下文
context_engine.py合并插件 hints、记忆、索引片段
gemini_client.py多 Provider LLM 调用
ai_model_settings.pyGemini / OpenAI / Claude 预设解析
code_tools.py / file_tools.py读写、diff、备份
safety.py路径必须在项目内;禁止敏感路径
validators.py计划路径校验、GDScript/.tscn 启发式
visual_map.py截图 + 节点空间图 + AI 分析
asset3d_review.py3D 多角度审查
memory_store.py.godot_forge/memory/
log_aggregator.py日志聚合与 fix 计划
token_policy.py上下文 token 预算
context_images.py聊天图片注入上下文
git_tools.py状态与 checkpoint
godot_cli.py无头 Godot 脚本检查等

5.4 规划数据模型(Plan)

Architect Agent 返回 JSON,主要字段:

字段类型说明
summarystring变更摘要
relevant_files / relevant_scenesstring[]涉及资源(须来自索引,禁止臆造路径)
assumptions / risksstring[]假设与风险
stepsobject[]步骤:descriptionfiles_affectedrisk_level
validation_planstring[]验证清单(含编辑器内运行场景等)
approval_requiredbool是否需人工批准
客户端 AgentSchemas.gd 与后端 schemas.py(Pydantic)保持镜像。

---

6. 安全与信任模型

6.1 双层门禁

用户 Settings(ForgeState)
  ├─ enable_file_edits      (默认 false)
  ├─ enable_scene_edits
  ├─ approval_mode        review | assisted | autopilot | yolo
  └─ max_files_per_run / max_lines_per_file

        ↓

SafetyManager.gd(编辑器)     safety.py(后端)
  ├─ 禁止:addons/、.godot/、project.godot、.import 等
  ├─ 危险操作黑名单(删库、改分支、shell 等)
  └─ review:所有编辑需 UI 批准

        ↓

write_file → 备份 → 可选 git checkpoint → Diff 面板 revert

6.2 设计立场

  • 默认只读 AI:规划、解释、可视化,不自动改盘。
  • 用户是创意总监:插件是带项目上下文的助手,非仓库所有者。
  • 密钥不入库.env.godotter_api_key*config.json 均在 .gitignore
---

7. 特色工作流

7.1 Neon Visual Map

1. DebugVisualizer 按节点类型为场景树着色。 2. ScreenshotCapture 截取编辑器视口。 3. 后端 visual_map 将图像 + 节点空间映射送 LLM,回答布局、重叠、层级等问题。

7.2 Fix from logs

  • 实时:GoDotterEditorLogger + GoDotterDebuggerHookLogCollector
  • 后端 log_aggregator + /agent/fix_from_logs 生成批量修复计划。

7.3 项目记忆

  • 路径:.godot_forge/memory/(已 gitignore)。
  • 用途:架构约定、代码风格、已知 bug 等 Markdown,由 memory_store 注入规划上下文。

7.4 聊天图片

  • UI:ChatImageLineEdit(文件选择、拖放、剪贴板)。
  • 传输:Base64 经 context_images 进入 plan / execute / agent_run。
---

8. 配置与密钥

来源说明
编辑器 Settings同步到 backend/.godotter_api_key.godotter_api_keys.json
环境变量GEMINI_API_KEYGOOGLE_API_KEYOPENAI_API_KEYANTHROPIC_API_KEYOPENAI_BASE_URL
backend/.envCLI/测试;shell 变量优先于 .envmain.pyoverride=False
backend/config.jsonconfig.example.json 复制,可覆盖 model、port 等(gitignore)
插件启动后端时自动传入 --project-root(当前 Godot 项目绝对路径)。

---

9. 本地生成数据(gitignore)

路径内容
.godot/Godot 编辑器缓存
.godot_forge/索引、聊天会话、记忆、运行日志等
backend/.venv/Python 虚拟环境
backend/config.json.godotter_api_key*本地配置与密钥
---

10. 开发与验证

检查项方式
GDScriptgodot --headless --path --check-only
Python 单元测试cd addons/GoDotter/backend && python -m unittest discover -s tests -v
规划集成测试tests/test_plan_towers_integration.py(需 GEMINI_API_KEY,否则 skip)
版本:插件与后端均为 0.2.0;开发工程标注 Godot 4.6,插件兼容 4.3+

---

11. 扩展与边界

11.1 当前明确非目标

  • 不替代学习 Godot 引擎本身。
  • 非托管 SaaS(后端须本机运行)。
  • 非与 Cursor 功能对等的通用 IDE(领域约束为游戏 / Godot)。

11.2 演进中的能力

  • MCP 设置(ForgeStatemcp_settings,探测 Godot MCP 等)。
  • 部分 /agent/*/tasks/* 路由为内部或实验性接口。
  • 3D 资产审查、截图对比等持续迭代。

11.3 推荐扩展点

层级扩展方式
新斜杠命令 / 聊天模式ForgeDock.gd 路由 + 对应后端端点
新工具app.py 注册 + code_tools / 新模块 + SafetyManager / safety.py 规则
新 LLM Providergemini_client.pyai_model_settings.py、Settings UI
上下文来源EditorBridgeproject_indexermemory_store
---

12. 依赖关系总览

用户 Godot 游戏项目
  └── addons/GoDotter/
        ├── GDScript:感知编辑器 + UI + 人类审批 + HTTP 客户端
        └── backend/:索引 + LLM + 受控文件工具 + 视觉/日志分析
              └── 外网依赖:仅各 Provider 的 API

---

13. 相关文档

---

*文档随仓库代码演进;若与实现不一致,以 addons/GoDotter/ 内源码为准。*

👍 1
💬 讨论回复 (0)
推荐

🌟 智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

🎁 领取 2000万 Tokens