引言
随着人工智能技术的快速发展,AI 已逐渐成为编写自动化脚本的重要辅助工具。传统自动化脚本开发通常依赖开发者手动编写代码,不仅耗时耗力,还对编程能力和目标平台 API 的熟悉程度有较高要求。而借助 AI(尤其是大语言模型),用户仅需通过自然语言描述操作意图——例如'点击登录按钮''滑动页面直到看到'设置'选项'——AI 即可自动生成结构正确、逻辑清晰的脚本代码,显著降低自动化门槛。
在移动端智能辅助领域,AI 可结合平台特定的 API(如 usb.click(x, y) 或 ble.swipe(...))自动推断坐标、生成初始化逻辑、插入必要延时,并适配不同设备的分辨率。例如,用户输入'打开微信并发送一条消息',AI 能分解任务为:返回桌面 → 点击微信图标 → 等待加载 → 点击聊天窗口 → 输入文本 → 发送。整个过程无需用户了解底层通信协议或坐标计算细节。
此外,AI 还能根据错误日志进行自我修正。若脚本因坐标偏移失败,AI 可建议加入图像识别定位或动态坐标计算;若 USB HID 初始化缺失,AI 会自动补全 usbInit() 调用。这种'意图驱动 + 自动补全 + 智能调试'的模式,极大提升了脚本开发效率与鲁棒性。
更重要的是,AI 生成的脚本天然具备规避风控的潜力。它可推荐使用 USB HID 或蓝牙 HID 等底层输入方式替代无障碍服务,并自动遵循仿人操作节奏(如随机延迟、曲线滑动),使自动化行为更接近真实用户,有效绕过金融、社交、游戏等高风控场景的检测机制。
用户无需掌握编程知识,仅通过自然语言描述操作流程,即可由 AI 自动生成可在目标平台直接运行的自动化脚本。以下是结合通用流程的完整使用指南:
一、准备工作
- 安装并登录自动化辅助工具
- 确保已安装最新版自动化辅助工具,并完成账号登录。
- 开启调试模式(如需无障碍)
- 若脚本涉及界面控件操作,需在工具内开启【调试模式】并授予【无障碍权限】(路径:工具设置 → 调试模式)。
- 准备硬件(如使用 HID)
- 若计划使用 USB HID 或蓝牙 HID,需提前连接设备并确保系统识别成功。
✅ 注意:AI 会根据你选择的'模块'自动决定是否需要无障碍或 HID 支持。
二、使用步骤(基于 AI 功能)
步骤 1:进入 AI 脚本生成页面
- 登录管理后台;
- 进入「移动端」→「AI 生成脚本」页面。
步骤 2:配置 AI 模型(推荐 DeepSeek)
- 点击右上角'设置模型参数';
- 选择模型(推荐 DeepSeek);
- 填写你的 DeepSeek API Key(需自行注册开发者账号并获取)。
步骤 3:选择功能模块
- 点击右上角'+AI'按钮;
- 在弹出窗口中,于'支持模块'下拉菜单中选择所需技术栈:
无障碍模块:适用于常规界面控件操作;USB HID 模块:用于有线 HID 设备控制;蓝牙 HID 模块:用于无线 BLE HID 控制;图色/OCR/Yolo:用于图像识别场景。
- 默认为'无障碍',请根据实际需求切换。
步骤 4:输入详细操作需求(关键!)
- AI 会根据描述自动生成对应脚本代码(含坐标计算、延时、错误处理等)。
在对话框中用清晰、分步骤的自然语言描述你要实现的操作。 ❌ 错误示例:'帮我抓取抖音评论。' ✅ 正确示例:
打开抖音 App;点击底部'首页'确保进入主界面;向上滑动一次,进入第一个视频;点击右侧'评论'图标;等待评论列表加载,滚动到底部;使用 OCR 识别所有评论文本并保存到本地文件。
步骤 5:调试与优化
- 生成后,左侧显示可运行代码,可直接选择设备在线调试;
- 若结果不符预期,可在对话框中继续补充说明(如'点击失败,请改用图色定位'),AI 会迭代优化脚本;
- 支持多次交互修改,直至满足需求。
三、AI 生成脚本的优势
- 零代码门槛:非程序员也能快速实现复杂自动化;
- 自动适配平台 API:AI 熟悉平台所有函数(如
usb.click()、ocrFindView()); - 智能规避风控:可主动推荐 HID 方案替代无障碍;
- 支持多模态融合:可组合使用 OCR + 图色 + 控件查找;
- 高效迭代:通过对话持续优化逻辑,无需手动改代码。
四、最佳实践建议
- 细化每一步操作:越详细,生成脚本越准确;
- 明确技术路径:如'不要用无障碍,请用 USB HID 点击';
- 提供界面特征:如'按钮文字为'立即领取''或'图标为红色购物车';
- 指定输出格式:如'将结果保存为 JSON 文件'。
五、实际例子
拼多多相关例子
ai 自然语言描述: 打开拼多多,若找到'首页'或者'个人中心'则表示成功进入拼多多。点击文本为'拍照搜索'且类名为 android.widget.ImageView 控件的左边 50 个像素位置,进入含有类名为 android.widget.EditText 控件的页面。在该控件中输入文本'手机',然后点击文本为'搜索'的按钮,进入含有 id 为 com.xunmeng.pinduoduo:id/tv_title 的搜索结果页面。在搜索界面页面中循环遍历处理 id 为 com.xunmeng.pinduoduo:id/tv_title 的所有控件,用文本'拍照搜索'来判断是否为搜索结果面。具体处理为:点击控件进入含有文本为'客服'控件的页面,查找文本为'进店'的控件,如果找不到则向上滚动页面后继续查找,最多滚动 5 次,如果找到则获取控件的 famliy 为 [0, 2, 1, 1] 的控件的文本。
生成的代码为:
// 循环遍历处理
function _loopDeal(fnGetContainer, fnGetTitle, fnTask, options) {
var dealedArr = [], scrollCount = 0;
var cbItemFilter = options && options.cbItemFilter ? options.cbItemFilter : null;
var backTag = options && options.backTag ? options.backTag : '';
var endTag = options && options.endTag ? options.endTag : '';
var maxConsecutiveScrollCount = options && options.maxConsecutiveScrollCount ? options.maxConsecutiveScrollCount : 3;
console.log('backTag:', backTag, 'endTag:', endTag, 'maxConsecutiveScrollCount:', maxConsecutiveScrollCount);
while (true) {
var container = fnGetContainer();
if (container) {
var find = false;
// 遍历找到的所有目标
for (var item of container) {
// 过滤掉无效的 item
if (!cbItemFilter || cbItemFilter(item)) {
// 获取 title,排除空
var title = fnGetTitle(item);
if (strIsNotEmpty(title.trim())) {
if (!dealedArr.includes(title)) {
console.log('处理:' + title);
find = true;
dealedArr.push(title);
// 执行任务
var r = fnTask(item);
console.log('执行任务结果:' + r);
// 返回到容器界面
if (backTag) {
var b = back2Page(backTag, { backFirst: false, maxStep: 8 });
console.log('back b:' + b);
}
break;
}
}
}
}
if (!find) {
// 检查是否到达容器底部
if (endTag) {
if (findView(endTag, { maxStep: 2 }).length > 0) {
console.log('找到结束 Tag:' + endTag + ", 退出");
break;
}
}
// 检查是否达到最大连续滑动次数
if (scrollCount >= maxConsecutiveScrollCount) {
console.log('超过最大连续滑动次数,认为已经到达底部,退出');
break;
}
console.log('没找到有效的目标 item,滑动');
scroll('up', { afterWait: 1000 });
++scrollCount;
} else {
scrollCount = 0;
}
} else {
console.log('没找到容器,退出');
break;
}
}
}
function main() {
// 启动拼多多 APP
if (1 != launchApp('com.xunmeng.pinduoduo')) {
console.error('启动拼多多失败');
return;
}
console.log('启动拼多多成功');
// 等待进入首页或个人中心
var ret = findView('txt:首页 | txt:个人中心', { maxStep: 10 });
if (ret.length <= 0) {
console.error('未找到首页或个人中心,可能未成功进入拼多多');
return;
}
console.log('成功进入拼多多');
// 点击拍照搜索控件左边 50 像素位置
ret = findView('txt:拍照搜索@cn:android.widget.ImageView');
if (ret.length <= 0) {
console.error('未找到拍照搜索控件');
return;
}
var view = ret.views[0];
// 点击控件左边 50 像素位置
gestureClick(view.left - 50, view.top + view.height / 2, { afterWait: 1000 });
// 等待进入含有 EditText 的页面
ret = findView('cn:android.widget.EditText', { maxStep: 10 });
if (ret.length <= 0) {
console.error('未进入搜索页面');
return;
}
console.log('进入搜索页面');
// 在 EditText 中输入"手机"
paste('cn:android.widget.EditText', '手机', { afterWait: 1000 });
// 点击搜索按钮
click('txt:搜索', { click: true, afterWait: 2000 });
// 等待进入搜索结果页面
ret = findView('id:com.xunmeng.pinduoduo:id/tv_title', { maxStep: 10 });
if (ret.length <= 0) {
console.error('未进入搜索结果页面');
return;
}
console.log('进入搜索结果页面');
// 循环处理搜索结果
_loopDeal(getContainer, getTitle, task, { backTag: 'txt:拍照搜索' });
}
// 弹窗处理
function e1() {
var ret = findView('txt:取消 | txt:关闭|id:com.xunmeng.pinduoduo:id/close', { maxStep: 1 });
if (ret.length > 0) {
click(ret.views[0], { click: true });
sleep(500);
}
}
function getContainer() {
return findView('id:com.xunmeng.pinduoduo:id/tv_title', { flag: 'find_all', failed: e1 }).views;
}
function getTitle(item) {
return item.text;
}
function task(item) {
// 点击控件进入详情页
if (!switchPage(item, 'txt:客服', { failed: e1 }).length > 0) {
console.log('进入详情页失败');
return false;
}
console.log('进入详情页');
// 查找"进店"控件,最多滚动 5 次
var scrollCount = 0;
var ret;
while (scrollCount < 5) {
ret = findView('txt:进店', { maxStep: 2 });
if (ret.length > 0) {
console.log('找到进店控件');
// 获取 family 为 [0, 2, 1, 1] 的控件文本
var targetView = ret.views[0].family([0, 2, 1, 1]);
if (targetView) {
console.log('目标控件文本:', targetView.text);
}
break;
}
console.log('未找到进店控件,向上滚动');
scroll('up', { afterWait: 1000 });
scrollCount++;
}
if (scrollCount >= 5) {
console.log('滚动 5 次后仍未找到进店控件');
}
return true;
}
