tools: add user-silent offline rpa window mode

This commit is contained in:
zhaoyilun
2026-07-11 15:11:03 +08:00
parent d1a1e499ea
commit e8b4110cd2
2 changed files with 202 additions and 14 deletions

View File

@@ -0,0 +1,129 @@
# A-route RPA 用户无感运行说明
日期2026-07-11
## 目标
A-route 当前看重窗口和 UIA 控件,而不是背后的网络逻辑。这里的“用户无感”指:
1. 不遮挡当前用户桌面。
2. 不抢焦点。
3. 不接管鼠标键盘。
4. 数字员工仍然能通过 HWND/UIA 找到目标窗口和控件。
5. 所有动作可记录、可复现、可回收。
## 当前已实现
脚本:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File E:\coding\codex\isphere-ai-bridge\scripts\open-offline-real-client-window.ps1 -UserSilent
```
效果:
- 从完整离线客户端目录启动 `IMPlatformClient.exe`
- 使用 `-WindowStyle Minimized` 降低启动阶段闪窗概率。
- 找到真实 `IMPlatformClient` 窗口后移动到屏幕外:
- 主窗:`x=-32000, y=-32000`
- 提示窗:同样移到屏幕外
- 设置 `SWP_NOACTIVATE`,不调用前台激活。
- 不生成屏幕截图,避免因为窗口在屏幕外得到无意义图片。
- 继续输出 UIA dump供 RPA 选择器验证。
本轮验证结果:
- 新启动进程:`IMPlatformClient.exe`
- PID`20060`
- 主窗口:`0x340330`
- UIA 根控件:
- `automation_id=frmLogin`
- `framework_id=WinForm`
- `class_name=WindowsForms10.Window.8.app.0.d3a00f_r7_ad1`
- UIA dump 仍可读,即使窗口处于屏幕外:
- `is_offscreen=true`
- 子控件 `skinState``skinLoadPanel` 可见于控件树
## 推荐无感等级
### L1当前用户会话内屏幕外运行
适合当前开发机验证:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File E:\coding\codex\isphere-ai-bridge\scripts\open-offline-real-client-window.ps1 -UserSilent
```
优点:
- 实现最快。
- 不影响当前屏幕。
- UIA 读控件可继续工作。
限制:
- 如果某些发送动作必须依赖真实鼠标点击或 OCR 截图,屏幕外模式不适合。
- 发送路径应优先使用 `ValuePattern``InvokePattern``WM_SETTEXT``BM_CLICK` 等 HWND/UIA/Win32 方式。
### L2当前用户会话内可见但不激活
适合排查窗口状态:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File E:\coding\codex\isphere-ai-bridge\scripts\open-offline-real-client-window.ps1 -WindowMode Visible -NoActivate
```
优点:
- 人能看到窗口。
- 尽量不抢焦点。
限制:
- 仍可能遮挡用户桌面。
- 只适合调试,不适合长期运行。
### L3独立 Windows 用户会话运行
这是生产上更稳的“真正无感”方案:
- 给数字员工单独建一个 Windows 用户。
- 在该用户会话里登录 iSphere。
- RPA/WinHelper/MCP 都运行在同一个独立会话。
- 业务用户使用自己的桌面,看不到数字员工窗口。
优点:
- 不影响业务用户桌面。
- 不抢业务用户焦点。
- 可以保留真实可见窗口,兼容 OCR/坐标兜底。
限制:
- 需要部署层面的账户和会话管理。
- WinHelper 必须和目标窗口在同一交互式桌面会话里运行。
### L4不用 RPA走 B-route/API/sidecar
这是最终最无感的方向:
- 没窗口。
- 不依赖桌面。
- 不受焦点、分辨率、UI 改版影响。
但当前分支是 A-route RPA所以本轮先把 L1/L2 做出来。
## 结论
当前已经具备 L1 无感基础能力:
- 真实客户端可打开。
- 可屏幕外运行。
- 不需要前台焦点。
- UIA 控件树仍可读取。
下一轮应把发送/搜索动作约束在非焦点方式上:
1. 优先 UIA `ValuePattern`/`InvokePattern`
2. 其次 HWND 消息 `WM_SETTEXT`/`BM_CLICK`
3. 最后才考虑坐标/OCR坐标/OCR 只能放到独立 Windows 用户会话里做,不能放当前用户桌面长期运行。