dsh-phone-mirror: Screen Mirroring and Reverse Control of Android Devices in DSH Right Panel

前言

用 DSH 跑 agent 写代码、改配置时,手机上的验证码、群消息、短视频往往还要单独拿起来看。窗口在电脑和手机之间来回切,注意力被拆成两段。常见做法是另开 scrcpy 窗口或第三方投屏工具,但和 DSH 右侧栏、对话页签不在同一套界面里,会话状态也不好一起保留。

下面介绍社区插件 dsh-phone-mirror(维护者 liyuhan7,分类:客户端):把安卓手机或平板画面放进 DSH 右侧栏,并用鼠标键盘直接反控。底层使用 scrcpy 5.0.1 编码 H.264,浏览器端 WebCodecs 解码;仅支持 Windows。插件在 SkillHub 目录 收录,源码与说明见 GitHub(MIT 许可证,当前 npm 版本 0.1.3)。

这是什么

dsh-phone-mirror 是 DeepSeek Harness(DSH)的客户端插件:在右侧栏增加「手机」页签,选中已 adb 授权的设备即可连接。它解决的是「agent 在电脑上跑、手机操作仍要离席」的问题,把投屏和反控收进 DSH 侧边栏,而不是再挂一个独立窗口。

DSH 生态主张「一切皆插件」;SkillHub 等社区目录由社区维护,与 DeepSeek / 幻方无官方从属关系。安装前建议自行查看仓库源码与许可证,并记住插件以当前 DSH 进程权限运行。

核心功能

以下能力均来自项目 README,可按需裁剪使用。

页签与连接

  • 在右侧栏「+」里添加「手机」页签;画面按 contain 比例铺满。
  • 切换页签保留会话;关闭页签会断开并释放设备端进程。
  • 连接成功后,标题行示例为 BKY-W10 · 1048×1600 · 30fps(设备名 · 分辨率 · 实时帧率)。

鼠标键盘反控

  • 点按、拖拽、滚轮按 scrcpy 控制协议回传。
  • ASCII 字符走按键注入;中文等非 ASCII 经设备剪贴板粘贴,组字时面板底部显示拼音。
  • 点击画面接管键盘,按 Esc 交还焦点;工具栏可全屏。

音频与性能

  • 设备支持时转发 Opus 48 kHz 立体声,经 AudioWorklet 播放;不支持则自动改为无声会话(转发声音需 Android 11+)。
  • 拉流、H.264 解码、绘制与音频解码优先在 Worker 线程完成,减轻 DSH 主线程卡顿;无 Worker 时退回主线程。

降级与无线

  • scrcpy 失败后自动用 adb screencap 周期截图(默认 260 ms 一帧),帧率低但兼容面更广。
  • 面板底部「转无线」将 USB 调试切到 TCP 并自动连上,拔线后可继续投屏;Android 11+ 可用「配对」填写无线调试页的地址与 6 位配对码。

画质档位

面板可选:流畅 720 / 标准 1080 / 高清 1600。画面发花或全黑时可点「重建画面」,丢弃解码器并重新拉流。

安装与启用

环境要求(摘自 README):

  • Windows(内置 adb 路径固定为 tools/platform-tools/adb.exe)
  • DSH >= 0.2.0-rc.1 < 0.3.0
  • Node.js 20+(仅首次下载工具与构建时使用)
  • 安卓设备已开启「开发者选项 → USB 调试」并完成授权

安装(必须使用资料中的命令):

# npm 包,预构建安装
dsh plugin --profile <profile> add dsh-phone-mirror
# 或从仓库安装
dsh plugin --profile <profile> add "github:liyuhan7/dsh-phone-mirror"

首次运行会自动下载 platform-tools(约 8 MB)到插件目录;也可在插件目录手动执行:

npm run fetch:tools

系统里已有 adb 时,可在配置里指定 adbPath 跳过下载。

运行步骤:

  1. 重启 DSH,右侧栏点「+」添加「手机」页签。
  2. 顶部下拉选中设备,点「连接」。
  3. 设备弹出「允许 USB 调试吗?」时勾选「始终允许」。
  4. 需要无线时:点面板底部「转无线」,提示已切到无线后拔线。

若 dsh plugin 拒绝操作 desktop profile:该 profile 由 Electron 应用独占托管,需直接编辑 profile 的 package.json,在 dependencies 里添加 "dsh-phone-mirror": "link:D:/path/to/dsh-phone-mirror",并把插件名加入 dsh.profile.bundles,再执行 pnpm install(路径按本机实际修改)。

典型用法

README 中的操作对照:

点按 / 拖拽 / 滚轮    直接操作设备
键盘                 点击画面接管,Esc 交还焦点
全屏                 工具栏「全屏」
画质                 流畅 720 / 标准 1080 / 高清 1600
无线连接             底部「转无线」把 USB 调试切到 TCP 并自动连上
                     底部「配对」填无线调试页上的配对地址与 6 位配对码
断开连接             只断电脑与平板之间的无线通道,USB 不受影响

在 profile 的 cordis.patch.yml 里可覆盖插件配置,例如:

- id: dsh-phone-mirror
  config:
    maxSize: 1600
    maxFps: 60
    videoBitRate: 8000000

常用字段:mode(默认 auto,先试 scrcpy,失败再降级截图)、maxSize(默认 1280)、maxFps(默认 60)、videoBitRate(默认 8000000 bps)、screencapIntervalMs(默认 260)、audio(默认 true)、adbPath、serverJar。

适用场景与注意

适合谁:主要在 Windows 上用 DSH 开发或跑 agent,又需要边看电脑边操作安卓 App(回消息、看通知、简单刷视频)的开发者。HarmonyOS 等出现在 package.json 关键词中,具体兼容性以 adb / 文档为准。

务必注意:

  • 仅 Windows;Mac / Linux 不在 README 支持范围内。
  • 插件与 DSH 同进程权限,安装前请审阅 源码仓库 与 MIT 许可证。
  • adb devices 为空但手机已连接时,常见原因是 USB 接口被厂商驱动占用,需在设备管理器中改为 Android ADB Interface 或安装 Google USB Driver。
  • 无声音时查看面板喇叭按钮及 /dsh-phone-mirror/api/status 中的 session.audio;付费视频等 DRM 内容可能只能黑屏;设备静止时帧率显示个位数属正常现象。

结尾

dsh-phone-mirror 把 scrcpy 投屏与 WebCodecs 解码嵌进 DSH 右侧栏,减少 agent 开发与手机操作之间的上下文切换。需要详情、Issue 与各品牌 USB 调试说明时,请打开目录页 skillhub.cn/plugins/liyuhan7/dsh-phone-mirror 与 GitHub liyuhan7/dsh-phone-mirror。

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

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

Xiaoye