面向移动设备的开源自动化测试工具:从真机操作到可复核的测试结论。
SoloPi 提供 Android 录制回放与性能工具,也提供桌面工作台和面向 AI Agent 的 Skill / Harness。你可以在电脑上观察设备、录制并回放用例,或让 Agent 在明确的动作范围内协助执行;最终结果由预先定义的检查条件和本次运行证据决定。
被测应用通常无需接入 SoloPi SDK。不同系统、设备与页面的能力和限制,请先查看下方平台支持。
- 录制与回放:在 Android 上记录操作并重复执行;也可以通过桌面节点控制录制、编辑和回放固定用例。
- 观察与验证:查看当前页面、选择可定位节点、设置固定检查点,并保留动作回执、截图及测试结果。
- 性能诊断:按设备能力采集 CPU、内存、帧率、电池、温度等指标,结合日志、录屏和启动耗时排查问题。
- Agent 协作:使用 Skill 和 Harness,将自然语言任务转化为受约束的观察与执行步骤;Agent 的完成声明不替代验收。
- 自动化集成:通过 CLI 执行用例、读取结构化报告;托管执行支持单主机设备队列、租约与有界重试。
桌面操作 / Agent 任务 / CLI
│
▼
SoloPi Skill + Harness
计划、设备会话、回执与证据
│
▼
Android SoloPi / iOS WDA / NEXT 驱动
│
▼
页面观察 → 受约束动作
│
▼
固定检查点 + 独立结果判定
│
▼
passed / failed / not_tested
passed 表示必需检查点和清理条件通过;failed 表示已确认结果不符合预期;not_tested 表示证据不足,无法判定。动作结果不明时不应盲目重发。
| 目录 | 内容 | 适合谁 |
|---|---|---|
solopi-app/ |
Android 应用、录制回放、性能工具及设备执行能力 | 直接使用或开发手机端能力 |
solopi-desktop/ |
Electron 桌面工作台、设备控制、用例编排与报告 | 希望通过图形界面操作设备和管理测试 |
solopi-skill/ |
Agent 使用规则和内置 Harness(scripts/harness) |
希望从 Agent、CLI 或自动化任务调用 |
Skill、Harness 和 Android APK 各司其职:Skill 提供 Agent 使用规则,Harness 编排任务和验收,APK 在 Android 设备上采集与执行。使用 Skill 不要求把 Python 或模型打进 APK。
| 平台 | 当前入口与已验证范围 | 主要前提与限制 |
|---|---|---|
| Android | SoloPi App、Desktop 和 Harness;真机已验证录制回放及特定真实 App 只读流程 | ADB、配套 SoloPi、设备辅助功能;设备和应用兼容性需分别验证 |
| iOS | Desktop / Harness 通过 WebDriverAgent 控制;已验证 iPhone 上的原生测试应用与特定真实 App 只读流程 | 需要匹配设备的 WDA、Xcode 签名和设备信任;返回和节点定位有平台限制 |
| HarmonyOS NEXT | Desktop / Harness 通过 HDC 和 uitest 控制;已验证模拟器上的受控原生应用流程 |
当前以模拟器为限,真机尚未验收;输入等操作有明确限制 |
三端共用部分控制入口和结果语义,不代表 Android 的性能插件、录屏或全部设备能力已移植到 iOS / NEXT。平台准备、动作限制和验证范围见三端设备控制指南及原生回归指南。
推荐从完整仓库启动。以 macOS Apple Silicon 和 Android 设备为例:
- 安装 Node.js、npm、Python 3.9+ 和 Android SDK Platform-Tools,确保终端可以执行
adb。桌面文档使用 Node.js 22.14.0 验证,其他版本请自行核对兼容性。 - 在 Android 设备上开启 USB 调试并授权当前电脑,安装与当前 Harness 协议匹配的 SoloPi App;首次使用时按设备提示完成初始化和辅助功能设置。
- 在仓库根目录执行:
adb devices -l
cd solopi-desktop
npm ci
npm run dev设备状态应为 device。桌面启动后,选择设备;需要节点录制和固定回放时,打开左侧的「三端设备控制」。桌面同时需要相邻的 solopi-skill 和所选平台的设备工具,不能只复制 solopi-desktop/ 使用该入口。
首次连接、iOS WDA / NEXT HDC 准备、录制和回放步骤见桌面三端指南。桌面的其他用例编排和 CLI 用法见 Desktop README。
适合从终端或支持 Skill 的 Agent 发起任务。以下命令在仓库根目录运行:
# 查看本地内置工作流,不需要连接设备
./solopi-skill/scripts/solopi-ai --pretty workflow-list
# 连接已初始化的 Android 设备后,检查配套 App 和权限
./solopi-skill/scripts/solopi-ai --serial <设备序列号> --pretty doctor
# 查询设备声明的能力
./solopi-skill/scripts/solopi-ai --serial <设备序列号> --pretty capabilities需要作为独立 Skill 安装时,请完整复制 solopi-skill/ 目录到使用的 Agent 所支持的 Skill 目录,保留脚本执行权限;不要只复制 SKILL.md。运行前阅读 Skill 说明和内置工作流。
仓库提供需要特定初始页面的只读示例。确认测试账号、应用和初态符合要求后,可以从 workflow-list 选择模板;运行结束后,使用输出中的 artifacts 查看同一次运行报告。默认使用规则,不需要模型权重。
需要 Android SDK 和项目兼容的 JDK。下面使用项目 Gradle Wrapper 构建调试包:
./solopi-app/gradlew -p solopi-app :portal:assembleDebug
adb install -r solopi-app/portal/build/outputs/apk/debug/portal-debug.apk若设备上已有不同签名的 SoloPi,覆盖安装会失败;请先确认数据和签名,再决定如何处理。应用首次启动、系统辅助功能等授权需要在设备上完成。电脑端模式以 doctor 输出为准:支持 host profile 的版本通常不强制悬浮窗或电池优化白名单;手机端浮窗或录制等功能仍可能需要相应权限。完整构建与常见问题见 Android 使用说明和故障处理。
| 能力 | 当前状态 |
|---|---|
| Agent 页面操作 | 根据当前观察选择有限动作;执行前复核目标,最终结果由固定检查点独立判定 |
| Android 后台屏幕 | 实验功能,默认关闭;需要 Android 12+ 和包含副屏及本地 OCR 的实验构建,在「设置中心 → Agent 请求与屏幕」中启用。详情见后台屏幕说明 |
| Laya 本地决策 | 可选实验后端,在电脑端选择有限候选;权重和运行环境需另行准备。默认规则模式无需 Laya,不应将规则链路的优化归因于模型 |
| 视觉辅助选择 | Android 受控场景原型;受控 pilot 曾出现误点,尚未达到预设收益门槛,默认继续使用规则。详见实验说明 |
| 消息自动回复 | 仅支持受控测试应用和虚构联系人;真机已验证合成文字、图片及模拟模型流程,真实模型图片闭环和真实微信自动回复尚未验证。当前只有一份角色说明和共享本地知识库,不支持多 Agent 角色配置 |
启用外部模型或上传图片前,请自行确认模型服务、发送范围和被测数据是否适合共享。实验能力不保证更快或更准确;以实际场景、设备和完整结果为准。
SoloPi 在手机上录制操作步骤,再用于重复执行与结果检查。支持的节点和动作取决于目标应用及设备。
性能工具支持指标观察、采集与部分压力场景。指标可用性由设备和系统决定;视频差分响应耗时等功能可能需要额外插件。
原项目曾介绍一机多控,但该功能因稳定性原因尚未开源,不能按当前仓库能力使用。更多说明见 Android README。
# Harness 单元测试
python3 -m unittest discover -s solopi-skill/scripts/harness/tests -v
# Android 单元测试与调试构建
./solopi-app/gradlew -p solopi-app \
:app:testDebugUnitTest :agentmodel:testDebugUnitTest :portal:assembleDebug桌面开发、测试与打包命令见 Desktop README。涉及设备、账号、图片或日志时,请使用经授权的测试环境;分享报告前检查截图、日志和个人信息。测试覆盖和支持范围随平台不同而不同,不能以单次通过推断所有设备兼容。
欢迎通过 Issue、Pull Request 或 TesterHome SoloPi 板块讨论问题与改进。提交前请阅读贡献指南。
| 钉钉交流群 | 微信交流群 |
|---|---|
![]() |
![]() |
SoloPi 以 Apache License 2.0 开源;第三方组件及素材适用各自许可证,详见 NOTICE。使用前请阅读免责声明。



