Go to file
yu 0db3e59f75 fix: File_DecompressFile misleading "ADM-ZIP: Invalid filename" for missing archive
adm-zip throws "ADM-ZIP: Invalid filename" both for corrupt entries AND when the
archive file simply does not exist, which sent us chasing phantom filename issues.
Now the handler checks file existence first and reports "压缩包不存在:<path>" with a
recommendation pointing out that File_CompressFile appends .zip to the full source
name (a.txt -> a.txt.zip) and that the compress node's output variable should be
used to chain the real artifact path.
2026-11-05 13:40:29 +08:00
.workbuddy/memory docs: 补记工作日志(元素拾取残留浏览器修复) 2026-11-04 17:45:42 +08:00
build build: 采用electron-builder标准NSIS安装器 2026-10-28 09:53:30 +08:00
docs 阶段4-tool契约: register支持CapabilityMeta(决策8 meta可选+新能力强制), 新增registerAll显式注册入口双入口过渡(决策9), RUNTIME_ERROR_CODES错误码固化+audit校验, 规范v1同步收紧 2026-11-04 13:41:24 +08:00
packages/rpa-core fix: File_DecompressFile misleading "ADM-ZIP: Invalid filename" for missing archive 2026-11-05 13:40:29 +08:00
resources 修复外部浏览器 CDP 无响应: ws 从主进程 bundle 外部化 2026-11-04 17:19:32 +08:00
scripts 打包脚本支持 RPA_SKIP_TESTS=1 跳过单测(本地应急打包用) 2026-11-04 17:42:14 +08:00
src 运行时元素操作跟随前台标签页\n\n- 点搜索/按钮常开新标签页, 此前运行时元素操作仍附着旧标签页,\n 导致新页上的拾取选择器找不到元素、相似元素列表抓到空\n- evaluate 入口增加前台标签页检查(400ms 节流), 变化时 activateTab 切换附着 2026-11-05 13:01:27 +08:00
.gitignore feat: 新增本地UI模型AI拾取与识别实验台 2026-11-02 11:55:36 +08:00
electron-builder.config.mjs 修复外部浏览器 CDP 无响应: ws 从主进程 bundle 外部化 2026-11-04 17:19:32 +08:00
electron.vite.config.ts 修复外部浏览器 CDP 无响应: ws 从主进程 bundle 外部化 2026-11-04 17:19:32 +08:00
package-lock.json 元素拾取支持页面跳转后继续拾取; 恢复 ws 根依赖声明修复启动崩溃 2026-11-05 10:07:48 +08:00
package.json 元素拾取支持页面跳转后继续拾取; 恢复 ws 根依赖声明修复启动崩溃 2026-11-05 10:07:48 +08:00
README.md feat: deduplicate capability palette 2026-11-02 13:08:03 +08:00
tsconfig.json 阶段5-独立验证: 新增rpa-cli.ts CLI host(createEngine+registerAll零Electron跑通5个代表能力: 桌面/Excel/HTTP/文件/屏幕), 新增rpa-cli脚本与tsx依赖; 5.2 Bun冒烟按决策10延期到迁入Agent-Employee时执行; 5.3回归三项全绿 2026-11-04 13:49:27 +08:00
vitest.config.ts 阶段1-rpa-core建包: engine+31个纯Node能力迁入packages/rpa-core, 领域类型单一源化, createEngine工厂收拢模块级状态 2026-11-04 12:36:03 +08:00

RPA Studio

画布式 RPA 桌面端(Electron + React Flow)。把 658 项主能力拖到画布上,连线、配置、运行,生成可执行的 RPA 流程。

当前状态:任务优先的编排工作台。默认进入“编排”任务列表,编辑任务后进入上下流向画布;组件库按分类树展示,设置为独立入口。 当前可编排能力:658 / 894(122 项不接入和 236 项重复旧版本已分离;网页、桌面、数据、文件、办公、HTTP 等主能力可直接编排)。

已实现

编排与运行

  • Electron 31 + React 18 + TypeScript + React Flow 画布
  • 658 项主能力目录:搜索 / 11 组筛选;236 项重复旧版本自动隐藏,122 项专用能力已分离备份;任务列表实时刷新
  • 拖拽到画布、节点卡片、连线、缩放/平移/MiniMap、框选、撤销/重做
  • IF / 计次循环 / 遍历 / 条件循环 / 异常捕获 容器:可把组件拖入分支或循环体
  • 属性面板:按字段类型渲染输入、必填、变量、失败策略(超时/重试/间隔/跳过/延时)
  • 流程 JSON 本地原子保存、自动保存、重启恢复;保存冲突检测——磁盘被外部修改时弹窗选择“加载磁盘版”或“覆盖磁盘”,不再静默互相覆盖
  • 运行中心:节点进度、运行日志(分级过滤/复制/导出)、运行变量查看
  • 任务列表忽略备份文件;编排页与运行页骨架分离

网页自动化(Electron 内置浏览器 + CDP 可信输入)

  • 浏览器:打开/关闭/切换标签、跳转/后退/前进/刷新、等待加载/停止加载、最大化/最小化
  • 信息获取:URL、Title、网页源码、Cookies 读写、浏览器截图、滚动条读写
  • 元素操作:点击、输入、密码框、下拉选择、勾选框、相似元素列表/数组、元素对象与信息、父/子/兄弟元素、文本/值/属性/源码读取、存在判断、按钮可用性、滚动到元素、鼠标悬停、元素截图、元素坐标
  • 执行 JS(多版本)、文件上传(CDP 直塞文件输入框,绕开原生对话框)
  • 网页数据表格写入(按行列号精确覆盖)
  • 可信输入机制参考 C:\rpa-demo:CDP Input、唯一定位、遮挡检查和输入回读校验;不使用 el.click() 伪造点击

桌面自动化(Ground 系列,PowerShell + UIA 桥)

  • 桌面元素点击(前台化 + AttachThreadInput 强制前台 + 真实鼠标坐标点击)、文本输入(ValuePattern + 剪贴板粘贴兜底)、元素存在判断、文本读取、等待元素
  • 窗口自动唤起:EnumWindows 跨虚拟桌面查找 → ShowWindow 还原 → 移回主屏可视区
  • Per-Monitor DPI 感知:多屏混合缩放下坐标不错位
  • 隐式等待重试:元素未就绪时 4 秒内自动重试
  • 底层统一走 PowerShell + UIAutomation(EncodedCommand,中文安全)

AI 与离线 OCR(可选自配)

  • AI 文本能力:文本生成 / 纠错 / 审核 / 关键词 / 对话 / 模型调用 / 文档比对等,通过设置页配置的 OpenAI 兼容服务接入
  • 离线 OCR:图像识别 / 表格识别(含坐标)走本地模型,无需联网

质量与测试

  • 全量测试 231 项(能力注册冒烟、流程运行集成、组件缺陷回归、测试流程包与安装保护、Word/Excel/PDF/桌面桥真实设备测试)
  • 应用与系统 50 项组件验收:13 组任务、75 个用例,含真实执行与人工确认项
  • 本地演示站(127.0.0.1:17863):网页订单页 + 网页元素演练场(表单/下拉/勾选/密码/禁用按钮/悬停/长页面)
  • 内置 3 个网页自动化测试任务(浏览器导航、元素读写、滚动与 Cookie)+ 6 条固定示例任务
  • 打包冒烟测试:跳过单实例锁隔离启动,验证产物可用性

开发

npm install
npm run dev:local        # 使用 RPA_ELECTRON_DIST 或 C:\electron-rpa\dist 的 Electron
# 或
npm run build
node scripts/start.mjs --no-sandbox
npm run test:e2e       # 隔离启动应用并执行本地网页订单完整流程

为什么需要 dev:local:当前工作区 D:\RPA 的 ACL 会让 Electron 自带的 Chromium 沙箱启动失败(--version 都返回 0x80000003)。 把 Electron 运行时放在工作区外(例如 C:\electron-rpa\dist)即可正常启动;打包产物解压到普通目录后不受影响。 --no-sandbox 仅用于本地调试,不作为产品默认。

目录

src/main            主进程:窗口、目录加载、流程存储、IPC
src/main/browser    运行浏览器会话(BrowserSession,CDP 桥)
src/main/capabilities 能力实现(网页/桌面/数据/文件/办公/HTTP…)
src/main/fixture    本地演示站
src/preload         白名单桥
src/renderer        React UI:画布、组件库、属性面板、运行/设置页
src/shared          主/渲染共享类型
scripts             build-catalog / dev-safe / start / cdp-probe / 打包冒烟
resources           catalog.json(1016 项派生元数据)、夹具站(含元素演练场)、桌面桥
docs                现状分析、实施方案

文档

边界

  • 原始目录 1016 项中,894 项未被排除;其中 658 项主能力进入组件库,236 项重复旧版本在 resources/capability-duplicates.json 中标记兼容隐藏,122 项专用/厂商硬件/门户通道在 resources/excluded.json 中备份。组件库不显示接入状态。
  • 内置本地演示站默认监听 127.0.0.1:17863;新用户首次启动会获得“本地网页订单演示”任务,可离线验证网页输入、点击和文本读取。
  • 编排首页提供“安装示例任务”,可安装网页订单、文件文本、Excel读写、剪贴板、Word文档和异常分支 6 条固定示例;重复安装会更新同名示例,不会无限复制。
  • Tauri/WebView2 类应用的 UIA 支持天然受限(Invoke 假成功、ValuePattern 读回掩码):桌面元素点击采用“前台化 + 真实坐标点击”策略,输入采用“ValuePattern 写入 + 剪贴板粘贴兜底”。
  • 不包含厂商代码、二进制、模型或前端资产;目录是从厂商元数据派生的静态定义。
  • 运行期不访问厂商云服务;HTTP、邮件与 AI 能力属于用户在设置页显式配置的外部系统(OpenAI 兼容服务)。