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

安卓预览 skyjjgw/dsh-plugin-android-preview

DeepSeek 客户端
skyjjgw13 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

在侧边页签里操控模拟器并热重载 Flutter 应用

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/skyjjgw/dsh-plugin-android-preview.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成

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

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 10 处,展示前 10 条)
  • 发起网络请求
    lib/client.js:12
    fetch('/api/android-preview/info', { signal: controller.signal }).then(async response => {
  • 读取本地文件
    lib/application.mjs:33
    if (!(await stat(settings.apkPath)).isFile()) throw Error('apkPath 须指向已构建 APK 文件');
  • 读取本地文件
    lib/application.mjs:36
    await access(command.executable);
  • 读取本地文件
    lib/application.mjs:37
    await access(command.args[0]);
  • 读取本地文件
    lib/application.mjs:38
    for (const directory of settings.watchDirectories) if (!(await stat(directory)).isDirectory()) throw Error(`监听路径不是目录:${directory}`);
  • 读取本地文件
    lib/preview/server.mjs:47
    try { const [file, type] = files[pathname]; res.setHeader('Content-Type', type); res.end(await readFile(path.join(here, file))); }
  • 读取本地文件
    lib/preview/server.mjs:92
    await access(jar);
  • 执行外部命令来自配置/变量
    lib/preview/server.mjs:96
    remote = spawn(adb, ['-s', serial, 'shell', `CLASSPATH=${remoteJar}`, 'app_process', '/', 'com.genymobile.scrcpy.Server', '3.3.3', `scid=${scid}`, 'tu
  • 执行外部命令来自配置/变量
    lib/preview/server.mjs:131
    flutter = spawn(command.executable, command.args, { cwd: app, env: environment, windowsHide: true });
  • 发起网络请求
    lib/preview/client.js:49
    const { token } = await (await fetch('/session')).json();
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

DeepSeek Harness 的原生 Android 预览标签页,带 scrcpy 风格的控制和 Flutter 热重载。

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness Android 预览插件 English · 配置与迁移说明 在 DSH 原生右侧页签中操作真实 Android 模拟器:点击、滑动、输入和返回;Flutter 调试 APK 还可在保存 Dart 源码时热重载。包名、启动 Activity、APK 和源码目录均可配置,支持独立工程和 monorepo,不要求星伴 / Operit2 或配套 PowerShell 脚本。 环境与安装 - Node.js 22.19.0+,DSH 0.2.1-rc.2+(使用相同公开 sidebar / renderer / connection API)。 - Windows、macOS 或 Linux 上已安装的 Android SDK、正在运行的模拟器、官方 scrcpy 3.3.3 server。 - 已构建、能在该模拟器运行的 APK;Flutter 热重载另需匹配源码和 Flutter SDK 的 debug APK。 - 插件不下载 SDK、不启动模拟器、不构建 APK;不控制实体手机。屏幕控制按竖屏实现,旋转控制尚未验证。
展开完整文档(README 剩余 1 节)
DeepSeek Harness Android 预览插件

English · 配置与迁移说明

在 DSH 原生右侧页签中操作真实 Android 模拟器:点击、滑动、输入和返回;Flutter 调试 APK 还可在保存 Dart 源码时热重载。包名、启动 Activity、APK 和源码目录均可配置,支持独立工程和 monorepo,不要求星伴 / Operit2 或配套 PowerShell 脚本。

环境与安装

- Node.js 22.19.0+,DSH 0.2.1-rc.2+(使用相同公开 sidebar / renderer / connection API)。
- Windows、macOS 或 Linux 上已安装的 Android SDK、正在运行的模拟器、官方 scrcpy 3.3.3 server。
- 已构建、能在该模拟器运行的 APK;Flutter 热重载另需匹配源码和 Flutter SDK 的 debug APK。
- 插件不下载 SDK、不启动模拟器、不构建 APK;不控制实体手机。屏幕控制按竖屏实现,旋转控制尚未验证。

在桌面应用插件安装入口填写:

github:skyjjgw/dsh-plugin-android-preview#v0.2.0

CLI Web profile 可使用:

dsh plugin --profile web add github:skyjjgw/dsh-plugin-android-preview#v0.2.0

桌面与 CLI profile 分开。包自带可读 JavaScript 和 dsh.bundle.patch,无需安装脚本或前端构建;未发布 npm。安装后编辑已有 android-preview 行的 config,保留其他插件配置,不要重复插入同名行。

Flutter 示例

下面是普通 Flutter 工程的 config 内容。将路径、包名、Activity 和模拟器编号换成实际值:

projectRoot: E:/projects/my-counter
appDirectory: .
apkPath: build/app/outputs/flutter-apk/app-debug.apk
applicationId: com.example.my_counter
activity: .MainActivity
flutterRoot: E:/SDK/flutter
adbPath: E:/Android/Sdk/platform-tools/adb.exe
scrcpyServer: E:/tools/scrcpy-server
serial: emulator-5556
hotReload: true
watchDirectories:
- lib
port: 18772
frameAncestors:
- dsh-app://app

macOS / Linux 使用本机绝对路径(如 /Users/me/projects/my-counter 或 /home/me/projects/my-counter),ADB 为 platform-tools/adb;Dart 启动器自动选择系统版本。flutterRoot 留空时使用 FLUTTER_ROOT。

monorepo 可设置 appDirectory: apps/mobile,watchDirectories: [lib, ../../packages/widgets/lib]。源码目录必须在 projectRoot 内,APK 也可指定绝对路径。

普通 Android APK

Kotlin / Java / React Native 等已有 Android APK 可配置 hotReload: false、实际 apkPath、applicationId 和 activity。例如 Gradle debug APK 路径 app/build/outputs/apk/debug/app-debug.apk。此模式仅安装、启动与投屏,无需 Flutter SDK,也不会监听 Dart、启动 Flutter 或承诺 JS / 原生热重载。APK、原生依赖或权限变化需自行重新构建,然后点击重启 App。

使用

1. 启动配置的模拟器,确认 adb devices 中对应编号在线。
2. 打开聊天,点击「手机预览」或右侧新建页签中的手机预览入口。
3. 插件安装已有 APK,启动配置的 Activity,显示可操作的真实画面;Flutter 模式随后连接调试器。
4. 鼠标点击 / 拖动 / 滚轮操作手机,键盘输入或主动粘贴文字。保存监听目录内的 .dart 文件会请求 Flutter 热重载。
5. 底部按钮可热重载、刷新视频、重启 App;普通 Android 模式禁用热重载。禁用插件会释放监听端口、连接、源码监听器及其创建的 Flutter 进程,保留模拟器。

同一模拟器只保留一个 Flutter 调试连接。已有 APK 必须对应当前源码;原生代码、插件依赖与权限变化需重建。默认 renderer: auto 保留 App 渲染方式,必要时显式设置 gpu 或 software。性能取决于模拟器、CPU 架构和驱动。

可选准备命令与权限

默认不运行任何工程脚本。需要构建前置步骤或配置环境时,可显式配置 prepareExecutable 的绝对路径和 prepareArgs 字符串数组。直接启动程序、不开 shell;程序 stdout 必须仅输出 JSON 环境变量对象。详细协议和旧版本迁移见配置说明。这会执行用户选择的本机程序,请仅配置可信脚本。

启用插件先启动空闲 127.0.0.1 服务;打开页签后才运行准备命令、ADB / scrcpy 和可选 Flutter。WebSocket 校验本机 Host、准确 Origin 和随机同源令牌;发现路由由宿主 connection 层验证 owner Peer。嵌入仅允许 dsh-app://app 或显式配置的本机 HTTP origin,不允许通配符和外网来源。

无模型工具、麦克风、音频、录像、系统剪贴板读取或任意 shell / 文件 HTTP API。主动输入 / 粘贴会写安卓剪贴板,自动剪贴板同步关闭。子进程继承宿主环境,这些检查不是系统沙箱。

验证与开发

npm run check
npm test
npm pack --dry-run
测试覆盖三种系统的路径与启动参数、通用 APK / Flutter 启动、可选准备命令、取消、回环访问限制、协议和资源释放;CI 在 Windows / macOS / Linux 上运行。真实模拟器验证范围与发布记录见配置说明。React 和 SDK 由宿主提供,不打包第二份。许可与来源见 NOTICE.md 和 LICENSE。
预览分享卡片长什么样 ↓skyjjgw/dsh-plugin-android-preview
分享 · DeepSeek Harness Hub
skyjjgw/dsh-plugin-android-preview

在侧边页签里操控模拟器并热重载 Flutter 应用

这是你的仓库?认领条目

回到顶部