Repository navigation
Releases
godot-bridge v0.2.1
本地调试器下的 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。
godot-bridge v0.2.0
插件页的 godot-bridge 卡片上现在直接有 Godot engine path 字段,godotPath 终于可以在 GUI 里改;静态契约检查同时覆盖新增的浏览器半侧。
新增
- 插件页配置区:本组合包自带浏览器半侧(
client/client.js,manifest 里由dsh.client声明),以包名为键注册 keyed slotplugins.bundle.config,因此打开 godot-bridge 卡片即可填写引擎路径,带保存与针对本 profile 覆盖值的恢复默认。保存写进本 profilecordis.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 <profile> add github:Smalldy/godot-bridge 装好后重启 DSH。本版关闭 #9。
godot-bridge v0.1.8
以 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。
godot-bridge 0.1.7
godot-bridge 0.1.7
原生 DeepSeek Harness (DSH) 插件:启动并操控 Godot 4.x 游戏,以原生 Agent 工具取代 godot-mcp MCP 服务器(17 个 godot_* 工具)。
A standard DSH bundle replacing the godot-mcp MCP server — 17 godot_* tools, installable with dsh plugin add.
0.1.7
- 修复:#4 端口路由被旧版 autoload 静默破坏——
godot_run_project(port=9092)成功但命令只找得到 9090。ensureInteractionAutoload现在无条件用随包版覆盖过期的mcp_interaction_server.gd(插件管理的文件),并返回upgraded - Fixes #4: port routing silently defeated by a stale autoload —
ensureInteractionAutoloadnow overwrites an out-of-datemcp_interaction_server.gdwith the vendored version and reportsupgraded godot_ping与错误文案上报真实端口,不再写死 9090;writeProjectFile的 fs policy 指向目标项目目录(工作区外项目也能写)godot_pingand error text report the real probed port; project-file writes scope to the target project dir- 所有工具返回接入
sanitizeLossless防御:偶发undefined/NaN降级为日志+修正,不再静默报value is not lossless JSON sanitizeLosslessguard on every tool return — stray non-lossless fields log and self-heal instead of failing silently
0.1.6
- 实例归属:
godot_run_project先探测端口;同项目已有实例(如你在编辑器里跑的场景)直接接管(external: true),不再 spawn 重复实例;异项目占口自动回退 9091+;godot_stop_project拒绝终止用户/编辑器实例(F8 / 游戏内退出),系统提示明令禁止 pwsh 杀进程 - Instance ownership:
godot_run_projectadopts an already-running same-project instance instead of spawning a duplicate; foreign-project port conflicts fall back to 9091+;godot_stop_projectrefuses to kill user/editor-launched instances; new system-prompt guard against process-kill workarounds - 兼容 dsh-settings ≥ 0.1.2-alpha(移除的
settingsNamespace改为裸字符串命名空间 + 防御式注册),修复“DSH 升级后插件无法加载导致 host 启动失败” - Compat with dsh-settings ≥ 0.1.2-alpha (removed
settingsNamespace→ plain namespace string + defensive registration), fixing the host boot failure on the new DSH
0.1.5
- 新增
godot_run_headless:通过不受沙箱约束的 subprocess 服务安全执行有界 headless 场景/逻辑/测试(支持--quit-after与超时强杀),取代用 pwsh/bash 跑godot --headless触发 signal 11 崩溃的通道 - New
godot_run_headless: bounded headless scene/logic/test runs via the unconfined subprocess service — the safe replacement forgodot --headlessin a sandboxed shell - 全部 headless 工具崩溃时返回
diagnosis:"sandbox-crash"根因提示;新增系统提示约束"Godot 一律经 godot_* 工具启动" - All headless tools now return a sandbox-crash diagnosis with an actionable hint; new launch-channel system-prompt guard
- 修复
godot_run_headless返回 non-lossless JSON(note: undefined)与godot_validate_script定位字段加固 - Fixed the non-lossless-JSON return bug and hardened validate_script location fields
0.1.4
- 修复:恢复 0.1.3 误删的
timer注入,godot_run_project/godot_command/godot_screenshot不再报cannot get property "timer" without inject - Fixed: restored the
timerinjection dropped in 0.1.3 (ctx.timeout()is a timer-service mixin that readsctx.timer)
0.1.3
- 新增
godot_set_engine_path;godotPath改为面向用户的 settings 值(Web 插件配置页 / settings.yaml),PATH 兜底;存在性校验走 settingsvalidate钩子 - New
godot_set_engine_path; user-facinggodotPathsettings; PATH fallback; validation via settingsvalidatehook
0.1.2
- 更新提示可靠送达(
systemPrompt注入 + 命令式文本);godot_ping返回plugin_version/latest_version/update_available
0.1.1
- 启动时更新提示;修复
godot_command的timeout_ms死参数;移除旧 headless 兜底路径
0.1.0(首发 / initial)
- 15 个
godot_*工具(现 17 个):进程 / 运行时 / headless / 项目编辑 - 标准 DSH bundle 形态;随包附带游戏侧资产;双语文档
安装 / Install
# 方式 A:从 GitHub 安装
dsh plugin --profile web add github:Smalldy/godot-bridge
# 方式 B:下载附件 godot-bridge-0.1.7.tgz 后本地安装
dsh plugin --profile web add ./godot-bridge-0.1.7.tgz安装后重启 DSH 生效。详细文档见仓库 README / install / CHANGELOG。
godot-bridge 0.1.6
godot-bridge 0.1.6
原生 DeepSeek Harness (DSH) 插件:启动并操控 Godot 4.x 游戏,以原生 Agent 工具取代 godot-mcp MCP 服务器(17 个 godot_* 工具)。
A standard DSH bundle replacing the godot-mcp MCP server — 17 godot_* tools, installable with dsh plugin add.
0.1.6
- 实例归属:
godot_run_project先探测端口;同项目已有实例(如你在编辑器里跑的场景)直接接管(external: true),不再 spawn 重复实例;异项目占口自动回退 9091+;godot_stop_project拒绝终止用户/编辑器实例(F8 / 游戏内退出),系统提示明令禁止 pwsh 杀进程 - Instance ownership:
godot_run_projectadopts an already-running same-project instance instead of spawning a duplicate; foreign-project port conflicts fall back to 9091+;godot_stop_projectrefuses to kill user/editor-launched instances; new system-prompt guard against process-kill workarounds - 兼容 dsh-settings ≥ 0.1.2-alpha(移除的
settingsNamespace改为裸字符串命名空间 + 防御式注册),修复“DSH 升级后插件无法加载导致 host 启动失败” - Compat with dsh-settings ≥ 0.1.2-alpha (removed
settingsNamespace→ plain namespace string + defensive registration), fixing the host boot failure on the new DSH
0.1.5
- 新增
godot_run_headless:通过不受沙箱约束的 subprocess 服务安全执行有界 headless 场景/逻辑/测试(支持--quit-after与超时强杀),取代用 pwsh/bash 跑godot --headless触发 signal 11 崩溃的通道 - New
godot_run_headless: bounded headless scene/logic/test runs via the unconfined subprocess service — the safe replacement forgodot --headlessin a sandboxed shell - 全部 headless 工具崩溃时返回
diagnosis:"sandbox-crash"根因提示;新增系统提示约束"Godot 一律经 godot_* 工具启动" - All headless tools now return a sandbox-crash diagnosis with an actionable hint; new launch-channel system-prompt guard
- 修复
godot_run_headless返回 non-lossless JSON(note: undefined)与godot_validate_script定位字段加固 - Fixed the non-lossless-JSON return bug and hardened validate_script location fields
0.1.4
- 修复:恢复 0.1.3 误删的
timer注入,godot_run_project/godot_command/godot_screenshot不再报cannot get property "timer" without inject - Fixed: restored the
timerinjection dropped in 0.1.3 (ctx.timeout()is a timer-service mixin that readsctx.timer)
0.1.3
- 新增
godot_set_engine_path;godotPath改为面向用户的 settings 值(Web 插件配置页 / settings.yaml),PATH 兜底;存在性校验走 settingsvalidate钩子 - New
godot_set_engine_path; user-facinggodotPathsettings; PATH fallback; validation via settingsvalidatehook
0.1.2
- 更新提示可靠送达(
systemPrompt注入 + 命令式文本);godot_ping返回plugin_version/latest_version/update_available
0.1.1
- 启动时更新提示;修复
godot_command的timeout_ms死参数;移除旧 headless 兜底路径
0.1.0(首发 / initial)
- 15 个
godot_*工具(现 17 个):进程 / 运行时 / headless / 项目编辑 - 标准 DSH bundle 形态;随包附带游戏侧资产;双语文档
安装 / Install
# 方式 A:从 GitHub 安装
dsh plugin --profile web add github:Smalldy/godot-bridge
# 方式 B:下载附件 godot-bridge-0.1.6.tgz 后本地安装
dsh plugin --profile web add ./godot-bridge-0.1.6.tgz安装后重启 DSH 生效。详细文档见仓库 README / install / CHANGELOG。
godot-bridge 0.1.5
godot-bridge 0.1.5
原生 DeepSeek Harness (DSH) 插件:启动并操控 Godot 4.x 游戏,以原生 Agent 工具取代 godot-mcp MCP 服务器(17 个 godot_* 工具)。
A standard DSH bundle replacing the godot-mcp MCP server — 17 godot_* tools, installable with dsh plugin add.
0.1.5
- 新增
godot_run_headless:通过不受沙箱约束的 subprocess 服务安全执行有界 headless 场景/逻辑/测试(支持--quit-after与超时强杀),取代用 pwsh/bash 跑godot --headless触发 signal 11 崩溃的通道 - New
godot_run_headless: bounded headless scene/logic/test runs via the unconfined subprocess service — the safe replacement forgodot --headlessin a sandboxed shell - 全部 headless 工具崩溃时返回
diagnosis:"sandbox-crash"根因提示;新增系统提示约束"Godot 一律经 godot_* 工具启动" - All headless tools now return a sandbox-crash diagnosis with an actionable hint; new launch-channel system-prompt guard
- 修复
godot_run_headless返回 non-lossless JSON(note: undefined)与godot_validate_script定位字段加固 - Fixed the non-lossless-JSON return bug and hardened validate_script location fields
0.1.4
- 修复:恢复 0.1.3 误删的
timer注入,godot_run_project/godot_command/godot_screenshot不再报cannot get property "timer" without inject - Fixed: restored the
timerinjection dropped in 0.1.3 (ctx.timeout()is a timer-service mixin that readsctx.timer)
0.1.3
- 新增
godot_set_engine_path;godotPath改为面向用户的 settings 值(Web 插件配置页 / settings.yaml),PATH 兜底;存在性校验走 settingsvalidate钩子 - New
godot_set_engine_path; user-facinggodotPathsettings; PATH fallback; validation via settingsvalidatehook
0.1.2
- 更新提示可靠送达(
systemPrompt注入 + 命令式文本);godot_ping返回plugin_version/latest_version/update_available
0.1.1
- 启动时更新提示;修复
godot_command的timeout_ms死参数;移除旧 headless 兜底路径
0.1.0(首发 / initial)
- 15 个
godot_*工具(现 17 个):进程 / 运行时 / headless / 项目编辑 - 标准 DSH bundle 形态;随包附带游戏侧资产;双语文档
安装 / Install
# 方式 A:从 GitHub 安装
dsh plugin --profile web add github:Smalldy/godot-bridge
# 方式 B:下载附件 godot-bridge-0.1.5.tgz 后本地安装
dsh plugin --profile web add ./godot-bridge-0.1.5.tgz安装后重启 DSH 生效。详细文档见仓库 README / install / CHANGELOG。
godot-bridge 0.1.4
godot-bridge 0.1.4
原生 DeepSeek Harness (DSH) 插件:启动并操控 Godot 4.x 游戏,以原生 Agent 工具取代 godot-mcp MCP 服务器(16 个 godot_* 工具)。
A standard DSH bundle replacing the godot-mcp MCP server — 16 godot_* tools, installable with dsh plugin add.
0.1.4
- 修复:恢复 0.1.3 误删的
timer注入,godot_run_project/godot_command/godot_screenshot不再报cannot get property "timer" without inject - Fixed: restored the
timerinjection dropped in 0.1.3 (ctx.timeout()is a timer-service mixin that readsctx.timer)
0.1.3
- 新增
godot_set_engine_path;godotPath改为面向用户的 settings 值(Web 插件配置页 / settings.yaml),PATH 兜底;存在性校验走 settingsvalidate钩子 - New
godot_set_engine_path; user-facinggodotPathsettings; PATH fallback; validation via settingsvalidatehook
0.1.2
- 更新提示可靠送达(
systemPrompt注入 + 命令式文本);godot_ping返回plugin_version/latest_version/update_available
0.1.1
- 启动时更新提示;修复
godot_command的timeout_ms死参数;移除旧 headless 兜底路径
0.1.0(首发 / initial)
- 15 个
godot_*工具(现 16 个):进程 / 运行时 / headless / 项目编辑 - 标准 DSH bundle 形态;随包附带游戏侧资产;双语文档
安装 / Install
# 方式 A:从 GitHub 安装
dsh plugin --profile web add github:Smalldy/godot-bridge
# 方式 B:下载附件 godot-bridge-0.1.4.tgz 后本地安装
dsh plugin --profile web add ./godot-bridge-0.1.4.tgz安装后重启 DSH 生效。详细文档见仓库 README / install / CHANGELOG。
godot-bridge 0.1.3
godot-bridge 0.1.3
原生 DeepSeek Harness (DSH) 插件:启动并操控 Godot 4.x 游戏,以原生 Agent 工具取代 godot-mcp MCP 服务器(16 个 godot_* 工具)。
A standard DSH bundle replacing the godot-mcp MCP server — 16 godot_* tools, installable with dsh plugin add.
0.1.3
- 新增
godot_set_engine_path:模型向用户索要 Godot 可执行文件路径并写入 settings(schema + 存在性双重校验、热重载、无需重启),补全"未配置引擎"的引导闭环 godotPath改为面向用户的 settings 值(Web 插件配置页 /settings.yaml的godot-bridge:段),不再是cordis.patch.yml行配置;插件作者不再预设路径- 引擎路径解析顺序:
godot_path参数 →godotPath设置 → PATH 上的godot(已在 PATH 时零配置) - 存在性校验从
apply内 throw(会令整个 fiber 失败)移到 settings 的validate钩子,坏路径不再连累纯文件工具 - 修复工具描述误标配置位置;清理冗余
timer注入与console.log - New
godot_set_engine_path; user-facinggodotPathsettings (Web /settings.yaml) with PATH fallback; existence validation via the settingsvalidatehook instead of an apply-time throw; fixed mislabeled config location
0.1.2
- 更新提示可靠送达(
systemPrompt注入 + 命令式文本);godot_ping返回plugin_version/latest_version/update_available
0.1.1
- 启动时更新提示;修复
godot_command的timeout_ms死参数;移除旧 headless 兜底路径
0.1.0(首发 / initial)
- 15 个
godot_*工具(现 16 个):进程 / 运行时 / headless / 项目编辑 - 标准 DSH bundle 形态;随包附带游戏侧资产;双语文档
安装 / Install
# 方式 A:从 GitHub 安装
dsh plugin --profile web add github:Smalldy/godot-bridge
# 方式 B:下载附件 godot-bridge-0.1.3.tgz 后本地安装
dsh plugin --profile web add ./godot-bridge-0.1.3.tgz安装后重启 DSH 生效。详细文档见仓库 README / install / CHANGELOG。
godot-bridge 0.1.2
godot-bridge 0.1.2
原生 DeepSeek Harness (DSH) 插件:启动并操控 Godot 4.x 游戏,以原生 Agent 工具取代 godot-mcp MCP 服务器(15 个 godot_* 工具)。
A standard DSH bundle replacing the godot-mcp MCP server — 15 godot_* tools, installable with dsh plugin add.
0.1.2
- 更新提示可靠送达:
systemPrompt注入 + 命令式文本,模型会在每个会话主动告知用户可用更新 godot_ping返回plugin_version/latest_version/update_available- Update notice reliably delivered (injected
systemPrompt+ imperative text);godot_pingreports plugin/latest version
0.1.1
- 启动时更新提示(尽力而为的版本检查,raw.githubusercontent.com,5s 超时,失败静默)
- 修复
godot_command的timeout_ms死参数(原桥固定 20s 封顶,现在按调用超时生效) - 移除旧部署遗留的 headless 脚本兜底路径
- Boot-time update notice; fixed
timeout_msno-op (20s bridge cap); dropped stale fallback paths
0.1.0(首发 / initial)
- 15 个
godot_*工具:进程(run/stop/debug_output/ping)、运行时(command/screenshot)、headless(headless_op/validate_script)、项目编辑(set_project_setting/manage_autoloads/manage_input_map/manage_export_presets/create_script/create_project/export_project) - 标准 DSH bundle 形态:
@deepseek-ai/dsh-tools的defineTool+ctx.tools.register - 随包附带游戏侧资产(
mcp_interaction_server.gdautoload 等);双语文档
安装 / Install
# 方式 A:从 GitHub 安装
dsh plugin --profile web add github:Smalldy/godot-bridge
# 方式 B:下载附件 godot-bridge-0.1.2.tgz 后本地安装
dsh plugin --profile web add ./godot-bridge-0.1.2.tgz安装后重启 DSH 生效。详细文档见 README / install / CHANGELOG(随包附带)。