🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Godot 桥接 Smalldy/godot-bridge

DeepSeek Harnessv0.0.4-alpha
Smalldy1 天前有提交已提供中文文档扫描:未发现敏感能力

原生 DeepSeek Harness DSH 插件:通过游戏内置的 TCP 交互服务器,启动并操控运行中的…

50.4/100
综合分
47
GitHub 星标
51
npm 周下载
—/5
用户评分

数据截至 2026/11/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add godot-bridge
npm 源 · godot-bridge 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · tool
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包godot-bridge @ 0.0.4-alpha
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 02:39:48

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 启动运行中游戏
  • 操控游戏进程
  • 替代MCP服务器
v0.2.12026-10-24
本地调试器下的 eval 死锁(issue #13)修复:godot_run_project 默认不再带 -d,godot_command eval 恢复正常;debug: true 变成明确的诊断模式,脚本错误会带着栈信息结束该次运行,而不是把进程钉死在 debug> 上。 · 修复 · 本地调试器下的 eval 死锁(issue #13):godot_run_project 默认不再带 -d,godot_command eval 正常编译用户代码;语法错误仍会在捕获输出里给出错误与文件:行号。debug:true 明确为诊断模式:实例带本地调试器运行,交互服务器依据桥注入的 GODOT_BRIDGE_DEBUGGER=1 环境变量判定(仅靠 OS.get_cmdline_args() 不可行——Godot 会先消费 -d,4.7.2 实测),并在 reload() 之前拒绝 eval 并给出 next;桥保留 stdin 管道,检测到 debug>/Debugger Break 时只写一次 quit(绝不 continue),3 秒未退再终止自己启动的实例。退出结果按退出码而非速度分类:0 → debugger-quit;非 0 → debugger-trap + exitCode/crash;3 秒未退 → debugger-trap + killed;三者都带 debuggerTrace(break 原因、*Frame N 的 file:line、≤4KB 尾部)。如实记录:在 4.7.2-stable win64 上写 quit 约 38ms 后以 3221225477(0xC0000005,访问违例) 退出并打印 C++ 回溯,因此那次运行判为崩溃陷阱而非优雅退出。实测基线(最小工程 + 语法错误脚本):无 -d 约 372ms 退出并输出 SCRIPT ERROR … at: GDScript::reload;带 -d 且 stdin 为 EOF 时 3 秒内打印 12089 行 break/prompt(1.78 MB,约 590 KB/s)必须强杀(issue #13 的死循环);带 -d 且 stdin 为管道时只有一次 break/prompt(2.4 KB),因为调试器在等输入。 · 诊断守卫的纠正:第一版从 OS.get_cmdline_args() 里找 -d,真机上是死代码(eval 仍会进入 debug>)。现在由桥在启动时注入 GODOT_BRIDGE_DEBUGGER=1,服务端读取它(is_local_debugger(args, debugger_flag)),argv 只作兜底;仍漏网的陷阱会以 diagnosis: "debugger-trap" + debuggerTrace 返回,而不是一个光秃秃的超时。回归测试:scripts/test/eval-guard.test.mjs(自包含)与 scripts/test/eval_guard.gd(godot_run_headless --script)。 · godot_command 超时返回 bridge timeout / diagnosis: unresponsive / next;godot_ping 在“端口连上但不应答”时报 responsive: false,不再误报 game_running: false;user://logs/godot.log 过大时告警(不删除用户文件)。 安装/升级:dsh plugin --profile web add github:Smalldy/godot-bridge,或 update godot-bridge 后重启 DSH。
v0.2.02026-10-01
插件页的 godot-bridge 卡片上现在直接有 Godot engine path 字段,godotPath 终于可以在 GUI 里改;静态契约检查同时覆盖新增的浏览器半侧。 · 新增 · 插件页配置区:本组合包自带浏览器半侧(client/client.js,manifest 里由 dsh.client 声明),以包名为键注册 keyed slot plugins.bundle.config,因此打开 godot-bridge 卡片即可填写引擎路径,带保存与针对本 profile 覆盖值的恢复默认。保存写进本 profile cordis.patch.yml 的 tool-godot-bridge 行——与 godot_set_engine_path 同一处,改完无需重启;字段、工具、手写 config: 块是同一个值的三种视角。 · npm run check 现在同时校验浏览器半侧:dsh.client 的合法成员与 platform: 'web'、exports["./client"] 目标存在且被 files 覆盖、window.__ModuleLoader__.load({ id }) 的 id 等于包名、slots 服务声明、每个 require() 说明符是否落在 web 客户端平台种子模块表或 dsh.client.external 内、plugins.bundle.config 的键是否等于包名、plugins.row.config 的键是否指向本包 patch 声明的行。slot 键与模块请求只从代码读,注释不能充当通过条件。 · 变更 · 0.1.6–0.1.x 维持原有行为:那边已声明这些 slot,但没有可读该值的设置表单服务,因此浏览器半侧不注册(仍用 godot_set_engine_path 或 settings.yaml)。比 0.1.0-rc.7 更早、不扫描 dsh.client 的运行时忽略这个 manifest 成员。 · 安装与文档表述校准:改 package.json(dsh.client / exports / files)后必须重启 DSH,客户端模块扫描按 Loader 行缓存到重启为止;只改 client/client.js 则由宿主按产物文件轮询热换。tarball 安装示例的版本号随之更新。 生效条件:dsh plugin --profile add github:Smalldy/godot-bridge 装好后重启 DSH。本版关闭 #9。
v0.1.82026-10-01
以 link: 安装时,插件在 DSH 0.2.x 上完全无法加载——17 个 godot_* 工具一个都不注册。本版修复该问题,并把插件配置模型迁移到 0.2 的方向。 · 修复 · link: 安装无法加载:launcher 的 runtime resolution 只对「linked 包在自己 peerDependencies 里声明过的名字」把 @deepseek-ai/* 路由到安装版(读 peerDependencies 键,不读 dependencies),而本插件一个都没声明——import '@deepseek-ai/dsh-tools' 报 ERR_MODULE_NOT_FOUND。现在声明 @deepseek-ai/dsh-tools 与 @deepseek-ai/schemastery(均 peerDependenciesMeta.optional)。 · godotPath 不再消失:@deepseek-ai/dsh-settings 移除了 register,此前 settings 段只静默降级成一条告警。 · 升级前配置过的引擎路径自动带过来:不再静默回落到 PATH 上的 godot(通常是版本管理器 shim,即与配置不同的构建)。 · 变更 · godotPath 改为 .volatile() Config 字段;写入经 ctx.configEditor.edit(...) 落进 active profile 的 cordis.patch.yml 并热重组——无需重启。 · godot_set_engine_path 写前校验目标存在,并回报 persisted: 'profile-patch'(0.2.x)或 'settings'(旧路径)。 · 0.1.6–0.1.x 继续支持(@deepseek-ai/dsh-tools 范围 >=0.1.6-0)。 · settings.yaml 迁移:0.2 按插件 entry id 导入遗留段,而本插件的行 id 是 tool-godot-bridge,段名却是 godot-bridge,所以不会被带过来。现在行内 godotPath 为空时,插件会把旧段记录的值经同一条 profile-patch 路径写回。已配置的值永不覆盖;磁盘上已不存在的路径会被忽略(保留 PATH 兜底与告警);每会话只尝试一次、失败可容忍。 · 新增 · npm run check —— 零依赖静态契约检查,防止同类 import/声明漂移再次发生。 · scripts/diagnose-dsh-resolution.mjs —— 可重跑的 launcher 解析诊断(仅开发用,不随包发布)。 · 已知限制 godotPath 在 DSH 0.2 上没有 GUI 表单项:插件页只为自带客户端组件(注册 keyed slot plugins.row.config)的插件渲染行表单,本包没有客户端入口。Host 侧正常,用 godot_set_engine_path 或该行的 config: 块设置即可。补客户端组件跟踪于 #9。 · 生效条件 插件改动只在 profile 重新组合后生效:在插件页重载 profile,或重启 DSH。link: 安装无需重装;非符号链接安装需重新 add 一次。 完整对比见 CHANGELOG。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
godot-bridge Awesome DSH Plugin Listed on DSH Directory 原生 DeepSeek Harness (DSH) 插件:通过游戏内置的 TCP 交互服务器,启动并操控运行中的 Godot 4.x 游戏——以原生 Agent 工具取代 godot-mcp MCP 服务器。 无需 MCP 协议、无需 Python 服务器、无需编辑器插件。游戏侧零改动:McpInteractionServer(mcp_interaction_server.gd autoload)本就在 127.0.0.1:9090 监听,采用换行分隔的 JSON 协议——godot-bridge 在 DSH host 内部原生使用同一种协议。 工具 | 工具 | 取代 (godot-mcp) | 用途 | | godot_run_project | run_project | 以调试模式启动项目(godot -d --path …
展开完整文档(README 剩余 1 节)
godot-bridge

Awesome DSH Plugin
Listed on DSH Directory

原生 DeepSeek Harness (DSH) 插件:通过游戏内置的 TCP 交互服务器,启动并操控运行中的 Godot 4.x 游戏——以原生 Agent 工具取代 godot-mcp MCP 服务器。

无需 MCP 协议、无需 Python 服务器、无需编辑器插件。游戏侧零改动:McpInteractionServer(mcp_interaction_server.gd autoload)本就在 127.0.0.1:9090 监听,采用换行分隔的 JSON 协议——godot-bridge 在 DSH host 内部原生使用同一种协议。

工具

| 工具 | 取代 (godot-mcp) | 用途 |
| godot_run_project | run_project | 以调试模式启动项目(godot -d --path …),等待 9090 就绪 |
| godot_stop_project | stop_project | 终止游戏进程(tree-scoped kill) |
| godot_get_debug_output | get_debug_output | 增量读取已启动进程的 stdout/stderr |
| godot_command | 全部 game_(约 105 个) | 发送任意交互服务器命令:get_scene_tree、get_ui_elements、eval、get/set_property、call_method、click、key_press、screenshot、raycast、serialize_state、ui_…… |
| godot_screenshot | game_screenshot | 视口截图(base64 PNG) |
| godot_ping | — | 探测游戏是否在 9090 应答(并报告已装/最新插件版本) |
| godot_set_engine_path | — | 把 Godot 引擎可执行文件路径写入插件配置(模型向用户索要路径后据此保存,热重载——DSH 0.2.x 上返回 persisted: 'profile-patch',旧路径返回 'settings') |
| godot_headless_op | read_scene、modify_scene_node、remove_scene_node、attach_script、create_resource、save_scene、create_scene、add_node、get_uid、manage_scene_signals…… | headless 静态操作(godot --headless --script godot_operations.gd):16 个操作,无需运行游戏 |
| godot_run_headless | — | 非交互地有界运行项目、场景或测试脚本(godot --headless --path … [--quit-after N] [--script …]),经不受沙箱约束的 subprocess 服务启动;返回 stdout/stderr,并在命中时给出 sandbox-crash 诊断 |
| godot_validate_script | validate_script | headless GDScript 编译检查(validate_script.gd)→ {valid, errors} |
| godot_set_project_setting | modify_project_settings、set_main_scene、manage_layers、manage_plugins、manage_translations | 在任意 project.godot 段设置类型化键值(PackedStringArray(...) / Vector2i(...) / bool 等) |
| godot_manage_autoloads | manage_autoloads | 列出/增删 autoload 单例(Name="res://…") |
| godot_manage_input_map | manage_input_map | 列出/增删输入动作——正确的 Godot 4 键码(修复 godot-mcp 的 Godot 3 基线 bug) |
| godot_manage_export_presets | manage_export_presets | 列出/增删导出预设(export_presets.cfg) |
| godot_create_script | create_script | GDScript 模板(extends / class_name / 方法桩 / 自定义源码) |
| godot_create_project | create_project / create_csharp_script | 项目脚手架,可选 Godot .NET .csproj |
| godot_export_project | export_project | headless 导出(--export-release / --export-debug <预设> <输出>) |

其余 godot-mcp 工具是在 MCP 服务器自己的 Node 进程里实现的:纯文件/编辑器操作由 DSH 原生文件工具覆盖;少数几个带 Godot 特有写逻辑(manage_input_map、manage_export_presets、modify_project_settings、项目/脚本模板生成等),通用编辑只能配合格式知识替代——完整对照见 COVERAGE.md。

工作原理

DSH 会话 └─ godot-bridge(Host 插件) ├─ godot_run_project ──────► subprocess.spawn(Godot -d --path <project>) ├─ godot_get_debug_output ─► collect 模式输出(增量 offset) └─ godot_command / godot_screenshot / godot_ping └─ subprocess.spawn(node -e <bridge> <command> <paramsJson>) └─ TCP 127.0.0.1:9090 ◄── 游戏内 McpInteractionServer autoload

- 游戏内协议({command, params, id} + 换行)与 godot-mcp 完全一致,游戏侧与既有工作流无需任何改动。
- 每条命令拉起一个一次性 node -e 桥:连接 → 发一行 → 打印第一行响应 → 退出。游戏服务器是单连接/单命令(_busy),短连接模型完美匹配。
- 通过 harness 的原始 subprocess 服务启动(而非受沙箱限制的 shell 执行器),Godot 得以正常写 user:// 文件,不会被 DSH 文件沙箱杀掉(见"坑")。

环境要求

- DeepSeek Harness(带 host 运行时的会话)
- 注册了 McpInteractionServer autoload 的 Godot 4.x 项目。若项目还没有,把 plugin/mcp_interaction_server.gd 复制到项目根,并以 McpInteractionServer 命名注册为 autoload(godot-mcp 项目已具备)。godot_run_project 也会在缺失时自动安装(把随包文件复制进 autoload/ 并在 project.godot 注册)——无需手动处理;非 Godot 项目完全不受影响。
- node 在 PATH 中
- Godot 可执行文件——按此顺序解析:每次调用的 godot_path 参数 → godotPath 插件设置(tool-godot-bridge 行的配置:DSH 0.2.x 上是 godot-bridge 卡片页上的 Godot engine path 字段或 godot_set_engine_path 工具,0.1.x 上是插件 settings 段)→ PATH 上的 godot 命令。godot 已在 PATH 时无需任何配置;否则填你的引擎路径(插件作者不预设路径——Godot 是便携 exe,可能位于任意位置)。务必用真实 exe 完整路径,不要用版本管理器的 shim(见"坑")

安装

推荐——一条命令(需要 dsh CLI):

dsh plugin --profile web add github:Smalldy/godot-bridge

dsh plugin 是 pnpm 转发器:把包装进 profile 的 node_modules,并因包内声明 dsh.bundle(其 cordis.patch.yml 插入 tool-godot-bridge 行)而把它追加进该 profile 的 dsh.profile.bundles 层列表。web 就是 Web 应用启动所用的标准 profile——这条命令只是把工具加进标准模式,不会新建任何 profile。重启后该 profile 的所有会话都有 17 个 godot_ 工具。已收录于 awesome-dsh-plugin 社区清单(topic:dsh-plugin)。

同一命令也可安装本地 checkout 或 tarball(dsh plugin --profile web add ./path/to/godot-bridge)。

插件是标准 DSH bundle 模块:import { defineTool } from '@deepseek-ai/dsh-tools' 并经 ctx.tools.register 注册。它必须通过上面的 bundle 机制安装。DSH 通过 launcher 的 runtime resolution 从自己的安装里提供 @deepseek-ai/:装进 profile 的包会自动解析;而 link:/符号链接的 checkout 只有在插件自己的 peerDependencies 里声明了这些包名时才会被路由(godot-bridge ≥ 0.1.8 已声明——见 DSH 0.2+ 兼容性与故障排查)。不要把文件复制进用户 agent 预设(~/.dsh/.agent-presets/...);那个位置不在任何解析范围内,解析不到 @deepseek-ai/dsh-tools。

移除

dsh plugin --profile web remove godot-bridge

从 profile 中删除该包及其 godot-bridge bundle 层——重启后该 profile 的会话不再有 17 个 godot_ 工具。标准 web profile 本身不受影响(这条命令从不创建或删除 profile)。先 godot_stop_project 停掉运行中的游戏;插件卸载清理也会终止它启动的 Godot 子进程。任何时候可用上面的 add 命令重新安装。

DSH 0.2+ 兼容性与故障排查

DSH 0.2 用进程内的 runtime resolution 取代了旧的物理 module-fallback 层:launcher 把它装进 Node 的 ESM 与 CommonJS 解析器。解析器会针对「哪个模块在 import」决定是否把裸 @deepseek-ai/ 说明符路由到安装版自己的副本——这正是依赖 harness 包的插件能否加载的前提:

- 装在 profile 内(dsh plugin add github:…、tarball,或任何位于 $DSH_HOME/profiles/<name>/node_modules 下的副本):harness 包自动从安装版解析,无需任何声明。
- 以 link: 安装(符号链接指向本地 checkout):插件真实路径落在 profiles 树之外,而 Node 的 ESM loader 会先 realpath 再 import。这种 linked root* 只有在插件自己的 peerDependencies 里声明了该包名时才会被路由——解析器读的是 peerDependencies 的键,不是 dependencies。godot-bridge ≥ 0.1.8 声明了 @deepseek-ai/dsh-tools 与 @deepseek-ai/schemastery,并标记 optional,避免 pnpm 去 registry 安装 harness 包。

症状

| 症状 | 含义 | 处理 |
| 17 个 godot_ 工具全部消失,launcher 日志出现 ERR_MODULE_NOT_FOUND: Cannot find package '@deepseek-ai/dsh-tools' imported from …/godot-bridge.mjs | harness 包没有被路由到安装版副本。对 link: 安装而言就是 peerDependencies 缺声明(0.1.7 及更早的失效方式) | 升级到 godot-bridge ≥ 0.1.8;或改用非符号链接安装(dsh plugin … add ./godot-bridge-<版本>.tgz) |
| launcher 打印 dsh: skipping profile bundle "godot-bridge": …,插件页显示错误 | 声明的 DSH peer 范围与当前运行时版本不匹配。未声明 peer 不构成约束,因此不会产生这条信息 | 升级插件;或显式接受风险:dsh plugin --profile <profile> allow-version godot-bridge@<version> --dsh-version <runtime> --accept-risk |
| 插件设置页看不到 godotPath,且 godot_set_engine_path 提示 settings 服务不可用 | 在 DSH 0.2.x 上运行 0.1.8 之前的版本;旧的 settings.register API 已不存在 | 升级到 godot-bridge ≥ 0.1.8 |
| godot-bridge 卡片上看不到 Godot engine path 字段 | 注册本组合包配置区(keyed slot plugins.bundle.config,以包名为键)的浏览器半侧没有加载:本组合包唯一那行被关闭、更新后没有重启宿主、或安装的副本早于浏览器半侧(≤ 0.1.8)。在 DSH 0.1.6–0.1.x 上运行时没有设置表单服务,因此该字段按设计就不存在 | 升级到 godot-bridge ≥ 0.2.0 并重启 DSH——升级会替换已安装的文件,而 dsh.client 的扫描结果按 Loader 行缓存到重启为止。若该行是关闭状态请打开。否则用 godot_set_engine_path 设置,或给该行加 config: 块(见安装文档) |
| 从 0.1.x 升级后,工具跑的是与配置不同的 Godot 构建 | 0.2 之前的 settings.yaml 段不会被迁移(DSH 按插件 entry id 导入,而本行 id 是 tool-godot-bridge),于是解析回落到 PATH 上的 godot——通常是版本管理器 shim | godot-bridge ≥ 0.1.8 上无需处理:首次启动会把记录的值自动写回(仅当字段为空且文件仍存在)。若看到点名「丢失值」的告警,说明还原没有生效(记录的路径已不存在,或写入被拒),请用 godot_set_engine_path 重新设置 |

验证

npm run check # 静态契约检查——不需要 DSH
node scripts/diagnose-dsh-resolution.mjs --profile <profile> --expect ok # 需要已安装的 DSH 应用

npm run check 会在「裸 @deepseek-ai/ import 未在 manifest 声明」「bundle patch 缺失或未引用本包」「入口丢命名导出」,或「浏览器半侧破坏自身契约」时失败:宿主不读的 dsh.client 成员、不是 web 的 platform、缺失或未被 files 覆盖的 exports["./client"] 目标、不等于包名的 __ModuleLoader__ id、落在平台种子模块表之外的 require()、不等于本包名的 plugins.bundle.config 键、以及指向本包 patch 未声明行的 plugins.row.config 键。诊断脚本会打印 profile 的 bundle 层、被 skip 的 bundle、识别到的 linked root,以及插件每个 harness import 的解析结果——修复前后各跑一次,或在 DSH 再次改动解析规则时用来定位。

随后重启 DSH(或在插件页重新加载 profile),确认新会话里出现 17 个 godot_* 工具。

更新提示

插件加载时会做一次尽力而为的版本检查:抓取仓库 main 分支的 package.json(raw.githubusercontent.com,5 秒超时,失败/离线时静默跳过),与已安装版本比较。存在更新时注册一条系统提示(system-prompt section),让模型在每个会话里转达 "godot-bridge 有可用更新:已装 X,最新 Y",直到插件更新(dsh plugin --profile web update godot-bridge,然后重启 DSH)为止。godot_ping 也会额外返回 plugin_version / latest_version / update_available,可随时按需查询。

发布更新:在 package.json 里递增 version(这是发布标记)并推送——版本没变就不会触发提示。fork 场景:设置 package.json 的 repository 后,检查会自动跟随你的 fork。

已知限制:提示是系统提示 section,所以 persona 为 complete/抑制型(如极简模式 minimal)的预设不会显示;检查需要启动时能联网。

用法

godot_run_project # 启动游戏(默认当前 workspace) godot_ping # 确认 9090 应答 godot_command get_scene_tree # 查看场景图 godot_command get_ui_elements godot_command eval {code: "return get_tree().current_scene.name"} godot_command click {x: 576, y: 300} godot_screenshot # 查看游戏画面 godot_get_debug_output # 读取启动日志 godot_stop_project # 结束

Godot 可执行文件解析顺序:每次调用的 godot_path 参数 → godotPath 插件设置(tool-godot-bridge 行的配置:DSH 0.2.x 上可用 godot-bridge 卡片页上的 Godot engine path 字段、godot_set_engine_path 工具,0.1.x 上是插件 settings 段)→ PATH 上的 godot 命令。godot 已在 PATH 时无需配置;否则填引擎路径,务必指向真实 exe,别用 shim。

坑(血泪教训)

- DSH 文件沙箱 vs Godot user://:经沙箱化 shell 执行器(pwsh/bash 工具)启动 Godot 会传播受限令牌,Godot 启动即崩(Failed to open 'user://logs/…',signal 11)。godot-bridge 走原始 subprocess 服务、不受文件沙箱限制——这就是它能正常工作的原因。
- node -e 的 argv:node -e <cmd> <json> 时,额外参数落在 process.argv[1]/[2](不是 [2]/[3])。
- debug 模式下的 eval:eval 代码出现编译错误会让游戏卡在调试器(与 godot-mcp 相同)。用动态访问(p.get("global_position"))绕开静态类型推断;卡死时 godot_stop_project + godot_run_project 重启。
- 用真实 exe,别用版本管理器 shim:shim 会立即退出并把真实 Godot 变孤儿进程,进程管理会误判其已死亡。

项目结构

plugin/godot-bridge.mjs # 插件本体(标准 DSH 模块,命名导出 name/inject/apply) client/client.js # 浏览器半侧:插件页上该行的配置页(dsh.client) plugin/mcp_interaction_server.gd # 取自 godot-mcp(MIT)——游戏内 TCP 服务器 autoload plugin/godot_operations.gd # 取自 godot-mcp(MIT)——headless 操作脚本 plugin/validate_script.gd # 取自 godot-mcp(MIT)——GDScript 编译检查 package.json # dsh.bundle + dsh.client manifest(供 dsh plugin add 安装) cordis.patch.yml # bundle patch 层(插入工具行) install.md / install.zh-CN.md # 详细安装与维护说明 ARCHITECTURE.md / ARCHITECTURE.zh-CN.md # 如何取代 godot-mcp + 协议细节 COVERAGE.md / COVERAGE.zh-CN.md # 与 godot-mcp 的逐工具对比 CHANGELOG.md / CHANGELOG.zh-CN.md # 版本发布记录 scripts/check-plugin-contract.mjs # 静态依赖契约检查(npm run check) scripts/diagnose-dsh-resolution.mjs # 可重跑的 DSH 运行时解析诊断(仅开发用)

mcp_interaction_server.gd、godot_operations.gd 与 validate_script.gd 取自 godot-mcp(MIT,随包内置)。插件通过模块相对路径定位这些脚本(import.meta.url);传显式 ops_script / validate_script 参数可覆盖。

许可证

MIT
预览分享卡片长什么样 ↓Smalldy/godot-bridge
分享 · DeepSeek Harness Hub
Smalldy/godot-bridge

原生 DeepSeek Harness DSH 插件:通过游戏内置的 TCP 交互服务器,启动并操控运行中的…

这是你的仓库?认领条目

回到顶部