一个功能完整的RPA(机器人流程自动化)工具,包含可视化流程编辑器和Python执行引擎
拖拽式节点编排,支持浏览器自动化、AI智能体、文档处理等多种节点类型
基于 FastAPI + asyncio 的高性能执行引擎,自动发现节点模块,实时推送执行日志
- 拖拽式编程:从节点面板拖拽节点到画布
- 可视化连接:通过连线定义执行顺序
- 实时配置:点击节点立即配置参数
- 流程验证:一键检查流程合法性
- 异步执行:基于Python asyncio的高性能引擎
- 多种节点类型:浏览器、AI、文档、系统操作等
- 智能调度:支持条件分支、循环等控制流
- 实时日志:通过WebSocket推送执行状态
- 浏览器自动化:导航、点击、输入、截图(Playwright)
- AI智能体:文本推理、图像理解、OCR(Ollama)
- 文档处理:Excel、Word、PDF读写
- 系统操作:文件管理、HTTP请求、命令执行
rpa-complete/
├── backend/ # Python 后端
│ ├── __init__.py
│ ├── main.py # FastAPI 入口
│ ├── requirements.txt # 依赖清单
│ ├── engine/ # 执行引擎
│ │ ├── __init__.py
│ │ ├── context.py # 上下文管理
│ │ ├── parser.py # 流程解析器
│ │ └── scheduler.py # 调度器(核心)
│ ├── nodes/ # 节点实现
│ │ ├── __init__.py
│ │ ├── base.py # 节点基类
│ │ ├── registry.py # 节点注册表
│ │ ├── browser_nodes.py
│ │ ├── ai_nodes.py
│ │ ├── document_nodes.py
│ │ ├── system_nodes.py
│ │ └── control_nodes.py
│ └── api/ # API 路由
│ ├── __init__.py
│ └── routes.py
│
└── frontend/ # React + Electron 前端
├── package.json
├── vite.config.ts
├── index.html
├── electron/
│ └── main.js # Electron 主进程
└── src/
├── main.tsx
├── App.tsx
├── App.css
├── index.css
├── vite-env.d.ts
├── components/
│ ├── FlowEditor.tsx
│ ├── NodePanel.tsx
│ ├── ConfigPanel.tsx
│ └── Toolbar.tsx
├── store/
│ └── useStore.ts
└── api/
└── client.ts
- Node.js 18+
- Python 3.10+
- npm 或 yarn
cd backend
# 创建虚拟环境(推荐)
python -m venv venv
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 安装 Playwright 浏览器(可选)
playwright install chromium
# 启动后端服务
python main.py后端将启动在 `<INTERNAL_URL_REDACTED>
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run devElectron应用会自动打开,流程编辑器将显示在屏幕上。
-
添加节点
- 从左侧节点面板拖拽节点到画布
- 例如:拖拽"START"和"END"节点
-
连接节点
- 点击节点下方的手柄
- 拖动到下一个节点上方的手柄
-
配置节点
- 点击节点
- 在右侧配置面板中填写参数
- 点击"保存配置"
-
保存流程
- 点击顶部工具栏的"保存"按钮
-
执行流程
- 点击顶部工具栏的"执行流程"按钮
- 查看底部执行结果面板
[START] → [浏览器导航] → [截图] → [END]
配置:
- 浏览器导航节点:
- URL:
https://example.com
- URL:
- 截图节点:
- 保存路径:
screenshot.png
- 保存路径:
| 节点类型 | 说明 | 参数 |
|---|---|---|
| 🟢 START | 流程开始 | 无 |
| 🔴 END | 流程结束 | output_var(可选) |
| 🔀 条件判断 | if-else 分支 | condition, true_branch, false_branch |
| 🔁 For-Each 循环 | 遍历列表 | list_var, item_var, loop_body_start |
| 节点类型 | 说明 | 关键参数 |
|---|---|---|
| 🌐 导航 | 打开网页 | url, timeout |
| 🖱️ 点击 | 点击元素 | selector, button |
| ⌨️ 输入 | 填写表单 | selector, text, clear_first |
| 📷 截图 | 页面截图 | path, full_page |
| 节点类型 | 说明 | 关键参数 |
|---|---|---|
| 🤖 文本推理 | 调用LLM | prompt, model, temperature |
| 👁️ 图像理解 | 分析图片 | image, prompt |
| 📝 OCR识别 | 文字识别 | image_path, lang |
启动后端后,访问:
- Swagger UI: `<INTERNAL_URL_REDACTED>
- ReDoc: `<INTERNAL_URL_REDACTED>
| 接口 | 方法 | 说明 |
|---|---|---|
/api/flow/execute |
POST | 执行流程 |
/api/flow/validate |
POST | 验证流程 |
/api/flow/save |
POST | 保存流程 |
/api/nodes |
GET | 列出所有节点类型 |
/ws |
WebSocket | 实时日志推送 |
流程 JSON → 解析器 → 执行图 → 调度器 → 节点执行 → 结果返回
关键设计模式:
- 注册表模式:节点类型可插拔
- 上下文管理:变量在流程中共享
- 异步执行:基于asyncio的高性能
前端编辑器 → REST API → 执行引擎 → 节点处理器 → 返回结果
↓
WebSocket → 实时日志推送 → 前端显示
-
在
backend/nodes/下创建新文件或编辑现有文件 -
使用装饰器注册节点:
from nodes.registry import NodeRegistry
@NodeRegistry.register(
"my_node_type",
description="我的自定义节点",
params_schema={...}
)
class MyNode(BaseNode):
async def execute(self, params, context):
# 实现你的逻辑
return {"status": "success", "output": result}-
在
frontend/src/components/FlowEditor.tsx中添加节点组件 -
在
NodePanel.tsx的NODE_CATEGORIES中注册
后端调试:
# 启用详细日志
export LOG_LEVEL=DEBUG
python main.py前端调试:
- 按
F12打开开发者工具 - 查看Console标签页的日志
# 前端构建
cd frontend
npm run build
# 打包 Electron 应用
npm run electron:buildFROM python:3.10
WORKDIR /app
COPY backend/ .
RUN pip install -r requirements.txt
COPY frontend/dist ./frontend
EXPOSE 8000
CMD ["python", "main.py"]A: 检查CORS配置,确保前端URL在允许列表中。
A: 运行 playwright install chromium 安装浏览器。
A: 确保Ollama服务正在运行:ollama serve
- 负责人:ReactFlow核心、状态管理
- 成员1:节点组件库、配置面板
- 成员2:UI/UX优化
- 负责人:执行引擎核心、调度器
- 成员1:节点处理器实现
- 成员2:API设计、WebSocket
- FastAPI - 现代Python Web框架
- Uvicorn - 高性能ASGI服务器
- Playwright - 浏览器自动化
- Ollama - 本地LLM运行
- React 18 - UI库
- TypeScript - 类型安全
- React Flow - 流程编辑器
- Electron - 桌面应用
- Zustand - 状态管理
- Tailwind CSS - 样式框架
MIT License
- React Flow团队
- FastAPI团队
- Playwright团队
- Ollama团队
开始构建你的RPA自动化流程吧! 🎉

