dsh-game-bridge:爲 DeepSeek Harness 接上游戲的視覺與操控

前言

DeepSeek Harness(DSH)能讀文件、跑命令、調工具,卻默認看不見正在運行的遊戲窗口,也無法代按手柄或鍵盤。若把「下一步按哪個鍵」交給模型逐步決策,單次工具調用往往要數秒,和 20 Hz 以上的遊戲節奏對不上。下面介紹的 dsh-game-bridge(維護者 nobu2333)在 DSH 裏掛一層薄插件殼,背後接本地 Python 引擎:抓屏與 OCR 當「眼睛」,虛擬手柄/鍵鼠當「手」,20 Hz / 60 Hz 本地閉環當「小腦」,模型只定目標,即時反應在本地完成。

這是什麼

dsh-game-bridge 是社區插件(目錄頁:skillhub.cn/plugins/nobu2333/dsh-game-bridge,源碼:github.com/nobu2333/dsh-game-bridge)。它不內置某一款遊戲的硬編碼邏輯,而是用通用 WorldState、JSON profile 檔案和 14 個目標級工具,讓 DSH 會話裏出現 game_* 能力。插件以當前 DSH 宿主進程的權限運行;安裝前建議自行查看倉庫源碼與 MIT 許可證。

README 記載:npm 已發佈 dsh-game-bridge@0.0.1、PyPI dsh-game-core==0.0.1;倉庫 package.json 版本爲 0.0.2。v1 僅支持 Windows 10/11(抓屏、XInput、SendInput 均爲 Win32)。默認控制後端爲 dry-run(只記錄、不碰設備);真實注入需切換後端並通過 DSH 審批。

架構要點

引擎側能力可概括爲:

  • 眼睛:DXcam 抓屏、幀差分、OCR 語義層、game_state 產出通用世界狀態(座標歸一化 0..1,未知爲 null)。
  • 手:虛擬 Xbox 手柄(ViGEm / XInput)、鍵盤 SendInput、窗口焦點與輸入法看護。
  • 小腦:game_plan 約 20 Hz 方向原語;game_policy 約 60 Hz 狀態策略(射擊/前進/閃避/脫困等,依 profile)。
  • 檔案:遊戲差異寫在 JSON profile(目錄由 DSH_GAME_BRIDGE_PROFILE_DIR 指定,默認在用戶緩存下的 profiles/),由 game_memory 管理;不讀遊戲內存。
  • 安全:奪回熱鍵、反作弊類場景可能硬拒絕;vgamepad / keyboard 後端的 game_attach 需 DSH 一次性審批。權限預設爲 approval: never 時 attach 會直接失敗。

當前版本視覺 provider 已落地;memory(LevelMemory / GuideStore 等)已實現;API provider 仍爲設計位(見倉庫 docs/STATE.md)。

工具一覽(14 個)

工具 用途
game_selftest 插件安裝位置、profile、引擎與後端就緒度
game_snapshot 一幀圖 + OCR + 前臺/遮擋元數據
game_events 幀差事件(baseline / static / changed / scene_cut)
game_windows 可見窗口列表
game_controls 當前後端支持的按鈕/鍵名
game_attach 綁定窗口(可帶 profile;真實後端需審批)
game_state 讀一次 WorldState
game_policy 啓停 60 Hz 狀態策略
game_intent 向運行中策略提交帶 TTL 的戰術 Intent
game_memory 本地 profile 增刪改查與選用
game_act 單步按鍵(默認 dry-run)
game_plan 20 Hz 有界方向閉環
game_status 綁定狀態、安全判定、進度與審計
game_stop 停止閉環、鬆手、解綁

安裝與啓用

DSH 的 profile 互相獨立:桌面版、 dsh web、 dsh headless 各裝各的,裝錯 profile 新會話裏看不到 game_*。

宿主 安裝方式 profile
桌面版(Electron) 應用內 設置 → 插件 desktop(CLI 無法管理)
dsh web 見下方 CLI 命令 web
dsh headless 見下方 CLI 命令 headless

要求:DSH >= 0.2.1-rc.2 < 0.3.0;Node >= 22。首次激活會用 uv 自舉本地引擎 venv 並安裝 wheel,機器上需有 uv;引擎就緒前插件只註冊自檢類能力。

裝完後必須完全重啓宿主,再調用一次 game_selftest 確認 install 與 backend。

CLI(web / headless)推薦從 registry 安裝:

dsh plugin --profile web add dsh-game-bridge

開發與離線可用本地路徑或 GitHub(倉庫已 public):

dsh plugin --profile web add file:<repo>
dsh plugin --profile web add github:nobu2333/dsh-game-bridge

卸載:

dsh plugin --profile web remove dsh-game-bridge

切換控制後端

環境變量 DSH_GAME_BRIDGE_CONTROL 在宿主啓動時讀取,會話中途修改不生效。

值 行爲
不設 / dry-run 默認:只記錄,可抓屏、OCR、跑閉環演示
vgamepad 虛擬 Xbox 手柄(需 ViGEmBus;引擎 venv 需 vgamepad extra)
keyboard SendInput 鍵盤注入

切換步驟:1、設置變量;2、完全退出宿主;3、重啓後 game_selftest 查看 backend.name 與 backend.ready。

$env:DSH_GAME_BRIDGE_CONTROL='vgamepad'
dsh web

桌面版可用用戶級環境變量後從開始菜單重啓應用,例如:

setx DSH_GAME_BRIDGE_CONTROL vgamepad

典型用法

經過上面的安裝與重啓,可按下面順序在會話裏試通鏈路(dry-run 下無需 attach 審批即可看屏與狀態):

  1. game_selftest:確認 install.profile、backend.ready、引擎 ping 是否 answered。
  2. game_windows:選定目標窗口標題或進程。
  3. game_attach:綁定窗口;可指定已有 profile。真實後端需 DSH 審批通過。
  4. game_snapshot 或 game_state:讓模型看到當前畫面語義(HP、場景、UI 文本等)。
  5. game_plan / game_policy:在本地跑目標級閉環;用 game_status 看進度,game_stop 結束。

Cuphead 僅作倉庫內通用字段的 dogfood 樣例 profile,不會自動加載;可將 DSH_GAME_BRIDGE_PROFILE_DIR 指向倉庫 profiles/,或用 game_memory save 寫入本地檔案庫。

適用場景與注意

適合:在 Windows 上希望 DSH 基於真實畫面理解遊戲、用目標級工具驅動本地低延遲閉環的開發者或實驗者;headless / CI 可用 dry-run 做契約與集成測試(審批 fail-closed 爲預期行爲)。

務必注意:

  • 插件與引擎以 當前 DSH 進程權限 運行,真實鍵鼠/手柄注入影響本機安全,生產環境先審源碼與部署權限預設。
  • 僅 Windows;Mac/Linux 不在 v1 支持範圍。
  • approval: never 與真實後端組合會導致 game_attach 自動拒絕;需 ask 類預設或保持 dry-run。
  • 從臨時目錄 file: 安裝時 game_selftest 可能告警,正式使用宜用 registry 或 github: 來源。

SkillHub 等社區目錄與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本文事實均來自上述 GitHub README 與 package.json。

結尾

dsh-game-bridge 把 DSH 從「看不見遊戲」補到「能讀 WorldState、能跑本地 plan/policy」;默認 dry-run 降低誤觸風險,需要時再開虛擬手柄或鍵盤並走審批。進一步的狀態模型與策略設計見倉庫 docs/STATE.md、docs/STRATEGY-V2.md。

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

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

小夜