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 插件頁。

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

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

小夜