前言¶
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