前言¶
在 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)。
典型用法思路¶
- 调用
mumu_env,确认 MuMu 根目录、MuMuManager.exe、adb与缓存文件是否解析正确;多机或非标安装时在cordis.patch.yml写mumuRoot等覆盖项。 - 用
mumu_list_instances拿到实例 index 与 adb 端点,再mumu_instance启动目标实例(bootTimeoutMs控制等待 Android 就绪的时间)。 - 应用层用
mumu_app安装或启动包名;需要输出时用mumu_shell(README 说明 MuMuManager 的sh无法可靠上报失败,插件通过追加echo "MUMU_SH_EXIT:$?"解析退出码)。 - 界面操作用
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 插件页。