
最近在推进部门流程自动化时遇到一个非常典型的场景业务每周都要从内部报表系统导出数据、整理 Excel、发邮件。这类重复劳动非常适合 RPA但每次新增流程都要人工去拖拽组件、调试选择器十分耗时。后来我们尝试用 Workbuddy 对接蓝印 RPA让 AI 先理解需求自动生成 RPA 流程定义再交给 RPA 引擎执行效果比预想中好很多。这篇文章会从概念梳理讲到完整落地示例适合正在做 RPA 落地、或者想了解 AI 编排工具如何和 RPA 结合的开发者。文章不涉及具体公司内部系统相关代码和命令均为演示写法实际使用时请替换成你自己的环境和工具版本。1. 背景与核心概念1.1 RPA 是什么解决什么问题RPA 的全称是 Robotic Process Automation机器人流程自动化。它通过模拟人类的鼠标点击、键盘输入、页面读取等操作把重复、规则固定的业务流程交给软件机器人自动执行。常见的应用场景包括登录网页系统抓取业务数据读取 Excel按规则拆分、汇总、生成报表批量填写表单、发送邮件定时巡检系统状态并记录结果。RPA 最大的价值是“快”和“稳”。快体现在执行速度远高于人工稳体现在只要流程逻辑不变它就不会像人一样疲劳出错。1.2 Workbuddy 与蓝印 RPA 的定位Workbuddy 本质上是一个 AI 工作台/智能体平台核心能力是把自然语言需求转换成可执行的方案、代码、配置文件。它通过 Skill 机制调用外部工具比如执行脚本、调用 API、生成结构化文件。这也是它能“对接 RPA”的基础。蓝印 RPA 则是一个 RPA 流程执行平台负责真正去操作系统界面、浏览器、Office 组件等。你可以把蓝印 RPA 理解为“操作手”把 Workbuddy 理解为“指挥员”Workbuddy 负责理解需求并生成流程定义蓝印 RPA 负责按照定义执行。如果你所在团队使用的是影刀、UiBot 或其他 RPA 工具对接思路仍然成立。RPA 工具之间的差异主要在组件名称、选择器语法和 SDK 上整体架构可以复用。1.3 为什么要把 Workbuddy 和 RPA 对接传统 RPA 流程开发有两大痛点流程配置慢。拖拽组件、配置选择器、处理异常分支一个稍微复杂的流程往往要开发半天。复用难。不同平台、不同业务线经常重复开发相同能力。把 Workbuddy 和 RPA 对接后我们可以实现“需求 → 流程定义 → 流程执行”的自动化闭环业务人员用自然语言描述需求Workbuddy 根据预定义的 Skill 生成 RPA 流程定义文件蓝印 RPA 读取定义文件并执行执行结果回传给 Workbuddy由 AI 汇总反馈。对团队来说这意味着流程搭建的效率从“小时级”降到“分钟级”。2. 环境准备与版本说明2.1 运行环境本文示例在 Windows 10/11 或 macOS 环境下均可运行核心依赖如下环境版本/说明操作系统Windows 10 / macOS 12 / LinuxPython3.9 及以上Workbuddy按官方最新版安装蓝印 RPA按你们采购或下载的版本安装浏览器Chrome 或 EdgeRPA 需要对应驱动版本需要根据你的项目实际情况调整本文示例以常见环境为例重点演示配置思路。2.2 Workbuddy 安装与初始化Workbuddy 的安装方式以官方文档为准通常支持桌面客户端安装和命令行安装。安装完成后建议先完成基础配置包括登录账号设置工作目录添加 Skill 目录。工作目录用于存放 AI 生成的脚本、流程定义文件和日志建议单独建一个目录不要放在系统临时目录里。2.3 蓝印 RPA 安装与命令行工具蓝印 RPA 一般有两种接入方式一种是使用它自带的编辑器界面人工配置流程另一种是使用它提供的命令行工具或 SDK把流程定义文件提交给引擎执行。我们做对接时优先使用命令行方式因为这样更容易被 Workbuddy 生成的脚本调用。假设蓝印 RPA 的启动命令是blueprint-cli可以在安装后执行下面命令确认blueprint-cli --version如果提示command not found需要把蓝印 RPA 的 bin 目录加入 PATH。如果你使用的是其他 RPA 工具请替换成对应的命令行入口。2.4 验证环境先做一个最简单的冒烟测试用 Workbuddy 生成一个“打开记事本并输入文字”的流程定义然后用蓝印 RPA 执行。如果这一步能跑通说明环境链路是通的。# 示例执行冒烟测试流程 blueprint-cli run --flow ./smoke_test.json如果出现权限弹窗需要允许命令行进程访问系统桌面。3. 核心概念RPA 流程的结构化表达3.1 流程定义的核心组成一份 RPA 流程定义通常包含四个部分元信息、变量、步骤、异常处理。元信息流程名称、版本、所属业务变量流程运行时的输入参数和中间状态步骤有序的动作列表比如打开网页、点击按钮、读取数据异常处理某个步骤失败后如何处理比如重试、跳过、发通知。我们选择用 JSON 来承载流程定义原因是 JSON 可读性好、跨语言支持好、也方便 AI 生成和校验。下面是一份简化版流程定义示例{ name: smoke_test, version: 1.0.0, variables: { target_url: https://example.com }, steps: [ { name: 打开目标网页, type: ui.open_url, params: { url: {target_url}, wait_until: domcontentloaded, timeout_ms: 30000 } }, { name: 等待页面标题出现, type: ui.wait_for_selector, params: { selector: h1, timeout_ms: 10000 } } ] }3.2 为什么用 JSON 做中间格式AI 生成 JSON 比生成“拖拽配置”容易得多。RPA 编辑器里的图形配置本质上是把参数值存储成某种结构化数据JSON 正好是它的通用表达形式。把流程定义做成文件后至少有三个好处可以放进 Git 做版本管理可以写校验脚本在运行前检查字段是否合法可以复用一个新的流程只需要改变量和步骤参数。3.3 Workbuddy 如何生成流程定义Workbuddy 通过 Skill 来约束 AI 的输出。如果你直接说“生成一个 RPA 流程”AI 可能输出自由格式的 Markdown无法直接执行。但如果你在 Skill 中定义了输出 Schema并要求 AI 按照 JSON 结构返回就能得到标准化的流程定义。一个 Skill 通常包含三部分Skill 元信息名称、用途、参数说明提示词模板告诉 AI 如何根据用户需求生成流程工具调用配置允许 AI 调用run_rpa.py之类的脚本来执行流程。3.4 桥接层的作用Workbuddy 本身并不直接驱动鼠标和键盘它需要桥接层来调用蓝印 RPA。桥接层可以是一个命令行脚本也可以是一个 HTTP 服务。桥接层需要做好三件事接收流程定义文件路径和运行参数调用蓝印 RPA 的 CLI 或 SDK捕获执行日志判断成功还是失败。4. 完整实战案例自动生成并执行邮件报表 RPA 流程为了演示完整链路我们来实现一个具体需求每周五自动登录内部报表系统读取“本周销售汇总”页面数据整理成 CSV 文件并生成一个 RPA 流程定义文件交给蓝印 RPA 执行。4.1 创建项目结构建议创建下面的目录结构workbuddy-rpa-demo/ ├── flows/ │ └── email_report.json ├── scripts/ │ ├── run_rpa.py │ └── parse_report.py ├── skills/ │ └── rpa_flow_builder/ │ ├── skill.yaml │ └── prompt.md ├── data/ │ └── sales_report.csv └── logs/ └── run.log目录说明flows存放 Workbuddy 生成的流程定义文件scripts存放桥接和数据处理脚本skills存放 Workbuddy Skill 配置data存放 RPA 运行后的输出文件logs存放调度日志。4.2 蓝印 RPA 侧的可复用模板在实际对接中我们不会让 AI 从零生成所有步骤而是让它基于模板组装。比如登录页面、等待元素、读取表格这三个动作在大多数业务中都通用可以直接做成模板片段。下面是一个“登录报表系统”的流程片段{ name: 登录报表系统, type: ui.fill_form, params: { url: {login_url}, fields: { username: {username}, password: {password} }, submit_button: button.login-btn, success_selector: div.dashboard-container, timeout_ms: 20000 } }通过模板化AI 不需要每次重新发明“怎么登录”只需要替换变量值。4.3 Workbuddy Skill 配置在skills/rpa_flow_builder/目录下创建skill.yaml内容如下name: rpa_flow_builder description: 根据用户需求生成蓝印RPA流程定义并执行 version: 1.0.0 parameters: - name: business_requirement type: string description: 业务需求描述例如“每周读取销售数据并生成CSV” required: true - name: output_file type: string description: 生成的流程定义文件路径 required: false default: flows/email_report.json tools: - name: run_rpa command: python3 scripts/run_rpa.py然后在prompt.md中定义生成规则你是RPA流程工程师。请根据用户需求生成蓝印RPA流程定义。 生成要求 1. 输出必须是合法JSON不要输出Markdown代码块。 2. JSON必须包含 name、version、variables、steps 四个字段。 3. 步骤中的 selector 必须优先使用稳定属性例如 id、data-testid。 4. 所有涉及账号密码的地方使用 {变量} 占位不写入明文。 5. 每个步骤必须有 timeout_ms避免选择器一直等待。 6. 敏感操作前增加确认步骤或人工审批提示。这个提示词很关键它决定了 AI 输出的质量。没有这些约束时AI 生成的流程经常缺字段、格式错误、甚至写了不存在的 API。4.4 编写桥接执行脚本创建scripts/run_rpa.py作用是把流程定义文件交给蓝印 RPA 执行#!/usr/bin/env python3 桥接脚本将 Workbuddy 生成的流程定义交给蓝印RPA执行。 简化版本演示用生产环境请按实际RPA CLI/SDK调整。 import argparse import json import logging import subprocess import sys from datetime import datetime from pathlib import Path logging.basicConfig( levellogging.INFO, format%(asctime)s [%(levelname)s] %(message)s, handlers[ logging.StreamHandler(sys.stdout), logging.FileHandler(logs/run.log, encodingutf-8), ], ) logger logging.getLogger(rpa_bridge) RPA_CLI blueprint-cli # 替换为实际RPA命令 def validate_flow(flow_path: Path) - dict: 校验流程定义文件的基本结构。 with flow_path.open(r, encodingutf-8) as f: flow json.load(f) required_keys {name, version, variables, steps} missing required_keys - set(flow.keys()) if missing: raise ValueError(f流程定义缺少字段: {missing}) if not isinstance(flow.get(steps), list) or len(flow[steps]) 0: raise ValueError(流程定义 steps 必须是非空列表) return flow def run_rpa(flow_path: Path, env: str) - int: 调用蓝印RPA命令行执行流程。 cmd [ RPA_CLI, run, --flow, str(flow_path), --env, env, --log-level, info, ] logger.info(执行命令: %s, .join(cmd)) result subprocess.run(cmd, capture_outputTrue, textTrue, checkFalse) if result.stdout: logger.info(RPA输出:\n%s, result.stdout) if result.stderr: logger.warning(RPA警告或错误:\n%s, result.stderr) return result.returncode def main() - None: parser argparse.ArgumentParser(descriptionWorkbuddy 与 蓝印RPA 桥接脚本) parser.add_argument(--flow, requiredTrue, help流程定义文件路径) parser.add_argument(--env, defaultdev, help运行环境 dev/staging/prod) parser.add_argument(--output-dir, defaultdata, help输出目录) args parser.parse_args() flow_path Path(args.flow) output_dir Path(args.output_dir) output_dir.mkdir(parentsTrue, exist_okTrue) try: flow validate_flow(flow_path) logger.info(流程 [%s] 校验通过, flow[name]) except Exception as exc: logger.error(流程校验失败: %s, exc) sys.exit(2) start datetime.now() code run_rpa(flow_path, args.env) cost (datetime.now() - start).total_seconds() if code 0: logger.info(流程执行成功耗时 %.2f 秒, cost) sys.exit(0) else: logger.error(流程执行失败退出码 %s耗时 %.2f 秒, code, cost) sys.exit(code) if __name__ __main__: main()脚本做了三件事解析命令行参数校验流程定义是否满足基本结构调用蓝印 RPA 命令行执行流程。如果蓝印 RPA 提供的是 HTTP API可以把subprocess.run部分替换成requests.post整体逻辑不变。4.5 在 Workbuddy 中发起需求并生成流程启动 Workbuddy 后在对话中输入请使用 rpa_flow_builder 生成一个流程每周五登录内部报表系统 读取本周销售汇总页面提取表格数据保存为 CSV 到 data/sales_report.csv。 流程定义输出到 flows/email_report.json。Workbuddy 会根据 Skill 的定义输出类似下面的流程定义文件{ name: weekly_sales_report, version: 1.0.0, variables: { login_url: https://report.example.com/login, username: {RPA_USER}, password: {RPA_PASS}, report_url: https://report.example.com/weekly-sales }, steps: [ { name: 打开登录页面, type: ui.open_url, params: { url: {login_url}, wait_until: domcontentloaded, timeout_ms: 30000 } }, { name: 输入账号密码并登录, type: ui.fill_form, params: { fields: { username: {username}, password: {password} }, submit_button: button.login-btn, success_selector: div.dashboard-wrapper, timeout_ms: 20000 } }, { name: 打开销售汇总页面, type: ui.open_url, params: { url: {report_url}, wait_until: networkidle, timeout_ms: 30000 } }, { name: 读取表格数据并保存, type: data.extract_table, params: { selector: table#sales-table, output_file: data/sales_report.csv, file_type: csv } } ] }注意变量中的账号密码使用了占位符避免在流程定义里写死明文。实际执行时可以通过环境变量注入。4.6 运行与验证确认流程定义生成无误后执行python3 scripts/run_rpa.py \ --flow flows/email_report.json \ --env dev \ --output-dir data执行成功后会看到类似日志2025-06-01 10:00:01 [INFO] 流程 [weekly_sales_report] 校验通过 2025-06-01 10:00:15 [INFO] RPA输出: Step 1/4 打开登录页面成功 2025-06-01 10:00:21 [INFO] RPA输出: Step 2/4 登录成功 2025-06-01 10:00:28 [INFO] RPA输出: Step 3/4 打开报表页面成功 2025-06-01 10:00:33 [INFO] RPA输出: Step 4/4 表格数据已写入 data/sales_report.csv 2025-06-01 10:00:33 [INFO] 流程执行成功耗时 32.18 秒数据文件在data/sales_report.csv中人工检查一下表格行数和字段完整性即可。5. 常见问题与排查思路我们在实际对接过程中遇到过不少问题下面按“现象 → 原因 → 解决思路”整理成表格供你参考。问题现象常见原因解决思路Workbuddy 生成的 JSON 无法被解析输出时带了 Markdown 代码块标记在 Skill 提示词中强制要求“输出合法JSON不要代码块”流程定义缺少steps字段Skill 的 Schema 校验不严格在 Skill 中定义必填字段并在桥接脚本里做前置校验蓝印 RPA 提示blueprint-cli not foundRPA 命令行未加入 PATH将 RPA 安装目录加入系统 PATH或使用绝对路径登录步骤总是失败页面登录按钮选择器不稳定改用id、>