前言¶
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 審批即可看屏與狀態):
game_selftest:確認install.profile、backend.ready、引擎 ping 是否answered。game_windows:選定目標窗口標題或進程。game_attach:綁定窗口;可指定已有 profile。真實後端需 DSH 審批通過。game_snapshot或game_state:讓模型看到當前畫面語義(HP、場景、UI 文本等)。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