前言¶
在 DeepSeek Harness(DSH)里调试 Android 应用时,常见做法是 adb exec-out screencap 出 PNG,再让模型 read_image 看图确认页面。一次「页面对不对」往往要:起截图进程、传几百 KB 到数 MB 的图、再走一步带图推理。README 里在同一设备上的对比是:静态页截图约 0.5 s、相机页约 3.2 s;而同场景的 uiautomator dump 约 0.33 s(静态)/ 2.2 s(持续动画),XML 压成纯文本大约 200–1300 token,且不依赖视觉算点击坐标。
下面介绍社区插件 dsh-mobile-use(维护者 regrevia,分类:客户端)。它把「看一眼手机界面」从截图 + 视觉改成读界面文本树,并内建侧栏「实时 ADB」:低帧率画面进 DSH 右栏,鼠标点击映射到真机,圈选加一句话可把圈图与圈内控件一并回到会话。插件内建能力,不需要额外 MCP、不需要独立 agent;HTTP 只监听 127.0.0.1,并对 peer / Host / Origin 做校验(伪造来源实测 403)。装一次后,各会话共用同一套工具,不必为真机调试单独拉 MCP 行或常驻后台服务。
这是什么¶
dsh-mobile-use 是面向 DeepSeek Harness 的真机调试插件:通过 ADB 读 UI 树、执行点按与手势、可选 OCR / WebView DOM / 动效量化,并在客户端注入右栏实时画面与标注。当前 package 版本为 1.2.1,许可证 MIT,源码与说明见 GitHub,目录页见 SkillHub。
核心功能¶
界面文本树与操作工具¶
插件向 DSH 暴露一组以 adb_ 为前缀的工具(README 工具表),典型包括:
| 工具 | 作用(摘要) |
|---|---|
adb_ui |
读界面文本树:ref、类型、文字、#资源id、@中心坐标;尾部符号表示可点 / 可滚 / 勾选 / 不可用;支持 filter、full 及多种 wait_for_* / wait_until_gone |
adb_tap |
按 ref / text / id / desc / point 点击或长按;可带点按后的等待条件 |
adb_input |
ASCII 文本、按键、滑动、清空 |
adb_gesture |
折线轨迹 DOWN/MOVE/UP,用于曲线拖拽、按住再拖 |
adb_app |
应用信息与安装等(README 表内续) |
在 0.6 起还强调 adb_do 一次调用串多步(如 home → 等「设置」→ 点 → 等「WLAN」)、adb_action 系统级动作(桌面、返回、锁屏等)、adb_ui changed_only 只看界面 diff。点按前会对快照做时效校验(超过约 1.5 s 重读树;目标消失或偏移过大报 stale_snapshot;同名控件报 ambiguous_target 等)。
文本树为空时,adb_ui 可自动补本机 Vision OCR(ocr:"force" 可强制);OCR worker 仅 macOS。内嵌 H5 可用 adb_web 经 CDP 读 DOM 并换算设备坐标。动效用 adb_anim 输出中心与宽高的时间序列及超调、步长等指标;列表滚动等合成器动画可能读树不变,可改用侧栏最近数秒拼图。进程与内存可看 adb_proc。
侧栏「实时 ADB」与标注¶
侧栏提供平板/手机画面(H.264 经主机 ffmpeg 抽帧等链路,无观看者时不抓帧);支持缩放平移、画布键盘、中文 /text(u2 剪贴板 + 粘贴)。在画面上圈一处并写说明,圈图与圈内控件会回到当前会话;标注文件落在 ~/.dsh/adb-mirror/annotations/。右栏全局唯一:插件只在右栏挂在发起会话时占用;否则用定向接口在该会话布局里建 adb-mirror 页签,不干扰他人正在看的右栏。
侧栏在看直播时,工具侧可取 liveFrame 复用最新一帧(README 0.6 实测约 1 ms),避免再跑完整 screencap。
安全与运行方式¶
插件以当前 DSH 进程权限在本机调用 adb / ffmpeg 等;所有镜像相关 HTTP 仅回环地址。可选环境变量见 .env.example:ADB、ANDROID_SERIAL、FFMPEG。
安装与启用¶
官方 README 给出的安装方式如下(二选一):
git clone https://github.com/regrevia/dsh-mobile-use.git dsh-mobile-use
cd dsh-mobile-use
# 在 DSH 里:plugin_manager action=install_bundle target=$HOME/dsh-mobile-use
# 或直接把它写进 profile 的 package.json 依赖: "dsh-mobile-use": "link:$HOME/dsh-mobile-use"
安装前请自行阅读仓库源码与 MIT 许可证;插件会执行 shell、推送 u2 jar、访问本机设备等,应与你的安全策略一致。
典型用法¶
- 设备 USB 调试或无线 ADB 就绪;必要时设置
ANDROID_SERIAL指定默认设备。 - 在会话中先用
adb_ui确认前台界面与可点控件,再用adb_tap/adb_do完成导航,用wait_for_text等替代固定 sleep。 - 需要肉眼看布局、动效或圈选说明时,在发起会话打开侧栏「实时 ADB」,点按与标注会同步出现在对话上下文;面板约每 2 s 读取
/actions显示最近操作。 - 判断「是否进目标页」可配合 README 建议的
dumpsys activity或工具自带的 Activity 等待;查崩溃用logcat类只读命令(写类命令超时不会自动重放,避免重复执行)。
具体参数以 README「工具」各节为准;1.2 起流媒体侧提供 stream.info() 的 lastPts / ptsAgeMs 与页面 window.__adbm 计数,便于区分采集慢还是播放器落后。
适用场景与注意¶
适合:在 DSH 里做 Android 真机功能调试、自动化步骤编排、需要文本树 + occasional 画面/标注的 agent 工作流。
注意:
- 依赖本机 ADB 与 Android 设备;侧栏直播还依赖 ffmpeg(路径可由
FFMPEG指定)。 - OCR 兜底仅 macOS Vision;Linux 上仍以 UI 树为主。
- 宿主热重载可能导致页签注册冲突,README 说明插件会尝试整页重建;插件更新后若侧栏无响应,按一次 ⌘R 是目前文档写明的手动步骤。
- 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,本文事实均来自上述仓库 README 与 package 元数据。
结尾¶
dsh-mobile-use 把真机调试收进 DSH 插件:文本树驱动的大多数交互不必再喂截图,侧栏与标注补「看见」与「指给用户看」的场景,且服务只绑在本机回环。进一步了解能力与版本变更见 GitHub README,安装与分类信息见 SkillHub 目录页。