前言¶
用 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 跳过下载。
运行步骤:
- 重启 DSH,右侧栏点「+」添加「手机」页签。
- 顶部下拉选中设备,点「连接」。
- 设备弹出「允许 USB 调试吗?」时勾选「始终允许」。
- 需要无线时:点面板底部「转无线」,提示已切到无线后拔线。
若 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。