快速开始
5分钟完成从注册到第一次任务执行。虎鲸自动化采用三端协同架构,上手简单。注册即送100积分,够激活首台设备,免费用户可使用助手面板和智能动作全套功能。
脚本语法手册
平台支持 DSL 和 LUA 两种脚本语言,点击下方卡片查看完整语法手册:
DSL 语法手册
自研脚本语言,VB风格语法,41种动作类型,支持智能识别指令,5分钟快速上手。
查看完整手册 →LUA 语法手册
标准 LUA 5.x 语法参考,涵盖变量、控制流、函数、表、字符串、协程、错误处理及标准库。
查看完整手册 →上手流程
注册账号
访问平台地址,点击"登录"进入登录页面,点击"注册"创建账号。注册后自动获得一个独立的租户空间,数据与其他用户完全隔离。
注册时需勾选同意《用户协议》和《隐私政策》。
编写脚本
登录云控台,在"任务编辑器"中编写DSL脚本。也可以使用助手面板,用自然语言描述需求,自动生成脚本。免费用户可使用助手面板和智能动作全套(AIFindElement/AIReadText/AICheck/AISmartClick/AISmartWait)。
最简单的脚本示例:
' 我的第一个脚本 Click 540, 960 ' 点击屏幕中央 Sleep 2000 ' 等待2秒 Log "执行完成" ' 输出日志
生成卡号/激活码
在"设备列表"页面点击"创建中控端",勾选「同时创建C端卡号」即可一次拿到中控端卡号(也称绑定码)和C端激活码(也称绑定码),一步到位省流省心。
中控端登录
打开浏览器访问 https://hujingyun.com/b/login,输入8位中控端卡号(也称绑定码)登录。登录后安全令牌保存在浏览器本地存储,永不过期。
C端激活
在Android设备上安装C端APK,开启无障碍服务,输入6位C端激活码(也称绑定码)。设备自动连接云控台,中控端即可看到设备上线。
- 关闭电池优化:设置 → 电池 → 找到C端应用 → 选择"不限制"后台活动
- 开启自启动权限:设置 → 应用管理 → 自启动管理 → 允许C端自启动
- 锁定后台:最近任务列表中下拉C端应用,点击锁定图标
下发任务
在中控端选择设备(支持多选),选择任务,点击"下发任务"。C端开始执行,中控端实时查看日志。执行过程中可随时停止。
系统架构
虎鲸自动化采用三端协同架构,基于云原生架构,所有通信经云控台中转,确保数据安全和通信稳定。
云控台(A端)
租户核心,任务管理、设备调度、实时通信中枢、图片库、助手面板
中控端(B端)
操作员Web界面,设备管理、任务下发、日志查看、参数调整
设备端(C端)
Android应用,任务执行、截图识别、状态上报
三端角色详解
| 端 | 使用者 | 形式 | 职责 | 访问方式 |
|---|---|---|---|---|
| 云控台(A端) | 租户 | Web后台 | 任务管理、设备调度、通信中枢 | /admin-v3/ |
| 中控端(B端) | 操作员 | Web页面 | 设备管理、任务下发、日志查看 | /b/login |
| 设备端(C端) | 设备 | Android APK | 任务执行、截图识别、状态上报 | APK安装 |
数据安全
- 租户数据物理隔离:每个租户独立数据库,数据绝不混存
- 全程加密传输:公网部署强制HTTPS,所有通信链路加密
- 安全令牌认证:所有接口均需安全令牌验证,杜绝未授权访问
- 每日自动备份:数据每日自动备份,保留7天,确保数据安全
云控台
云控台是平台的核心,负责任务管理、设备调度和通信中转。通过 /admin-v3/ 访问。
侧边栏导航
| 页面 | 功能 | 说明 |
|---|---|---|
| 控制台 | 统计总览 | 显示中控端/C端/任务/运行中数量,在线设备列表 |
| 任务编辑器 | 编写DSL脚本 | 智能代码编辑器+语法高亮+助手面板+图片库 |
| 全局变量 | 管理变量 | 租户级变量,DSL脚本中通过变量名引用 |
| 设备列表 | 管理设备 | 上联中控端+下联C端设备,创建中控端/生成激活码 |
| 绑定码 | 查询绑定码 | 查看所有中控端/C端绑定码状态,支持搜索/翻页/导出 |
| 积分历史 | 充值记录 | 查看积分充值和消费记录 |
| DSL语法 | 语法参考 | 内嵌DSL语法手册,快速查阅 |
任务编辑器
核心工作区域,三栏布局:
- 左侧:任务列表,点击切换任务,新建/删除任务
- 中间:智能代码编辑器,支持语法高亮和自动补全
- 右侧:助手面板,自然语言对话生成脚本
动作按钮
编辑器上方提供21个动作按钮,点击即可在光标位置插入对应的DSL代码模板:
| 分类 | 按钮 | 插入的代码 |
|---|---|---|
| 图片库 | 图片库 | 打开图片库弹窗,点击图片插入 FindImage "xxx" |
| 基础操作 | Click / LongClick / Swipe / Wait | 点击/长按/滑动/等待 |
| 图像识别 | FindImage / FindColor / GetColor / IsColor | 找图/找色/取色/判色 |
| 流程控制 | If / While / Repeat / Sub / Call | 条件/循环/重复/子程序/调用 |
| 跳转 | Label / Goto / GotoLine | 标签/跳转/跳行(调试) |
| 变量/日志 | Set / Log | 变量赋值/日志输出 |
| 系统操作 | Input / Back / Home / Launch | 输入文本/返回键/Home键/启动应用 |
图片库
点击"图片库"按钮打开弹窗,管理FindImage所需的模板图片:
- 上传:支持PNG/JPG,单张最大200KB,同名图片自动拒绝
- 插入:点击图片自动插入
FindImage "图片名", 0, 0, 1080, 1920, 0.8 -> pos - 删除:点击红色×删除图片
- 翻页:每页24张,超过自动分页
- 隔离:图片按租户隔离,不同租户互不可见
设备列表
二联表格设计:
- 上联:中控端列表,显示名称、绑定码、在线C端数量、创建时间。点击选中后下联刷新
- 下联:选中中控端下的C端设备,显示设备名、绑定码、在线状态、运行状态、剩余时间
创建中控端
点击"创建中控端"按钮,在弹窗中勾选该中控端可见的任务。只有被勾选的任务才能通过该中控端下发。
生成C端激活码
选中中控端后,点击"生成C端卡号"按钮,指定有效期(月数)和数量。确认后弹出结果列表,可复制或导出TXT。
中控端
中控端是操作员使用的Web界面,通过 https://hujingyun.com/b/login 访问。零安装,浏览器即用。
登录
使用8位中控端绑定码登录。登录后安全令牌保存在浏览器本地存储,永不过期。关闭浏览器后重新打开仍保持登录状态。
设备列表(左侧)
显示所有C端设备,每台设备显示:
- 在线状态:绿色圆点=在线,灰色=离线
- 运行状态:运行中/空闲/等待连接
- 设备名:可右键修改备注名
- 卡号:C端绑定码
- 剩余时间:C端激活码剩余有效期
搜索与过滤
设备列表上方提供搜索框和过滤标签:
- 搜索:按设备名或卡号模糊搜索
- 全部/在线/离线:快速过滤设备状态
多选与批量操作
勾选多台设备后,可批量下发任务或批量停止。每个设备的任务参数独立保存。
日志面板(右侧)
选中设备后右侧显示实时日志,支持3级过滤:
| 级别 | 包含内容 | 保留时间 |
|---|---|---|
| INFO | Log指令输出 + 任务生命周期 + 错误信息 | 7天 |
| DEBUG | + FindImage/FindColor详情 + Goto/Call + 变量变化 | 7天 |
| TRACE | + 每个Click/Swipe/Wait的坐标参数 + 截图耗时 | 7天 |
历史日志
点击"全部日志"标签页查看所有执行记录。每条记录包含:开始时间、任务名、执行时长。点击进入详情页查看完整日志。
合卡
将一个C端码的剩余时间合并到另一个C端码,实现续期操作。支持跨租户合卡(卡号即凭证)。
C端设备端
C端是运行在Android设备上的APK,负责执行任务和上报状态。无需Root,兼容Android 5+。
安装与激活
下载安装
中控端topbar右侧提供C端APK下载链接。下载后安装到Android设备。
开启无障碍服务
安装后进入系统设置 → 无障碍 → 找到C端应用 → 开启服务。首次开启时会弹出隐私告知弹窗,需确认同意。
输入激活码
在C端主界面输入6位C端激活码,系统验证后设备自动连接云控台。中控端即可看到设备上线。
权限要求
| 权限 | 用途 | 必需 |
|---|---|---|
| 无障碍服务 | 执行点击/滑动操作、截图 | 是 |
| 悬浮窗 | 显示运行状态浮窗 | 否 |
| 前台服务 | 保持后台运行不被杀 | 是 |
- 关闭电池优化(设置 → 电池 → 不限制后台活动)
- 开启自启动权限(设置 → 应用 → 自启动管理)
- 锁定后台(最近任务列表中下拉锁定C端应用)
截图与识别
C端搭载自研极速截图引擎,毫秒级响应,确保操作精准及时。配合图像识别算法,200ms精准定位目标位置。
绑定码体系
绑定码是设备接入平台的凭证,分为中控端码和C端码两种。所有绑定码由云控台生成。
中控端绑定码 vs C端激活码
| 中控端绑定码 | C端激活码 | |
|---|---|---|
| 位数 | 8位(字母+数字) | 6位(字母+数字) |
| 有效期 | 永不过期 | 有时限(月/年),首次激活开始倒计时 |
| 用途 | 中控端登录 | C端设备激活 |
| 积分 | 生成不扣积分 | 生成时按月数扣积分 |
| 状态 | 未使用/已使用/已撤销 | 未使用/已激活/已过期/已撤销 |
生成流程
换绑规则
C端设备在线时,绑定码锁定不可被其他设备使用。设备离线后,新设备可使用该绑定码,旧设备自动解绑:
绑定码 CODE_1 绑定手机 PHONE_A: ├─ PHONE_A 在线 → CODE_1 不可被其他手机使用 ├─ PHONE_A 离线 → 新手机输入 CODE_1 → 成功,PHONE_A 解绑 └─ 不同中控端实例的绑定码互不影响
合卡
将一个C端码的剩余时间合并到另一个C端码:
- 源码时间归零,变为已消耗状态
- 目标码获得续期
- 支持跨租户合卡(卡号即凭证)
- 合卡后中控端实时刷新剩余时间
撤销
云控台可撤销绑定码,撤销后:
- 旧安全令牌立即失效
- 设备断开连接
- 撤销和新建为独立操作,撤销不回收码值
DSL语法入门
DSL(Domain Specific Language)是虎鲸自动化自研的脚本语言,VB风格,5分钟即可上手。支持15类指令,接近图灵完备。
VB风格语法
直观易读,If/While/Repeat/Sub结构化编程
图像+颜色识别
FindImage/FindColor/GetColor/IsColor,支持模糊匹配
自然语言生成
自然语言描述需求,自动生成DSL脚本
基本结构
' 这是注释(单引号或#号) Click 540, 960 ' 点击屏幕坐标(540,960) Sleep 2000 ' 等待2000毫秒(2秒) Log "执行完成" ' 输出日志到中控端
变量与运算
' 赋值 Set count = 0 Set name = "测试" ' 算术运算 Set total = count + 1 Set avg = (a + b) / 2 ' 变量引用(裸变量名) Click posX, posY
条件判断
' If...Then...Else...End If If x >= 0 Then Click x, y Log "找到了" Else Log "未找到" End If ' 支持的运算符:== != > < >= <= ~= contains notContains
循环
' While循环 Set i = 0 While i < 10 Click 540, 960 Set i = i + 1 End While ' Repeat固定次数 Repeat 5 Click 540, 960 Sleep 1000 End Repeat
子程序
' 定义子程序(支持参数和返回值) Sub CheckAndClick(imgName) FindImage imgName, 0, 0, 1080, 1920, 0.8 -> pos If pos >= 0 Then Click pos, 0 End If EndSub ' 调用子程序 Call CheckAndClick("btn_start.png")
找图与找色
' 找图(全屏搜索) FindImage "btn.png", 0, 0, 1080, 1920, 0.8 -> pos ' 找色 FindColor 0, 0, 1080, 1920, "#FF0000" -> pos ' 取色 GetColor 100, 200 -> myColor ' 颜色模糊匹配(~=运算符) If myColor ~= "#346BB8" 0.9 Then Log "颜色匹配(容差0.9)" End If
指令参考
DSL脚本支持21条指令,覆盖测试全场景。完整语法请查看 DSL语法手册。
基础操作
| 指令 | 语法 | 说明 | 示例 |
|---|---|---|---|
Click | Click x, y | 点击指定坐标 | Click 540, 960 |
LongClick | LongClick x, y [, duration] | 长按指定坐标,默认1000ms | LongClick 540, 960, 2000 |
Swipe | Swipe x1, y1, x2, y2 [, duration] | 从起点滑动到终点,默认500ms | Swipe 540, 1500, 540, 500 |
Sleep | Sleep ms | 等待指定毫秒 | Sleep 2000 |
WaitUntil | WaitUntil "HH:mm" | 等待到指定时间(24小时制),已过则等明天 | WaitUntil "08:30" |
GetTime | GetTime -> var | 获取当前时间,格式YYMMDDHHmmss | GetTime -> now |
OCR | OCR x, y, w, h -> var | 识别指定区域文字 | OCR 100, 200, 300, 50 -> text |
Log | Log "message" | 输出日志到中控端 | Log "任务开始" |
图像识别
| 指令 | 语法 | 说明 |
|---|---|---|
FindImage | FindImage "img.png", x, y, w, h [, sim] [, retry=N] [, timeout=M] -> var | 在指定区域查找模板图,返回坐标到变量 |
FindColor | FindColor x, y, w, h, "#RRGGBB" [, threshold] -> var | 在指定区域查找颜色,默认容差10 |
GetColor | GetColor x, y -> var | 获取指定坐标的颜色值 |
IsColor | IsColor x, y, "#RRGGBB" [, threshold] -> var | 判断指定坐标是否为某颜色,支持Then/Else块 |
智能识别
基于视觉模型的智能识别指令,支持中/日/韩文识别,配合跨语言游戏UI词汇表实现模糊匹配。
| 指令 | 语法 | 说明 | 示例 |
|---|---|---|---|
AIFindElement | AIFindElement "描述" [, x, y, w, h] [sim=N] [lang=L] [cross_lang=true] -> var | 找元素,返回坐标 | AIFindElement "登录" -> pos |
AIFindElementJ | AIFindElementJ "描述" -> var | 日文找元素 | AIFindElementJ "ログイン" -> pos |
AIFindElementK | AIFindElementK "描述" -> var | 韩文找元素 | AIFindElementK "로그인" -> pos |
AIReadText | AIReadText ["关键词"] [, x, y, w, h] -> var | 读文字,数字提取 | AIReadText "金币" -> gold |
AICheck | AICheck "描述" [, x, y, w, h] [timeout=N] -> var | 复杂判断,支持数值比较 | AICheck "血量低于30%" -> low |
AISmartClick | AISmartClick "描述" [, x, y, w, h] [sim=N] [cross_lang=true] | 智能点击 | AISmartClick "确定" |
AISmartWait | AISmartWait "描述" [, x, y, w, h] [timeout=N] [cross_lang=true] [-> var] | 智能等待 | AISmartWait "主界面", timeout=60 -> found |
流程控制
| 指令 | 语法 | 说明 |
|---|---|---|
If...End If | If condition Then...[Else...]End If | 条件判断,Then必须在If同行 |
While...End While | While condition...End While | 条件循环,内置max_iterations=1000安全上限 |
Repeat...End Repeat | Repeat N...End Repeat | 固定次数循环,N支持变量和算术表达式 |
Label/Goto | Label name / Goto name | 标签跳转,子程序内独立作用域 |
GotoLine | GotoLine N | 跳转到源码第N行执行(调试用) |
Sub/EndSub | Sub name(params) [-> ret]...EndSub | 子程序定义,支持参数和返回值 |
Call | Call name(args) [-> ret] | 子程序调用,支持位置参数和命名参数 |
变量与运算
| 指令 | 语法 | 说明 |
|---|---|---|
Set | Set var = expression | 变量赋值,支持算术运算和字符串 |
~= | color ~= "#RRGGBB" [tolerance] | 颜色模糊匹配,默认容差0.85 |
系统操作
| 指令 | 语法 | 说明 |
|---|---|---|
InputText | InputText "text" | 输入文本 |
PressBack | PressBack | 模拟返回键 |
PressHome | PressHome | 模拟Home键 |
LaunchApp | LaunchApp "package" | 启动指定应用 |
CheckApp | CheckApp "package" -> var | 检查应用是否在运行 |
条件运算符
| 运算符 | 含义 | 示例 |
|---|---|---|
== | 等于 | If count == 5 Then |
!= | 不等于 | If count != 0 Then |
> < >= <= | 比较 | If x >= 0 Then |
~= | 颜色模糊匹配 | If color ~= "#FF0000" 0.9 Then |
contains | 包含 | If text contains "ok" Then |
notContains | 不包含 | If text notContains "err" Then |
高级用法
参数下放
在脚本中定义参数区,中控端可按设备粒度调整参数值,无需修改脚本。这是虎鲸自动化的核心差异化功能。
关键原理:注释决定下放。参数区中每个 Set 语句上方紧邻的注释行决定了该参数是否下放以及下放的类型。注释行写在 Set 的正上方才有效,隔行无效。
'########参数区 '循环次数 [数字, min=1, max=20] ← 注释在Set上方,方括号标注类型→下放为数字框 Set loop_count = 5 '执行模式 [下拉, 快速, 标准, 深度] ← 下放为下拉选择 Set mode = "标准" '自动重试 [下拉, 开启, 关闭] ← 下放为下拉选择(代替开关) Set auto_retry = "开启" '截图日志 [下拉, 开启, 关闭] ← 另一个下拉开关 Set screenshot_log = "关闭" '设备备注 ← 无方括号→默认文本输入框 Set remark = "默认设备" '######## ' === 脚本区(直接使用变量名) === Repeat loop_count Click 540, 960 Sleep 1000 End Repeat Log "模式: " + mode + " 备注: " + remark
参数类型
| 类型 | 注释格式 | 中控端控件 | 说明 |
|---|---|---|---|
| 文本 | 注释行无方括号 | 文本输入框 | 自由输入任意文字,如 '设备备注 |
| 数字 | [数字, min=N, max=M] | 数字调节框 | 限定范围的整数,如 '循环次数 [数字, min=1, max=20] |
| 下拉 | [下拉, 选项1, 选项2, ...] | 下拉选择框 | 多选一,如 '执行模式 [下拉, 快速, 标准, 深度];开/关场景用 [下拉, 开启, 关闭] |
'########参数区 开始,以 '######## 结束。每个参数由紧邻的两行组成:上面一行是注释(参数名 + 方括号类型标注),下面一行是 Set 赋值(默认值)。注释必须在Set的正上方才有效,隔行则不会下放。方括号内标注类型,无方括号默认为文本。需要开/关场景用 [下拉, 开启, 关闭]。
颜色模糊匹配
使用 ~= 运算符进行颜色模糊匹配,适应不同屏幕色差:
' 获取颜色 GetColor 100, 200 -> myColor ' 模糊匹配(默认容差0.85) If myColor ~= "#346BB8" Then Log "颜色匹配(默认容差)" End If ' 自定义容差 If myColor ~= "#346BB8" 0.9 Then Log "颜色匹配(容差0.9)" End If
容差范围0-1,值越大要求越严格。0.85为默认值,适合大多数场景;0.9以上适合要求精确匹配的场景。
中控端可见任务
创建中控端时可选择可见任务,该中控端只能下发被选中的任务。未勾选的任务对中控端不可见。适用于不同操作员只负责特定任务的场景。
多设备批量操作
中控端支持多选设备,批量下发任务或批量停止。参数按设备独立保存,不同设备可使用不同参数值。
实用脚本模板
等待图片出现后点击
' 等待图片出现(最多10秒) FindImage "btn_confirm.png", 0, 0, 1080, 1920, 0.8, retry=10, timeout=10000 -> pos If pos >= 0 Then Click pos, 0 Log "点击确认按钮" Else Log "确认按钮未出现" End If
循环检测颜色变化
' 检测按钮变色(表示状态改变) Set timeout = 0 While timeout < 30 GetColor 540, 960 -> btnColor If btnColor ~= "#00FF00" 0.9 Then Click 540, 960 Log "按钮变绿,已点击" Goto done End If Sleep 1000 Set timeout = timeout + 1 End While Log "等待超时" Label done
定时执行+时间判断
' 等到早上8点再执行 Log "等待至08:00..." WaitUntil "08:00" Log "时间到,开始执行" ' 获取当前时间,根据时间段执行不同操作 GetTime -> now Log now
助手使用指南
虎鲸自动化集成大模型,支持自然语言生成DSL脚本。
多轮对话
描述需求→生成脚本→修改优化,自然语言交互
流式输出
实时流式输出,边生成边预览,无需等待
一键插入
点击"插入编辑器"将生成的脚本直接插入光标位置
使用方式
打开助手面板
在任务编辑器右侧,点击助手面板的输入框。
描述需求
用自然语言描述你想要的操作,例如:
- "帮我写一个循环点击屏幕中央5次的脚本"
- "等待确认按钮出现后点击,超时10秒"
- "每隔2秒检测颜色变化,变绿后点击"
查看生成结果
实时流式输出DSL代码。生成完成后可继续对话修改,或点击"插入编辑器"直接使用。
使用技巧
- 描述越具体越好:说明坐标、等待时间、循环次数等细节
- 分步生成:复杂脚本可分多轮对话,先生成框架再补充细节
- 利用图片库:先上传模板图,再生成FindImage指令
- 参数下放:在脚本中加入参数区,方便中控端按设备调参