UI-TARS与Midscene.js自动化探索

结合 Midscene.js 和 UI-TARS 大模型 实现 UI 页面自动化的可实施方案,涵盖环境配置、核心流程、代码示例及优化建议:

一、环境配置与工具集成

  1. 安装 Midscene.js

    • 方式一:通过 Chrome 插件快速安装(适用于浏览器自动化场景)。
    • 方式二:从 GitHub 下载源码集成到现有项目(支持 Node.js 或 Puppeteer 环境)。
  2. 配置 UI-TARS 模型服务

    • 模型部署:在阿里云 PAI、ModelScope 等平台部署 UI-TARS 模型(推荐使用 7B 或 72B 版本)。
    • API 接入:获取模型服务的 endpoint URLAPI Token,并在 Midscene.js 中配置以下参数:
      const mid = new Midscene({
        OPENAI_API_KEY: "<UI-TARS-API-TOKEN>",
        OPENAI_BASE_URL: "<UI-TARS-ENDPOINT>/v1",
        MIDSCENE_MODEL_NAME: "UI-TARS-7B-SFT" // 根据部署版本调整
      });
      

二、核心功能实现方案

1. 行为操作(AI Action)

通过自然语言指令驱动页面交互,UI-TARS 解析指令并生成精准操作(点击、输入、滚动等)。
示例代码

// 电商网站自动化下单流程
await mid.aiAction('打开浏览器并访问电商网站首页', { url: 'https://example.com' });
await mid.aiAction('在搜索框中输入“手机”并点击搜索按钮');
await mid.aiAction('选择搜索结果中的第一个商品并进入详情页');
await mid.aiAction('点击“加入购物车”并跳转到结算页面');

优势

  • UI-TARS 的 增强感知能力 能识别复杂 UI 元素(如动态加载的列表)。
  • 支持多级推理(如先滚动定位再点击)。
2. 数据提取(AI Query)

从页面中提取结构化数据,结合 UI-TARS 的 GUI 增强感知 能力,支持动态元素识别。
示例代码

const productInfo = await mid.aiQuery({
  name: '商品名称,string',
  price: '当前价格,number',
  stock: '库存状态,boolean'
});
// 输出示例:{ name: "某品牌手机", price: 2999, stock: true }

应用场景:价格监控、数据爬取等。

3. 断言验证(AI Assert)

通过自然语言描述预期结果,UI-TARS 结合 System 2 推理 验证页面状态。
示例代码

await mid.aiAssert('购物车中显示的商品总价为 2999 元');
await mid.aiAssert('当前页面包含“订单提交成功”提示');

优化建议:对于关键断言,可结合传统断言库(如 Jest)提升稳定性。


三、调试与优化

  1. 调试配置

    • 启用 MIDSCENE_DEBUG_AI_PROFILE=1 查看每次调用的 Token 消耗和执行时间。
    • 使用 可视化报告 回放操作步骤,定位失败环节。
  2. 性能优化

    • 短期记忆利用:通过 context 参数传递历史操作,减少重复推理。
    • 混合定位策略:对高稳定性要求的元素,结合 CSS 选择器与 AI 指令(如 mid.click('#search-box', { aiFallback: '在搜索框输入关键词' }))。

四、扩展应用场景

  1. 跨平台自动化
    • 结合 UI-TARS-Desktop 客户端实现桌面应用自动化(如调整 PPT 样式、修改系统设置)。
  2. 复杂任务处理
    • 利用 UI-TARS 的 多级思维模式 处理多步骤任务(如“从邮箱下载附件并解析内容”)。

五、代码示例(完整流程)

const { Midscene } = require('@midscene/web');
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  const mid = new Midscene(page, {
    OPENAI_API_KEY: "sk-xxx", // 替换为 UI-TARS 的 API Key
    OPENAI_BASE_URL: "https://ui-tars-endpoint/v1"
  });

  try {
    // 步骤 1:登录操作
    await mid.aiAction('打开登录页面并输入用户名和密码', {
      username: 'test@example.com',
      password: 'password123'
    });
    
    // 步骤 2:数据提取
    const userProfile = await mid.aiQuery({
      name: '用户昵称,string',
      role: '用户角色,string'
    });
    console.log('用户信息:', userProfile);

    // 步骤 3:断言验证
    await mid.aiAssert('页面右上角显示“欢迎回来”提示');
  } finally {
    await browser.close();
  }
})();

六、注意事项

  • 指令清晰度:避免模糊描述(如“点击那个按钮”),需明确元素特征(如“点击蓝色‘提交’按钮”)。
  • 模型适配:UI-TARS 在动态环境(如 Android 应用)中表现更优,静态网页可优先使用 GPT-4o。

通过上述方案,可快速构建基于自然语言的 UI 自动化流程,显著降低脚本维护成本。如需进一步优化,建议参考 UI-TARS 官方文档Midscene.js 示例项目

### Midscene.jsUI-TARS 的集成 #### 中间场景简介 Midscene.js 是一种 AI 驱动的 UI 自动化测试框架,支持自然语言交互并能生成可视化报告。该工具利用大型语言模型解析用户的自然语言指令来执行各种操作,例如输入文本、点击按钮等[^1]。 #### UI-TARS 简介 UI-TARS 是一个专注于提升 Web 应用程序性能和用户体验的技术栈集合体。它提供了丰富的 API 接口和服务端组件,用于构建高效稳定的前端应用环境。 #### 集成方案概述 为了实现 Midscene.js UI-TARS 的无缝对接,可以考虑以下几个方面: - **API 调用兼容性**:确保两者之间的通信协议一致,特别是 RESTful 或 GraphQL 类型的数据交换方式。 - **事件监听机制同步**:使两个系统的事件触发逻辑相互匹配,以便于在一个平台上发生的任何变化都能及时反映到另一个平台上去。 - **统一的身份验证体系**:建立一套适用于双方的安全认证措施,保障用户信息安全的同时也方便管理权限控制。 #### 安装配置指南 对于希望尝试这种组合解决方案的人来说,可以从官方 GitHub 页面下载最新版本的源码包,并按照给定说明文档完成本地部署工作。通常情况下,这会涉及到安装 Node.js 运行时以及必要的依赖库文件。 ```bash git clone https://github.com/your-repo/midscene-ui-tars.git cd midscene-ui-tars npm install ``` #### 示例项目结构 下面是一个简单的目录布局例子,展示了如何组织代码以促进这两个项目的协同开发: ``` midscene-ui-tars/ ├── config/ │ └── settings.json # 全局设置参数定义 ├── src/ │ ├── ui-tests # 存放所有关于界面自动化的脚本 │ │ └── test-case-one.spec.ts │ ├── services # 实现业务功能的服务层模块 │ │ └── user-service.ts │ └── utils # 工具函数和其他辅助类目 └── tests/ └── integration # 整合测试案例集 └── sample-integration.test.ts ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闫小甲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值