@qing3a/flow-rpa-app 0.5.12 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts +48 -17
- package/dist/cli.js +188 -85
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -22
- package/dist/config.js +1 -43
- package/dist/config.js.map +1 -1
- package/dist/http.js +1 -2
- package/dist/http.js.map +1 -1
- package/dist/main.js +12 -12
- package/dist/main.js.map +1 -1
- package/dist/runner.d.ts +29 -11
- package/dist/runner.js +71 -64
- package/dist/runner.js.map +1 -1
- package/dist/server.d.ts +11 -21
- package/dist/server.js +7 -121
- package/dist/server.js.map +1 -1
- package/dist/status.d.ts +4 -15
- package/dist/status.js +2 -27
- package/dist/status.js.map +1 -1
- package/package.json +2 -2
- package/skill/flow-rpa-engine.md +11 -19
- package/starter/liepin_search_resumes/flow.json +54 -54
package/dist/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAA;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qing3a/flow-rpa-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"engines": { "node": ">=20" },
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "flow-rpa 应用壳(原 app crate):MCP server + CLI",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"typecheck": "tsc --noEmit"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@qing3a/flow-rpa-engine": "^0.
|
|
29
|
+
"@qing3a/flow-rpa-engine": "^0.6.0",
|
|
30
30
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
31
31
|
"zod": "^4.4.3"
|
|
32
32
|
}
|
package/skill/flow-rpa-engine.md
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
- 替代:外部已用 `--remote-debugging-port=9222` 拉起 Edge 时可省略 `--edge`(引擎复用调试实例)
|
|
36
36
|
- MCP 地址:`http://127.0.0.1:3111/mcp`(POST 需带 `Accept: application/json, text/event-stream`);健康检查:`GET /status.json`(无需头)
|
|
37
37
|
5. `flow-app install-skill <Agent 的 skills 目录>`(拷引擎级 skill 到 Agent 平台,SKILL.md 子目录结构 + 平铺兼容,幂等,带版本标注)
|
|
38
|
+
- 不知道 skills 目录在哪:`flow-app install-skill`(无参数)会列出常见位置并对本机已存在的目录做标记(只读探测,不自动写)
|
|
38
39
|
|
|
39
40
|
### 0.3 首次登录(唯一的人工步骤,二选一)
|
|
40
41
|
|
|
@@ -57,40 +58,31 @@
|
|
|
57
58
|
|
|
58
59
|
- 用 `get_status` 预检(浏览器连接/队列/锁/平台配置)→ 进入下文「典型调用序列」
|
|
59
60
|
- **正常初始态**:未跑流程前 `browser.connected=false`、`flows=[]`(或仅流程包内的)均为正常——
|
|
60
|
-
浏览器懒加载(首次 run_flow
|
|
61
|
-
|
|
62
|
-
### 0.6 配置平台(md-forge:观察上报 + 流程/建议同步;T019 P2-3)
|
|
63
|
-
|
|
64
|
-
- **目的**:配置 `platform-url + platform-token` 后,引擎自动注册:run 结束自动上传观察包、`pkg_update` 拉取流程包、L2 建议同步回平台。未配置 = 本地模式正常使用(观察只落盘本地,`get_status` 的 `platform.configured=false`)。
|
|
65
|
-
- **配置方式(二选一,一次配置永久生效——自动持久化到 `data/platform.json`)**:
|
|
66
|
-
- **启动参数**:`flow-app --http ... --platform-url <url> --platform-token <token>`(token 已由平台方发放)
|
|
67
|
-
- **环境变量**:`FLOW_PLATFORM_URL=<url>` `FLOW_PLATFORM_TOKEN=<token>`(服务启动时读取)
|
|
68
|
-
- **验证配置生效**:`flow-app doctor` 显示「✅ 平台已配置」;或 `get_status` 返回 `platform.configured=true`(url 含地址,**不含 token**)。
|
|
69
|
-
- **配置后**:`pkg_update` 拉取平台流程包到 `flows/`(或本地 `flows/` 优先,pkg_update 只覆盖平台发布的版本);已配置后 run 结束自动上传观察包(`sync_pending_uploads` 可重试断网遗留)。
|
|
70
|
-
- ⚠️ 若 doctor 显示「⚠️ 平台未配置」而你已经拿到 token——说明 token 未传进引擎(启动命令缺 `--platform-url/--platform-token` 或环境变量未设),按上面方式补配后重启服务。
|
|
61
|
+
浏览器懒加载(首次 run_flow 才弹出),流程需放入 flows/(starter 内置 1 个;更多流程包由 owner 分发)
|
|
62
|
+
- **非 MCP 环境(脚本/CI/人工排查)**:CLI 直跑与 MCP 同源——`flow-app run <flowId> --vars '<JSON>'`(同步,退出码 done/paused=0、failed=1)、`flow-app resume <runId>`、`flow-app get <runId>`;闸门/队列/单实例锁语义与 MCP 完全一致,不可用于绕过防封节奏
|
|
71
63
|
|
|
72
64
|
---
|
|
73
65
|
|
|
74
66
|
## 一、这是什么
|
|
75
67
|
|
|
76
|
-
flow-rpa 是本地 RPA 执行引擎:它解释执行**流程定义**(JSON 数据),拟人化操作用户本地的浏览器(CDP
|
|
68
|
+
flow-rpa 是本地 RPA 执行引擎:它解释执行**流程定义**(JSON 数据),拟人化操作用户本地的浏览器(CDP),产生结构化执行记录并本地导出脱敏统计/观察包(T029:md-forge 上行通道已退役,观察包为本地工件)
|
|
77
69
|
|
|
78
70
|
- **流程是数据**:执行什么由 flow.json 决定,引擎不含业务逻辑。
|
|
79
71
|
- **接口是 MCP**:本引擎通过 MCP 工具被 Agent 调用(stdio 传输,进程由 Agent 拉起)。
|
|
80
72
|
- **流程级工具面**:只提供「跑流程/查结果/管建议」等流程级工具,**不提供**页面原子操作(点击/输入/截图等),也不提供业务工具。
|
|
81
73
|
|
|
82
|
-
## 二、工具面(
|
|
74
|
+
## 二、工具面(12 个,签名冻结;T029/0.6.0 随 md-forge 退役移除 sync_pending_uploads 与 pkg_update(14 → 12);此前 get_status 第 12 个(2026-08-25)、cancel_run 第 13 个(2026-08-26)、resume_run 第 14 个(2026-08-29))
|
|
83
75
|
|
|
84
76
|
### 核心执行
|
|
85
77
|
|
|
86
78
|
| 工具 | 参数 | 返回 | 说明 |
|
|
87
79
|
|---|---|---|---|
|
|
88
|
-
| `get_status` | 无 | 引擎状态 JSON(版本/skill
|
|
80
|
+
| `get_status` | 无 | 引擎状态 JSON(版本/skill 版本/浏览器连接/队列/锁/流程列表) | **调用流程前预检环境**:浏览器是否连接、队列是否忙、锁是否被占 |
|
|
89
81
|
| `list_flows` | 无 | 流程列表(id/name/version) | **调用任何流程前先查这里**,不要硬编码流程 id(流程包会更新) |
|
|
90
82
|
| `run_flow` | `flowId`(必填)、`vars`(可选,如 `{"keyword":"算法工程师"}`)、`wait`(可选,默认 false)、`owner`(可选,D7 发起者标识,缺省 local) | `{runId, status:'running'\|'done'\|'failed'\|'paused', error?}` | **异步**:wait=false 立即返回 runId,用 `get_run` 轮询;流程含随机 15~70 秒同站间隔,同步等待会较久。**status=paused = 人工接管**(登录/验证码/确认弹窗命中),处理完调 `resume_run` |
|
|
91
83
|
| `get_run` | `runId`、`owner`(可选,D7 过滤) | run.json 全量(每步 verify/耗时/失败类别/暂停信息) | 轮询直到 status 为 done/failed;**步骤级**看哪步失败;paused 时含 pausedAt/pauseReason/resumeStepIndex |
|
|
92
84
|
| `cancel_run` | `runId` | 取消结果文案 | **D7**:取消排队中的任务(状态置 cancelled);执行中任务暂不支持取消(页面层 abort 留待后续) |
|
|
93
|
-
| `resume_run` | `runId` | `{runId, status:'running'\|'done'\|'failed'\|'paused', error?}` | **T015**:从暂停点继续(人工接管后)——不重跑已完成步骤;执行中/非 paused 拒绝;暂停超时(缺省 5 分钟)转 failed |
|
|
85
|
+
| `resume_run` | `runId` | `{runId, status:'running'\|'done'\|'failed'\|'paused', error?, pauseGuidance?, precheckRejected?}` | **T015**:从暂停点继续(人工接管后)——不重跑已完成步骤;执行中/非 paused 拒绝;暂停超时(缺省 5 分钟)转 failed。**T027/B2**:login 暂停 resume 前会预检登录态——仍在登录区 → 拒绝(`precheckRejected:true`,run 保持 paused)并给 `pauseGuidance` 指引,不消耗执行轮次;预检不可判定(浏览器不可达)→ 放行走原路径 |
|
|
94
86
|
| `validate_flow` | `json` 或 `path` | `{valid, flowId?, error?}` | 校验流程定义 |
|
|
95
87
|
|
|
96
88
|
### 学习与建议
|
|
@@ -105,10 +97,8 @@ flow-rpa 是本地 RPA 执行引擎:它解释执行**流程定义**(JSON 数
|
|
|
105
97
|
|
|
106
98
|
| 工具 | 说明 |
|
|
107
99
|
|---|---|
|
|
108
|
-
| `export_observation` |
|
|
109
|
-
| `sync_pending_uploads` | 重试待上传的观察包(断网恢复入口) |
|
|
100
|
+
| `export_observation` | 把一次执行导出为观察报告包(本地工件:outbox/ 下,可人工查看或经运营层传递) |
|
|
110
101
|
| `get_perf` | 端到端性能基准(质量门数据) |
|
|
111
|
-
| `pkg_update` | 从 md-forge 更新流程包(拉 manifest → 版本比对 → 下载 → 哈希校验 → 替换) |
|
|
112
102
|
|
|
113
103
|
**工具面角色裁剪(D3,2026-08-27 校对;2026-08-29 T015 补充 resume_run)**:启动参数 `--role hunter` 时工具面裁剪为 6 个
|
|
114
104
|
(`run_flow` / `get_run` / `list_suggestions` / `apply_suggestion` / `dismiss_suggestion` / `resume_run`)——流程执行与建议处置 +
|
|
@@ -189,7 +179,8 @@ Agent 按自己被赋予的角色调用,超出裁剪集的工具会报「工
|
|
|
189
179
|
- 验证码 / 环境验证:**立即暂停(status=paused),告知用户人工处理**,绝不自动重试(执行树级风险事件;处理完 resume_run 继续)
|
|
190
180
|
- **环境类失败(首次使用必踩,重点)**:
|
|
191
181
|
- `浏览器未就绪` / 9222 连不上 → 引擎浏览器没启动或调试端口不可用 → **告知用户检查/启动引擎浏览器**,不要重试流程(调用前可用 `get_status` 预检 `browser.connected`)
|
|
192
|
-
- 登录页 / 未登录 → **引擎已暂停(status=paused)** → **告知用户在引擎浏览器里登录目标平台,登录完成后调 `resume_run(runId)`
|
|
182
|
+
- 登录页 / 未登录 → **引擎已暂停(status=paused)** → **告知用户在引擎浏览器里登录目标平台,登录完成后调 `resume_run(runId)` 从暂停点继续**(不重跑已完成步骤;返回含 `pauseGuidance` 结构化指引)
|
|
183
|
+
- **T027/B2**:login 暂停的 resume 前引擎会预检登录态——仍在登录区 → `precheckRejected:true` 拒绝本次 resume(不消耗执行轮次),把 `pauseGuidance` 转告用户即可;**绝不反复尝试 resume,绝不自动重试**
|
|
193
184
|
- 引擎浏览器与用户日常浏览器是隔离的 profile——用户日常登录 ≠ 引擎已登录
|
|
194
185
|
- 其他失败:看失败步骤与类别;重试前先确认前置条件(登录态/节流),**重试最多一次**
|
|
195
186
|
|
|
@@ -199,6 +190,7 @@ Agent 按自己被赋予的角色调用,超出裁剪集的工具会报「工
|
|
|
199
190
|
- ❌ 不自动应用 pending 建议(人工确认铁律;除非用户明确同意,不得传 confirm:true)
|
|
200
191
|
- ❌ 不把业务判断写成引擎工具调用链的循环(业务编排在业务级 skill)
|
|
201
192
|
- ❌ 不使用运维工具(export_observation 等)除非你是 owner 且明确需要
|
|
193
|
+
- ❌ 不要求/不尝试让引擎附着用户日常浏览器或其活动 tab(**执行隔离不变量**,ARCHITECTURE 红线 5:流程只在引擎专用浏览器实例内执行;用户日常登录 ≠ 引擎已登录)
|
|
202
194
|
|
|
203
195
|
## 五、与业务级 skill 的关系
|
|
204
196
|
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "liepin_search_resumes",
|
|
3
|
-
"name": "猎聘搜索候选人(HR 端)",
|
|
4
|
-
"platform": "liepin",
|
|
5
|
-
"version": 3,
|
|
6
|
-
"trigger": { "mode": "manual" },
|
|
7
|
-
"inputs": [
|
|
8
|
-
{ "name": "keyword", "required": true, "description": "搜索关键词(职位名,如 产品经理)" },
|
|
9
|
-
{ "name": "city", "required": false, "description": "城市名(如 珠海;缺省不带 → 平台默认城市)" },
|
|
10
|
-
{ "name": "limit", "required": false, "description": "提取数量上限,缺省 10" }
|
|
11
|
-
],
|
|
12
|
-
"envCheck": {
|
|
13
|
-
"verifyUrls": [
|
|
14
|
-
"safe.liepin.com/page/liepin/captchaPage_PC"
|
|
15
|
-
],
|
|
16
|
-
"dialogs": []
|
|
17
|
-
},
|
|
18
|
-
"steps": [
|
|
19
|
-
{
|
|
20
|
-
"id": "nav_home",
|
|
21
|
-
"type": "navigate",
|
|
22
|
-
"params": { "url": "https://h.liepin.com/search/getConditionItem" },
|
|
23
|
-
"verify": { "waitSelector": ".search-btn, .auto-input-wrap-v3 input, .auto-input-wrap-v3", "timeoutMs": 180000 }
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"id": "input_keyword",
|
|
27
|
-
"type": "input",
|
|
28
|
-
"params": { "selector": ".auto-input-wrap-v3 input, input.search-component-input, input[placeholder*=\"搜职位\" i]", "value": "{keyword}" },
|
|
29
|
-
"verify": { "textContains": "{keyword}" }
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"id": "click_search",
|
|
33
|
-
"type": "click",
|
|
34
|
-
"params": { "selector": ".search-btn", "reactFallback": true },
|
|
35
|
-
"verify": { "waitSelector": ".new-resume-card", "timeoutMs": 45000 }
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"id": "extract_resumes",
|
|
39
|
-
"type": "extract",
|
|
40
|
-
"params": { "selector": ".new-resume-card", "field": "resumeList", "save": true },
|
|
41
|
-
"verify": { "textContains": "
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"id": "wait_breathe",
|
|
45
|
-
"type": "wait",
|
|
46
|
-
"params": { "ms": 3000 }
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"id": "finalize",
|
|
50
|
-
"type": "finalize",
|
|
51
|
-
"params": { "closeTab": true }
|
|
52
|
-
}
|
|
53
|
-
]
|
|
54
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"id": "liepin_search_resumes",
|
|
3
|
+
"name": "猎聘搜索候选人(HR 端)",
|
|
4
|
+
"platform": "liepin",
|
|
5
|
+
"version": 3,
|
|
6
|
+
"trigger": { "mode": "manual" },
|
|
7
|
+
"inputs": [
|
|
8
|
+
{ "name": "keyword", "required": true, "description": "搜索关键词(职位名,如 产品经理)" },
|
|
9
|
+
{ "name": "city", "required": false, "description": "城市名(如 珠海;缺省不带 → 平台默认城市)" },
|
|
10
|
+
{ "name": "limit", "required": false, "description": "提取数量上限,缺省 10" }
|
|
11
|
+
],
|
|
12
|
+
"envCheck": {
|
|
13
|
+
"verifyUrls": [
|
|
14
|
+
"safe.liepin.com/page/liepin/captchaPage_PC"
|
|
15
|
+
],
|
|
16
|
+
"dialogs": []
|
|
17
|
+
},
|
|
18
|
+
"steps": [
|
|
19
|
+
{
|
|
20
|
+
"id": "nav_home",
|
|
21
|
+
"type": "navigate",
|
|
22
|
+
"params": { "url": "https://h.liepin.com/search/getConditionItem" },
|
|
23
|
+
"verify": { "waitSelector": ".search-btn, .auto-input-wrap-v3 input, .auto-input-wrap-v3", "timeoutMs": 180000 }
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "input_keyword",
|
|
27
|
+
"type": "input",
|
|
28
|
+
"params": { "selector": ".auto-input-wrap-v3 input, input.search-component-input, input[placeholder*=\"搜职位\" i]", "value": "{keyword}" },
|
|
29
|
+
"verify": { "textContains": "{keyword}" }
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "click_search",
|
|
33
|
+
"type": "click",
|
|
34
|
+
"params": { "selector": ".search-btn", "reactFallback": true },
|
|
35
|
+
"verify": { "waitSelector": ".new-resume-card", "timeoutMs": 45000 }
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "extract_resumes",
|
|
39
|
+
"type": "extract",
|
|
40
|
+
"params": { "selector": ".new-resume-card", "field": "resumeList", "save": true },
|
|
41
|
+
"verify": { "textContains": "求职期望", "timeoutMs": 30000 }
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "wait_breathe",
|
|
45
|
+
"type": "wait",
|
|
46
|
+
"params": { "ms": 3000 }
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "finalize",
|
|
50
|
+
"type": "finalize",
|
|
51
|
+
"params": { "closeTab": true }
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|