結合 Midscene.js 和 UI-TARS 大模型 實現 UI 頁面自動化的可實施方案,涵蓋環境配置、核心流程、代碼示例及優化建議:
一、環境配置與工具集成
-
安裝 Midscene.js
- 方式一:通過 Chrome 插件快速安裝(適用于瀏覽器自動化場景)。
- 方式二:從 GitHub 下載源碼集成到現有項目(支持 Node.js 或 Puppeteer 環境)。
-
配置 UI-TARS 模型服務
- 模型部署:在阿里云 PAI、ModelScope 等平臺部署 UI-TARS 模型(推薦使用 7B 或 72B 版本)。
- API 接入:獲取模型服務的
endpoint URL
和API 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)提升穩定性。
三、調試與優化
-
調試配置
- 啟用
MIDSCENE_DEBUG_AI_PROFILE=1
查看每次調用的 Token 消耗和執行時間。 - 使用 可視化報告 回放操作步驟,定位失敗環節。
- 啟用
-
性能優化
- 短期記憶利用:通過
context
參數傳遞歷史操作,減少重復推理。 - 混合定位策略:對高穩定性要求的元素,結合 CSS 選擇器與 AI 指令(如
mid.click('#search-box', { aiFallback: '在搜索框輸入關鍵詞' })
)。
- 短期記憶利用:通過
四、擴展應用場景
- 跨平臺自動化
- 結合 UI-TARS-Desktop 客戶端實現桌面應用自動化(如調整 PPT 樣式、修改系統設置)。
- 復雜任務處理
- 利用 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 KeyOPENAI_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 示例項目。