DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

gem-gti /

gem-gti/dsh-scrcpy-mirror

Verified

Android phone screen mirroring plugin for DeepSeek Harness, powered by scrcpy.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@3cb11b78

dsh-scrcpy-mirror

把安卓手机画面投到电脑的 DSH 插件 —— 基于 scrcpy。 装好之后,你只要在对话里说一句「帮我开手机投屏」,模型就会调用 phone_mirror 工具。

平台:仅 Windows(依赖 scrcpy.exe / adb.exe) 依赖:本机已安装 scrcpy(winget install --id Genymobile.scrcpy) 宿主:DeepSeek Harness >=0.2.0-rc.1 <0.3.0-0


它解决什么问题

scrcpy 本身是命令行工具,每次都要记参数、查 IP、判断 USB 还是无线、手机重启后还要重新 adb tcpip。 这个插件把这些判断全部封装进一个工具:

action 做什么
status 查看 scrcpy/adb 路径、当前网关、5555 端口是否开放、已授权设备、正在运行的投屏进程
start 启动投屏:USB 优先,没有 USB 就自动读网关走无线
stop 结束投屏进程
connect 开启 5555 并连上无线(手机重启后必须跑一次)
screenshot 通过 adb exec-out screencap 截一张手机屏幕,返回 PNG 路径

/mirror 命令

除了给模型用的工具,插件还注册了一个会话命令,在输入框直接敲即可,不经过模型:

/mirror              启动投屏(等同 start)
/mirror stop         停止投屏
/mirror status       查看设备与连接状态
/mirror connect      手机重启后重连无线
/mirror screenshot   截一张手机屏幕

命令走 Host 侧的 ctx.commands.register,结果是纯文本,直接显示在会话里。

关于侧边栏按钮:曾尝试用客户端插件在侧边栏加图标按钮,但 DSH 的自定义 Host 服务需要 Typert 编译器生成的 ./typert 入口才能被 remote.xxx 访问;手写 bundle 没有该产物, 客户端注入会一直等待并拖垮整个前端启动。因此本插件不包含客户端部分,只提供工具与命令。

安装

方式一:本地目录(开发调试)

dsh plugin --profile desktop add "D:\path\to\dsh-scrcpy-mirror"

装完重启 DSH,或在插件页启用 phone-mirror。

方式二:本地 tarball

npm pack
dsh plugin --profile desktop add ".\mu-dsh-scrcpy-mirror-0.2.0.tgz"

方式三:从 npm 安装(发布后)

dsh plugin --profile desktop add dsh-scrcpy-mirror

方式四:社区市场

发布到 npm 并被目录源(如 DSH 1024Store)收录后,在 DSH 的「社区市场 → 可安装」里搜索 Phone Mirror 点击安装即可。

发布流程见 docs/PUBLISH.md,本地一键脚本:.\publish.ps1 -DryRun 先自检,去掉 -DryRun 正式发布。

使用

安装后在对话里直接说:

帮我看看手机投屏状态 开一下手机投屏 手机重启了,无线连不上了 截一张手机屏幕给我

模型会调用:

{ "action": "status" }
{ "action": "start" }
{ "action": "connect" }
{ "action": "screenshot" }

返回示例(status):

scrcpy: C:\Users\...\scrcpy.exe
adb: C:\Users\...\adb.exe
网关(连着手机热点时即手机 IP): 10.99.177.119
网关 5555 端口: 开放
设备:
  - VCJFK7WSLNS8TOEQ(USB)
  - 10.99.177.119:5555(无线)
投屏进程: 127224

配置

cordis.patch.yml 里该行的 config 可以覆盖默认值:

- insert:
    - id: phone-mirror
      name: dsh-scrcpy-mirror
      config:
        maxSize: "1280"        # 画面最长边,越大越清晰
        bitRate: "6M"          # 视频码率;USB 可 8M,无线建议 4M~6M
        audioSource: output    # output=抓全系统声音且手机静音 / playback / mic
        turnScreenOff: true    # 手机熄屏但投屏继续
        alwaysOnTop: true      # 投屏窗口置顶
        shortcutMod: lctrl     # 快捷键修饰键:lctrl(推荐)/ lalt
        adbPort: 5555
        scrcpyPath: ""         # 留空则自动在 winget 目录与 PATH 中查找
        adbPath: ""

前置条件

  1. 电脑装好 scrcpy:winget install --id Genymobile.scrcpy
  2. 手机开启「开发者选项 → USB 调试」
  3. 首次插线时在手机上点「允许 USB 调试」
  4. 想无线投屏:电脑连手机热点(或同一 WiFi),跑一次 connect

实现说明(沙箱安全)

插件调用外部命令(adb / ipconfig / tasklist / taskkill / scrcpy)时不使用管道, 而是用 spawn + 文件句柄直写临时文件再读取。原因:DSH 宿主可能在受限沙箱里运行插件工具, 管道式 stdio 会被直接拒绝(spawn EPERM),表现为「命令静默失败、设备永远查不到」。

手机 IP 的推断也不是只靠 IPv4 默认网关 —— 实测小米/澎湃热点常常只下发 IPv6 网关, 所以回退顺序是:IPv4 网关 → DHCP 服务器(就是手机)→ 同网段 .1。

已知限制

  • 仅 Windows:taskkill / ipconfig / winget 路径都按 Windows 实现。
  • 手机重启后无线必然失效:这是 adb 的限制,需要插一次线跑 connect。
  • 小米/澎湃机型:scrcpy 自带的「点亮屏幕」快捷键常被系统拦掉,插件不提供唤醒,请按手机电源键。
  • 投屏窗口是 scrcpy 自己的窗口,不在 DSH 界面内。

许可证

MIT。插件本身原创;投屏能力来自 Apache-2.0 的 scrcpy,本项目不打包其二进制,仅调用本机已安装版本。

—/ 5

No ratings yet

Verified DSH bundle

Commit 3cb11b787c9a

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout