@reconcrap/boss-recommend-mcp 1.3.39 → 2.0.1

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.
Files changed (88) hide show
  1. package/README.md +86 -33
  2. package/package.json +62 -9
  3. package/skills/boss-chat/SKILL.md +5 -4
  4. package/skills/boss-recommend-pipeline/SKILL.md +21 -31
  5. package/skills/boss-recruit-pipeline/README.md +17 -0
  6. package/skills/boss-recruit-pipeline/SKILL.md +55 -0
  7. package/src/chat-mcp.js +1333 -0
  8. package/src/chat-runtime-config.js +559 -0
  9. package/src/cli.js +1254 -225
  10. package/src/core/browser/index.js +378 -0
  11. package/src/core/capture/index.js +298 -0
  12. package/src/core/cv-acquisition/index.js +219 -0
  13. package/src/core/greet-quota/index.js +54 -0
  14. package/src/core/infinite-list/index.js +459 -0
  15. package/src/core/reporting/legacy-csv.js +332 -0
  16. package/src/core/run/index.js +286 -0
  17. package/src/core/screening/index.js +1166 -0
  18. package/src/core/self-heal/index.js +848 -0
  19. package/src/domains/chat/cards.js +129 -0
  20. package/src/domains/chat/constants.js +183 -0
  21. package/src/domains/chat/detail.js +1369 -0
  22. package/src/domains/chat/index.js +7 -0
  23. package/src/domains/chat/jobs.js +334 -0
  24. package/src/domains/chat/page-guard.js +88 -0
  25. package/src/domains/chat/roots.js +56 -0
  26. package/src/domains/chat/run-service.js +1101 -0
  27. package/src/domains/recommend/actions.js +457 -0
  28. package/src/domains/recommend/cards.js +228 -0
  29. package/src/domains/recommend/constants.js +141 -0
  30. package/src/domains/recommend/detail.js +341 -0
  31. package/src/domains/recommend/filters.js +581 -0
  32. package/src/domains/recommend/index.js +10 -0
  33. package/src/domains/recommend/jobs.js +232 -0
  34. package/src/domains/recommend/refresh.js +204 -0
  35. package/src/domains/recommend/roots.js +78 -0
  36. package/src/domains/recommend/run-service.js +903 -0
  37. package/src/domains/recommend/scopes.js +245 -0
  38. package/src/domains/recruit/actions.js +277 -0
  39. package/src/domains/recruit/cards.js +66 -0
  40. package/src/domains/recruit/constants.js +130 -0
  41. package/src/domains/recruit/detail.js +414 -0
  42. package/src/domains/recruit/index.js +9 -0
  43. package/src/domains/recruit/instruction-parser.js +451 -0
  44. package/src/domains/recruit/refresh.js +40 -0
  45. package/src/domains/recruit/roots.js +67 -0
  46. package/src/domains/recruit/run-service.js +580 -0
  47. package/src/domains/recruit/search.js +1149 -0
  48. package/src/index.js +578 -419
  49. package/src/recommend-mcp.js +1257 -0
  50. package/src/recruit-mcp.js +1035 -0
  51. package/src/adapters.js +0 -3079
  52. package/src/boss-chat.js +0 -1037
  53. package/src/pipeline.js +0 -2249
  54. package/src/recommend-healing-config.js +0 -131
  55. package/src/recommend-healing-rules.json +0 -261
  56. package/src/self-heal.js +0 -2237
  57. package/src/test-adapters-runtime.js +0 -628
  58. package/src/test-boss-chat.js +0 -3196
  59. package/src/test-index-async.js +0 -498
  60. package/src/test-parser.js +0 -742
  61. package/src/test-pipeline.js +0 -2703
  62. package/src/test-run-state.js +0 -152
  63. package/src/test-self-heal.js +0 -224
  64. package/vendor/boss-chat-cli/README.md +0 -134
  65. package/vendor/boss-chat-cli/package.json +0 -53
  66. package/vendor/boss-chat-cli/src/app.js +0 -1501
  67. package/vendor/boss-chat-cli/src/browser/chat-page.js +0 -3562
  68. package/vendor/boss-chat-cli/src/cli.js +0 -1713
  69. package/vendor/boss-chat-cli/src/mcp/server.js +0 -149
  70. package/vendor/boss-chat-cli/src/mcp/tool-runtime.js +0 -193
  71. package/vendor/boss-chat-cli/src/runtime/async-run-state.js +0 -260
  72. package/vendor/boss-chat-cli/src/runtime/interaction.js +0 -102
  73. package/vendor/boss-chat-cli/src/runtime/run-control.js +0 -102
  74. package/vendor/boss-chat-cli/src/services/chrome-client.js +0 -107
  75. package/vendor/boss-chat-cli/src/services/llm.js +0 -1292
  76. package/vendor/boss-chat-cli/src/services/llm.test.js +0 -326
  77. package/vendor/boss-chat-cli/src/services/profile-store.js +0 -173
  78. package/vendor/boss-chat-cli/src/services/report-store.js +0 -317
  79. package/vendor/boss-chat-cli/src/services/resume-capture.js +0 -469
  80. package/vendor/boss-chat-cli/src/services/resume-network.js +0 -727
  81. package/vendor/boss-chat-cli/src/services/state-store.js +0 -90
  82. package/vendor/boss-chat-cli/src/utils/customer-key.js +0 -82
  83. package/vendor/boss-recommend-screen-cli/boss-recommend-screen-cli.cjs +0 -7072
  84. package/vendor/boss-recommend-screen-cli/scripts/capture-full-resume-canvas.cjs +0 -817
  85. package/vendor/boss-recommend-screen-cli/scripts/stitch_resume_chunks.py +0 -141
  86. package/vendor/boss-recommend-screen-cli/test-recoverable-resume-failures.cjs +0 -2423
  87. package/vendor/boss-recommend-search-cli/src/cli.js +0 -1698
  88. package/vendor/boss-recommend-search-cli/src/test-job-selection.js +0 -211
package/README.md CHANGED
@@ -1,42 +1,57 @@
1
1
  # @reconcrap/boss-recommend-mcp
2
2
 
3
- Boss 推荐页自动化流水线 MCP(stdio)服务。
3
+ Boss 推荐 / 搜索 / 聊天筛选 MCP(stdio)服务。
4
4
 
5
5
  发布入口:
6
6
 
7
7
  - npm: `@reconcrap/boss-recommend-mcp`(https://www.npmjs.com/package/@reconcrap/boss-recommend-mcp)
8
8
  - GitHub: `reconcrap-cpu/boss-recommend-mcp`(https://github.com/reconcrap-cpu/boss-recommend-mcp)
9
9
 
10
- 它把 recommend 页面上的两段能力串起来:
10
+ 2.0.0 是 CDP-only 重写版本:活跃浏览器路径只允许 Chrome DevTools Protocol 的 `DOM` / `Input` / `Page` / `Network` / `Accessibility` 等域,不使用 `Runtime.evaluate` 或页面 JS。包内保留 recommend、search/recruit、chat 三条域服务,并共享浏览器、生命周期、筛选、CV 获取、无限滚动、自愈与 CSV 报告层。
11
11
 
12
- - `boss-recommend-search-cli`: 只负责推荐页筛选项
13
- - `boss-recommend-screen-cli`: 只负责滚动列表、打开详情、提取完整简历图、多模态判断,并对通过人选统一执行 `favorite` 或 `greet`
12
+ 安装 `boss-recommend-mcp` 后可以直接:
14
13
 
15
- 现在包内还内置了 `boss-chat` runtime,因此安装 `boss-recommend-mcp` 后可以直接:
16
-
17
- - 单独运行 chat-only 任务,不需要再单独安装 `boss-chat`
18
- - recommend screen 完成后,通过同一个父 run 自动进入 `chat_followup`
19
- - 继续把聊天页状态保存在用户目录下的 `~/.boss-recommend-mcp/boss-chat/`(可通过 `BOSS_CHAT_HOME` 覆盖)
14
+ - 读取推荐页岗位列表,供 cron / 一次性任务提前填写完整 `job` 参数。
15
+ - 运行推荐页筛选、搜索页筛选、聊天页筛选。
16
+ - 使用 Network 优先、完整滚动截图兜底的 CV 获取策略。
17
+ - 通过共享 run lifecycle 查询、暂停、恢复、取消任务。
18
+ - 把运行态保存在用户目录下的 `~/.boss-recommend-mcp/`(chat 默认在 `~/.boss-recommend-mcp/boss-chat/`,可通过 `BOSS_CHAT_HOME` 覆盖)。
20
19
 
21
20
  MCP 工具:
22
21
 
22
+ - `list_recommend_jobs`(只读读取推荐页岗位下拉框,返回可直接用于 cron/一次性任务的 `job_names`)
23
23
  - `start_recommend_pipeline_run`(异步启动;同样先经过前置门禁,通过后返回 run_id)
24
24
  - `get_recommend_pipeline_run`(轮询 run_id 状态)
25
25
  - `cancel_recommend_pipeline_run`(取消运行中任务)
26
26
  - `pause_recommend_pipeline_run`(请求暂停 run;会在当前候选人处理完成后进入 paused)
27
27
  - `resume_recommend_pipeline_run`(继续 paused run;沿用同 run_id 与同 CSV)
28
28
  - `run_recommend_self_heal`(手动运维工具;扫描 Boss recommend 的 selector / network 规则漂移,并在确认后应用高置信度修复)
29
+ - `run_recruit_pipeline`
30
+ - `start_recruit_pipeline_run`
31
+ - `get_recruit_pipeline_run`
32
+ - `pause_recruit_pipeline_run`
33
+ - `resume_recruit_pipeline_run`
34
+ - `cancel_recruit_pipeline_run`
29
35
  - `boss_chat_health_check`
36
+ - `prepare_boss_chat_run`
30
37
  - `start_boss_chat_run`
31
38
  - `get_boss_chat_run`
32
39
  - `pause_boss_chat_run`
33
40
  - `resume_boss_chat_run`
34
41
  - `cancel_boss_chat_run`
35
- - `validation_profile=safe`:只做非破坏性扫描与被动 network 观察
36
- - `validation_profile=full`:会主动打开候选人详情,并执行收藏往返校验与一次打招呼校验;若完整交互没跑通,会明确返回验证异常而不是静默跳过
37
- - 扫描会主动覆盖 recommend/latest/featured 三个 tab 的详情链路(详情打开、详情内关键 selector、popup 关闭)
38
- - 搜索链路 selector 会在状态触发后验证:职位下拉、职位搜索输入、职位 label、筛选面板、筛选分组(school/degree/gender/recentNotView)、筛选滚动容器与筛选项激活态
39
- - 对关闭弹层相关 selector,会同时验证 close 按钮与 fallback close 候选 selector
42
+
43
+ 推荐页 page scope:
44
+
45
+ - 支持 `recommend` / `featured` / `latest`,对应 Boss UI 的 `推荐` / `精选` / `最新`。
46
+ - 切换岗位后再选择 page scope;如果所选岗位没有用户要求的 scope,会自动回退到 `推荐` 并继续运行。
47
+
48
+ 推荐页岗位列表:
49
+
50
+ ```bash
51
+ boss-recommend-mcp list-jobs --slow-live --port 9222
52
+ ```
53
+
54
+ 返回的 `job_names` 可直接作为后续 `start_recommend_pipeline_run` 的 `confirmation.job_value` / `overrides.job`。
40
55
 
41
56
  状态机:
42
57
 
@@ -54,12 +69,15 @@ MCP 工具:
54
69
  - `failed`
55
70
  - `canceled`
56
71
 
57
- recommend run 传入 `follow_up.chat` screen 成功后,父 run 会进入 `chat_followup` 阶段并保持 `running`,直到内置 boss-chat 子任务结束。此时对父 run `pause/resume/cancel` 会代理到子 chat run。
72
+ 旧版 recommend -> chat 自动衔接属于 legacy-only 行为,2.0.0 CDP-only MCP 路径会 fail closed。需要聊天页筛选时,请在 recommend 完成后显式调用 `prepare_boss_chat_run` / `start_boss_chat_run`。
58
73
 
59
74
  ## 设计特点
60
75
 
61
76
  - 页面目标固定为 `https://www.zhipin.com/web/chat/recommend`
77
+ - 活跃浏览器自动化为 CDP-only;硬静态门禁会阻止活跃路径重新引入 `Runtime.evaluate` / 页面 JS。
62
78
  - 支持推荐页原生筛选:学校标签 / 学历 / 性别 / 近14天没有
79
+ - 支持推荐页岗位列表只读读取:`list_recommend_jobs` / `boss-recommend-mcp list-jobs`
80
+ - 支持推荐页 page scope:`推荐` / `精选` / `最新`
63
81
  - 学校标签支持多选语义:如“985、211”会同时勾选这两项
64
82
  - 学校标签对“混合输入”按容错处理:如“985、211、qs100”会忽略无效项 `qs100`,保留并应用有效项;仅当全部无效或用户明确“不限”时才回落到“不限”
65
83
  - 学历支持单选与多选语义:如“本科及以上”会展开为 `本科/硕士/博士`;如“大专、本科”只勾选这两项
@@ -67,6 +85,8 @@ MCP 工具:
67
85
  - 页面就绪(已登录且在 recommend 页)后,会先提取岗位栏全部岗位并要求用户确认本次岗位;确认后先点击岗位,再执行 search/screen
68
86
  - 在真正开始 search/screen 前,会进行最后一轮全参数总确认(岗位 + 全部筛选参数 + criteria + target_count + post_action + max_greet_count)
69
87
  - npm 全局安装后会自动执行 install:生成 skill、导出 MCP 模板,并自动尝试写入已检测到的外部 agent MCP 配置(含 Trae / trae-cn / Cursor / Claude / OpenClaw)
88
+ - 2.x installer 会迁移已存在的 legacy Boss MCP 配置:把 `boss-recommend` 指向统一 `@reconcrap/boss-recommend-mcp`,并从同一个 `mcp.json` 中移除旧 `boss-recruit-mcp` / standalone `boss-chat` / 本地 legacy Boss 路径;写入前会生成 `.boss-mcp-migration-*.bak` 备份
89
+ - 2.x installer 会刷新外部 agent skills:`boss-recommend-pipeline`、`boss-recruit-pipeline`、`boss-chat` 都来自当前包,旧 recruit/chat skill 会被覆盖为统一 MCP 路由
70
90
  - npm / npx 安装后会自动初始化 `screening-config.json` 模板(优先写入 workspace 的 `config/`,不可写时回退到用户目录)
71
91
  - npm 安装流程会预创建运行目录(跨平台):`~/.boss-recommend-mcp`、`~/.boss-recommend-mcp/runs`、`~/.boss-recommend-mcp/boss-chat` 及其 `logs/runs/profiles/reports/artifacts/state`
72
92
  - `post_action` 必须在每次完整运行开始时确认一次
@@ -77,11 +97,12 @@ MCP 工具:
77
97
  - 若达到 `max_greet_count` 但流程仍需继续,后续通过人选会自动改为收藏
78
98
  - 不会对每位候选人重复确认
79
99
  - 推荐页详情处理完成后,会强制关闭详情页并确认已关闭
80
- - 简历提取采用“分段滚动截图 + 拼成长图”的方式,再交给多模态模型判断
100
+ - 简历提取优先使用 Network 响应;没有可解析 Network CV 时,回退到完整滚动截图序列再交给多模态模型判断
81
101
  - 提供显式运维自愈工具:只在手动调用 `run_recommend_self_heal` 时运行,不会接入正常 run / doctor / preflight 自动链路
82
102
  - 运行前会自动做依赖体检(Node.js、Python、Pillow、`chrome-remote-interface`、`ws`),缺失时会在 `doctor` 与流水线失败诊断中明确提示
83
103
  - 若 preflight 失败,返回 `diagnostics.recovery`(含有序修复步骤与 `agent_prompt`),可直接交给 AI agent 自动按顺序安装依赖
84
104
  - 不依赖 PowerShell;Windows / macOS 均可运行(命令提示会按平台给出)
105
+ - package-local legacy/vendor 代码被隔离在 `legacy/research/`,不会进入 npm clean install 包。
85
106
 
86
107
  ## 安装
87
108
 
@@ -107,6 +128,37 @@ npm install
107
128
  node src/cli.js start
108
129
  ```
109
130
 
131
+ ### 迁移 legacy MCP / skills
132
+
133
+ 全局 npm 安装会自动运行 `boss-recommend-mcp install`。该安装器会在 Windows 和 macOS 上自动检测 Trae / Trae CN / OpenClaw 的常见配置目录:
134
+
135
+ - Windows: `%APPDATA%\Trae*\User\mcp.json`、`%USERPROFILE%\.trae*\mcp.json`、`%USERPROFILE%\.openclaw\mcp.json`、`%APPDATA%\OpenClaw\User\mcp.json`
136
+ - macOS: `~/Library/Application Support/Trae*/User/mcp.json`、`~/.trae*/mcp.json`、`~/.openclaw/mcp.json`、`~/Library/Application Support/OpenClaw/User/mcp.json`
137
+
138
+ 如果检测到 legacy Boss server entries,installer 会:
139
+
140
+ - 保留非 Boss MCP server。
141
+ - 写入统一 server:`boss-recommend -> npx -y @reconcrap/boss-recommend-mcp@<installed-version> start`
142
+ - 从同一个 `mcp.json` 删除旧 `boss-recruit-mcp`、standalone `boss-chat`、旧本地 Boss repo 路径,避免 agent 继续调用 legacy 包。
143
+ - 在原文件旁生成 `mcp.json.boss-mcp-migration-*.bak`。
144
+ - 同步外部 skills 目录里的 `boss-recommend-pipeline`、`boss-recruit-pipeline`、`boss-chat`。
145
+
146
+ 手动指定 agent:
147
+
148
+ ```bash
149
+ boss-recommend-mcp install --agent trae-cn
150
+ boss-recommend-mcp install --agent openclaw
151
+ boss-recommend-mcp doctor --agent trae-cn
152
+ boss-recommend-mcp doctor --agent openclaw
153
+ ```
154
+
155
+ 自定义路径:
156
+
157
+ ```bash
158
+ BOSS_RECOMMEND_MCP_CONFIG_TARGETS="/path/to/mcp.json" boss-recommend-mcp install
159
+ BOSS_RECOMMEND_EXTERNAL_SKILL_DIRS="/path/to/skills" boss-recommend-mcp install
160
+ ```
161
+
110
162
  可选环境变量(用于跨 agent 自动配置):
111
163
 
112
164
  ```bash
@@ -117,12 +169,12 @@ BOSS_RECOMMEND_MCP_CONFIG_TARGETS # JSON 数组或系统 path 分隔路径列
117
169
  BOSS_RECOMMEND_EXTERNAL_SKILL_DIRS # JSON 数组或系统 path 分隔路径列表,指定额外 skills 根目录
118
170
  ```
119
171
 
120
- 或使用 CLI fallback
172
+ 推荐运行入口是 MCP 工具。旧版 one-shot recommend CLI `run` 在 CDP-only 重写期间已 fenced;请使用 `start_recommend_pipeline_run` 或 live harness。岗位发现可以使用新的只读 CLI
121
173
 
122
174
  ```bash
123
- npx -y @reconcrap/boss-recommend-mcp@latest run --instruction "推荐页筛选985男生,近14天没有,有大模型平台经验,符合标准的收藏"
175
+ npx -y @reconcrap/boss-recommend-mcp@latest list-jobs --slow-live --port 9222
124
176
  # 源码模式(GitHub clone 后)
125
- node src/cli.js run --instruction "推荐页筛选985男生,近14天没有,有大模型平台经验,符合标准的收藏"
177
+ node src/cli.js list-jobs --slow-live --port 9222
126
178
  ```
127
179
 
128
180
  ## 配置
@@ -185,15 +237,16 @@ node src/cli.js config set --base-url https://api.openai.com/v1 --api-key <your-
185
237
  node src/cli.js set-port --port 9222
186
238
  node src/cli.js doctor --agent trae-cn
187
239
  node src/cli.js launch-chrome --port 9222
188
- node src/cli.js run --instruction-file request.txt --confirmation-file confirmation.json --overrides-file overrides.json
189
- node src/cli.js run --instruction-file request.txt --confirmation-file confirmation.json --overrides-file overrides.json --follow-up-file follow-up.json
240
+ node src/cli.js list-jobs --slow-live --port 9222
190
241
  node src/cli.js chat health-check
191
- node src/cli.js chat run --job "算法工程师" --start-from unread --criteria "有 AI Agent 经验" --targetCount 20 --greeting-text "您好,方便发下简历吗?"
242
+ node src/cli.js chat prepare-run --slow-live --port 9222
192
243
  ```
193
244
 
194
- ## Recommend + Chat Follow-up
245
+ ## Recommend + Chat Follow-up(Legacy-only)
195
246
 
196
- 若要让 recommend screen 完成后自动开始 boss-chat,把 chat 配置放到同一个 recommend run 的顶层 `follow_up.chat`:
247
+ 旧版曾支持 recommend screen 完成后自动开始 boss-chat,把 chat 配置放到同一个 recommend run 的顶层 `follow_up.chat`。2.0.0 的 CDP-only MCP 路径已将该链式 orchestration fenced,避免回到 legacy page-JS 路径。推荐做法是:recommend run 完成后,显式启动 chat 工具。
248
+
249
+ 历史 payload 形状如下,仅作迁移参考:
197
250
 
198
251
  ```json
199
252
  {
@@ -222,8 +275,8 @@ node src/cli.js chat run --job "算法工程师" --start-from unread --criteria
222
275
  - `baseUrl` / `apiKey` / `model` 不再单独传入,固定复用 recommend 的 `screening-config.json`
223
276
  - `greeting_text` 默认优先级:本次显式值 > profile 历史值 > 内置默认招呼语(`Hi同学,能麻烦发下简历吗?`)
224
277
  - 若缺少 `follow_up.chat` 必填项,pipeline 会返回 `NEED_INPUT`
225
- - recommend 成功后,父 run 继续存活并进入 `chat_followup`;chat 结束后父 run 才会进入最终终态
226
- - `boss-chat` 子任务状态统一写入 `~/.boss-recommend-mcp/boss-chat`(或 `BOSS_CHAT_HOME` 指定目录),不再依赖工作区 `cwd`
278
+ - 如需聊天页筛选,请调用 `prepare_boss_chat_run` 获取岗位列表,再调用 `start_boss_chat_run`。
279
+ - `boss-chat` 状态统一写入 `~/.boss-recommend-mcp/boss-chat`(或 `BOSS_CHAT_HOME` 指定目录),不再依赖工作区 `cwd`
227
280
 
228
281
  ## Chat-only
229
282
 
@@ -232,16 +285,16 @@ node src/cli.js chat run --job "算法工程师" --start-from unread --criteria
232
285
  - CLI:
233
286
  - `boss-recommend-mcp chat health-check`
234
287
  - `boss-recommend-mcp chat prepare-run`
235
- - `boss-recommend-mcp chat run --job "算法工程师" --start-from unread --targetCount 20 --criteria "有 AI Agent 经验" [--greeting-text "您好,方便发下简历吗?"]`(后台启动,不自动轮询)
236
- - `boss-recommend-mcp chat start-run|get-run|pause-run|resume-run|cancel-run`
288
+ - `boss-recommend-mcp chat start-run` / `run` 2.0.0 CLI fenced;活跃异步 chat run 请使用 MCP `start_boss_chat_run` 或 live harness。
289
+ - `boss-recommend-mcp chat get-run|pause-run|resume-run|cancel-run`
237
290
  - MCP:
238
291
  - `boss_chat_health_check`
239
292
  - `prepare_boss_chat_run`
240
- - `start_boss_chat_run`
241
- - `get_boss_chat_run`
242
- - `pause_boss_chat_run`
243
- - `resume_boss_chat_run`
244
- - `cancel_boss_chat_run`
293
+ - `start_boss_chat_run`
294
+ - `get_boss_chat_run`
295
+ - `pause_boss_chat_run`
296
+ - `resume_boss_chat_run`
297
+ - `cancel_boss_chat_run`
245
298
  - vendored `boss-chat` CLI 还支持 `--data-dir <path>` 与 `BOSS_CHAT_HOME`,默认目录为 `~/.boss-recommend-mcp/boss-chat`(若设置 `BOSS_RECOMMEND_HOME`,则默认 `<BOSS_RECOMMEND_HOME>/boss-chat`)
246
299
  - 对 `/.boss-chat`、系统目录等危险运行目录会主动拒绝启动并返回 `UNSAFE_DATA_DIR`,避免在 harness 丢参时误写根目录
247
300
  - `boss_chat_health_check` 与 chat run 返回结果会包含 `data_dir` 与 `data_dir_source`,便于定位是参数/环境变量/默认路径生效
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reconcrap/boss-recommend-mcp",
3
- "version": "1.3.39",
3
+ "version": "2.0.1",
4
4
  "description": "Unified MCP pipeline for recommend-page filtering and screening on Boss Zhipin",
5
5
  "keywords": [
6
6
  "boss",
@@ -21,22 +21,75 @@
21
21
  "install:local": "node src/cli.js install",
22
22
  "postinstall": "node scripts/postinstall.cjs",
23
23
  "test:parser": "node src/test-parser.js",
24
- "test:pipeline": "node src/test-pipeline.js",
25
24
  "test:run-state": "node src/test-run-state.js",
26
- "test:runtime": "node src/test-adapters-runtime.js",
25
+ "test:cdp-browser": "node src/test-cdp-browser.js",
26
+ "test:core-capture": "node src/test-core-capture.js",
27
+ "test:core-cv-acquisition": "node src/test-core-cv-acquisition.js",
28
+ "test:core-greet-quota": "node src/test-core-greet-quota.js",
29
+ "test:core-infinite-list": "node src/test-core-infinite-list.js",
30
+ "test:core-reporting": "node src/test-core-reporting.js",
31
+ "test:core-run": "node src/test-core-run.js",
32
+ "test:core-screening": "node src/test-core-screening.js",
33
+ "test:core-self-heal": "node src/test-core-self-heal.js",
34
+ "test:installer-migration": "node src/test-installer-migration.js",
35
+ "test:recommend-actions": "node src/test-recommend-actions.js",
36
+ "test:recommend-domain": "node src/test-recommend-domain.js",
37
+ "test:recommend-run-service": "node src/test-recommend-run-service.js",
38
+ "test:recommend-mcp": "node src/test-recommend-mcp.js",
39
+ "test:recruit-domain": "node src/test-recruit-domain.js",
40
+ "test:recruit-mcp": "node src/test-recruit-mcp.js",
41
+ "test:chat-domain": "node src/test-chat-domain.js",
42
+ "test:chat-run-service": "node src/test-chat-run-service.js",
43
+ "test:chat-mcp": "node src/test-chat-mcp.js",
27
44
  "test:async": "node src/test-index-async.js",
28
- "test:boss-chat": "node src/test-boss-chat.js",
29
- "test:self-heal": "node src/test-self-heal.js",
30
- "test:search-job": "node vendor/boss-recommend-search-cli/src/test-job-selection.js",
31
- "test:screen-runtime": "node vendor/boss-recommend-screen-cli/test-recoverable-resume-failures.cjs"
45
+ "test:runtime-scan": "node src/test-runtime-scan.js",
46
+ "scan:runtime": "node scripts/scan-forbidden-runtime.js",
47
+ "scan:runtime:json": "node scripts/scan-forbidden-runtime.js --json",
48
+ "scan:runtime:strict": "node scripts/scan-forbidden-runtime.js --fail-on-findings",
49
+ "scan:runtime:package": "node scripts/scan-forbidden-runtime.js --package-surface",
50
+ "scan:runtime:package:strict": "node scripts/scan-forbidden-runtime.js --package-surface --fail-on-legacy",
51
+ "scan:legacy-boundary": "node scripts/scan-legacy-boundary.js",
52
+ "scan:package-boundary": "node scripts/scan-package-boundary.js",
53
+ "gate:phase9-static": "node scripts/phase9-static-gate.js",
54
+ "gate:phase10-complete": "node scripts/phase10-completion-gate.js",
55
+ "live:cdp-smoke": "node scripts/live-cdp-smoke.js",
56
+ "live:run-lifecycle": "node scripts/live-run-lifecycle-smoke.js",
57
+ "live:screening": "node scripts/live-screening-smoke.js",
58
+ "live:detail": "node scripts/live-detail-smoke.js",
59
+ "live:infinite-list": "node scripts/live-infinite-list-smoke.js",
60
+ "live:scroll-end": "node scripts/live-scroll-end-screenshot.js",
61
+ "live:refresh-round": "node scripts/live-refresh-round-smoke.js",
62
+ "live:self-heal": "node scripts/live-self-heal-smoke.js",
63
+ "live:recommend-actions": "node scripts/live-recommend-actions-smoke.js",
64
+ "live:recommend-phase10-full": "node scripts/live-recommend-phase10-full.js",
65
+ "live:recommend-domain": "node scripts/live-recommend-domain-smoke.js",
66
+ "live:recommend-run-service": "node scripts/live-recommend-run-service-smoke.js",
67
+ "live:recommend-mcp": "node scripts/live-recommend-mcp-smoke.js",
68
+ "live:search-phase10-full": "node scripts/live-search-phase10-full.js",
69
+ "live:recruit-domain": "node scripts/live-recruit-domain-smoke.js",
70
+ "live:recruit-run-service": "node scripts/live-recruit-run-service-smoke.js",
71
+ "live:recruit-mcp": "node scripts/live-recruit-mcp-smoke.js",
72
+ "live:chat-domain": "node scripts/live-chat-domain-smoke.js",
73
+ "live:chat-run-service": "node scripts/live-chat-run-service-smoke.js",
74
+ "live:chat-mcp": "node scripts/live-chat-mcp-smoke.js",
75
+ "live:chat-phase10-full": "node scripts/live-chat-phase10-full.js",
76
+ "live:chat-image-screening": "node scripts/live-chat-image-screening-smoke.js"
32
77
  },
33
78
  "files": [
34
79
  "bin",
35
80
  "config/screening-config.example.json",
36
81
  "skills",
37
82
  "scripts/postinstall.cjs",
38
- "src",
39
- "vendor",
83
+ "src/core",
84
+ "src/domains",
85
+ "src/chat-mcp.js",
86
+ "src/chat-runtime-config.js",
87
+ "src/cli.js",
88
+ "src/index.js",
89
+ "src/parser.js",
90
+ "src/recommend-mcp.js",
91
+ "src/recruit-mcp.js",
92
+ "src/run-state.js",
40
93
  "README.md"
41
94
  ],
42
95
  "dependencies": {
@@ -9,7 +9,7 @@ description: "Use when users want Boss chat-page screening/outreach via the bund
9
9
 
10
10
  当用户要在 Boss 聊天页单独跑筛选/沟通任务时,必须走内置的 chat 工具,而不是要求用户单独安装 `boss-chat`。
11
11
 
12
- 适用范围是“chat-only 会话”。若用户意图包含推荐页找人(尤其是“先推荐再沟通”),必须让 `boss-recommend-pipeline` 接管,并通过 `follow_up.chat` 完成联动。
12
+ 适用范围是“chat-only 会话”。若用户意图包含推荐页找人(尤其是“先推荐再沟通”),必须先让 `boss-recommend-pipeline` 完成推荐页任务;推荐完成后如用户仍要聊天页处理,再显式走本 skill。
13
13
 
14
14
  ## Tool Routing
15
15
 
@@ -55,7 +55,7 @@ description: "Use when users want Boss chat-page screening/outreach via the bund
55
55
  - LLM 配置必须复用 `boss-recommend-mcp` 的 `screening-config.json`;不要再向用户单独要 `baseUrl/apiKey/model`。
56
56
  - 路由护栏(强制):
57
57
  - 只在用户明确是 chat-only 任务时使用本 skill。
58
- - 只要用户提到推荐页、先找人后沟通、或需要推荐筛选阶段,禁止调用 `start_boss_chat_run`;必须交给 `boss-recommend-pipeline` 并走 `follow_up.chat`。
58
+ - 只要用户提到推荐页、先找人后沟通、或需要推荐筛选阶段,禁止直接调用 `start_boss_chat_run`;必须先交给 `boss-recommend-pipeline` 完成推荐页任务。
59
59
  - 不得在 recommend 任务尚未完成时并行启动独立 chat run。
60
60
  - `job` / `start_from` / `criteria` 缺一不可;缺参时只补缺口。
61
61
  - `target_count` 在 chat-only 启动前也是必填项,不能默认省略。
@@ -78,8 +78,9 @@ description: "Use when users want Boss chat-page screening/outreach via the bund
78
78
  ## Handoff Rule (Recommend -> Chat)
79
79
 
80
80
  - 若用户先运行了 recommend 流水线,并在手动状态检查时确认 recommend 已完成,且用户目标是“立即进入聊天沟通”:
81
- - 若该 recommend run **未配置** `follow_up.chat`:应立即调用 `start_boss_chat_run` 启动 chat(不要等下一次 30 分钟轮询)。
82
- - 若该 recommend run **已配置** `follow_up.chat`:不要再重复新开 chat run,改为查询同一父 run / run 状态。
81
+ - 先调用 `prepare_boss_chat_run` 获取聊天页岗位列表与缺参。
82
+ - 显式确认 `job/start_from/target_count/criteria` 后再调用 `start_boss_chat_run`。
83
+ - 不要查找或依赖 `follow_up.chat`;该自动衔接路径属于 legacy-only 行为。
83
84
 
84
85
  ## Response Style
85
86
 
@@ -7,20 +7,20 @@ description: "Use when users want Boss recommend-page filtering/screening via bo
7
7
 
8
8
  ## Goal
9
9
 
10
- 当用户要在 Boss 推荐页筛人时,必须走 `start_recommend_pipeline_run`,并按“两阶段确认 -> 页面就绪 -> 岗位确认 -> 最终确认 -> 执行”的顺序完成。若用户还要求筛完后自动进入聊天页 follow-up,则必须把 chat 要求放进同一个 recommend run 的 `follow_up.chat`,不要要求单独再安装 `boss-chat`。
10
+ 当用户要在 Boss 推荐页筛人时,必须走 `start_recommend_pipeline_run`,并按“两阶段确认 -> 页面就绪 -> 岗位确认 -> 最终确认 -> 执行”的顺序完成。2.0 CDP-only 路径不再支持 legacy recommend -> chat 自动衔接;若用户要聊天页筛选或求简历,必须在推荐页任务完成后显式改用 `boss-chat` 工具。
11
11
 
12
12
  ## Hard Rules (Must Follow)
13
13
 
14
14
  - **路由**
15
15
  - 语义是推荐页(`recommend/推荐页/recommend page//web/chat/recommend`)时,只能走本 skill。
16
- - 语义是“推荐页找人 + 结束后沟通/聊天”时,仍然只能走本 skill;必须通过 `follow_up.chat` 挂到同一个 recommend run。
16
+ - 语义是“推荐页找人 + 结束后沟通/聊天”时,先完成 recommend run;不得配置 `follow_up.chat`,后续聊天任务必须显式交给 `boss-chat`。
17
17
  - 只有用户**明确**说搜索页(`search/搜索页//web/chat/search`)时,才可转 `boss-recruit-pipeline`。
18
18
  - recommend 失败时(如 `JOB_TRIGGER_NOT_FOUND/NO_RECOMMEND_IFRAME/BOSS_LOGIN_REQUIRED`)禁止降级到 recruit;先修 recommend 页面就绪/登录态。
19
19
 
20
20
  - **确认不可代填(强制)**
21
21
  - 禁止 agent 自行“设置合理参数”并代替用户确认。
22
22
  - 禁止在用户未明确回复前,把任意 `*_confirmed` 字段设为 `true`。
23
- - 禁止在用户未明确回复前,自行填充 `page_scope/school_tag/degree/gender/recent_not_view/criteria/target_count/post_action/max_greet_count/job/follow_up.chat.*`。
23
+ - 禁止在用户未明确回复前,自行填充 `page_scope/school_tag/degree/gender/recent_not_view/criteria/target_count/post_action/max_greet_count/job`。
24
24
  - 若工具返回 `pending_questions`,必须逐项向用户提问并等待用户回复;不得跳过提问直接执行。
25
25
 
26
26
  - **岗位确认时机**
@@ -59,27 +59,16 @@ description: "Use when users want Boss recommend-page filtering/screening via bo
59
59
  必须确认:
60
60
 
61
61
  - `job`(来自 `job_options`,必须全量展示)
62
- - `final_review`(岗位 + 全参数总确认;若有 `follow_up.chat`,必须把 chat summary 一并展示)
63
-
64
- ## Follow-up Chat
65
-
66
- 当用户要求“推荐页跑完后自动开始聊天页任务”时:
67
-
68
- - 仍然只走 `start_recommend_pipeline_run`
69
- - chat 配置放入顶层 `follow_up.chat`
70
- - `follow_up.chat` 必填:
71
- - `criteria`
72
- - `start_from`: `unread|all`
73
- - `target_count`
74
- - `follow_up.chat` 可选:
75
- - `greeting_text`(兼容 `greetingText`,自定义首条打招呼消息)
76
- - `profile`(默认 `default`)
77
- - `dry_run/no_state/safe_pacing/batch_rest_enabled`
78
- - `greeting_text` 未传时,boss-chat 会自动按默认优先级回退:本次显式值 > profile 历史值 > 内置默认招呼语
79
- - `job` / `port` 继承 recommend run 上下文;不要单独向用户再要一份
80
- - LLM 配置固定复用 recommend 的 `screening-config.json`;不要单独向用户再要 `baseUrl/apiKey/model`
81
- - 缺少 `follow_up.chat` 必填项时,按 `pending_questions` 补缺口;不要额外发起一轮独立的 chat 确认流程
82
- - 不允许提前调用 `start_boss_chat_run`;必须等 recommend run 完成并由 `follow_up.chat` 自动衔接
62
+ - `final_review`(岗位 + 全参数总确认)
63
+
64
+ ## Chat Handoff
65
+
66
+ 当用户要求“推荐页跑完后继续聊天页任务”时:
67
+
68
+ - 本次 recommend run 只提交 recommend 参数,不要写 `follow_up.chat`。
69
+ - recommend 完成并由用户确认要继续后,切换到 `boss-chat` skill。
70
+ - `boss-chat` 会重新调用 `prepare_boss_chat_run` 获取聊天页岗位列表,并显式确认 `job/start_from/target_count/criteria`。
71
+ - 不得在 recommend run 尚未完成时并行启动 `start_boss_chat_run`。
83
72
 
84
73
  ## Closed vs Open Questions
85
74
 
@@ -95,12 +84,16 @@ description: "Use when users want Boss recommend-page filtering/screening via bo
95
84
 
96
85
  ## Tool Usage
97
86
 
87
+ - 岗位发现工具:`list_recommend_jobs`
88
+ - 用途:当用户需要为 cron / 一次性自动任务提前填写完整参数时,先用它读取推荐页岗位下拉框的全部可用岗位名。
89
+ - 输出:优先把 `job_names` 里的值作为后续 `overrides.job` / `confirmation.job_value`。
90
+ - 限制:只读岗位列表,不启动筛选任务;仍然必须在正式 `start_recommend_pipeline_run` 前完成岗位与最终确认。
98
91
  - 主工具:`start_recommend_pipeline_run`
99
92
  - 必填:`instruction`
100
93
  - 关键输入:
101
94
  - `confirmation`:`page_confirmed/page_value/filters_confirmed/school_tag_confirmed.../job_confirmed/job_value/final_confirmed`
102
95
  - `overrides`:`page_scope/school_tag/degree/gender/recent_not_view/criteria/job/target_count/post_action/max_greet_count`
103
- - `follow_up.chat`:仅在“recommend 完成后自动进入 boss-chat”场景传入
96
+ - 不要传 `follow_up.chat`;该路径属于 legacy-only 行为
104
97
 
105
98
  最小策略:
106
99
 
@@ -112,16 +105,13 @@ description: "Use when users want Boss recommend-page filtering/screening via bo
112
105
  ## Async Run Policy
113
106
 
114
107
  - 用户未明确要求“持续跟进”时,不自动 `sleep + get_recommend_pipeline_run`。
115
- - 若 run 已进入 `chat_followup`,默认也不得自动轮询子 chat 状态;除非用户明确指定轮询频率/间隔。
116
108
  - 用户要求查进度时,再用 `get_recommend_pipeline_run`。
117
109
  - **长任务轮询节奏(强制)**:
118
- - 推荐+聊天联动任务可能运行数小时,禁止高频轮询。
110
+ - 推荐任务可能运行数小时,禁止高频轮询。
119
111
  - 默认最小轮询间隔为 **30 分钟**(除非用户明确要求更频繁)。
120
112
  - 若刚启动 run(拿到 `ACCEPTED + run_id`),不得立即进入连续轮询。
121
113
  - `pause/resume/cancel` 必须复用同一 `run_id`,不要重复 `start`。
122
- - **完成后衔接(强制)**:
123
- - 若本次 run 已带 `follow_up.chat`:chat 由同一 run 自动衔接,禁止再单独重复启动 chat run。
124
- - 若用户手动触发 `get_recommend_pipeline_run` 且发现 recommend 已完成、而当前会话目标是“继续聊天沟通”且尚未启动 chat:应立即启动 chat(无需等待下一轮 30 分钟轮询)。
114
+ - **完成后衔接(强制)**:若用户手动触发 `get_recommend_pipeline_run` 且发现 recommend 已完成、而当前会话目标是“继续聊天沟通”且尚未启动 chat:切换到 `boss-chat` 并重新走 chat-only 参数确认。
125
115
 
126
116
  ## Preflight and Recovery
127
117
 
@@ -146,7 +136,7 @@ description: "Use when users want Boss recommend-page filtering/screening via bo
146
136
 
147
137
  MCP 不可用时:
148
138
 
149
- `npx -y @reconcrap/boss-recommend-mcp@latest run --instruction "..." [--confirmation-json '{...}'] [--overrides-json '{...}'] [--follow-up-json '{...}']`
139
+ `npx -y @reconcrap/boss-recommend-mcp@latest run --instruction "..." [--confirmation-json '{...}'] [--overrides-json '{...}']`
150
140
 
151
141
  禁止错误回退:
152
142
 
@@ -0,0 +1,17 @@
1
+ # boss-recruit-pipeline
2
+
3
+ Bundled search/recruit-page automation skill shipped with `boss-recommend-mcp` 2.x.
4
+
5
+ Package: `@reconcrap/boss-recommend-mcp` (npm)
6
+ Source: `https://github.com/reconcrap-cpu/boss-recommend-mcp`
7
+
8
+ This skill intentionally replaces legacy `boss-recruit-mcp` skill installs. It routes Boss search/recruit tasks to the unified CDP-only MCP tools:
9
+
10
+ - `run_recruit_pipeline`
11
+ - `start_recruit_pipeline_run`
12
+ - `get_recruit_pipeline_run`
13
+ - `pause_recruit_pipeline_run`
14
+ - `resume_recruit_pipeline_run`
15
+ - `cancel_recruit_pipeline_run`
16
+
17
+ Do not call the old `@reconcrap/boss-recruit-mcp` package from this skill.
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: "boss-recruit-pipeline"
3
+ description: "Use when users want Boss search/recruit-page screening via the unified boss-recommend-mcp package. Replaces the legacy boss-recruit-mcp skill."
4
+ ---
5
+
6
+ # Boss Recruit Pipeline Skill
7
+
8
+ ## Goal
9
+
10
+ 当用户要在 Boss 搜索页 / 招聘搜索页筛人时,必须走 `@reconcrap/boss-recommend-mcp` 2.x 内置的 recruit/search MCP 工具,不要安装或调用旧的 `@reconcrap/boss-recruit-mcp`。
11
+
12
+ ## Tool Routing
13
+
14
+ - 同步启动:`run_recruit_pipeline`
15
+ - 异步启动:`start_recruit_pipeline_run`
16
+ - 查询进度:`get_recruit_pipeline_run`
17
+ - 暂停:`pause_recruit_pipeline_run`
18
+ - 继续:`resume_recruit_pipeline_run`
19
+ - 取消:`cancel_recruit_pipeline_run`
20
+
21
+ ## Hard Rules
22
+
23
+ - 只在用户明确说搜索页、search、recruit、招聘搜索、`/web/chat/search` 时使用本 skill。
24
+ - 如果用户说推荐页、recommend、`/web/chat/recommend`,必须交给 `boss-recommend-pipeline`。
25
+ - 如果用户说聊天页、未读、全部聊天、求简历,必须交给 `boss-chat`。
26
+ - 禁止调用旧包:`@reconcrap/boss-recruit-mcp`、`boss-recruit-mcp`、旧本地 recruit repo、旧 vendor 脚本。
27
+ - 浏览器自动化必须走 CDP-only 2.x MCP 工具;不得要求用户启用 legacy page-JS 或 `Runtime.evaluate` 路径。
28
+ - 若用户未提供岗位,必须先询问岗位。搜索页岗位选择在关键词输入框旁边;不要猜测默认岗位。
29
+ - 若用户提供城市、学历、学校、关键词、过滤已看、人选目标数、筛选条件、post action、max greet 等参数,必须逐项传入或确认。
30
+ - `post_action=greet` 时必须确认 `max_greet_count`;不要默认等于 `target_count`。
31
+ - 搜索页和推荐页一样支持多选筛选条件;不要把多选降级成单选。
32
+
33
+ ## Required Inputs
34
+
35
+ - `job`
36
+ - `keyword` 或用户明确的搜索意图
37
+ - `criteria`
38
+ - `target_count`
39
+
40
+ 常用可选项:
41
+
42
+ - `city`
43
+ - `degree`
44
+ - `school_tag`
45
+ - `recent_not_view`
46
+ - `post_action`
47
+ - `max_greet_count`
48
+ - `port`
49
+
50
+ ## Response Style
51
+
52
+ - 用结构化中文确认参数。
53
+ - 缺参时只补缺口,不要改写用户的筛选条件。
54
+ - 拿到 `ACCEPTED + run_id` 后默认停止本轮,不主动高频轮询。
55
+ - 查询、暂停、恢复、取消时必须复用同一个 `run_id`。