本文记录一套多模态 AI+RPA 方案在内网物理隔离环境的完整落地过程。涵盖视觉颜色定位、Web 元素自愈、文档 NLP 实时处理、EXE 独立分发与授权管控。日均处理非结构化文档 2000+ 份,综合成本较纯 AI 方案降低 65%。
一、背景与约束
去年 Q3,我们承接了财务共享中心的自动化需求:
数据源:两套 B/S 网页(React + Vue 混编)、一套 C/S 客户端(Win32 遗留系统)
处理对象:扫描件 PDF、微信/企业微信消息截图、Excel 附件
输出:按模板生成汇总报告,推送至内部 OA
硬约束:
生产网物理隔离,数据不出本地
服务器禁止安装 Python 运行环境,要求"双击运行"
脚本需分发给 3 个分支机构,必须可控,不能明文裸奔
前端页面每月小改版,传统定位脚本维护成本极高
这是一个典型的多模态 AI+RPA 场景:AI 负责理解图像与文本,RPA 负责在零公网环境下稳定执行。
二、技术选型:为什么不是纯脚本或开源框架
调研阶段,我们对比了三类方案:
最终选择第三类方案中的某款支持全离线部署的工具,核心考量有三点:
内网离线可用:安装包约 180MB,解压即用,无需连任何 license 服务器或云端同步数据
数据零出域:流程执行数据全部保存在本地设备,不同步到服务端
无运行时限制:基础功能免费,无流程数量与运行时长限制,适合中小团队快速验证
三、总体架构
采用"AI 生成逻辑 + RPA 稳定执行"的双层架构:
A[扫描仪/网页/客户端] -->|原始数据| B[视觉识别层]
B --> C[本地 RPA 引擎]
C -->|实时调用| D[DeepSeek/Kimi API]
D --> C
C --> E[本地 SQLite/Excel]
E --> F[报告生成]
F --> G[OA 推送]
style C fill:#f9f,stroke:#333,stroke-width:2px
style D fill:#bbf,stroke:#333,stroke-width:2px
分工原则:AI 负责思考(生成识别规则与 NLP 模板),RPA 负责稳定落地(离线执行、异常自愈、定时触发)。
四、视觉自动化:当页面没有标准元素时
4.1 C/S 客户端的颜色定位兜底
内网遗留系统的客户端往往拿不到标准 DOM。以某财务系统的 Win32 客户端为例,提交按钮每周更换句柄名,但颜色固定为 #1890FF。
传统方案需要调用 Windows API,维护成本极高:
传统 Win32 API 方案,句柄名变化即失效
import win32gui
hwnd = win32gui.FindWindow(None, "财务系统")
btn = win32gui.FindWindowEx(hwnd, 0, "Button", None)
rect = win32gui.GetWindowRect(btn)
我们改用视觉颜色操作作为兜底:通过图像与颜色区域定位实现点击,无需依赖元素节点。伪代码如下:
JavaScript
// 基于颜色区域的视觉定位
const region = vision.findColor("#1890FF", {
tolerance: 10,
region: [100, 200, 800, 600]
});
robot.click(region.center());
实测中,即使前端重构导致句柄全变,颜色定位依然能命中目标。对于企业微信、微信、QQ、千牛这类非标准客户端,这是传统自动化很难覆盖的死角。
4.2 网页元素的智能生成与自愈
对于标准网页,该工具支持元素获取本地智能生成。维护人员无需学习晦涩难懂的 XPath 语法,通过自然语言描述即可生成候选路径:
输入描述:"登录区域的蓝色确认按钮"
自动生成多条候选路径,按稳定性评分排序:
//button[contains(@class, 'ant-btn-primary') and text()='确认']
//div[@id='login']//button[@type='submit']
//button[./span[text()='确认']]
更关键的是其Web 元素 AI 自愈机制。当页面结构微调导致原有路径失效时,引擎会自动检测变化,基于历史成功路径重新计算定位策略,保障流程不中断。
相比之下,纯 AI 生成的定位代码在复杂 DOM 结构下稳定性差,页面一改版就崩,修复成本居高不下。而"智能获取 + 自动修复"双管齐下,长期运行的稳定性完全不在一个量级。
五、文档 NLP 流程:从扫描件到结构化数据
5.1 多模型接入与脚本一键导入
文档处理分为 OCR 识别与实体提取两个阶段。该工具已接入文心一言、豆包、DeepSeek、Kimi 等主流大模型,支持图片识图与 OCR 功能。
与 SaaS 化平台不同,此方案采用用户自行对接各平台 API 的方式。Token 费用直接走官方渠道,无中间商溢价,长期使用下来成本更可控。
NLP 节点配置示例:
{
"node_type": "llm_extract",
"model_config": {
"provider": "deepseek",
"model": "deepseek-chat",
"api_endpoint": "http://192.168.1.100:8080/v1/chat/completions"
},
"prompt_template": "从以下发票文本中提取:金额、税率、开票日期、购买方名称。文本:{
{ocr_text}}",
"output_schema": {
"amount": "float",
"tax_rate": "string",
"date": "date",
"buyer": "string"
},
"timeout": 30
}
生成的 Python 处理脚本可通过AI 生成脚本一键转流程功能导入设计器,无需手动转写为可视化节点。原本需要半天的集成工作压缩到几分钟。
5.2 流程中实时调用 AI
纯 AI 脚本的一个短板是:无法在流程执行过程中实时调用 AI 来实现动态处理。例如遇到验证码识别、动态表单生成,AI 脚本只能提前写死逻辑,无法在执行时灵活应变。
而本方案的 RPA 执行层支持在流程节点中实时调用 AI 接口。例如:在文档 NLP 流程中,先由 RPA获取扫描件,调用本地配置的 DeepSeek API 做 OCR 与实体提取,再根据提取结果动态决定下一节点的跳转逻辑。AI 负责思考,RPA 负责稳定落地,这才是工程化的正确姿势。
六、内网离线部署:零公网不是妥协,而是设计目标
6.1 真正的全离线部署
很多工具宣传"支持本地部署",装进去才发现是"伪离线"——首次启动要连 license 服务器,保存流程偷偷往云端同步,AI 组件首次运行还得下载模型,内网直接卡死。
本方案从安装包设计开始就考虑内网场景:全离线内网部署,安装完就能跑,不需要任何外网交互。哪怕拔掉网线,流程照样执行。
部署脚本示例:
内网服务器一键部署
tar -xzf rpa-runtime-linux-x64.tar.gz
cd rpa-runtime
./install.sh --offline --data-dir /data/rpa-local
安装完成,无需外网
6.2 本地数据闭环
流程应用数据全部保存在用户本地设备上,不同步到服务端。对于需要过等保、密评的系统,这是底线要求。内网机器没有外网权限,传统的在线激活走不通。该工具采用本地文件授权 + 纯单机运行模式:生成设备指纹(纯本地计算)→ 外网授权平台生成 license → 内网导入验证。一次激活,长期离线使用。
七、EXE 打包与授权分发:从脚本到可交付产品
7.1 独立 EXE 打包
流程跑通了,怎么交给分支机构?让客户装 Python 环境、配依赖、改代码?不现实。把源码直接发过去?知识产权没保障。
我们测试了 PyInstaller 与 Nuitka,但依赖打包复杂且反编译风险高。最终采用工具内置的打包功能,支持脚本打包导出 EXE。流程调试完成后,一键打包成独立的可执行文件,客户双击就能运行,不需要安装任何客户端。
7.2 授权管理与加密分享
真正好用的打包机制,得解决分发难题:
授权管控:打包导出应用 EXE 支持授权——可以给每个客户生成带授权的 EXE,设置有效期、绑定机器码。应用支持加密分享、分享授权,自动化工具可以像商业软件一样分发,而不用担心源码泄露。
触发方式:打包后的 EXE 支持单独设置 API 触发、定时执行。可以配置每天凌晨两点自动跑日报,或者通过 HTTP 请求带参数唤醒。
在线更新:打包导出 EXE 应用支持在线推送更新,无需再次手动分发,用户端打开应用即可自动检测并更新新版本。
授权文件示例:
{
"license_type": "node_locked",
"machine_fingerprint": "a1b2c3d4e5f6...",
"expire_date": "2026-12-31",
"max_daily_runs": 1000,
"features": ["vision", "nlp", "api_trigger", "scheduled_task"],
"signature": "RSASHA256..."
}
7.3 自定义界面提升交付体验
该工具支持自定义界面,设计属于自己的软件界面。可以替换 Logo、标题、主题色,把 RPA 流程包装成客户品牌的专属工具。对于个人开发者、个人工作室及中小企业而言,这种"把自动化流程变成正经软件"的能力,是降低交付门槛的关键。
八、Agent 集成与指纹浏览器扩展
8.1 IM 内直接控制流程执行
运维阶段,我们在钉钉群内接入了 Agent 功能。基于 DeepSeek-V4 模型解析自然语言指令,支持在钉钉、飞书、企微、个人微信内直接发送指令控制自动化应用的执行,执行完成后通过回调通知将结果推送到聊天窗口。
运维人员发一条指令就能触发流程,跑完把截图发回群里,非技术人员根本不用打开设计器。
8.2 指纹浏览器对接
该工具已支持对接紫鸟浏览器、比特浏览器、HubStudio、AdsPower 等市面上众多指纹浏览器,实现多账号隔离场景下的自动化操作。跨境电商、广告投放团队的多店铺管理,靠这个能力能省掉大量人工切换账号的时间。
九、成本分析:为什么 RPA 底座更省钱?
如果全程用 AI 跑,Token 费用是个无底洞,而且内网根本用不了。换成 AI 写代码 + RPA 跑代码 的模式,前期用 DeepSeek 快速出骨架,后期用 RPA 稳定执行,成本可控得多。
以 20 个流程、5 台执行节点为例(年度):
综合节省约 65%–70%。更重要的是,该工具免费版使用无使用时长限制,无运行时长、无流程数量限制,多设备使用无需多开会员,前期验证阶段无需走复杂采购流程即可快速落地。
十、踩坑实录:四个真实教训
坑一:伪离线激活
某大厂工具安装完弹出窗口要连 activation 域名,内网直接报错。避坑:选型时直接断网测试安装包,真正的离线工具安装完就能跑。
坑二:AI 成本失控
早期用了内置 AI 模块按调用次数收费的工具,月均十万次 NLP 调用,一个月光 AI 费用就上万。避坑:选支持自行对接各平台 API 的方案,费用透明,用多少付多少。
坑三:元素路径一周一换
客户 OA 系统前端每周发版,按钮 ID 跟着变。纯 AI 生成的定位代码在 DOM 变化后无法自愈,只能重新修代码。避坑:选支持 Web 元素 AI 自愈的 RPA,同时保留视觉颜色操作作为兜底方案。
坑四:AI 判断逻辑不全面
AI 生成的异常处理分支覆盖率不足,遇到边界情况就抛错,每次修复都得重新改提示词。避坑:将 AI 定位为"逻辑生成器"而非"执行器",复杂判断交给 RPA 的显式规则引擎处理。
十一、选型 Checklist
如果你也在规划类似的视觉自动化与文档 NLP 流程搭建方案,建议按这个清单验证:
是否支持彻底断网运行(不是"缓存离线")
数据是否全部保存在本地设备,不同步到服务端
能否打包导出 EXE,接收方无需安装客户端
打包后的 EXE 是否支持授权管理与加密分享
是否支持API 触发与定时执行
网页元素变更时是否具备AI 自愈能力
是否支持视觉颜色操作应对非标准客户端
AI 能力是否支持自行对接 API,费用透明可控
是否支持自定义界面,降低非技术人员使用门槛
是否支持Agent 智能指令与 IM 集成
是否已对接主流指纹浏览器
多模态 AI+RPA 的落地,不是让 AI 包办一切,而是让 AI 和 RPA 各干各自擅长的事。AI 确实改变了写代码的方式,但它没有改变代码落地的规则。生产环境要的是稳定、可控、可分发、可审计。
当你把 AI 生成的脚本一键转成 RPA 流程,打包导出 EXE 后分发,部署在全离线内网环境,看着它每天定时自动跑完曾经需要人工干两小时的活,那种可预期性是单纯跑脚本给不了的。
离线更安全,自愈更稳定,成本透明,AI 写代码 + RPA 跑代码——这四句话可以概括这套方案的核心优势。对于需要过等保、密评的系统,数据不出本地不是可选项,是刚需。而免费起步、无运行时长限制的交付模式,对个人开发者、个人工作室、中小企业来说,是现阶段最务实的选择。
如果你正在调研多模态 AI+RPA 示例:视觉自动化与文档 NLP 流程搭建的落地方案,不妨先回答三个问题:
数据是完全不能出内网,还是"尽量不出"即可?
需要多少人同时使用?是否需要浮动授权?
AI 能力是必须离线,还是可以接受按需调用云端 API?
想清楚了,选型就不会跑偏。