dsh-godot-play:在 DeepSeek Harness 中一鍵構建並試玩 Godot Web 導出

前言

DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在本地開發 Godot Web 導出時,通常需要打開終端執行構建命令,等待完成後再手動打開瀏覽器調試,流程割裂且容易打斷思路。dsh-godot-play 插件將構建與試玩流程整合進 DSH Web GUI,實現一鍵構建、零外部進程、瀏覽器內直接試玩。

核心功能

  • Web GUI 面板:瀏覽器右下角浮動「▶ 試玩遊戲」面板,包含構建按鈕、狀態芯片與構建日誌。
  • 宿主服務注入:宿主注入 webServer、subprocess、webRuntime、workspaceRegistry 四個服務,直接運行 godot --headless --export-release 並以同源前綴託管靜態文件。
  • 工作區門控:只有當前工作區是 Godot 項目(目錄含 project.godot)時才顯示入口按鈕;非 Godot 工作區自動收起。
  • 目標跟隨工作區:構建與託管的目標自動跟隨當前 DSH 工作區,無需手動選擇項目。
  • 多項目支持:老客戶端回退爲「項目」下拉 + 手動登記。
  • 隨手控制:支持「↻ 重新啓動」(重載 iframe)與「清空日誌」。
  • 技術實現:純 DOM,零框架依賴;iframe 懶加載;構建日誌尾環;冪等安裝/卸載腳本。

前置要求

  1. 本機安裝 Godot,並安裝 Web 導出模板。
  2. 目標 Godot 項目裏存在 Web 導出預設(編輯器:項目 → 導出 → 添加… → Web,並保存)。

安裝與啓用

使用官方 CLI 安裝:

dsh plugin --profile <profile> add dsh-godot-play

本地開發可直接指向倉庫目錄:

dsh plugin --profile <profile> add /path/to/dsh-godot-play

或手動執行:

bash install.sh

注意:桌面端 CLI 要求先完全退出桌面端再執行,否則會撞上文件鎖。安裝後重啓對應的 dsh 會話生效。

典型用法

  1. 確保當前 DSH 工作區是 Godot 項目,GUI 右下角出現「▶ 試玩遊戲」按鈕。
  2. 點擊按鈕打開面板,點擊「🔄 構建並加載」。
  3. 狀態芯片顯示進度,展開「日誌」查看 Godot 輸出。
  4. 構建成功後,iframe 自動帶緩存戳重載,直接試玩。
  5. 想重新開始當前遊戲點「↻ 重新啓動」(只重載遊戲);點「清空日誌」清掉構建日誌。

配置說明

插件默認全自動,配置項在 cordis.patch.yml 的 config 下:
* projectRoot:留空則跟隨當前工作區;填寫則鎖定目標。
* godotBin:自動探測環境變量或路徑。
* exportPreset:自動從 export_presets.cfg 讀取首個 Web 預設。
* webRel:顯式覆蓋輸出目錄(默認自動跟隨 Web 預設的 export_path)。
* workspaceGate:控制是否只在工作區是 Godot 項目時顯示按鈕。
* allowRemote:允許非 loopback 遠程訪問(需配合 trustedHosts)。

工作區門控與目標跟隨

  • 門控邏輯:瀏覽器半區通過宿主 GET /api/godot-play/probe 判定當前工作區是否含 project.godot。若宿主未裝或不可達,按鈕常顯;若檢測到非 Godot 項目,按鈕隱藏。
  • 目標跟隨:瀏覽器半區將當前工作區路徑上報宿主,宿主構建與託管即以此爲準。換工作區即換目標。若配置了 projectRoot 鎖定,則面板顯示鎖定狀態,不再跟隨。
  • 優先級:鎖定 > 跟隨 > 上次選擇(持久化)> 智能默認。

安全與跨域

  • 安全:寫操作受信任圍欄限制(loopback 或顯式開啓 allowRemote)。無任意命令執行面,argv 固定拼接。靜態託管有路徑穿越防護,只服務當前目標導出目錄。
  • 跨域隔離:Godot 4 Web 導出若開啓線程,需要 iframe 具備 cross-origin isolation(響應頭帶 Cross-Origin-Embedder-Policy: require-corp)。若遊戲無法啓動,可關閉導出預設中的線程,或使用 window.__GODOT_PLAY_URL__ 注入外部託管地址。

參考資料

羽毛球分组比赛记分
小程序二维码

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

小夜