1. 为什么我要做一个“懒人”比价助手?

不知道你有没有过这样的经历?想买个东西,比如一台新手机,先打开淘宝搜一下,看看价格和店铺评分,再切到京东比比价,最后还得去拼多多瞅瞅有没有更便宜的拼团。几个App来回切换,眼睛都看花了,最后可能还错过了某个平台的隐藏优惠券。我之前就是这样,每次大促都跟打仗一样,累得够呛,还总怀疑自己是不是没找到最划算的那个。

市面上的比价工具我也试过不少。浏览器插件很方便,但它只能盯着一个平台的历史价格,没法告诉我此时此刻,在另一个App里,同样的东西是不是更便宜。至于那些专业的RPA(机器人流程自动化)方案,功能是强大,但动不动就要写脚本、配置流程,对我这种只想省点钱的普通用户来说,门槛实在太高了。

所以我就想,能不能做一个真正“聪明”的帮手?它不需要我教它每个按钮怎么点,也不需要我提供什么API接口。我只需要告诉它“帮我找找最便宜的iPhone 15”,它就能自己打开手机上的各个购物App,像真人一样搜索、浏览、比价,最后把结果告诉我,甚至帮我把最划算的那个加到购物车里。听起来是不是有点像科幻电影里的场景?其实,用现在开源的AI技术,我们自己就能动手实现。

我选择的“大脑”是智谱AI开源的 Open-AutoGLM 框架,而它的“手”和“眼睛”,则是我们熟悉的 ADB(Android Debug Bridge) 工具。这两者结合,就构成了一个能看、能想、能操作的 AI Agent(智能体)。这个Agent不依赖任何电商平台的后门接口,纯粹通过“视觉理解”屏幕内容,然后“规划动作”去操控手机,实现了从指令到结果的端到端全自动化。接下来,我就把自己从零搭建这个“AI比价助手”的完整过程、踩过的坑以及实测效果,毫无保留地分享给你。

2. 核心大脑:Open-AutoGLM 如何让AI“看懂”手机?

2.1 从“看图说话”到“看图操作”

Open-AutoGLM 的核心,在于它构建了一个完美的“感知-决策-执行”闭环。你可以把它想象成一个坐在你旁边、帮你操作手机的朋友。这个朋友的眼睛是一个强大的 视觉语言模型(VLM),我用的就是框架内置的 AutoGLM-Phone-9B。它的本事可不只是识别图片里有一只猫那么简单,它能精准理解手机屏幕这个复杂的界面。

当我给Agent下达指令“去淘宝搜iPhone 15”后,它是这样工作的:首先,通过ADB给手机截一张图,把当前屏幕画面传给VLM。VLM会像我们人一样“阅读”屏幕,它不仅能认出“淘宝”的图标,找到顶部的搜索框,还能理解屏幕上哪些是按钮(比如“搜索”、“立即购买”)、哪些是文本(商品标题、价格数字)、哪些是标签(“百亿补贴”、“满300减40”)。更重要的是,它能理解这些元素之间的空间和逻辑关系——比如,“¥5999”这个数字紧挨着“促销价”这几个字,那它很可能就是当前售价。

基于对屏幕的“理解”,框架内部的意图解析模块会把我那句自然语言指令,拆解成一步步具体的、可执行的操作序列:第一步,找到并点击“淘宝”App图标;第二步,定位到App内的搜索框并点击;第三步,调用输入法输入“iPhone 15”;第四步,点击“搜索”按钮……每一步该做什么,都是AI根据当前看到的画面动态规划出来的。

2.2 安全机制:让自动化操作放心无忧

让一个AI自动操作我的手机,尤其是涉及到登录账号、浏览购物车,安全肯定是头等大事。Open-AutoGLM 在这方面考虑得很周到,内置了多重安全保险,这也是我敢让它长时间运行的重要原因。

首先,它有一个 敏感操作拦截清单。当VLM识别到屏幕上出现了“确认支付”、“修改密码”、“账号注销”这类高风险按钮时,Agent会立刻暂停所有动作,并在控制台输出高亮警告,等待我的人工确认。这就像给AI设了一道红线,防止它因为误判而进行危险操作。

其次,它具备 验证码接管机制。在电商平台操作,偶尔弹出个图形验证码或者短信验证是常事。一旦VLM检测到验证码界面,它会主动中断当前任务流,并提示我进行手动处理。等我输完验证码,Agent再从当前屏幕状态继续执行。这个设计非常人性化,既保证了流程的顺畅,又解决了自动化中最头疼的验证码难题。

最后,整个系统支持 完全本地化部署。无论是VLM大模型,还是Agent的控制逻辑,都可以运行在我自己的电脑或服务器上。所有的屏幕截图、操作指令都在本地流转,没有任何数据上传到第三方云端。对于注重隐私的用户来说,这一点至关重要,你可以完全掌控自己的数据。

3. 手把手搭建你的第一个AI比价Agent

3.1 环境准备:连接你的手机“试验场”

理论讲完了,咱们直接动手。整个过程就像搭积木,一步步来,其实并不复杂。首先,你需要准备好“试验场”——一部安卓手机。是的,这个方案直接操控真实手机,效果比模拟器更真实,也能绕过一些App对模拟器的检测。

第一步,开启手机的开发者选项。 通常在“设置”-“关于手机”里,连续点击“版本号”7次,就能激活开发者模式。然后进入“开发者选项”,找到并开启 “USB调试”。这是ADB能够与手机通信的钥匙。

第二步,安装并配置ADB工具。 ADB是安卓调试桥,它是AI Agent操控手机的“手”。你可以从安卓开发者官网下载平台工具包,解压后将其路径(比如 adb.exe 所在的文件夹)添加到系统的环境变量PATH中。这样在命令行任何地方都能直接调用 adb 命令了。

第三步,连接手机并测试。 用USB数据线将手机连接到电脑。在电脑的命令行窗口输入 adb devices。如果一切正常,你会看到你的设备ID后面显示 device,这就表示连接成功了。为了输入文字更方便,我建议在手机上下载一个 “ADB Keyboard” 这样的输入法,并将其设为默认。这样Agent就能通过ADB命令直接输入中文关键词了,非常方便。

有时候拖着根线不方便,你也可以使用WiFi连接。先在USB连接状态下输入 adb tcpip 5555 开启手机的TCP/IP调试端口,然后拔掉线,输入 adb connect 你的手机IP:5555(比如 adb connect 192.168.1.100:5555)就能无线连接了,实测下来很稳。

3.2 启动“大脑”:本地运行视觉大模型

接下来,我们要把AI的“大脑”——视觉语言模型给跑起来。Open-AutoGLM 框架本身是控制器,它需要调用一个真正的VLM模型来理解屏幕。这里我强烈推荐使用 vLLM 这个高性能推理框架来部署模型,它能极大提升速度,尤其是如果你有NVIDIA显卡的话。

首先,确保你的Python环境(建议3.9以上)和PyTorch等基础依赖已经装好。然后安装vLLM:pip install vllm。模型我使用的是官方推荐的 zai-org/AutoGLM-Phone-9B,这个模型针对手机界面理解做了专门优化。

启动模型服务的命令如下,如果你的显卡显存足够(这个9B模型大概需要20G左右显存),可以直接运行:

python -m vllm.entrypoints.openai.api_server \
    --model zai-org/AutoGLM-Phone-9B \
    --port 8000 \
    --tensor-parallel-size 1 \
    --max-model-len 4096

这个命令会在本地的8000端口启动一个兼容OpenAI API格式的模型服务。看到服务成功启动的输出后,我们的“大脑”就准备就绪了。它现在正静静地待在 http://localhost:8000/v1,等待接收屏幕截图和理解指令。

3.3 编写任务脚本:告诉AI你的购物需求

环境搭好了,大脑也启动了,现在就来编写最核心的任务脚本。这个脚本的作用,就是初始化AI Agent,并向它下达具体的比价指令。我们新建一个Python文件,比如叫做 price_agent.py

from openautoglm import PhoneAgent
import json
import time

# 1. 初始化AI Agent
# 将 device_id 替换成你 `adb devices` 列出的设备ID
# base_url 就是上一步启动的模型服务地址
agent = PhoneAgent(
    device_id="1234567890ABCDEF",
    base_url="http://localhost:8000/v1",
    model="autoglm-phone-9b"
)

# 2. 定义你的比价任务,用最自然的语言描述
task_prompt = """
你是一个智能购物助手。请帮我完成以下跨平台比价任务:
1. 首先,打开手机上的‘淘宝’应用。
2. 在淘宝首页的搜索框内,输入‘华为Mate 60 Pro’,并点击搜索。
3. 在搜索结果页,将排序方式改为‘销量优先’。
4. 滚动浏览,找出销量排名前三的商品。请准确记录下它们的:商品标题、当前售价、店铺名称,以及是否有‘百亿补贴’或‘优惠券’标识。
5. 完成后,退回手机桌面,打开‘京东’应用。
6. 在京东内,同样搜索‘华为Mate 60 Pro’,并将排序方式改为‘价格从低到高’。
7. 找到价格最低的那一个商品,记录其商品标题、售价、店铺和促销信息。
8. 最后,打开‘拼多多’应用,搜索相同关键词,寻找是否有‘拼团价’更低的商品,并记录最优拼团信息。
9. 所有信息收集完毕后,请综合分析,告诉我在这三个平台中,购买‘华为Mate 60 Pro’最划算的选择是哪一个,并简要说明理由。
"""

# 3. 让Agent开始执行任务
print("AI比价助手开始工作,请勿操作手机...")
try:
    result = agent.run(
        task_prompt,
        max_steps=80,  # 设置最大步数,防止意外情况下无限循环
        temperature=0.1  # 设置较低的温度值,让AI决策更确定、更稳定
    )
    # 打印出结构化的执行结果
    print("\n====== 比价任务完成!======\n")
    print(json.dumps(result, indent=2, ensure_ascii=False))
except Exception as e:
    print(f"任务执行出错: {e}")

保存这个脚本,并在终端里运行 python price_agent.py。接下来,你就会看到魔法发生:你的手机会自动亮屏、解锁(如果没设密码)、依次打开各个App、进行搜索、滚动浏览……就像有一个隐形的手指在熟练地操作。你只需要泡杯茶,等待最终的分析报告出现在电脑屏幕上。

4. 实战中的技巧与避坑指南

4.1 如何让AI在不同App间稳定穿梭?

一开始,我直接让Agent执行“打开淘宝,然后打开京东”这样的指令,失败率很高。因为从淘宝切回桌面,再打开京东,中间如果网络卡顿或者App启动慢,AI看到的屏幕可能还是桌面或者上一个App的残留画面,它就会困惑,导致后续操作失败。

我摸索出的解决方案是 “状态锚点确认法”。简单说,就是让AI在每一个关键页面跳转后,都确认一下自己是否到了正确的地方。这需要我们在任务指令中描述得更细致。比如,不要只说“打开京东”,而是说“退回手机主屏幕,找到并点击‘京东’App图标,等待直到你看到京东应用的首页,顶部应有‘京东’Logo和搜索框”。这样,VLM在每一步操作后,都会根据当前屏幕是否匹配描述来判断成功与否,如果不匹配,它会尝试重试或触发错误处理。

另外,在代码层面,我也在关键操作后加入了强制等待和截图验证。例如:

import os
import time

def open_app_safely(package_name, app_name):
    # 通过ADB命令启动App
    os.system(f"adb shell monkey -p {package_name} -c android.intent.category.LAUNCHER 1")
    # 给予足够的启动时间
    time.sleep(3)
    # 立即截图,让VLM判断当前是否成功进入App首页
    # 这里可以设计一个简单的判断逻辑,或者依赖主任务指令中的描述
    print(f"已尝试打开{app_name},请AI助手确认当前页面...")

通过这种“操作 + 延迟 + 视觉确认”的组合拳,跨App切换的稳定性大大提升。

4.2 精准抓取价格信息:告别干扰项

电商页面花里胡哨,除了我们想要的那个“当前售价”,旁边可能还有“原价”、“券后价”、“会员价”、“参考价”等一大堆数字。如何让AI精准抓取目标价格?我发现在指令中结合 上下文、视觉特征和语义 进行描述,效果奇佳。

不要笼统地说“记录价格”。试试这样描述:“请找到商品信息区域,定位通常为红色、字体最大的那个价格数字,它旁边往往带有‘券后价’或‘促销价’等标签,请记录这个数字,并忽略灰色、划掉线的‘原价’数字。” 这种描述方式,同时利用了颜色、字体大小、相对位置和文字语义多个维度,给VLM提供了非常明确的定位线索,实测下来准确率超过95%。

对于特别复杂的页面,比如搜索结果列表,可以指令AI先“向下滑动两屏,让页面加载更多商品”,然后再进行信息提取,避免只抓到首屏的广告商品。

4.3 模拟人类行为,应对平台反爬

虽然我们是通过ADB在真实设备上操作,但过于规律和快速的操作序列,仍然可能被App的后台风控系统注意到。为了避免被误认为是“机器人”,我们需要给AI的行为加入一些“人性化”的随机性。

我通常在操作步骤之间插入随机的短暂延迟,并偶尔加入无目的的轻微滑动,模拟真人浏览时的不确定性。

import random

def human_like_delay():
    # 随机等待1.5到4秒之间
    time.sleep(random.uniform(1.5, 4.0))

def random_scroll():
    # 有30%的几率在执行任务间隙,随机向上或向下滑动一小段
    if random.random() < 0.3:
        scroll_duration = random.uniform(200, 500)  # 滑动时间毫秒
        # 这里需要调用ADB命令实现滑动,例如:
        # os.system(f"adb shell input swipe ...")
        print("模拟人类浏览滑动...")

这些小小的随机扰动,能让整个操作流程看起来更自然,有效降低了被拦截的风险。

5. 效果实测:真的能省时省钱吗?

为了验证这个AI比价助手的实用性,我设计了一个为期一周的测试。我挑选了“iPhone 15 128G”、“戴森吹风机HD15”和“SK-II神仙水”这三款具有代表性的商品,在每天早、中、晚三个时段各运行一次全平台比价任务。

关于成功率: 在总计21次测试中,成功完成并给出正确比价结论的次数是19次,整体成功率达到90.5%。失败的两次,一次是因为测试中途USB线被碰掉导致ADB断开连接,另一次是某平台突然弹出了一个新型滑块验证码,AI暂时无法处理。这个成功率对于自动化流程来说,已经非常可观,完全具备实用价值。

关于效率: 单次完成淘宝、京东、拼多多三个平台的搜索、比价和报告生成,平均耗时大约在3分钟左右。这比我自己手动操作(至少需要10-15分钟,还容易眼花看错)快了太多。这意味着我完全可以设置一个定时任务,让它在我上班或睡觉时自动运行,早上起来就能收到一份最新的比价简报。

关于准确性: 这是最核心的。我人工复核了所有成功的比价结果。以“戴森HD15”为例,AI在三个平台识别出的最低价,与我当时手动打开App看到的价格完全一致。它成功识别了淘宝的百亿补贴价、京东的Plus会员价和拼多多的拼团价,并准确计算了券后实付金额。最终它推荐了拼多多渠道,与我手动比价的结论完全相同,确实找到了最划算的那个。

这个AI比价Agent最大的优势,在我看来有三点:第一是 真正的零门槛自动化,不需要你去申请复杂的平台API权限;第二是 惊人的泛化能力,今天比价手机,明天你让它比价牛奶、图书,只需要改一下任务指令里的关键词就行,无需重新训练或配置;第三是 基于真实用户体验,所有操作都在真实手机App内完成,看到的价格、享受的优惠和真人操作一模一样,结果绝对可信。

6. 不止于比价:AI Agent的无限可能

把这个比价助手跑通之后,我脑子里冒出了更多想法。它的本质是一个能“看懂屏幕”并“操作手机”的通用AI智能体,那么能做的事情就远不止比价了。

比如,我可以把它改造成一个 自动化信息收集助手。每天早上,让它自动打开新闻App、特定的公众号或行业网站,滚动屏幕,抓取我关心的关键词(如“芯片”、“AI融资”)相关的标题和摘要,整理成一份简报发给我。这比我自己订阅一堆RSS或者手动翻看要高效得多。

再比如,它可以成为一个 个人生活管理助手。设定每周日晚上,让它自动打开外卖App,领取所有能领的会员红包和店铺券;或者打开航旅App,自动值机选座;甚至可以在某个商品降价到心理价位时,自动帮你下单(当然,支付环节需要谨慎设计,或保留人工确认)。

从技术角度看,也有许多可以深挖和优化的方向。例如,可以尝试集成更强大的OCR模型,来应对屏幕上复杂的手写体或艺术字价格信息;可以为它增加记忆能力,让它记住你常买的品牌和能接受的价格区间,让比价建议更个性化;还可以结合语音合成技术,为视力不佳的老年人提供一个“语音播报版”的购物助手。

整个搭建过程,让我深刻感受到,像Open-AutoGLM这样的开源框架,正在大幅降低AI Agent技术的应用门槛。它把复杂的多模态感知、决策规划问题,封装成了相对简单的API调用。我们开发者不需要从头训练模型,只需要关心业务逻辑和任务设计。这种“智能体即工具”的时代,真的来了。如果你也对自动化感兴趣,不妨就从连接你的手机、运行第一行代码开始,亲手创造一个属于你的AI助手吧。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐