🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

安卓虚拟屏 guzhou079-arch/dsh-plugin-android-vscreen

DeepSeek Harness
guzhou079-arch30 天前有提交已提供中文文档扫描:含敏感能力

让智能体在虚拟屏上操控手机,不占用你的屏幕

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add guzhou079-arch/dsh-plugin-android-vscreen
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · dev
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 30 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令发起外部网络请求
查看扫描证据(共 9 处,展示前 9 条)
  • 执行外部命令来自配置/变量
    lib/index.js:55
    const ok = await new Promise((resolve) => execFile(ADB, ['pull', remotePath, dest], { timeout: 60000 },
  • 执行外部命令来自配置/变量
    lib/transport.js:34
    execFile(ADB, ['devices', '-l'], { timeout: timeoutMs, encoding: 'utf8' }, (err, stdout) => {
  • 发起网络请求
    lib/transport.js:53
    const r = await fetch(`${BRIDGE}/status`, { signal: AbortSignal.timeout(timeoutMs) });
  • 执行外部命令来自配置/变量
    lib/transport.js:79
    execFile(ADB, ['shell', command], { timeout: timeoutMs, encoding: 'utf8', maxBuffer: 8 * 1024 * 1024 },
  • 发起网络请求
    lib/transport.js:88
    const r = await fetch(`${BRIDGE}/shell`, {
  • 发起网络请求
    lib/core.js:51
    const r = await fetch(`${base}/vscreen/ping`, { signal: AbortSignal.timeout(timeoutMs) });
  • 执行外部命令来自配置/变量
    lib/core.js:63
    const push = await new Promise((resolve) => execFile(ADB, ['push', jar, REMOTE_JAR], { timeout: 60000 },
  • 执行外部命令来自配置/变量
    lib/core.js:68
    await new Promise((resolve) => execFile(ADB, ['forward', `tcp:${PRIVATE_PORT}`, `tcp:${PRIVATE_PORT}`], { timeout: 15000 }, () => resolve()));
  • 发起网络请求
    lib/core.js:87
    const r = await fetch(`${base}${route}`, { signal: AbortSignal.timeout(timeoutMs) });
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 虚拟屏操控安卓手机
  • 不占用本机屏幕

DeepSeek Harness 插件:让智能体在虚拟显示器上操控安卓手机,你自己的屏幕不受影响。· 让 AI 在安卓手机的「虚拟屏」上干活,手机照常用。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-android-vscreen 让智能体在你的安卓手机上干活,却不占用你的屏幕。 让 AI 在安卓手机的虚拟显示器上干活 —— 手机你自己的屏幕照常用,互不打扰。 一个 DeepSeek Harness 插件。 已在安卓上的 DSH 测试通过;adb 传输方式也能配合电脑上的 DSH 使用。 为什么 大多数「智能体操控我的手机」插件点的都是主屏幕:智能体干活时你的手机被劫持 —— 你用不了,也没法在后台安静地跑。 安卓可以创建虚拟显示器:第二块看不见的屏幕。智能体把应用启动到那块显示器上,在那里看画面、点屏幕,而物理屏幕继续做你原本在做的事。每个动作都会报告一份「主屏证明」(mainBefore → mainAfter),让你看到物理屏幕没被动过。 ⚠️ 虚拟显示器隔离的是画面,不是副作用 / 只隔离画面,不隔离副作用 跑在虚拟显示器上的应用,作用范围仍然是整台设备。在虚拟显示器里点飞行模式、Wi-Fi 或勿扰模式,开关是真的会翻 —— 那是同一个系统设置。安装应用、发消息、改设置:全都是真的。 所以「你的屏幕没被动过」不等于 「你的设备没被动过」。 使用本插件的智能体请遵守: 先用 android_vscreen_see 抓一帧,再根据你实际看到的画面推算点击坐标。绝不要凭猜测点屏幕的某个比例位置。
展开完整文档(README 剩余 1 节)
dsh-plugin-android-vscreen

让智能体在你的安卓手机上干活,却不占用你的屏幕。
让 AI 在安卓手机的虚拟显示器上干活 —— 手机你自己的屏幕照常用,互不打扰。

一个 DeepSeek Harness 插件。
已在安卓上的 DSH 测试通过;adb 传输方式也能配合电脑上的 DSH 使用。

为什么

大多数「智能体操控我的手机」插件点的都是主屏幕:智能体干活时你的手机被劫持 —— 你用不了,也没法在后台安静地跑。

安卓可以创建虚拟显示器:第二块看不见的屏幕。智能体把应用启动到那块显示器上,在那里看画面、点屏幕,而物理屏幕继续做你原本在做的事。每个动作都会报告一份「主屏证明」(mainBefore → mainAfter),让你看到物理屏幕没被动过。

⚠️ 虚拟显示器隔离的是画面,不是副作用 / 只隔离画面,不隔离副作用

跑在虚拟显示器上的应用,作用范围仍然是整台设备。在虚拟显示器里点飞行模式、Wi-Fi 或勿扰模式,开关是真的会翻 —— 那是同一个系统设置。安装应用、发消息、改设置:全都是真的。

所以「你的屏幕没被动过」不等于 「你的设备没被动过」。

使用本插件的智能体请遵守: 先用 android_vscreen_see 抓一帧,再根据你实际看到的画面推算点击坐标。绝不要凭猜测点屏幕的某个比例位置。

工具

| 工具 | 作用 |
| android_vscreen_doctor | 我能不能操控这台设备,走哪种传输方式。先跑这个。 |
| android_vscreen_status | 虚拟显示器是否在运行,尺寸多大。 |
| android_vscreen_start | 创建虚拟显示器,可选地把应用启动到上面。 |
| android_vscreen_see | 抓取虚拟显示器的一帧,存为 PNG。 |
| android_vscreen_tap | 在虚拟显示器上点击。 |
| android_vscreen_swipe | 在虚拟显示器上滑动。 |
| android_vscreen_close | 销毁虚拟显示器。 |

怎么连到手机

两种传输方式,自动选择:

| 传输方式 | 何时使用 |
| adb | DSH 跑在你的电脑上(USB 或无线调试) |
| 本地桥(127.0.0.1:3081) | DSH 跑在手机本机上(比如安卓版) |

两者最终都落到设备上的一个 shell —— 权限级别和 adb shell 一样。这个权限是必须的:应用没法用自己的身份把另一个应用放到虚拟显示器上,所以内置核心通过 app_process 以 shell 身份运行。它只用公开的安卓 API(DisplayManager.createVirtualDisplay、ImageReader)加上有文档的反射常量 —— 不用 MediaProjection,不弹屏幕捕获授权框。

安装

从 npm 装(发布之后),或者直接从本仓库装 —— dsh plugin 会转发给 pnpm,所以两种写法都能用:

dsh plugin --profile web add dsh-plugin-android-vscreensh
dsh plugin --profile web add github:guzhou079-arch/dsh-plugin-android-vscreen

如果你本地已经有克隆好的仓库: sh
git clone https://github.com/guzhou079-arch/dsh-plugin-android-vscreen
dsh plugin --profile web add link:./dsh-plugin-android-vscreen

装好后,让智能体运行 android_vscreen_doctor:它会报告当前可用的传输方式,并探测设备。

环境要求

- 一台能通过 adb 访问的 Android 设备(USB 或 adb connect),或者 DSH 就跑在手机上,并且它的特权 shell 桥可用。
- Node.js 20+(跟着你的 DSH 用的版本走)。

开发

设备端是 assets/vscreen-core.jar 里一个小 Java 程序。想从源码重新构建,见 Android 移植仓库(android-app/src/com/deepseek/harness/vscreen/)。有两个冒烟测试,不经过模型就能跑通整条链路: sh
node test-m1.mjs # create → launch → see → tap → see → main-screen proof → close
node vs-safe.mjs start # same thing, but aimed at a harmless target

许可证

LGPL-3.0-only —— 见 LICENSE 和 THIRD_PARTY_NOTICES.md。
打包进来的 assets/vscreen-core.jar 源自 Operit (LGPL-3.0),所以这个插件用 LGPL 而不是 MIT。
预览分享卡片长什么样 ↓guzhou079-arch/dsh-plugin-android-vscreen
分享 · DeepSeek Harness Hub
guzhou079-arch/dsh-plugin-android-vscreen

让智能体在虚拟屏上操控手机,不占用你的屏幕

回到顶部