苗栗县网站建设_网站建设公司_GitHub_seo优化
2026/1/17 1:07:11 网站建设 项目流程

Open-AutoGLM购物助手:自动监控商品降价并下单提醒

1. 背景与需求分析

在日常网购中,用户常常面临商品价格波动频繁、促销信息分散的问题。许多消费者希望在目标商品降价时第一时间收到通知,并能快速完成下单操作,避免错失优惠。然而手动刷新页面、比价、抢购等流程耗时耗力,尤其在大促期间效率低下。

传统自动化脚本多依赖固定UI路径或网络接口,面对不同电商平台(如淘宝、京东、拼多多)的界面差异和反爬机制,维护成本高且泛化能力差。随着多模态大模型的发展,基于视觉理解的AI代理为解决这一问题提供了新思路。

Open-AutoGLM 是智谱开源的手机端 AI Agent 框架,其核心组件 AutoGLM-Phone 结合了视觉语言模型(VLM)与 ADB 设备控制能力,能够通过自然语言指令驱动真实手机完成复杂任务。本文将介绍如何基于该框架构建一个跨平台商品降价监控与下单提醒系统,实现“看到降价 → 自动下单 → 发送提醒”的全流程自动化。

2. 系统架构设计

2.1 整体架构概述

本系统采用“云端推理 + 本地执行”的混合部署模式,分为三个核心模块:

  • 视觉感知层:利用 AutoGLM-Phone 的 VLM 模型解析手机屏幕内容,识别商品名称、价格、按钮状态等关键信息。
  • 决策规划层:根据用户设定的目标价格阈值,判断是否触发购买动作,并生成操作序列。
  • 设备控制层:通过 ADB 协议发送点击、滑动、输入等指令,模拟人工操作。
+------------------+ +--------------------+ +------------------+ | 用户指令输入 | --> | AI 规划与决策引擎 | --> | ADB 手机控制 | | (自然语言描述) | | (意图理解 + 条件判断)| | (点击/输入/截图) | +------------------+ +--------------------+ +------------------+ ↑ ↓ +------------------+ +------------------+ | 屏幕图像采集 | | 商品数据库同步 | | (ADB 截图 + OCR) | | (Redis 缓存记录) | +------------------+ +------------------+

2.2 核心技术选型依据

技术方案优势局限性
Open-AutoGLM + VLM支持多平台UI理解,无需逆向API依赖GPU推理资源,延迟较高
Selenium/Appium成熟稳定,支持PC端自动化需针对每个App定制脚本
小程序抓包+接口调用高效低延迟易被封禁,开发门槛高

选择 Open-AutoGLM 的主要原因是其具备强泛化能力:同一套逻辑可适配淘宝、京东、抖音商城等多个应用,仅需调整提示词即可迁移使用。

3. 实现步骤详解

3.1 环境准备与设备连接

硬件与环境要求
  • 操作系统:Windows / macOS
  • Python版本:建议 Python 3.10+
  • 安卓设备:Android 7.0+ 手机或模拟器
  • ADB工具:用于设备通信
ADB 配置方法(Windows)
  1. 下载 Android SDK Platform Tools
  2. 解压后进入“系统属性 → 高级 → 环境变量”
  3. Path中添加解压目录路径(如C:\platform-tools
  4. 命令行运行adb version验证安装成功
ADB 配置方法(macOS)
# 假设解压路径为 ~/Downloads/platform-tools export PATH=${PATH}:~/Downloads/platform-tools # 可写入 ~/.zshrc 永久生效 echo 'export PATH=${PATH}:~/Downloads/platform-tools' >> ~/.zshrc

3.2 手机端设置

  1. 开启开发者模式
    设置 → 关于手机 → 连续点击“版本号”7次

  2. 启用USB调试
    设置 → 开发者选项 → 启用“USB调试”

  3. 安装 ADB Keyboard

    • 下载 ADB Keyboard APK
    • 安装后,在“语言与输入法”中设为默认输入法
    • 允许其无障碍服务权限

注意:ADB Keyboard 可实现远程文字输入,避免因中文输入法导致的兼容问题。

3.3 部署控制端代码

# 克隆项目仓库 git clone https://github.com/zai-org/Open-AutoGLM cd Open-AutoGLM # 安装依赖 pip install -r requirements.txt pip install -e .

3.4 设备连接方式

USB 连接
adb devices # 正常输出示例: # List of devices attached # 1234567890ABCDEF device

确保设备显示为device状态,若为unauthorized,请在手机上确认授权弹窗。

WiFi 远程连接

适用于远程服务器调用场景:

# 第一步:通过USB连接并开启TCP/IP模式 adb tcpip 5555 # 第二步:断开USB,使用IP连接 adb connect 192.168.x.x:5555

可通过以下命令获取设备IP地址:

adb shell ip route | awk '{print $9}'

3.5 构建购物监控代理

我们以“监控某款耳机价格是否低于500元”为例,编写自动化流程。

自然语言指令设计
打开京东App,搜索“索尼 WH-1000XM4”,进入商品详情页, 每隔5分钟检查一次当前价格,如果低于500元,则立即点击购买按钮, 填写收货地址和支付方式后提交订单,并通过微信发送“已下单”提醒给‘家人’。
核心代码实现
import time import json from phone_agent.adb import ADBConnection from phone_agent.agent import AutoGLMAgent # 初始化连接 conn = ADBConnection() success, msg = conn.connect("192.168.1.100:5555") if not success: raise Exception(f"连接失败: {msg}") # 创建AI代理实例 agent = AutoGLMAgent( device_id="192.168.1.100:5555", base_url="http://your-server-ip:8800/v1", model="autoglm-phone-9b" ) # 目标商品与价格阈值 target_product = "索尼 WH-1000XM4" threshold_price = 500.0 # 循环检测价格 while True: try: # 执行监控任务 result = agent.run( f"打开京东搜索'{target_product}',进入第一个商品详情页," f"读取当前售价。如果价格低于{threshold_price}元,请立即点击购买按钮。" ) # 解析返回结果中的价格信息 price_str = extract_price_from_response(result.text) current_price = float(price_str.replace("¥", "")) print(f"当前价格: ¥{current_price}") if current_price < threshold_price: # 触发购买流程 buy_result = agent.run( "点击立即购买按钮,选择默认地址,使用支付宝付款,提交订单。" ) if "订单提交成功" in buy_result.text: # 发送微信提醒 agent.run("打开微信,找到联系人‘家人’,发送消息:‘已帮你抢到索尼耳机,价格¥{}!’".format(current_price)) break # 任务完成退出循环 # 每5分钟检查一次 time.sleep(300) except Exception as e: print(f"执行出错: {e}") time.sleep(60) # 出错后等待1分钟重试
辅助函数:从响应中提取价格
import re def extract_price_from_response(text: str) -> str: """ 从AI返回文本中提取价格金额 """ match = re.search(r'¥?(\d+\.\d{2})', text) if match: return match.group(1) # 尝试匹配整数价格 match = re.search(r'(\d+)元', text) if match: return f"{match.group(1)}.00" return "0.00"

3.6 敏感操作安全机制

为防止误操作造成经济损失,系统内置多重防护:

  • 人工确认机制:对于支付类操作,可在配置中设置require_confirmation=True,AI会暂停并等待用户确认。
  • 预算上限限制:在指令中明确限定最高可接受价格。
  • 操作日志审计:所有关键动作均记录时间戳与上下文截图,便于追溯。
agent = AutoGLMAgent( ..., safety_config={ "max_price": 600, # 最高允许价格 "require_payment_confirm": True, # 支付前需确认 "allowed_apps": ["京东", "淘宝", "微信"] # 白名单应用 } )

4. 性能优化与常见问题

4.1 推理延迟优化

由于 VLM 模型需处理图像+文本,单次响应时间约3~8秒。可通过以下方式提升效率:

  • 降低截图分辨率:在不影响识别的前提下缩小图像尺寸
  • 缓存历史状态:避免重复识别相同界面元素
  • 异步截图采集:提前获取最新屏幕快照,减少等待时间

4.2 提示词工程技巧

精准的自然语言指令能显著提高成功率:

✅ 推荐写法:

“进入商品详情页,查找标有‘促销价’的文字区域,读取其右侧数字作为当前价格。”

❌ 模糊表达:

“看看现在多少钱”

4.3 常见问题排查

问题现象可能原因解决方案
ADB 连接失败防火墙阻止5555端口开启路由器端口转发或使用USB连接
模型无响应vLLM服务未启动或参数错误检查--tensor-parallel-size与显卡数量匹配
输入中文乱码未安装ADB Keyboard安装并切换至ADB Keyboard输入法
操作失败UI变化导致元素定位失效提供更详细的上下文描述,增强鲁棒性

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询