dsh-game-control:给 DSH Agent 加上游戏级键盘鼠标与截图

前言

在 DeepSeek Harness(DSH)里让 agent 操作单机游戏时,常见 UI 自动化(SendMessage、SendKeys 等)往往进不了游戏进程:多数引擎读的是 DirectInput 层或扫描码级输入。普通「点按钮、填表单」的 computer-use 思路在这里容易失效。

下面介绍社区插件 dsh-game-control(维护者 hezhaochao):通过 MCP 暴露键盘、鼠标、时序连招与截图工具,后端走 Windows SendInput 与扫描码,面向「游戏只认原始输入」的场景。插件以 MIT 许可发布,当前 package 版本 0.1.1,声明兼容 DSH >=0.2.0-rc.1 <0.3.0-0,README 写明已在 v0.2.1-rc.3 上完成安装与卸载验证;仅支持 Windows 10/11。

这是什么

dsh-game-control 是 DSH 的 Cordis 插件:在宿主内挂载名为 gamectl 的 MCP stdio 服务,由 PowerShell 脚本 gamectl.ps1 执行 SendInput。装好且重启 DSH 后,模型侧可见工具名形如 mcp__gamectl__<名>,零额外依赖(正常 npm 渠道安装时 peer @deepseek-ai/dsh-mcp-client 由 pnpm 装进 profile)。

一句话定位:游戏操控工具集——扫描码键盘(含长按)、鼠标相对位移(视角)、带毫秒时序的连招、全屏/区域截图,以及窗口列举与聚焦。

核心功能

MCP 工具一览

工具 作用 典型游戏场景
key 扫描码按键,tap / down / up 点技能、长按 W 走路
mouse_move 绝对 (x,y) 或相对 (dx,dy) 拖镜头、甩视角
mouse_click 左/右/中键,单击/双击/按住 攻击、开镜、拖拽
mouse_wheel 垂直/水平滚轮 切武器、缩放地图
sequence 单条调用内按毫秒时序执行组合 连招:w down → 200ms → shift+q …
screenshot 全屏或 region 存 PNG,返回路径与尺寸 视觉读屏再决策
windows 列出可见窗口(标题、pid、矩形) 定位游戏窗口
focus 按 pid 或标题带到前台 开局聚焦游戏

按键名支持 a-z、0-9、f1-f12、方向键、space/enter/esc/tab/shift/ctrl/alt、home/end/pgup/pgdn 等,以及小键盘与部分符号键(如 minus、bracket_left)、win。

输入层为何不同

README 说明的实现要点:

  • 键盘:SendInput + KEYEVENTF_SCANCODE(wVk=0);导航键与 Win 键会加 KEYEVENTF_EXTENDEDKEY。
  • 鼠标:绝对移动用 MOUSEEVENTF_ABSOLUTE(0–65535 归一化);相对位移用 MOUSEEVENTF_MOVE 像素增量,专用于镜头控制。
  • 进程:启动时 SetProcessDPIAware(),坐标按物理像素;后端 stdout 强制纯 ASCII,避免控制台编码干扰。
  • 聚焦:AttachThreadInput 规避前台锁、IsIconic 恢复,并做结果校验。

安全上限(README 原文):sequence 总时长硬上限 30 秒;单键 hold 上限 5 秒;click hold 上限 10 秒。

安装与启用

安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。插件以当前 DSH 进程权限运行,输入会打进当前前台窗口;安装与试用前建议保存工作,并只在单机或你有权自动化的环境使用。

官方安装命令如下(须替换 <你的 profile>;desktop profile 请走桌面端插件面板):

# npm 渠道(推荐)
dsh plugin --profile <你的 profile> add dsh-game-control

# 或从 GitHub
dsh plugin --profile <你的 profile> add github:hezhaochao/dsh-game-control

本地开发可用 link:"<本仓库绝对路径>";README 注明 link 方式不会自动装 peer 依赖,需在 profile 目录手动执行:

node <dsh 内置 pnpm 的 pnpm.cjs> add @deepseek-ai/dsh-mcp-client

安装后完全退出 DSH(含托盘)再重启,工具才会挂载。

卸载:

dsh plugin --profile <你的 profile> remove dsh-game-control

环境要求:Windows 10/11、PowerShell 5.1(系统自带);Node 由 DSH 内置运行时提供。

典型用法

用法是对话里用自然语言描述任务,agent 自行组合 focus、screenshot、sequence 等。README 示例:

聚焦标题带「Stellaris」的窗口,截个图看看现在什么局面,然后帮我点开左上角的舰队菜单

按住 W 三秒往前走,然后连招:q、等 300ms、e、等 200ms、右键

截图返回 PNG 路径,可配合视觉模型形成「看 → 想 → 打」的循环。

适用场景与注意

适合谁

  • 让 AI 玩或测试单机游戏:走位、点菜单、开技能、读屏决策。
  • 游戏脚本或攻略测试:定时按键序列、模拟长按、控制镜头。
  • 任何游戏只认原始输入、普通 UI 自动化无效的场景。

务必知晓

  • 网游与道德:README 强调只用于单机或有权自动化的场景;网游自动化可能违反用户协议并封号;插件不提供反检测或反作弊规避。
  • 权限与误触:聚焦/按键前请确认前台窗口;盲发会打进当前前台程序。
  • 兼容性限制:带内核级反作弊或独占全屏的游戏可能忽略合成输入或无法聚焦;相对位移精度受系统指针加速影响;Raw Input / 驱动级鼠标可能导致 SendInput 无效——属 README 列出的已知限制,建议窗口化或无边框模式再试。
  • 多显示器:screenshot 默认虚拟屏全图,region 用物理屏幕坐标。

DSH 生态是「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-game-control 把 Windows SendInput 扫描码、相对鼠标与 MCP 工具链接到 DSH agent,解决「游戏里普通自动化不好使」这一具体痛点。若你在 Windows 上做单机游戏 agent 或输入层测试,可按上文命令安装,并在对话里直接描述操作意图。

  • 目录页:https://www.skillhub.cn/plugins/hezhaochao/dsh-game-control
  • GitHub:https://github.com/hezhaochao/dsh-game-control
羽毛球分组比赛记分
小程序二维码

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

Xiaoye