godot-bridge:用原生 DSH 工具驅動 Godot 4.x 遊戲

前言

在 DSH 裏讓智能體操作 Godot 項目,常見做法是掛一個 godot-mcp MCP 服務:多一層協議、多一個 Python/Node 進程,還要單獨維護編輯器插件。遊戲側雖然已有 McpInteractionServer127.0.0.1:9090 上監聽換行分隔的 JSON,但 harness 側仍要通過 MCP 中轉。

godot-bridge 把這條鏈路收進 DSH 宿主插件:不跑 MCP、不啓獨立 Python 服務、不改編輯器 addon。宿主直接 spawn Godot 進程,經短連接 TCP 與遊戲內 autoload 對話,工具以 godot_* 形式註冊進會話。下面介紹它的定位、能力與安裝方式。

這是什麼

godot-bridge 是維護者 Smalldy 發佈的 DeepSeek Harness 原生插件(GitHub:Smalldy/godot-bridge,當前包版本 0.1.5,MIT 許可證)。分類上屬於工作流類插件。

一句話定位:在 DSH 會話裏啓動並驅動正在運行的 Godot 4.x 遊戲,協議與 godot-mcp 使用的 in-game TCP 交互服務一致,用一等 agent 工具替代 MCP 服務。

工作原理

遊戲項目需具備 McpInteractionServer autoload(mcp_interaction_server.gd),默認監聽 127.0.0.1:9090,報文爲換行分隔 JSON。godot-bridge 在 harness 內:

  1. godot_run_projectgodot -d --path … 拉起調試進程,等待 9090 就緒。
  2. godot_commandgodot_screenshotgodot_ping 等通過一次性 node -e bridge 連 TCP,發一行命令、讀一行響應後退出(適配服務端單連接、單命令的 _busy 語義)。
  3. 無頭編輯類操作走 godot --headless --script godot_operations.gd 等腳本,無需遊戲進程在線。

spawn 走 harness 的 raw subprocess 服務(非沙箱 shell),以便 Godot 寫入 user:// 等路徑時不被 DSH 文件沙箱攔截。

若項目尚無 McpInteractionServergodot_run_project 會自動把 vendored 文件拷到 autoload/ 並在 project.godot 註冊;非 Godot 項目不受影響。

核心工具

README 將各工具與 godot-mcp 對照列出;此處按用途歸納已覈實能力。

運行中的遊戲(TCP 9090)

工具 作用
godot_run_project 調試模式啓動項目,等待端口 9090
godot_stop_project 終止已啓動的遊戲進程(樹範圍 kill)
godot_get_debug_output 增量讀取子進程 stdout/stderr
godot_command 向交互服務發送任意命令(約 130 個 game_* 能力合一):get_scene_treeevalget/set_propertycall_methodclickkey_pressscreenshotraycastserialize_stateui_*
godot_screenshot 視口截圖,base64 PNG
godot_ping 探測 9090 是否響應;附帶已安裝/最新插件版本信息

無頭與項目靜態操作

工具 作用
godot_headless_op 16 種無頭靜態操作(讀/改場景節點、掛腳本、建資源、保存場景等),無需運行遊戲
godot_validate_script 無頭 GDScript 編譯檢查,返回 {valid, errors}
godot_set_project_setting 按類型寫入 project.godot 任意段鍵值
godot_manage_autoloads 列出/增刪 autoload 單例
godot_manage_input_map 列出/增刪輸入動作(Godot 4 鍵碼,修正 godot-mcp 的 Godot 3 基線問題)
godot_manage_export_presets 管理 export_presets.cfg
godot_create_script 生成 GDScript 模板
godot_create_project 腳手架項目,可選 Godot .NET .csproj
godot_export_project 無頭導出(--export-release / --export-debug

配置

工具 作用
godot_set_engine_path 將 Godot 可執行文件路徑寫入設置(godotPath / settings.yamlgodot-bridge: 段),熱加載

純文件讀寫由 DSH 原生文件工具覆蓋;帶 Godot 專有寫法的項(輸入映射、導出預設、project.godot 類型等)由上述專用工具處理。完整對照見倉庫 COVERAGE.md

環境要求

  1. 已安裝 DeepSeek Harness(具備 host runtime 的會話)。
  2. Godot 4.x 可執行文件:優先級爲工具參數 godot_path → 設置項 godotPath → PATH 上的 godot 命令。應使用真實 exe 全路徑,避免版本管理器 shim。
  3. node 在 PATH 上(bridge 一次性連接用)。
  4. 目標 Godot 項目具備或可自動安裝 McpInteractionServer autoload。

安裝與啓用

插件須通過 DSH bundle 機制安裝,勿複製到 ~/.dsh/.agent-presets/...(無法解析 @deepseek-ai/dsh-tools)。

推薦一條命令(需 dsh CLI):

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

dsh plugin 爲 pnpm 轉發:包裝入 profile 的 node_modules,並通過 cordis.patch.ymltool-godot-bridge 寫入該 profile 的 dsh.profile.bundlesweb 爲 Web 應用默認 profile,不新建 profile。重啓 DSH 後,該 profile 下會話可見十六個 godot_* 工具。

本地路徑或 tarball 同樣支持:

dsh plugin --profile web add ./path/to/godot-bridge

卸載:

dsh plugin --profile web remove godot-bridge

godot_stop_project 停遊戲;卸載並重啓後工具從會話移除,web profile 本身不變。

更新:

dsh plugin --profile web update godot-bridge

插件加載時會 best-effort 比對 GitHub mainpackage.json 版本;若有更新,系統提示會出現「godot-bridge update available: installed X, latest Y」。godot_ping 也會報告 plugin_version / latest_version

社區登記見 awesome-dsh-plugin(topic:dsh-plugin)。

典型用法

1. 指定 Godot 路徑(PATH 無 godot 時)

由模型詢問用戶後調用 godot_set_engine_path,或配置 Web 插件頁 / settings.yamlgodot-bridge: 段的 godotPath

2. 啓動項目並探活

godot_run_project   # project_path 指向 Godot 項目根
godot_ping          # 確認 9090 有響應

3. 查詢場景與交互

通過 godot_command 發送與 godot-mcp 相同的 JSON 行協議,例如:

{"command": "get_scene_tree", "params": {}, "id": "1"}

常用命令還包括 get_ui_elementsevalclickkey_pressserialize_state 等;具體參數以交互服務實現爲準。

4. 截圖

godot_screenshot 直接返回 base64 PNG,等價於 godot-mcp 的 game_screenshot

5. 無頭改場景 / 校驗腳本

無需運行遊戲時:

  • godot_headless_op:場景與資源靜態編輯。
  • godot_validate_script:編譯檢查 GDScript。
  • godot_set_project_settinggodot_manage_autoloadsgodot_manage_input_map:改 project.godot 與相關配置。

6. 查看調試輸出

godot_get_debug_output 按偏移增量拉取子進程日誌,配合 godot_run_project 排錯。

適用場景與注意

適合誰

  • 已在 DSH 中用智能體開發或測試 Godot 4.x 遊戲/工具項目。
  • 希望去掉 godot-mcp MCP 層,保留現有 McpInteractionServer 與 9090 協議的工作流。
  • 需要無頭編輯 project.godot、輸入映射、導出預設,並與運行中游戲操控在同一套 godot_* 工具裏完成。

注意事項

  1. 插件以當前 DSH 進程權限運行子進程與文件操作;安裝前請閱讀源碼與 MIT 許可證,確認符合你的安全策略。
  2. Godot 路徑勿用版本管理 shim;否則 spawn 或 user:// 行爲可能異常。
  3. 交互服務單連接:依賴短連接 bridge 設計,勿長時間佔用同一 TCP 會話。
  4. SkillHub 目錄頁(skillhub.cn)爲社區索引,與 DeepSeek / 幻方無官方從屬;安裝命令以 README 與 dsh plugin 爲準。

結尾

godot-bridge 把 Godot 4.x 的 in-game TCP 協議直接接到 DSH 宿主,用十六個原生工具覆蓋 godot-mcp 的主流程,並補上 Godot 4 輸入映射等專有寫能力。若你已在 harness 裏做 Godot 智能體工作流,可用官方 bundle 命令裝入 web profile 試用。

  • 目錄頁:https://www.skillhub.cn/plugins/Smalldy/godot-bridge
  • GitHub:https://github.com/Smalldy/godot-bridge
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜