@reconcrap/boss-recruit-mcp 1.0.6 → 1.0.8
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 +103 -12
- package/config/screening-config.example.json +5 -3
- package/package.json +3 -2
- package/skills/boss-recruit-pipeline/README.md +13 -1
- package/skills/boss-recruit-pipeline/SKILL.md +39 -20
- package/src/adapters.js +4 -0
- package/src/cli.js +364 -41
- package/src/index.js +1 -0
- package/src/parser.js +90 -6
- package/src/pipeline.js +30 -1
- package/src/test-parser.js +147 -17
- package/vendor/boss-screen-cli/boss-screen-cli.cjs +895 -55
- package/vendor/boss-screen-cli/calibrate-favorite-position-v2.cjs +50 -29
- package/vendor/boss-search-cli/src/boss-searcher.js +157 -7
- package/vendor/boss-search-cli/src/cli.js +69 -15
package/README.md
CHANGED
|
@@ -24,9 +24,55 @@ npx @reconcrap/boss-recruit-mcp install
|
|
|
24
24
|
|
|
25
25
|
- 安装 Codex skill 到 `$CODEX_HOME/skills/boss-recruit-pipeline`
|
|
26
26
|
- 初始化用户配置到 `$CODEX_HOME/boss-recruit-mcp/screening-config.json`
|
|
27
|
+
- 生成通用 MCP 配置模板到 `$CODEX_HOME/boss-recruit-mcp/agent-mcp-configs`
|
|
27
28
|
- 包内自带 `boss-search-cli` 与 `boss-screen-cli` 运行时文件,无需额外目录结构
|
|
28
29
|
- 不包含 `favorite-calibration.json`,首次使用前需要自行校准生成
|
|
29
30
|
|
|
31
|
+
## 跨 Agent 快速接入(Cursor / Trae / Claude Code / OpenClaw)
|
|
32
|
+
|
|
33
|
+
生成 MCP 配置模板:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
boss-recruit-mcp mcp-config --client all
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
默认会输出到:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
$CODEX_HOME/boss-recruit-mcp/agent-mcp-configs
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
包含:
|
|
46
|
+
|
|
47
|
+
- `mcp.cursor.json`
|
|
48
|
+
- `mcp.trae.json`
|
|
49
|
+
- `mcp.claudecode.json`
|
|
50
|
+
- `mcp.openclaw.json`
|
|
51
|
+
- `mcp.generic.json`
|
|
52
|
+
|
|
53
|
+
把对应文件里的 `mcpServers` 合并到你的 AI 客户端 MCP 配置中即可。
|
|
54
|
+
|
|
55
|
+
如果你只需要某一个客户端模板:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
boss-recruit-mcp mcp-config --client cursor
|
|
59
|
+
boss-recruit-mcp mcp-config --client claudecode
|
|
60
|
+
boss-recruit-mcp mcp-config --client trae
|
|
61
|
+
boss-recruit-mcp mcp-config --client openclaw
|
|
62
|
+
boss-recruit-mcp mcp-config --client generic
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
默认模板会使用:
|
|
66
|
+
|
|
67
|
+
- `command: npx`
|
|
68
|
+
- `args: ["-y", "@reconcrap/boss-recruit-mcp@latest", "start"]`
|
|
69
|
+
|
|
70
|
+
如果你希望改成本地全局命令:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
boss-recruit-mcp mcp-config --client generic --command boss-recruit-mcp --args-json "[\"start\"]"
|
|
74
|
+
```
|
|
75
|
+
|
|
30
76
|
## 准备配置
|
|
31
77
|
|
|
32
78
|
1. 初始化后编辑用户配置文件:
|
|
@@ -38,10 +84,22 @@ $CODEX_HOME/boss-recruit-mcp/screening-config.json
|
|
|
38
84
|
2. 填写以下字段:
|
|
39
85
|
|
|
40
86
|
- `baseUrl` / `apiKey` / `model` 必填
|
|
87
|
+
- OpenAI 推荐:
|
|
88
|
+
- `baseUrl`: `https://api.openai.com/v1`
|
|
89
|
+
- `apiKey`: OpenAI API Key
|
|
90
|
+
- `model`: 例如 `gpt-4.1-mini`
|
|
91
|
+
- 也支持通过环境变量注入:
|
|
92
|
+
- `OPENAI_API_KEY`(可替代配置文件中的 `apiKey`)
|
|
93
|
+
- `OPENAI_BASE_URL`(可替代配置文件中的 `baseUrl`)
|
|
94
|
+
- `OPENAI_MODEL`(可替代配置文件中的 `model`)
|
|
95
|
+
- `OPENAI_ORG_ID` / `OPENAI_PROJECT_ID`(可选)
|
|
96
|
+
- 配置文件可选字段:
|
|
97
|
+
- `openaiOrganization`
|
|
98
|
+
- `openaiProject`
|
|
41
99
|
- `debugPort` 可选,默认 `9222`
|
|
42
100
|
- `calibrationFile` 可选;不填时默认使用 `$CODEX_HOME/boss-recruit-mcp/favorite-calibration.json`
|
|
43
101
|
- `outputDir` 可选;不填时默认输出到用户桌面
|
|
44
|
-
-
|
|
102
|
+
- 学校标签支持 `统招本科` / `双一流院校` / `985` / `211` / `qs100` / `qs500`;如果输入 `qs50`、`qs200`、`qs500` 等其他 `QS数字`,会按 `<=100 -> qs100`、`>100 -> qs500` 归一
|
|
45
103
|
|
|
46
104
|
## 运行
|
|
47
105
|
|
|
@@ -56,13 +114,19 @@ boss-recruit-mcp start
|
|
|
56
114
|
如果当前 AI agent 无法添加新的 MCP、MCP 数量受限,或者只支持 shell/命令执行,也可以直接调用同一后端的 CLI fallback:
|
|
57
115
|
|
|
58
116
|
```bash
|
|
59
|
-
boss-recruit-mcp run --instruction "在 Boss 上找做过推荐系统的人,城市杭州,本科,学校 985/211/QS100,目标 10
|
|
117
|
+
boss-recruit-mcp run --instruction "在 Boss 上找做过推荐系统的人,城市杭州,本科,学校 985/211/QS100,目标 10 人,过滤近14天查看过的人选"
|
|
60
118
|
```
|
|
61
119
|
|
|
62
120
|
也支持通过 JSON 传确认信息与覆盖参数:
|
|
63
121
|
|
|
64
122
|
```bash
|
|
65
|
-
boss-recruit-mcp run --instruction "在 Boss 上找做过推荐系统的人" --confirmation-json "{\"keyword_confirmed\":true,\"keyword_value\":\"推荐系统\",\"search_params_confirmed\":true}" --overrides-json "{\"city\":\"杭州\",\"degree\":\"本科\",\"schools\":[\"985\",\"211\",\"qs100\"],\"target_count\":10}"
|
|
123
|
+
boss-recruit-mcp run --instruction "在 Boss 上找做过推荐系统的人" --confirmation-json "{\"keyword_confirmed\":true,\"keyword_value\":\"推荐系统\",\"search_params_confirmed\":true}" --overrides-json "{\"city\":\"杭州\",\"degree\":\"本科\",\"schools\":[\"985\",\"211\",\"qs100\"],\"filter_recent_viewed\":true,\"target_count\":10}"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
PowerShell 下更推荐用文件方式,避免引号转义导致 `INVALID_CLI_INPUT`:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
boss-recruit-mcp run --instruction-file request.txt --confirmation-file confirmation.json --overrides-file overrides.json
|
|
66
130
|
```
|
|
67
131
|
|
|
68
132
|
如果命令行中放长文本不方便,改用文件:
|
|
@@ -78,19 +142,16 @@ boss-recruit-mcp run --instruction-file request.txt --confirmation-file confirma
|
|
|
78
142
|
|
|
79
143
|
先确认你要使用的 Chrome 远程调试端口。推荐 `9222`,但如果你已经有一个正在运行的远程调试 Chrome,也可以继续使用那个端口。确认端口后,再执行下面的命令。
|
|
80
144
|
|
|
81
|
-
|
|
145
|
+
执行校准(会自动尝试打开 Boss 搜索页):
|
|
82
146
|
|
|
83
147
|
```bash
|
|
84
|
-
boss-recruit-mcp
|
|
148
|
+
boss-recruit-mcp calibrate --port <port>
|
|
85
149
|
```
|
|
86
150
|
|
|
87
|
-
|
|
88
|
-
命令还会检查新打开的 Boss 页面是否仍停留在 `search` 页面;如果跳转到了登录页或其他页面,说明需要用户先手动登录 Boss。
|
|
89
|
-
|
|
90
|
-
然后执行校准:
|
|
151
|
+
如果你想自定义监听窗口(默认 60 秒):
|
|
91
152
|
|
|
92
153
|
```bash
|
|
93
|
-
boss-recruit-mcp calibrate --port <port>
|
|
154
|
+
boss-recruit-mcp calibrate --port <port> --timeout-ms 60000
|
|
94
155
|
```
|
|
95
156
|
|
|
96
157
|
如果你的 `screening-config.json` 里配置了自定义 `calibrationFile` 路径,而该路径当前不存在,直接把校准结果输出到那个路径:
|
|
@@ -133,6 +194,7 @@ boss-recruit-mcp doctor --port <port>
|
|
|
133
194
|
"use_default_for_missing": false
|
|
134
195
|
},
|
|
135
196
|
"overrides": {
|
|
197
|
+
"filter_recent_viewed": true,
|
|
136
198
|
"target_count": 500
|
|
137
199
|
}
|
|
138
200
|
}
|
|
@@ -141,17 +203,46 @@ boss-recruit-mcp doctor --port <port>
|
|
|
141
203
|
## 行为说明
|
|
142
204
|
|
|
143
205
|
- 若缺 `city/degree/schools/keyword/target_count`,返回 `NEED_INPUT`
|
|
144
|
-
- 若 keyword
|
|
206
|
+
- 若 keyword 由语义自动抽取、搜索参数仍未被用户明确确认,或用户未说明是否过滤近 14 天查看过的人选,返回 `NEED_CONFIRMATION`
|
|
145
207
|
- 正式执行前应先单独做一轮参数确认,把已识别参数、待确认项、缺失项、默认值风险分开给用户确认
|
|
208
|
+
- 若用户没提“是否过滤近14天查看”,会在 `pending_questions` 里返回该问题,调用方应先补问再继续
|
|
146
209
|
- 用户未补齐缺失参数时,只有在明确同意默认值及其质量风险后,才允许继续
|
|
147
210
|
- `target_count` 表示“目标处理人数”,不是“目标通过人数”;状态一旦是 `COMPLETED`,就表示本轮已完成,不应因通过人数不足而自动重跑
|
|
148
|
-
- 确认后自动执行:搜索 CLI -> 筛选 CLI
|
|
211
|
+
- 确认后自动执行:搜索 CLI -> 点击搜索 -> 勾选“过滤近14天查看”(如启用) -> 筛选 CLI
|
|
149
212
|
- 返回摘要:目标数、已处理、通过数、耗时、输出 CSV
|
|
150
213
|
- 执行前会先做本地依赖预检查,若目录 / 入口 / 配置文件缺失则返回 `PIPELINE_PREFLIGHT_FAILED`
|
|
151
214
|
- 若缺少 `favorite-calibration.json`,会返回 `CALIBRATION_REQUIRED`
|
|
152
215
|
- 若当前运行环境不允许启动子进程,会返回更明确的权限错误码而不是笼统失败
|
|
153
216
|
- 配置文件查找顺序:`BOSS_RECRUIT_SCREEN_CONFIG` > 工作区 `boss-recruit-mcp/config/screening-config.json` > 用户目录 `$CODEX_HOME/boss-recruit-mcp/screening-config.json` > 包内示例配置
|
|
154
217
|
|
|
218
|
+
## 终版测试方案
|
|
219
|
+
|
|
220
|
+
回归脚本位置:`scripts/regression.ps1`
|
|
221
|
+
|
|
222
|
+
1. 快速回归(不依赖 Boss 页面,验证 CLI 输入与状态机基础逻辑):
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
npm run test:regression:win
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
2. 全链路回归(依赖 Chrome 调试端口 + 已登录 Boss):
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
powershell -ExecutionPolicy Bypass -File scripts/regression.ps1 -Mode full -Port 9222
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
3. 负向回归(错误端口,确保不会误返回 `COMPLETED`):
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
powershell -ExecutionPolicy Bypass -File scripts/regression.ps1 -Mode negative
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
判定标准:
|
|
241
|
+
|
|
242
|
+
- 不应出现 `INVALID_CLI_INPUT`
|
|
243
|
+
- 正常场景允许 `COMPLETED` 或可诊断的 `FAILED`
|
|
244
|
+
- 错误端口场景必须是 `FAILED`,且不是参数解析类错误
|
|
245
|
+
|
|
155
246
|
## 发布
|
|
156
247
|
|
|
157
248
|
```bash
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"baseUrl": "https://
|
|
3
|
-
"apiKey": "replace-with-
|
|
4
|
-
"model": "
|
|
2
|
+
"baseUrl": "https://api.openai.com/v1",
|
|
3
|
+
"apiKey": "replace-with-openai-api-key",
|
|
4
|
+
"model": "gpt-4.1-mini",
|
|
5
|
+
"openaiOrganization": "optional-org-id",
|
|
6
|
+
"openaiProject": "optional-project-id"
|
|
5
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reconcrap/boss-recruit-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Unified MCP pipeline for boss-search-cli and boss-screen-cli",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"boss",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"start": "node src/index.js",
|
|
19
19
|
"cli": "node src/cli.js",
|
|
20
20
|
"install:local": "node src/cli.js install",
|
|
21
|
-
"test:parser": "node src/test-parser.js"
|
|
21
|
+
"test:parser": "node src/test-parser.js",
|
|
22
|
+
"test:regression:win": "powershell -ExecutionPolicy Bypass -File scripts/regression.ps1 -Mode quick"
|
|
22
23
|
},
|
|
23
24
|
"files": [
|
|
24
25
|
"bin",
|
|
@@ -12,8 +12,15 @@ npx @reconcrap/boss-recruit-mcp install
|
|
|
12
12
|
|
|
13
13
|
- 把 skill 安装到 `$CODEX_HOME/skills/boss-recruit-pipeline`
|
|
14
14
|
- 在 `$CODEX_HOME/boss-recruit-mcp/screening-config.json` 创建配置模板
|
|
15
|
+
- 在 `$CODEX_HOME/boss-recruit-mcp/agent-mcp-configs` 生成 Cursor/Trae/Claude Code/OpenClaw 的 MCP 模板
|
|
15
16
|
- 默认把筛选结果输出到用户桌面
|
|
16
17
|
|
|
18
|
+
如果你只想导出 MCP 模板,可执行:
|
|
19
|
+
|
|
20
|
+
```powershell
|
|
21
|
+
boss-recruit-mcp mcp-config --client all
|
|
22
|
+
```
|
|
23
|
+
|
|
17
24
|
## 前置要求
|
|
18
25
|
|
|
19
26
|
- Chrome 需使用远程调试端口启动;推荐 `9222`,但也可以使用你已在运行的其他端口
|
|
@@ -26,8 +33,13 @@ npx @reconcrap/boss-recruit-mcp install
|
|
|
26
33
|
- 默认优先走 MCP;如果当前 agent 无法再添加 MCP,也可以改用 `boss-recruit-mcp run` 作为 CLI fallback。
|
|
27
34
|
- 正式开始前,必须先做一轮参数确认,分开展示已识别参数、待确认参数、缺失参数。
|
|
28
35
|
- 参数确认尽量复用统一模板:`已识别参数` / `待确认或待修正` / `缺失参数` / `默认值提醒` / `请用户回复`。
|
|
36
|
+
- 在正式执行前,必须单独让用户确认筛选 `criteria`(尤其学历/学校/论文等硬性条件)无误,不能只确认关键词和搜索参数。
|
|
29
37
|
- 端口未确认时,必须先询问用户是否使用推荐的 `9222`,或提供一个已有的其他远程调试端口,不能直接默认 `9222`。
|
|
30
|
-
-
|
|
38
|
+
- 任何需要打开 Chrome 的动作前,先检查调试端口是否已有可用实例;端口可连时必须复用,不要再新开一个 9222 实例。
|
|
39
|
+
- 若页面未停留在 Boss search(例如跳到登录页或首页),必须提示用户先手动登录 Boss,再继续。
|
|
31
40
|
- 如果识别结果里出现明显脏值或可疑字段,例如“杭州筛选做过”,必须要求用户改成标准值后再继续。
|
|
41
|
+
- 学历/学校硬性条件不能在 criteria 清洗时被剔除;即使已提取到搜索参数,criteria 仍需保留原始约束语义(例如“本科学历必须是985”)。
|
|
32
42
|
- 如果缺少 `favorite-calibration.json`,必须指导用户在当前环境重新校准,不能搜索或复制历史遗留校准文件来顶替。
|
|
43
|
+
- 校准提示使用两阶段:先问“是否准备好开始校准”,不要问“是否已完成校准”;用户确认后应直接启动 `boss-recruit-mcp calibrate --port <port>`。
|
|
44
|
+
- 校准里的“打开详情 -> 收藏 -> 取消收藏 -> 关闭详情”属于动作说明,不要要求用户先手动完成这些步骤后再回复“可以校准”。
|
|
33
45
|
- 若缺失参数仍未补齐,只能在用户明确确认接受默认值和质量风险后继续,不能静默按默认执行。
|
|
@@ -22,16 +22,17 @@
|
|
|
22
22
|
|
|
23
23
|
1. 先检查 MCP 是否已安装 / 可调用;若未安装,优先执行:
|
|
24
24
|
- `npx @reconcrap/boss-recruit-mcp install`
|
|
25
|
+
- 若要给 Cursor / Trae / Claude Code / OpenClaw 快速接入,执行 `boss-recruit-mcp mcp-config --client all`,并把生成文件中的 `mcpServers` 合并到对应客户端配置
|
|
25
26
|
2. 若用户还未确认 Chrome 调试端口,必须先询问:
|
|
26
27
|
- 建议使用 `9222`
|
|
27
28
|
- 但也允许用户明确提供一个已在使用的其他远程调试端口
|
|
28
29
|
3. 在用户确认端口前,不要直接假设 `9222` 并执行任何依赖端口的命令。
|
|
29
|
-
4.
|
|
30
|
+
4. 端口确认后,先检查依赖与端口状态:
|
|
30
31
|
- `boss-recruit-mcp doctor --port <port>`
|
|
31
|
-
5.
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
6.
|
|
32
|
+
5. 任何“准备打开 Chrome”的动作前,必须先判断该端口是否已有可用实例:
|
|
33
|
+
- 若调试端口可连,禁止再新开 Chrome;直接复用现有实例,并确保页面在 `https://www.zhipin.com/web/chat/search`
|
|
34
|
+
- 仅当调试端口不可连时,才执行 `boss-recruit-mcp launch-chrome --port <port>`
|
|
35
|
+
6. 若执行 `launch-chrome` 后页面没有停留在 `https://www.zhipin.com/web/chat/search`:
|
|
35
36
|
- 若仍在 search 页面,可继续;
|
|
36
37
|
- 若跳转到登录页、首页或其他 Boss 页面,视为“需要重新登录”;
|
|
37
38
|
- 必须明确提示用户手动登录 Boss,并等待用户回复“已登录/可以继续”后,才能继续后续动作。
|
|
@@ -47,15 +48,18 @@
|
|
|
47
48
|
- 必须明确告诉用户“当前期望的校准文件路径”;
|
|
48
49
|
- 应指导用户用 `boss-recruit-mcp calibrate --port <port> --output <expected-path>` 直接生成到该路径;
|
|
49
50
|
- 不要静默改写配置,也不要把别处的文件复制过去。
|
|
50
|
-
-
|
|
51
|
-
- 打开 Boss
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
- 点击收藏按钮
|
|
55
|
-
- 再次点击取消该人选的收藏
|
|
51
|
+
- 校准动作说明用于“让用户了解流程”,不要求用户先手动点击页面:
|
|
52
|
+
- 打开 Boss 直聘搜索页面
|
|
53
|
+
- 打开任意一位人选详情页
|
|
54
|
+
- 执行一次收藏,再取消收藏
|
|
56
55
|
- 关闭详情页
|
|
56
|
+
- 校准对话必须是“两阶段”:
|
|
57
|
+
- 第一阶段:先完整说明校准步骤,然后只问“是否准备好开始校准”;
|
|
58
|
+
- 第二阶段:用户确认“准备好了”后,直接启动校准命令,并明确说明“你不需要先手动完成页面点击,我会立即启动校准流程”。
|
|
59
|
+
- 不要把“请确认你已完成校准”当作启动校准的前置问题;启动前应确认“准备开始”,不是“已经完成”。
|
|
60
|
+
- 不要要求用户先完成页面操作再回复“可以校准/已完成校准”;应在用户确认“准备开始”后立即执行校准。
|
|
57
61
|
- 然后执行:
|
|
58
|
-
- `boss-recruit-mcp calibrate --port <port
|
|
62
|
+
- `boss-recruit-mcp calibrate --port <port>`(默认监听 60 秒)
|
|
59
63
|
- 默认校准文件路径:
|
|
60
64
|
- `$CODEX_HOME/boss-recruit-mcp/favorite-calibration.json`
|
|
61
65
|
|
|
@@ -68,6 +72,7 @@
|
|
|
68
72
|
- `keyword_confirmed` (boolean): 是否确认关键词
|
|
69
73
|
- `keyword_value` (string): 用户确认或改写后的关键词
|
|
70
74
|
- `search_params_confirmed` (boolean): 用户是否已明确确认当前参数集
|
|
75
|
+
- `criteria_confirmed` (boolean): 用户是否已明确确认筛选 criteria(尤其硬性约束)
|
|
71
76
|
- `use_default_for_missing` (boolean): 用户是否明确同意对缺失参数使用默认值
|
|
72
77
|
- `overrides` (object, optional)
|
|
73
78
|
- `city` (string)
|
|
@@ -78,6 +83,7 @@
|
|
|
78
83
|
- Tool response 重点字段:
|
|
79
84
|
- `status`
|
|
80
85
|
- `required_confirmations`
|
|
86
|
+
- `pending_questions`
|
|
81
87
|
- `review.extracted_search_params`
|
|
82
88
|
- `review.current_search_params`
|
|
83
89
|
- `review.missing_fields`
|
|
@@ -140,9 +146,13 @@
|
|
|
140
146
|
- 明确给出校准步骤与命令;
|
|
141
147
|
- 明确指出期望生成到哪个路径;
|
|
142
148
|
- 不要在本机搜索并复用其他 `favorite-calibration.json`。
|
|
143
|
-
|
|
149
|
+
- 校准引导必须先问“是否准备好开始校准”;用户确认准备好后,再执行:
|
|
150
|
+
- `boss-recruit-mcp calibrate --port <port>`
|
|
151
|
+
- 不要要求用户先手动完成“收藏/取消收藏”等页面动作,再触发 `calibrate`。
|
|
152
|
+
- 除非调试端口不可连,否则不要额外先执行 `launch-chrome`。
|
|
153
|
+
4. 若校准流程中发现页面没有停留在 search,或跳到了登录页、首页或其他页面:
|
|
144
154
|
- 明确告诉用户“当前需要手动登录 Boss”;
|
|
145
|
-
-
|
|
155
|
+
- 明确要求用户在当前可见的 Chrome 窗口中完成登录;
|
|
146
156
|
- 等用户回复“已登录,可以继续”后,再继续下一步;
|
|
147
157
|
- 不要在用户未确认登录完成前直接执行搜索、校准或流水线。
|
|
148
158
|
5. 只有当以上条件满足时,才首次进入流水线解析:
|
|
@@ -157,7 +167,8 @@
|
|
|
157
167
|
6. 缺失项常见含义:
|
|
158
168
|
- `city`: 城市,如“杭州”
|
|
159
169
|
- `degree`: 学历,如“本科”“硕士及以上”
|
|
160
|
-
- `schools`:
|
|
170
|
+
- `schools`: 学校标签,如“统招本科、双一流院校、985、211、qs100、qs500”
|
|
171
|
+
- `filter_recent_viewed`: 是否过滤近 14 天内查看过的人选
|
|
161
172
|
- `target_count`: 目标处理人数,如“10”;表示本轮需要处理多少位候选人,不表示必须有多少人通过
|
|
162
173
|
- `keyword`: 搜索关键词,如“AI infra”“推荐系统”
|
|
163
174
|
7. 若返回 `NEED_INPUT`:
|
|
@@ -168,13 +179,17 @@
|
|
|
168
179
|
8. 若返回 `NEED_CONFIRMATION`:
|
|
169
180
|
- 询问用户是否确认 `proposed_keyword`;
|
|
170
181
|
- 同时也要让用户确认其他已提取参数里是否有误;
|
|
182
|
+
- 必须单独确认筛选 `criteria` 是否准确(尤其学历/学校/论文等硬性条件不能丢失);
|
|
183
|
+
- 若 `required_confirmations` 或 `pending_questions` 里包含 `filter_recent_viewed`,必须明确补问:是否需要过滤近 14 天查看过的人选;
|
|
171
184
|
- 若确认,带 `confirmation.keyword_confirmed=true` 和 `keyword_value` 再次调用;
|
|
172
|
-
- 若用户修改关键词,传用户给的新词作为 `keyword_value`
|
|
185
|
+
- 若用户修改关键词,传用户给的新词作为 `keyword_value` 再次调用;
|
|
186
|
+
- 对“是否过滤近 14 天查看”这个问题,需把用户选择写入 `overrides.filter_recent_viewed=true/false` 再次调用。
|
|
173
187
|
9. 当仍有缺失参数但用户想直接开始时:
|
|
174
188
|
- 先明确告知默认值及风险;
|
|
175
189
|
- 必须得到用户明确确认“可以按默认值继续”后,才能继续执行。
|
|
176
190
|
10. 只有在以下条件都满足后,才允许正式开始:
|
|
177
191
|
- 用户已经确认已提取参数无误;
|
|
192
|
+
- 用户已经明确确认 `criteria` 无误;
|
|
178
193
|
- 缺失参数已补齐,或用户已明确接受默认值;
|
|
179
194
|
- `NEED_CONFIRMATION` 分支中的关键词也已确认。
|
|
180
195
|
11. 若返回 `COMPLETED`:
|
|
@@ -195,8 +210,11 @@
|
|
|
195
210
|
- 优先鼓励用户一次性给全这些字段:城市、学历、学校标签、目标人数、核心方向关键词。
|
|
196
211
|
- 当用户提到“做过 AI infra / 推荐系统 / 搜索 / 广告 / 多模态”等经历,但没有显式写“关键词”,默认允许流水线先自动抽取,再走确认分支。
|
|
197
212
|
- 当用户附带筛选要求(如“必须发表过 CCF-A 区论文”“有开源项目”“带过团队”),这些要求应该保留在 `criteria` 中,不应被误当作搜索过滤条件。
|
|
213
|
+
- 当用户明确给出“学历/学校”硬性条件(如“本科学历必须是985”),即使这些信息已被提取到搜索参数,`criteria` 里也必须保留原始约束,不可剔除。
|
|
198
214
|
- 若参数提取结果出现明显噪声、截断、短语串接、非标准枚举值,优先视为“识别不可靠”,要求用户确认,不要为了推进流程直接采用。
|
|
199
|
-
- 若用户输入 `qs50`、`qs200`、`qs500` 等任意 `QS数字` 学校标签,统一按
|
|
215
|
+
- 若用户输入 `qs50`、`qs200`、`qs500` 等任意 `QS数字` 学校标签,统一按 `<=100 -> qs100`、`>100 -> qs500` 处理;不要把原始 `QS200` 再传到底层搜索命令。
|
|
216
|
+
- 若用户没有明确提到“是否过滤近 14 天查看过的人选”,必须在参数确认阶段主动补问,不能静默默认开启或关闭。
|
|
217
|
+
- 若用户说“过滤近 14 天查看”“排除最近看过的”,映射为 `filter_recent_viewed=true`;若用户说“不过滤近 14 天查看”“保留最近看过的”,映射为 `filter_recent_viewed=false`。
|
|
200
218
|
- 不要把“用户没有继续回复”解释为“默认同意”;默认值只能在用户明确口头确认后使用。
|
|
201
219
|
- 参数确认对话里,优先采用这种结构:
|
|
202
220
|
- 已识别参数
|
|
@@ -217,7 +235,8 @@
|
|
|
217
235
|
- `已识别参数` 只放当前看起来可信的值,例如:
|
|
218
236
|
- 城市:杭州
|
|
219
237
|
- 学历:本科
|
|
220
|
-
-
|
|
238
|
+
- 学校标签:统招本科 / 双一流院校 / 985 / 211 / QS100 / QS500(按实际需求选择)
|
|
239
|
+
- 过滤近14天查看:需要 / 不需要
|
|
221
240
|
- 关键词:AI infra
|
|
222
241
|
- 目标人数:10
|
|
223
242
|
- `待确认 / 待修正` 要明确写出“识别值 -> 疑点 -> 需要用户给出的标准值”,例如:
|
|
@@ -231,7 +250,7 @@
|
|
|
231
250
|
- 若继续会使用哪些默认值
|
|
232
251
|
- 会导致搜索范围变宽、相关性下降或结果偏差增大
|
|
233
252
|
- `请用户回复` 要求用户一次性回复完整,优先使用这种收口方式:
|
|
234
|
-
- 请直接按“城市 / 学历 / 学校标签 / 关键词 / 目标人数”补充或修正
|
|
253
|
+
- 请直接按“城市 / 学历 / 学校标签 / 是否过滤近14天查看 / 关键词 / 目标人数”补充或修正
|
|
235
254
|
- 如果你接受默认值继续,请明确回复“确认按默认值继续”
|
|
236
255
|
- 若用户补充后仍有缺失,再发第二轮确认时继续复用同一结构,只保留:
|
|
237
256
|
- 已更新的参数
|
|
@@ -266,7 +285,7 @@
|
|
|
266
285
|
|
|
267
286
|
用户:
|
|
268
287
|
|
|
269
|
-
- “在 Boss 上找做过 AI infra 的候选人,必须发过 CCF-A 区论文,城市杭州,本科,学校 985/211/QS100
|
|
288
|
+
- “在 Boss 上找做过 AI infra 的候选人,必须发过 CCF-A 区论文,城市杭州,本科,学校 统招本科/双一流院校/985/211/QS100/QS500 中按需选择,目标 10 人”
|
|
270
289
|
|
|
271
290
|
期望行为:
|
|
272
291
|
|
package/src/adapters.js
CHANGED
|
@@ -299,6 +299,10 @@ export async function runSearchCli({ workspaceRoot, searchParams }) {
|
|
|
299
299
|
String(debugPort)
|
|
300
300
|
];
|
|
301
301
|
|
|
302
|
+
if (typeof searchParams.filter_recent_viewed === "boolean") {
|
|
303
|
+
args.push("--filter-recent-viewed", String(searchParams.filter_recent_viewed));
|
|
304
|
+
}
|
|
305
|
+
|
|
302
306
|
const result = await runProcess({
|
|
303
307
|
command: "node",
|
|
304
308
|
args,
|