个人模式与工作室模式
VsrTap 只有一个 APK,界面与功能完全一致,只是登录方式不同:
| 维度 | 个人模式 | 工作室模式 |
|---|---|---|
| 注册方式 | App 内自行注册 | 平台创建工作室后发放账号 |
| 登录方式 | 用户名 + 密码 | 成员账号密码 / 设备注册密钥 |
| 设备上限 | 最多 2 台同时在线 | = 购买的同时在线设备数 |
| 脚本存储 | 本地 + 云端备份 | 云端工作区,所有设备共享 |
| 账号池 | 本地数据源 | 云端账号池,统一分配 |
| 任务调度 | 单设备手动运行 | 云端批量下发,多设备并行 |
| 角色权限 | 无 | 管理员 / 运营 / 技术 / 只读 |
users 表,工作室成员存在 workspace_members 表。
同一个人可以同时拥有两种账号,登录时选不同入口即可,数据互不可见。
第一步:部署设备
每台云手机用同一个注册密钥登录,无需逐台输入账号密码。
密钥由工作室管理员在控制台生成,形如 WSK-XXXXXX。
App 启动 → 工作室登录 → 密钥登录
→ 输入注册密钥
→ 云端校验密钥有效 + 在线设备数未超限
→ 返回 device_token,设备永久绑定该工作区
→ 建立 WebSocket 长连接,等待任务下发
名额按「同时在线设备数」计算,离线设备会自动释放名额,不绑定具体机器。
第二步:导入脚本与账号
脚本库
在「工作室控制台 → 脚本库」中新建或粘贴脚本。每次保存都会生成一个版本, 可以查看历史版本并回滚。脚本改动后可推送给在线设备热更新,无需重新部署 APK。
账号池
粘贴账号文本,解析方式与个人版数据源一致。账号按分组管理,例如按游戏分组。 执行时设备从云端领取账号,领取动作是原子操作,不会出现两台设备拿到同一个账号。
| 账号状态 | 含义 |
|---|---|
| 空闲 | 可被设备领取 |
| 运行中 | 已被某台设备锁定 |
| 成功 | 执行完成 |
| 异常 | 执行失败,记录原因 |
第三步:创建并下发任务
任务是「脚本 × 账号组 × 设备组」的一次执行计划:
- 选择要执行的脚本与版本
- 选择账号池分组(如「英雄没有闪-主号」)
- 选择目标设备组,或让系统自动挑选空闲设备
- 设置每台设备执行多少个账号、失败策略(跳过 / 重试 / 停止)
- 点「启动」后,云端把脚本与账号列表下发给设备
任务执行期间可以在「任务中心」看到整体进度、每台设备的当前账号与成功/失败计数, 也可以随时停止某个任务。
角色权限
| 角色 | 权限范围 |
|---|---|
| 管理员 | 工作区全部权限,含成员管理、套餐与密钥 |
| 运营 | 脚本、账号池、任务的日常操作 |
| 技术 | 设备管理与脚本编辑 |
| 只读 | 只能查看数据,不能修改 |
数据隔离
所有业务表都带 workspace_id,查询时强制过滤。
成员的登录凭证中编码了工作区 ID,后端中间件自动注入,成员只能看到自己工作区的数据。
设备通信
设备通过 WebSocket 长连接与云端保持通信:
| 方向 | 消息类型 |
|---|---|
| 设备 → 云端 | 心跳、任务接收确认、账号开始/结束、任务完成、异常上报 |
| 云端 → 设备 | 任务下发、停止任务、脚本热更新、重启、请求截图、连接检测 |
设备超过 90 秒无心跳会被标记为离线,在线数相应减少,名额自动释放。
常见问题
设备注册失败,提示在线数超限
说明当前在线设备数已达到购买量。可以在控制台「设备管理」中移除不再使用的设备,或联系平台扩容。
想换一台云手机,需要解绑吗
不需要。名额按同时在线数计算,旧设备下线后名额自动释放,新设备用同一个注册密钥登录即可。
脚本更新后,正在运行的任务会怎样
正在执行的任务继续使用启动时的脚本版本,新任务使用最新版本。需要立即生效可在任务中心停止后重新启动。