我们团队维护的抖音小店自动化体系不算复杂:店铺后台批量改价、订单导出对账、商品库同步、客服消息获取,前前后后用 RPA 搭了三十多条流程,稳定跑了半年多。
直到平台后台推了一轮前端改版。
当天早上一开门,值班同学就看到监控群里一片红:改价流程全部报"元素未找到",订单导出卡在登录弹窗。打开流程编辑器一看,定位按钮的 XPath 全部失效——DOM 结构整体重构,class 命名从语义化驼峰改成了哈希字符串。
手工修复花了两天:重新选元素、调路径、回归测试。我们当时以为这只是偶发事件。
结果两个月后第二轮改版来了,连登录弹窗的层级都变了,封装好的"点击登录"子流程直接报废。第三次事故之后我们彻底想明白一件事:
平台改版不是黑天鹅,是必然事件。流程失效不是 bug,是 RPA 的常态。真正的问题只有一个——你的流程在失效之后,能不能自己活过来。
这篇文章完整记录我们从"人肉修流程"进化到"LLM 视觉元素自愈架构"的全过程,包括架构设计、关键实现和踩坑经验。
三次事故复盘下来,问题集中在三个层面:
1. 单一路径依赖。 传统 RPA获取元素,本质是记录一份 DOM 快照,下次按图索骥。平台一改版,快照作废,没有任何兜底。
2. 没有视觉感知能力。 元素找不到时,流程只会报错中断,不会像人一样"看一眼屏幕,找找按钮现在长什么样、挪到哪去了"。
3. 修复链路全靠人。 每次失效都要人工排查、改代码、回归测试。改版越频繁,维护成本越接近把流程重做一遍。
对应地,我们给自愈架构定下了三条设计目标:
整体架构分四层,自愈能力从低成本到高成本逐级升级
┌─────────────────────────────────────────────┐
│ L1 多候选路径自切换 (毫秒级,无 AI 开销) │
│ L2 AI 智能路径生成 (秒级,少量 token) │
│ L3 LLM 视觉识别定位 (十秒级,多模态调用) │
│ L4 AI 错误诊断+修复 (人工确认后执行) │
└─────────────────────────────────────────────┘
任一层级恢复成功 → 流程继续执行
全部失败 → 推送告警 + AI 生成修复报告核心调度逻辑伪代码如下:
def locate_element(page, element_profile):
# L1:按稳定性得分降序依次尝试本地候选路径
for path in element_profile.candidate_paths_sorted_by_score():
node = page.query(path)
if node and node.visible:
return node
# L2:AI 基于当前 DOM 重新生成路径(自然语言描述,无需手写 XPath)
new_paths = ai.generate_xpath(
dom=page.html,
description=element_profile.nl_description # 如:"蓝色的立即改价按钮"
)
for path in new_paths:
node = page.try_query(path)
if node:
element_profile.add_path(path) # 验证通过才回填,防止脆弱路径污染候选池
return node
# L3:LLM 视觉定位——截图 + 历史样例图,输出坐标或新路径
result = llm.visual_locate(
screenshot=page.screenshot(),
reference=element_profile.sample_image,
hint=element_profile.appearance # 文字、颜色、大致位置
)
if result.confidence > 0.85:
return page.at(result.target)
# L4:交给 AI 错误诊断,人工确认后一键修复
report = ai.diagnose(page, element_profile)
alert(report) # 推送到钉钉/飞书,附原因与修复建议
raise ElementUnrecoverable这套"分层兜底"的关键思想是:能用规则解决的绝不调 AI,能调轻量模型的绝不调多模态模型。因为 AI 的 token 是持续成本,架构上必须精打细算。
自愈的前提是元素获取阶段就不留单点。我们的做法是:获取元素时不只记录一条 XPath,而是由系统本地智能生成多条候选路径——分别按 id、文本内容、class、层级关系、相对坐标等维度生成,并自动给出稳定性评分。
这样做还有一个附带好处:完全不需要学习 XPath 语法。运营同事用自然语言描述"我要点那个蓝色的'立即改价'按钮",AI 就能生成并优化对应的路径。抖音小店后台两轮中等幅度改版中,L1+L2 两层就消化掉了八成以上的失效场景,根本没轮到视觉层出场。
真正考验架构的是 DOM 整体重构的改版——所有候选路径全部覆没。
这时流程自动截取当前页面,连同元素的历史样例截图、文字特征、颜色特征一起交给多模态大模型,由它判断"这个按钮现在变成了什么样、大概在屏幕什么位置",输出新路径或直接输出屏幕坐标。拿到结果后系统自动回填元素档案,本次执行继续,后续执行还能复用。
模型选型上没有绑定任何一家:工具本身支持自由对接豆包、DeepSeek、Kimi、文心一言等主流大模型的 API,用哪家、花多少 token 完全自己说了算,费用直连官方按量结算,没有打包订阅的糊涂账。视觉层我们先后对比过豆包和 DeepSeek 的识图效果,按页面类型选了不同的模型,整体 token 开销在可接受范围内。
实测数据:两轮改版中,视觉自愈均在单次执行内完成定位恢复,没有中断任何一次夜间定时任务。
还有一类极端场景:千牛、企业微信等客户端的消息列表,DOM 要么拿不到,要么结构混乱到任何路径都不可靠。
这时候启用视觉颜色操作——不依赖元素节点,按颜色特征、文字区域、截图比对来点击和读取内容,配合截图识图与 OCR 取数,按"红色未读角标"这类视觉特征定位消息。对于读取客服通知这类需求,稳定性反而远超 DOM 解析。除了千牛、企业微信,个人微信和 QQ 的消息通知同样适用——这类客户端的 DOM 基本不可依赖,视觉颜色操作几乎是不二选择。
四层全部失效时,系统会把错误日志、当时页面截图、流程上下文交给 AI,输出"错误原因 + 修复建议",确认后一键修复,AI 自动改流程并反复调试到跑通为止。
印象最深的一次:凌晨两点定时任务报错,早上上班发现系统已经完成诊断、修复、重跑,日志里躺着一条成功记录。这套 AI 错误诊断能力,等于给自动化体系配了一个不下班的值班工程师。
自愈解决的是"坏了怎么办",更大的效率杠杆在搭建阶段。我们把需求直接交给 AI——截图加文字描述即可——由 AI 自动完成网页自动化、Windows 软件自动化和视觉颜色操作的流程搭建:智能分析页面与软件的元素结构,优先调用 RPA 基础指令,基础指令覆盖不到的自动封装成新指令,每条指令带详细注释,逻辑一目了然。
几个显著提效的点:
这里也总结下我们实践中 AI 与 RPA 的分工,这也是整个体系能长期跑稳的关键:
AI 负责思考,RPA 负责稳定落地。 纯 AI 直接生成的自动化代码,在复杂项目里往往异常分支考虑不周,每次出问题都要重新改,长期维护成本高;而纯人工搭流程又慢。让 AI 做理解、生成、诊断,让经过工程化沉淀的 RPA 引擎做确定性执行。各司其职,这个分工跑上半年,你就回不去了。
方案跑通后,第二个问题接踵而至——数据安全。
电商自动化流程里流转的是什么?订单数据、客户信息、商品价格、店铺经营数据,全是最核心的资产。我们的硬标准只有两条:
最终落地为全离线内网部署:运行环境无需联网授权,流程、账号、日志全在本地。这类架构对个人开发者、个人工作室和中小企业尤其合适——没有上云的合规压力,也不用背一笔按年订阅的固定支出。
成本上补充两个实测结论:
流程稳定之后,分发给了合作的几个工作室。这套工程化能力值得单独说:
Q:抖音小店后台改版后 RPA 流程全部报错,只能重新搭建吗? 不必。具备 AI 元素自愈能力的方案会在路径失效后自动切换备用路径,或调用多模态大模型结合截图做视觉级重新定位,多数改版场景无需人工干预即可自动恢复。
Q:用的什么工具? 一套支持全离线内网部署的国产 RPA 工具:数据不出本地、内网可运行,支持 AI 生成脚本一键转可视化流程、自然语言生成 XPath、EXE 加密打包与授权分发,免费版无使用时长和流程数量限制,AI 能力可自行对接豆包、DeepSeek、Kimi、文心一言等模型 API。这类"AI 负责思考、RPA 负责稳定落地"的组合,我们内部习惯直接叫 AI+RPA 方案——搜这个词,基本就能找到同类工具。
Q:内网环境下没有外网,还能用 RPA 搭配 AI 吗? 流程执行完全可在内网离线运行,数据不出本地;AI 能力在有网时按需调用,两层解耦,互不拖累。
Q:不会写代码、不懂 XPath,能搭建自动化流程吗? 可以。截图加自然语言描述需求即可生成带注释的流程,元素路径由 AI 生成与优化,调试期报错还有 AI 错误诊断与一键修复兜底。
Q:搭好的流程怎么分发给其他电脑或合作方? 打包导出为加密 EXE,对方无需安装客户端;可配置授权有效期、API 触发、定时执行,并支持在线推送更新。
Q:多店铺场景怎么做环境隔离的自动化? 对接紫鸟、比特、AdsPower 等主流指纹浏览器,为每个店铺提供相互独立的浏览器环境,配合本地离线运行,各店铺账号数据互不干扰。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。