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
羽毛球分组比赛记分
小程序二维码

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

小夜