dsh-mumuemulator-use:用 DSH 驱动本机 MuMu Player 12 模拟器

前言

在 Windows 上做 Android 自动化或让模型「看见」模拟器画面时,常见做法是单独写脚本调 adb、或再包一层 MCP。DeepSeek Harness(DSH)把能力做成插件后,模型可以直接调用统一命名的工具,而不必在对话里反复拼 shell。下面介绍社区插件 dsh-mumuemulator-use(维护者 WinTerminal,分类:客户端):它通过 MuMu 自带的 MuMuManager.exe 和 adb 控制本机 MuMu Player 12,不依赖 Python、不另起 MCP 服务,也不加额外序列化层;仅支持 Windows。

这是什么

dsh-mumuemulator-use 是 DSH 的 npm 插件包(当前资料中版本 1.1.1,许可证 MIT),一句话定位是:把本地 MuMu Player 12 模拟器放到模型可调度的工具集里。插件首次使用时会自行探测 MuMu 安装路径;也可在 profile 配置里显式指定。

生态上,DSH 强调「一切皆插件」;插件目录页在 SkillHub,与 DeepSeek / 幻方无官方从属关系,安装前仍建议自行查看 GitHub 源码 与许可证。插件以当前 DSH 进程权限运行,会执行本机上的模拟器管理命令,使用前请确认环境可信。

核心功能:七个 mumu_ 工具

README 列出七类工具,名称均带 mumu_ 前缀:

工具 作用
mumu_env 展示探测到的安装位置、来源,以及路径缓存文件位置
mumu_list_instances 列出各实例的 index、名称、Android 版本、运行状态、adb 端点、pid
mumu_instance 启动 / 关闭 / 重启 / 创建 / 删除 / 重命名 / 显示或隐藏窗口
mumu_app 列出 / 查询 / 安装 / 卸载 / 启动 / 关闭应用
mumu_ui 点击、滑动、长按、输入文本、按键(坐标为 framebuffer 像素)
mumu_shell 在 Android 来宾系统内执行 shell 命令
mumu_screenshot 截屏;可返回模型可查看的图像

路径解析顺序(mumu_env 会打印完整链路):配置覆盖 → profile 下缓存文件 dsh-mumu-paths.json → 注册表按 DisplayName 匹配 MuMu → 常见安装目录兜底扫描。adb 优先使用 MuMu 目录内较新的 nx_device\<version>\shell\adb.exe,再 nx_main\adb.exe,最后 PATH 上的 adb。

安装与启用

从 npm 安装(常规用户)

指定你的 profile 后执行官方 README 中的命令:

dsh plugin --profile <your-profile> add dsh-mumuemulator-use

dsh plugin add 会解析依赖、链入 profile,并把 dsh-mumuemulator-use 写入 dsh.profile.bundles。重启应用或切换 bundle 即可加载。Desktop DSH 用户若看到 pnpm 提示缺少 peer @deepseek-ai/dsh,README 说明这在 Electron 桌面版中是预期且无害的。

可选配置

在 %PROFILE%\cordis.patch.yml 中插件行 id 固定为 mumu,例如:

- id: mumu
  config:
    adbPath: 'D:\Program Files\Netease\MuMu\nx_device\15.0\shell\adb.exe'
    screenshotIncludeImage: false

常用配置项(默认值与含义以 README 表格为准)包括:mumuRoot、mumuManagerPath、adbPath、cacheFile、commandTimeoutMs(默认 120000)、bootTimeoutMs(默认 300000)、adbConnectTimeoutMs(默认 60000)、screenshotIncludeImage(默认 true,影响 mumu_screenshot 是否默认带回图像)。仅设置 mumuRoot / mumuManagerPath 会跳过整段探测;单独设 adbPath 只覆盖 adb 一侧。

插件要求 DSH 引擎 >=0.2.0-rc.1(见 package.json 中 dsh.engines)。

典型用法思路

  1. 调用 mumu_env,确认 MuMu 根目录、MuMuManager.exe、adb 与缓存文件是否解析正确;多机或非标安装时在 cordis.patch.yml 写 mumuRoot 等覆盖项。
  2. 用 mumu_list_instances 拿到实例 index 与 adb 端点,再 mumu_instance 启动目标实例(bootTimeoutMs 控制等待 Android 就绪的时间)。
  3. 应用层用 mumu_app 安装或启动包名;需要输出时用 mumu_shell(README 说明 MuMuManager 的 sh 无法可靠上报失败,插件通过追加 echo "MUMU_SH_EXIT:$?" 解析退出码)。
  4. 界面操作用 mumu_ui;坐标与 mumu_screenshot 一致,均为 framebuffer 像素。README 注明 framebuffer 为横屏: wm size 可能报 900x1600,截图约为 1600x900。轮询截屏时可传 includeImage: false 或配置 screenshotIncludeImage: false,避免每次对话都带入约 1.15 MB 图像。

实例未运行时,触控、shell、应用类工具会报错;mumu_screenshot 会提示实例尚未运行 Android。

适用场景与已知限制

适合:已在 Windows 上使用 MuMu Player 12,希望 DSH 智能体直接管理实例、应用、触控与截屏,而不自建 adb 脚本或 MCP 层的开发者。

需注意(摘自 README「Known limitations」):

  • MuMuManager control tool cmd 类调用为 fire-and-forget,需要来宾输出时应使用 mumu_shell。
  • 部分窗口/布局类命令不校验实例 index;插件在相关路径会先 info -v <index> 再失败,避免静默成功。
  • adb 路径错误会导致 spawn ENOENT;mumu_shell 不依赖 adb 仍可工作。
  • 来宾 shell 无法解析的命令行可能吞掉退出码标记,此时退出码为 unavailable。

结尾

dsh-mumuemulator-use 把 MuMu Player 12 的实例、应用、UI 与截屏收成七个 DSH 工具,安装命令简单、路径可自动发现也可配置覆盖。进一步细节与源码见 GitHub 仓库,目录索引见 SkillHub 插件页。

羽毛球分组比赛记分
小程序二维码

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

小夜