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