@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.
- package/README.md +86 -33
- package/package.json +62 -9
- package/skills/boss-chat/SKILL.md +5 -4
- package/skills/boss-recommend-pipeline/SKILL.md +21 -31
- package/skills/boss-recruit-pipeline/README.md +17 -0
- package/skills/boss-recruit-pipeline/SKILL.md +55 -0
- package/src/chat-mcp.js +1333 -0
- package/src/chat-runtime-config.js +559 -0
- package/src/cli.js +1254 -225
- package/src/core/browser/index.js +378 -0
- package/src/core/capture/index.js +298 -0
- package/src/core/cv-acquisition/index.js +219 -0
- package/src/core/greet-quota/index.js +54 -0
- package/src/core/infinite-list/index.js +459 -0
- package/src/core/reporting/legacy-csv.js +332 -0
- package/src/core/run/index.js +286 -0
- package/src/core/screening/index.js +1166 -0
- package/src/core/self-heal/index.js +848 -0
- package/src/domains/chat/cards.js +129 -0
- package/src/domains/chat/constants.js +183 -0
- package/src/domains/chat/detail.js +1369 -0
- package/src/domains/chat/index.js +7 -0
- package/src/domains/chat/jobs.js +334 -0
- package/src/domains/chat/page-guard.js +88 -0
- package/src/domains/chat/roots.js +56 -0
- package/src/domains/chat/run-service.js +1101 -0
- package/src/domains/recommend/actions.js +457 -0
- package/src/domains/recommend/cards.js +228 -0
- package/src/domains/recommend/constants.js +141 -0
- package/src/domains/recommend/detail.js +341 -0
- package/src/domains/recommend/filters.js +581 -0
- package/src/domains/recommend/index.js +10 -0
- package/src/domains/recommend/jobs.js +232 -0
- package/src/domains/recommend/refresh.js +204 -0
- package/src/domains/recommend/roots.js +78 -0
- package/src/domains/recommend/run-service.js +903 -0
- package/src/domains/recommend/scopes.js +245 -0
- package/src/domains/recruit/actions.js +277 -0
- package/src/domains/recruit/cards.js +66 -0
- package/src/domains/recruit/constants.js +130 -0
- package/src/domains/recruit/detail.js +414 -0
- package/src/domains/recruit/index.js +9 -0
- package/src/domains/recruit/instruction-parser.js +451 -0
- package/src/domains/recruit/refresh.js +40 -0
- package/src/domains/recruit/roots.js +67 -0
- package/src/domains/recruit/run-service.js +580 -0
- package/src/domains/recruit/search.js +1149 -0
- package/src/index.js +578 -419
- package/src/recommend-mcp.js +1257 -0
- package/src/recruit-mcp.js +1035 -0
- package/src/adapters.js +0 -3079
- package/src/boss-chat.js +0 -1037
- package/src/pipeline.js +0 -2249
- package/src/recommend-healing-config.js +0 -131
- package/src/recommend-healing-rules.json +0 -261
- package/src/self-heal.js +0 -2237
- package/src/test-adapters-runtime.js +0 -628
- package/src/test-boss-chat.js +0 -3196
- package/src/test-index-async.js +0 -498
- package/src/test-parser.js +0 -742
- package/src/test-pipeline.js +0 -2703
- package/src/test-run-state.js +0 -152
- package/src/test-self-heal.js +0 -224
- package/vendor/boss-chat-cli/README.md +0 -134
- package/vendor/boss-chat-cli/package.json +0 -53
- package/vendor/boss-chat-cli/src/app.js +0 -1501
- package/vendor/boss-chat-cli/src/browser/chat-page.js +0 -3562
- package/vendor/boss-chat-cli/src/cli.js +0 -1713
- package/vendor/boss-chat-cli/src/mcp/server.js +0 -149
- package/vendor/boss-chat-cli/src/mcp/tool-runtime.js +0 -193
- package/vendor/boss-chat-cli/src/runtime/async-run-state.js +0 -260
- package/vendor/boss-chat-cli/src/runtime/interaction.js +0 -102
- package/vendor/boss-chat-cli/src/runtime/run-control.js +0 -102
- package/vendor/boss-chat-cli/src/services/chrome-client.js +0 -107
- package/vendor/boss-chat-cli/src/services/llm.js +0 -1292
- package/vendor/boss-chat-cli/src/services/llm.test.js +0 -326
- package/vendor/boss-chat-cli/src/services/profile-store.js +0 -173
- package/vendor/boss-chat-cli/src/services/report-store.js +0 -317
- package/vendor/boss-chat-cli/src/services/resume-capture.js +0 -469
- package/vendor/boss-chat-cli/src/services/resume-network.js +0 -727
- package/vendor/boss-chat-cli/src/services/state-store.js +0 -90
- package/vendor/boss-chat-cli/src/utils/customer-key.js +0 -82
- package/vendor/boss-recommend-screen-cli/boss-recommend-screen-cli.cjs +0 -7072
- package/vendor/boss-recommend-screen-cli/scripts/capture-full-resume-canvas.cjs +0 -817
- package/vendor/boss-recommend-screen-cli/scripts/stitch_resume_chunks.py +0 -141
- package/vendor/boss-recommend-screen-cli/test-recoverable-resume-failures.cjs +0 -2423
- package/vendor/boss-recommend-search-cli/src/cli.js +0 -1698
- 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
|
|
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
|
-
|
|
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
|
-
|
|
13
|
-
- `boss-recommend-screen-cli`: 只负责滚动列表、打开详情、提取完整简历图、多模态判断,并对通过人选统一执行 `favorite` 或 `greet`
|
|
12
|
+
安装 `boss-recommend-mcp` 后可以直接:
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
175
|
+
npx -y @reconcrap/boss-recommend-mcp@latest list-jobs --slow-live --port 9222
|
|
124
176
|
# 源码模式(GitHub clone 后)
|
|
125
|
-
node src/cli.js
|
|
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
|
|
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 --
|
|
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
|
-
|
|
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
|
-
-
|
|
226
|
-
- `boss-chat`
|
|
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
|
|
236
|
-
- `boss-recommend-mcp chat
|
|
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": "
|
|
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:
|
|
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:
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
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
|
-
"
|
|
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
|
|
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
|
-
-
|
|
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
|
-
-
|
|
82
|
-
-
|
|
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`,并按“两阶段确认 -> 页面就绪 -> 岗位确认 -> 最终确认 ->
|
|
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
|
-
- 语义是“推荐页找人 +
|
|
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
|
|
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`(岗位 +
|
|
63
|
-
|
|
64
|
-
##
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
- `
|
|
71
|
-
|
|
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
|
|
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 '{...}']
|
|
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`。
|