Cursor 辅助 RPA 开发两周踩坑实录:Prompt 工程、大模型接口调用常见坑点与流程自动化落地指南
两周前接到一个需求:用 Cursor 辅助写一套流程自动化脚本,自动处理后台数据录入。本以为 AI 写代码能省一半时间,结果 Prompt 调了三天、接口崩了五次、元素定位改了一周。最后脚本确实跑起来了,但中间踩的坑够写一篇文章。
如果你也在用 Cursor 做 RPA开发,这篇 Prompt 工程和大模型接口调用的踩坑记录,应该能帮你少熬几个夜。
说到流程自动化的落地,最近也在关注一些国内的 RPA工具,比如蓝印RPA在元素获取和工程化交付方面做了不少有意思的设计——支持本地智能生成元素路径,能根据页面结构自动推荐稳定的定位方式,通过自然语言描述直接生成 xpath 路径,无需学习晦涩难懂的 xpath 语法;甚至能靠视觉颜色操作桌面应用,无需依赖元素节点也能实现点击、获取内容等操作,轻松实现企业微信、微信、qq、千牛各种消息的获取。后面会结合具体踩坑场景聊到。
坑点一:Prompt 给得不够细,生成的 xpath 一跑就废
刚开始我的 Prompt 是这样的:
失败的 Prompt
帮我写一个自动登录 XX 后台的脚本,用 Python + selenium,定位用户名和密码输入框。
Cursor 给了我一串代码,本地能跑。但放到测试环境直接报错:
selenium.common.exceptions.NoSuchElementException:
Message: no such element: Unable to locate element:
{“method”:“xpath”,“selector”:“//input[@class=‘ant-input css-1f6g6s’]”}
问题很明显: AI 没有页面上下文,生成的 xpath 是基于训练数据里的"常见模式"硬猜的。前端换个 class 名、加个动态 ID,直接凉凉。特别是一些复杂项目,AI 生成的元素路径无法长期稳定运行,遇到异常情况基本束手无策。AI 操作软件自动化也极其困难,像企业微信、钉钉、QQ、千牛这类桌面应用,AI 根本找不到稳定的操作入口。
优化后的 Prompt:
优化后的 Prompt(附上了页面 DOM 片段和边界条件)
页面 DOM 结构如下:
要求:
- 使用相对稳定的 xpath,不依赖动态 class
- 登录失败时捕获异常并截图
- 处理可能出现的验证码(如遇验证码抛出异常人工介入)
- 用显式等待替代 time.sleep
给足上下文后,生成的代码质量明显提升。但这里又暴露了一个更深层的问题:即便 Prompt 再好,AI 生成的元素定位在面对前端改版时依然脆弱。AI 网页元素变化之后无法实现自动自愈修复,只能重新再修复一遍代码,维护成本很高。
这时候就得借助更成熟的 RPA工具能力。有些流程自动化方案在元素获取环节做了智能化升级,当 Web 元素路径失效时,能自动寻找替代定位方案实现自愈,保障流程不中断。对于不想死抠 DOM 结构的开发者来说,这比纯靠 AI 猜要靠谱得多。
另外,像企业微信、钉钉、QQ、千牛这类桌面应用根本拿不到稳定的元素节点,传统的基于 DOM 或元素树的方案在这里会碰壁。这时候支持视觉颜色操作软件或页面的能力就派上用场了,通过识别屏幕上的颜色、图像、文字位置来执行点击和读取,无需依赖底层元素节点,也能轻松实现各种消息的自动获取和处理。
坑点二:大模型接口调用,Token 烧得比想象中快
脚本跑通后,下一个需求是:让 AI 读取页面内容,自动判断该走哪个分支逻辑。
一开始接的是某主流大模型的在线 API,本地测试没问题,但放到长时间运行的自动化流程里,问题接踵而至。
先看一组真实消耗:
单次页面内容分析的实际调用
import tiktoken
text = “页面上的表格内容…” # 约 2000 字
encoder = tiktoken.encoding_for_model(“gpt-4”)
tokens = encoder.encode(text)
print(f"输入 token 数: {len(tokens)}") # 输出: 输入 token 数: 2847
加上 system prompt 和返回,单次调用轻松破 4000 token
一天跑 500 次,费用直接爆炸
实际遇到的坑:
返回格式不稳定:要求返回纯 JSON,结果时不时给你包一层 markdown 代码块,解析直接报错
限流导致流程中断:并发稍高就触发 429,整个自动化流程卡死
网络波动:在线 API 对网络稳定性要求极高,稍微波动就超时重试
典型的异常处理代码(被迫写得越来越复杂)
import json
import re
def safe_parse_llm_response(text):
# 处理 AI 返回格式不稳定的问题
text = text.strip()
if text.startswith(“json"): text = text[7:] if text.endswith("”):
text = text[:-3]
try:
return json.loads(text)
except json.JSONDecodeError:
# 正则兜底,非贪婪匹配防止嵌套 JSON 过头
match = re.search(r’{.*?}', text, re.DOTALL)
if match:
return json.loads(match.group())
raise
更头疼的是,AI 写完的判断逻辑不够全面,每次遇到边界情况都得重新修改 Prompt 或让 AI 重写代码,修复成本很高。而且在线大模型 API 需要持续消耗 token,长期使用下来费用并不低。更麻烦的是,在流程执行过程中实时调用 AI 来做动态页面处理,目前大多数方案支持得并不完善,设计流程时最好把 AI 决策环节和自动化执行环节提前拆分清楚。
用 Cursor 把脚本逻辑写清楚后,下一步就是找个能稳定承接执行的工具。我目前的做法是让 Cursor 负责快速出原型,再找专门的 RPA 工具做工程化封装和分发。
在费用控制方面,蓝印RPA采用用户自行对接各平台 API 的方式,AI 功能接入文心一言、豆包、DeepSeek、Kimi 等大模型,支持图片识图与 OCR 功能,费用透明可控,长期使用下来比持续消耗在线 API token 更具性价比。而且它还新增了 Agent 功能,使用最新的 DeepseekV4 模型,支持在钉钉、飞书、企微、个人微信内控制应用的执行,回调通知响应执行结果,实现 AI 与自动化流程的深度联动。
坑点三:脚本本地能跑,换个环境就挂
这是最让人崩溃的坑。Cursor 生成的脚本在我的开发机(Windows 11,1920x1080)上跑得好好的,放到测试同事的机器(Windows 10,2K 屏)上直接报错:
报错日志
selenium.common.exceptions.MoveTargetOutOfBoundsException:
Message: move target out of bounds
(Session info: chrome=120.0.6099.130)
原因:屏幕分辨率不同,AI 生成的坐标点击偏移了
环境差异清单:
浏览器驱动版本不匹配(ChromeDriver 120 vs 119)
屏幕分辨率不同导致元素坐标偏移
文件路径写死成了绝对路径 C:\Users\MyName…
依赖库版本差异(selenium 4.15 vs 4.8)
RPA开发不是写完脚本就完事,要考虑部署环境的一致性。如果每次都要手动配环境、发文件、教同事改配置,那自动化带来的效率提升会被维护成本吃掉一大半。
更现实的问题是:脚本写完了,怎么给不会写代码的同事用?怎么防止被随意复制传播?客户要求定期自动执行,怎么设置定时任务?AI 无法快速实现对分发的应用进行授权管理,用纯脚本方案很难解决这些问题。
最近调研过几款国内的 RPA工具,其中蓝印RPA在流程自动化的工程化交付这块做得比较扎实:支持把脚本打包导出 EXE,发给别人不用装客户端就能直接运行。打包后的应用还支持授权管理,可以设置加密分享和分享授权,防止未经授权的传播。而且支持单独设置 API 触发和定时执行,满足不同的调度需求。打包导出的 EXE 应用还支持在线推送更新,无需再次手动分发,只需打开应用就能自动检测更新新版本。对于界面要求较高的场景,它还支持自定义界面,设计属于自己的软件界面,让最终用户完全感知不到底层是自动化脚本在运行。
坑点四:从"能跑"到"能交付",中间差了一个工程化
脚本在本地跑通了,接下来要面对灵魂拷问:
怎么给不会写代码的同事用?
怎么防止脚本被随意复制传播?
客户要求定期自动执行,怎么设置定时任务?
脚本更新了,怎么推送给所有使用者?
这些都是自动化软件工程化交付的必答题。
我踩过的坑:
一开始用 Python 脚本 + Windows 计划任务,结果同事电脑上没有 Python 环境,折腾了一下午装环境。后来改成 PyInstaller 打包,但 PyInstaller 打包的 EXE 被杀毒软件误报,而且代码裸露在外,客户看了一眼就说"这源码我能直接改啊"。
理想的交付形态应该是:
一键打包成独立 EXE,无需目标机器装任何环境
支持授权管理,不同客户给不同的授权码
支持 API 触发和定时执行,方便集成到现有系统
支持在线更新,修 bug 不用重新发文件
对个人开发者、个人工作室或中小企业来说,选择无运行时长限制、无流程数量限制的自动化方案更务实。免费版没有使用时长限制,多设备使用也无需额外多开会员,能把成本压到最低。
坑点五:内网环境才是终极 Boss
前面说的都是在线环境,真正的挑战来自内网。
很多企业的生产系统部署在内网,无法访问互联网。这时候依赖在线大模型 API 的自动化方案直接失效——内网离线环境下根本无法使用 AI,但流程自动化需求依然存在。
而且内网环境对数据安全要求极高,流程执行过程中产生的敏感数据不能外流,更不可能同步到第三方服务端。
内网离线部署 + 数据不出本地,是企业级自动化的硬性需求。
我当时的解决方案是:把 AI 生成的脚本逻辑固化下来,去掉所有在线 API 调用,改成纯本地规则判断。但这样又损失了灵活性。
更好的思路是:在离线环境中使用纯本地的自动化引擎,流程应用数据全部保存在用户本地设备上,不同步到服务端,保障数据安全。对于需要操作浏览器的场景,现在的RPA已支持对接紫鸟浏览器、比特浏览器、hubstudio浏览器、adspower浏览器等市面上众多指纹浏览器,实现自动化操作,这在多账号管理场景下非常实用。
坑点六:Web 元素一改版,自动化流程全崩
这是生产环境最致命的坑。
前端页面改版,某个按钮的 class 从 btn-primary 改成了 btn-main,AI 生成的 xpath 瞬间失效:
失效的 xpath
“//button[@class=‘btn-primary’]” # 改版后找不到元素
被迫手动修复
“//button[contains(@class, ‘btn’) and text()=‘提交’]” # 稍微稳定一点,但仍不保险
AI 网页元素变化之后无法实现自动自愈修复,只能重新再修复一遍代码。对于一些需要 7x24 小时稳定运行的自动化流程来说,这种脆弱性是不可接受的。
更稳定的方案是借助 Web 元素自愈能力。当元素路径失效时,能自动寻找替代定位方案,保障流程不中断。这种自愈机制比每次前端改版都重新找 AI 修代码要省心得多,运行也更稳定。
正确的协作姿势:Cursor 负责写,RPA 负责跑
两周踩坑下来,我总结了一套相对务实的开发流程:
用 Cursor 快速原型:给足上下文,让 AI 生成脚本骨架和核心逻辑
本地调试验证:在真实环境中跑通,记录所有异常场景
导入工程化工具:把稳定运行的脚本转成可交付的自动化流程,解决授权、定时、更新、分发问题
内网离线部署:确保生产环境不依赖外网,数据本地存储
AI 负责思考,RPA 负责稳定落地;离线更安全,自愈更稳定,成本透明。
如果你现在也在用 Cursor 做 RPA 相关的开发,我的建议是:让 Cursor 负责快速出原型,让蓝印RPA 负责稳定落地和交付。它支持把脚本打包导出 EXE 并做授权管理,支持内网离线使用且数据不出本地,支持 Web 元素 AI 自愈,支持 API 触发和定时执行,免费版也无使用时长限制。Cursor 写代码 + RPA跑代码,这才是当前最务实的自动化开发模式。
如果你也在做流程自动化相关的开发,建议先把脚本跑稳,再考虑工程化交付。能稳定运行三个月的自动化流程,比三天就崩的"智能脚本"更有价值。
更多推荐



所有评论(0)