dsh-mobile-use:用界面文本树与侧栏真机画面做 DSH 真机调试

前言

在 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、访问本机设备等,应与你的安全策略一致。

典型用法

  1. 设备 USB 调试或无线 ADB 就绪;必要时设置 ANDROID_SERIAL 指定默认设备。
  2. 在会话中先用 adb_ui 确认前台界面与可点控件,再用 adb_tap / adb_do 完成导航,用 wait_for_text 等替代固定 sleep。
  3. 需要肉眼看布局、动效或圈选说明时,在发起会话打开侧栏「实时 ADB」,点按与标注会同步出现在对话上下文;面板约每 2 s 读取 /actions 显示最近操作。
  4. 判断「是否进目标页」可配合 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 目录页。

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

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

小夜