@qing3a/flow-rpa-app 0.5.10 → 0.5.12
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qing3a/flow-rpa-app",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.12",
|
|
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.5.
|
|
29
|
+
"@qing3a/flow-rpa-engine": "^0.5.12",
|
|
30
30
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
31
31
|
"zod": "^4.4.3"
|
|
32
32
|
}
|
package/skill/flow-rpa-engine.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- 由 docs/SKILL-ENGINE.md 构建生成(M11c D-K1),勿手改;改 docs 真源后重跑 pnpm build -->
|
|
2
2
|
# 引擎级 skill:flow-rpa 本地 RPA 引擎(契约版)
|
|
3
3
|
|
|
4
|
-
> 状态:**定稿**(2026-08-29 按 0.5.9 实现校对:14 工具签名核对(T015 resume_run 新增)、暂停-恢复语义、薪资加密标注(T017 P1-1)、标题过滤 matchText(T017 P1-2)、平台配置引导(T019 P2-3)、节流参数同步、D3 角色说明;2026-08-30 T020 P0-4
|
|
4
|
+
> 状态:**定稿**(2026-08-29 按 0.5.9 实现校对:14 工具签名核对(T015 resume_run 新增)、暂停-恢复语义、薪资加密标注(T017 P1-1)、标题过滤 matchText(T017 P1-2)、平台配置引导(T019 P2-3)、节流参数同步、D3 角色说明;2026-08-30 T020 P0-4 增补「任务背景理解与结果提示」;T021 P0-1 增补「React 合成事件兜底 reactFallback」)
|
|
5
5
|
> 用途:挂载在 npm 包内作为「引擎级 skill」的唯一真源(ARCHITECTURE #10),安装时同步/链接到 Agent 平台的 skills 目录。
|
|
6
6
|
> 分工:本 skill 只讲「怎么调引擎」;业务编排(何时调、调哪个流程)在业务级 skill(外部/平台分发)。
|
|
7
7
|
|
|
@@ -162,6 +162,8 @@ Agent 按自己被赋予的角色调用,超出裁剪集的工具会报「工
|
|
|
162
162
|
- **消费口径(owner 拍板策略 c,2026-08-29)**:引擎**不解码** PUA 字体(解码映射在防封红线内不做);需要真实薪资时,**在引擎浏览器中实时读取**——用引擎浏览器当前页面的薪资元素查看真实数值,或引导用户人工查看登录态下的薪资显示(get_run 之外,引擎不提供解码)。
|
|
163
163
|
- **报告口径**:报告/表格中薪资统一标注「薪资加密 · 登录后可见」,**不填数值**(不做解码、不填乱码猜测值)。
|
|
164
164
|
- **标题过滤(T017 P1-2)**:click 步骤可用 `matchText: "{keyword}"`(region 寻址时跳过标题不含关键词的卡片——BOSS 搜索混入推荐位场景);表达式引擎内部为 `region:<标签> >> [match:<文本>] >> <n>`,index 作用于过滤后集合,凑够 limit 或列表耗尽自然终止
|
|
165
|
+
- **React 合成事件兜底(T021 P0-1,2026-08-30)**:click 步骤可配 `reactFallback: true`——CDP 拟人点击(首选)后,若目标元素(或所属组件祖先,≤5 层)存在 React `onClick` 事件属性(`__reactProps$` / `__reactEventHandlers$` / `__reactInternalInstance$` / `__reactFiber$` 等多版本名),引擎构造合成事件对象调用之(T008 输入补派发同族)。适用:部分形态按钮(猎聘 hash 路由搜索按钮等)对 CDP 合成鼠标事件不响应 React 事件委托;zhipin/antd 场景 CDP 点击即可触发(无需此参数)。**兜底非首选**:拟人 CDP 点击始终优先(ARCHITECTURE #13);`reactFallback` 仅在流程包明确声明时启用(liepin_search_resumes v3 的 click_search 已启用,T021→T024 延续),未声明步骤完全走 CDP(零回归)。安全语义:只调用目标元素自身链的 `onClick`,不触发其它元素事件(不点危险区)。
|
|
166
|
+
- **猎聘简历详情模式 = 列表直接提取(T024 P0-1,2026-09-04,流程层适配)**:liepin_search_resumes v3 起不再逐份点开详情——猎聘找简历新版点卡片=沟通弹窗,简历详情唯一入口 `showresumedetail` 为新标签打开,与引擎「新标签误点检测」冲突(后者是 T010 防误点外链安全语义,无开关,P2-3 已记录评估)。v3 改为 loop 收敛为**单次列表卡片直接提取**(`.new-resume-card`,save:true,含工作经历/教育/求职期望);nav URL 为 `h.liepin.com/search/getConditionItem`(`resume/search` 已 404)。**新标签误点检测 = 已知边界**:站点详情若强制新标签打开,走流程层适配(列表/详情 URL 提取),不给引擎开单站开关。
|
|
165
167
|
|
|
166
168
|
**任务背景理解与结果提示(T020 P0-4,2026-08-30;文档/惯例级,引擎零改动)**
|
|
167
169
|
- **run 前:把任务背景转化为可执行输入**(转化与判断均在 **Agent 决策层**,引擎零 LLM 分层;本小节只约定惯例)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "liepin_search_resumes",
|
|
3
3
|
"name": "猎聘搜索候选人(HR 端)",
|
|
4
4
|
"platform": "liepin",
|
|
5
|
-
"version":
|
|
5
|
+
"version": 3,
|
|
6
6
|
"trigger": { "mode": "manual" },
|
|
7
7
|
"inputs": [
|
|
8
8
|
{ "name": "keyword", "required": true, "description": "搜索关键词(职位名,如 产品经理)" },
|
|
@@ -19,51 +19,31 @@
|
|
|
19
19
|
{
|
|
20
20
|
"id": "nav_home",
|
|
21
21
|
"type": "navigate",
|
|
22
|
-
"params": { "url": "https://h.liepin.com/
|
|
23
|
-
"verify": { "waitSelector": ".auto-input-wrap-v3, .
|
|
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
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"id": "input_keyword",
|
|
27
27
|
"type": "input",
|
|
28
|
-
"params": { "selector": ".auto-input-wrap-v3 input, input[placeholder*=\"
|
|
28
|
+
"params": { "selector": ".auto-input-wrap-v3 input, input.search-component-input, input[placeholder*=\"搜职位\" i]", "value": "{keyword}" },
|
|
29
29
|
"verify": { "textContains": "{keyword}" }
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"id": "click_search",
|
|
33
33
|
"type": "click",
|
|
34
|
-
"params": { "selector": ".search-btn" },
|
|
35
|
-
"verify": { "waitSelector": ".
|
|
34
|
+
"params": { "selector": ".search-btn", "reactFallback": true },
|
|
35
|
+
"verify": { "waitSelector": ".new-resume-card", "timeoutMs": 45000 }
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
|
-
"id": "
|
|
39
|
-
"type": "
|
|
40
|
-
"params": {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"id": "click_candidate",
|
|
50
|
-
"type": "click",
|
|
51
|
-
"params": { "region": "候选列表区", "index": "{i}", "matchText": "{keyword}" },
|
|
52
|
-
"verify": { "waitSelector": "[class*=\"resume-detail\" i], [class*=\"resume-content\" i], .resume-detail-wrap", "textContains": "工作经历", "timeoutMs": 15000 }
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"id": "extract_resume",
|
|
56
|
-
"type": "extract",
|
|
57
|
-
"params": { "selector": "[class*=\"resume-detail\" i], [class*=\"resume-content\" i], .resume-detail-wrap", "field": "resumeDetail", "save": true },
|
|
58
|
-
"verify": { "textContains": "工作经历", "timeoutMs": 15000 }
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"id": "wait_breathe",
|
|
62
|
-
"type": "wait",
|
|
63
|
-
"params": { "ms": 3000 }
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
}
|
|
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 }
|
|
67
47
|
},
|
|
68
48
|
{
|
|
69
49
|
"id": "finalize",
|