DeepSeek Harness 的 MuMu 模拟器控制插件

前言

DeepSeek Harness 的核心理念是「一切皆插件」,通过 Cordis 体系扩展工具与技能。对于需要在模拟器中执行复杂交互(看屏幕、点击、滑动、OCR、Shell、多开管理等)的开发者来说,现有方案往往需要编写较多脚本来适配不同的窗口与 API。下面介绍一个由 WSIKUN5 维护的工作流插件,它将 Windows 上的 MuMu 模拟器包装成一组 mumu_* 工具和一个 mumu-skill,让模型可以直接像使用 browser-skill 一样操作模拟器。

插件定位

  • 名称:dsh-plugin-mumu
  • 维护者:WSIKUN5
  • 分类:工作流
  • 简介:MuMu 模拟器控制插件:给 DeepSeek Harness 提供 mumu_* 工具与 mumu-skill(截图/点击/滑动/按键/OCR/等待/装包/多开)

核心功能

插件提供以下工具:

  • mumu_info:获取实例 / 渲染窗句柄与矩形 / 前台窗口;probe 查型号、SDK、分辨率、客户机 IP;all 列全部实例
  • mumu_observe:使用 PrintWindow 截图(窗口被遮挡也能截到干净画面),可裁剪 region、可带颜色探针,返回图片 + 帧哈希
  • mumu_tap:在渲染窗像素点击;点击前会校验系统鼠标是否到位,防止与人的鼠标操作冲突
  • mumu_swipe:分步拖动(用于列表滚动、翻页、滑块拖动等)
  • mumu_key:发送 Android 按键(back / home / task / enter / volume… 或数字 keycode)
  • mumu_text:ASCII 文本输入
  • mumu_shell:在客机运行 Android shell(支持 getprop / pm / am / dumpsys / wm 等)
  • mumu_app:list / start / stop / uninstall / install(install 使用宿主 adb + 桥接网络)
  • mumu_wait:本地轮询画面条件,命中后可选立刻点一下(适合 2~3 秒的限时按钮)
  • mumu_scan:横带深色/亮色列聚类 + 亮度采样(读手牌、图标行的通用原语)
  • mumu_ocr:使用 Windows 自带的 Windows.Media.Ocr,完全本地离线,返回带渲染窗坐标的文本行(中文/英文)

mumu-skill 是玩法层文档:包含工作流、坐标基准、硬约束、排障手册,以及 references/doudizhu.md 里一份实战验证过的斗地主坐标与判定。

原理与实现

MuMu Player 15 把每个 App 放在独立的虚拟显示器上,adb screencap 只能截到 display 0 的桌面,因此插件采用以下方案:

  • 截图:使用 PrintWindow(render_wnd, PW_RENDERFULLCONTENT),即使窗口被遮挡也能拿到干净画面
  • 点击:ForceForeground(主窗) + SendInput 绝对坐标,并在按下前用 GetCursorPos 校验光标确实到位
  • Android 命令:通过 MuMuManager.exe sh -c "<cmd>" 执行
  • OCR:使用 PowerShell 7 加载 CsWinRT 投影程序集后调用 Windows.Media.Ocr,完全离线

具体 Win32/P-Invoke 与像素分析都收在 lib/mumu-worker.ps1(常驻 PowerShell 进程,JSON-lines 协议),插件本体 index.js 只负责参数、结果整形和把图片转成 Harness 的 attachment。

环境要求

  • Windows 10 / 11
  • MuMu Player 12/15(默认安装在 D:\MuMuPlayer,可在配置里改)
  • DeepSeek Harness 桌面版 0.2.x,带 PowerShell 7
  • 已在 DeepSeek Harness 0.2.1-rc.3(2026-10-24)上回归验证:11 个工具 + mumu-skill 全部正常(截图内联、OCR、wait、shell、插件重载都测过)
  • 不需要 Node 额外依赖:插件只 import Node 内置模块

安装与启用

  1. 从 Releases 下载 zip 解压,例如放到 D:\dsh-plugin-mumu(也可以先克隆仓库再解压)
  2. 按需修改 cordis.patch.yml 里的路径(见下一节)
  3. 在 DeepSeek Harness 里安装 bundle:
plugin_manager({ action: "install_bundle", target: "D:\\dsh-plugin-mumu" })
  1. 装完后工具直接可用;改了代码后让插件重新加载(plugin_manager 里把 dsh-plugin-mumu 先 false 再 true)或重启 DSH

本地目录安装是链接,所以以后 git pull / 改文件就是更新插件。

配置(cordis.patch.yml)

键 默认 说明
managerPath D:\MuMuPlayer\nx_main\MuMuManager.exe MuMuManager 路径
adbPath 与 MuMuManager 同目录的 adb.exe 仅 mumu_app install 用
instance 0 默认操作的实例 index(多开时用)
captureDir D:\MuMuCaptures(配置默认;不配则 %TEMP%\dsh-mumu) 截图落盘目录
pwshPath pwsh PowerShell 7 路径
respectUserMouse true 点击前确认系统鼠标静止(防止和人的手抢鼠标)
workerIdleTimeoutMs 600000 worker 空闲回收时间

典型用法

在 DeepSeek Harness 里让模型加载玩法文档:

skill({ name: "mumu-skill" })

然后就能直接下指令,例如「用 mumu 看看模拟器现在什么画面」「帮我把斗地主点进游戏」。模型侧的典型闭环:

mumu_info({ probe: true })                       // 实例、渲染窗矩形、客户机 IP
mumu_observe({ maxWidth: 1000 })                  // 看画面(图片直接进对话)
mumu_tap({ x: 1504, y: 895 })                     // 按渲染窗像素点
mumu_wait({                                        // 等按钮出现并立刻点(限时环节)
  timeoutMs: 30000, intervalMs: 350,
  predicate: { type: "color", region: { x0: 590, y0: 520, x1: 750, y1: 560 }, color: { preset: "orange" }, minRatio: 0.5 },
  tap: { x: 665, y: 541 }
})
mumu_ocr({ region: { x0: 0, y0: 0, x1: 1763, y1: 200 }, scale: 2 })   // 读文字(带坐标)
mumu_shell({ cmd: "getprop ro.product.model" })                        // 客机 shell
mumu_app({ action: "start", package: "com.qqgame.hlddz" })             // 启动 App
mumu_info({ all: true })                                               // 多开:列实例
mumu_observe({ instance: 1 })                                          // 多开:操作指定实例

坐标只有一个基准:所有 x/y 都是渲染窗像素(截图左上角 = 0,0,尺寸就是 mumu_info 里的 renderRect 宽高)。不要用屏幕坐标,也不要用 Android 的 1440×2560。

适用场景与注意

  • 适合需要在模拟器中执行复杂交互的智能体开发场景(如自动化测试、游戏脚本、App 交互测试等)
  • 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证
  • 当前仅支持 Windows(PowerShell + Win32 API),依赖 MuMu 的 render_wnd 结构与 MuMuManager
  • 多开寻址与操作已验证,但窗口注入是串行的,不适合同时对两个实例高频操作

结语

该插件将 MuMu 模拟器封装为标准化的 mumu_* 工具与 mumu-skill,让模型可以直接通过自然语言操作模拟器中的任意 App,并内置斗地主场景的坐标与判定参考。通过截图内联、本地 OCR、光标校验、等待与扫描等原语,能够应对复杂的限时与多步骤交互。

  • 插件目录页:https://www.skillhub.cn/plugins/WSIKUN5/dsh-plugin-mumu
  • GitHub:https://github.com/WSIKUN5/dsh-plugin-mumu
羽毛球分组比赛记分
小程序二维码

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

Xiaoye