@reconcrap/boss-recommend-mcp 2.1.5 → 2.1.7
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 +7 -5
- package/package.json +1 -1
- package/skills/boss-recommend-pipeline/SKILL.md +9 -8
- package/src/index.js +11 -5
- package/src/recommend-mcp.js +21 -1
package/README.md
CHANGED
|
@@ -82,9 +82,10 @@ curl -fsSL https://raw.githubusercontent.com/reconcrap-cpu/boss-recommend-mcp/ma
|
|
|
82
82
|
MCP 工具:
|
|
83
83
|
|
|
84
84
|
- `list_recommend_jobs`(只读读取推荐页岗位下拉框,返回可直接用于 cron/一次性任务的 `job_names`)
|
|
85
|
-
- `prepare_recommend_pipeline_run`(只校验完整 payload
|
|
85
|
+
- `prepare_recommend_pipeline_run`(只校验完整 payload;不启动筛选。若现在运行,返回 `READY + cron_ready=true` 后继续调用 `run_recommend` / `start_recommend_pipeline_run`;只有定时任务才继续 schedule)
|
|
86
86
|
- `schedule_recommend_pipeline_run`(创建 package-owned 定时任务;保存已 READY 的完整 payload,启动 detached scheduler,到点后直接调用 `start_recommend_pipeline_run`)
|
|
87
87
|
- `get_recommend_scheduled_run`(查询 package-owned 定时任务;到点后会显示内层 `run_id` 和 run 快照)
|
|
88
|
+
- `run_recommend`(`start_recommend_pipeline_run` 的短别名;适合 Trae/Trae-CN 在 prepare READY 后正式启动)
|
|
88
89
|
- `start_recommend_pipeline_run`(异步启动;同样先经过前置门禁,通过后返回 run_id)
|
|
89
90
|
- `get_recommend_pipeline_run`(轮询 run_id 状态)
|
|
90
91
|
- `cancel_recommend_pipeline_run`(取消运行中任务)
|
|
@@ -264,7 +265,7 @@ BOSS_RECOMMEND_MCP_CONFIG_TARGETS # JSON 数组或系统 path 分隔路径列
|
|
|
264
265
|
BOSS_RECOMMEND_EXTERNAL_SKILL_DIRS # JSON 数组或系统 path 分隔路径列表,指定额外 skills 根目录
|
|
265
266
|
```
|
|
266
267
|
|
|
267
|
-
推荐运行入口是 MCP 工具 `start_recommend_pipeline_run
|
|
268
|
+
推荐运行入口是 MCP 工具 `run_recommend` / `start_recommend_pipeline_run`。在 Trae/Trae-CN 这类普通 MCP 宿主中,`prepare_recommend_pipeline_run` 返回 `READY + cron_ready=true` 后,若用户要现在运行,应继续调用 `run_recommend` 或 `start_recommend_pipeline_run`,不要改用 shell/CLI。只有宿主是 QClaw 这类 shell-only agent、没有把 MCP tools 暴露给模型时,才使用 CDP-only CLI fallback:
|
|
268
269
|
|
|
269
270
|
```bash
|
|
270
271
|
npx -y @reconcrap/boss-recommend-mcp@latest run --detached --instruction-file boss-recommend-instruction.txt --overrides-file boss-recommend-overrides.json --confirmation-file boss-recommend-confirmation.json --slow-live --port 9222
|
|
@@ -464,7 +465,7 @@ Trae-CN / 长对话防循环建议:
|
|
|
464
465
|
|
|
465
466
|
当宿主 agent 对“长时间无回包”敏感(容易误判失败)时,建议改用异步工具:
|
|
466
467
|
|
|
467
|
-
1. 调用 `start_recommend_pipeline_run`。
|
|
468
|
+
1. 调用 `run_recommend`(短别名)或 `start_recommend_pipeline_run`。
|
|
468
469
|
2. 若返回 `NEED_INPUT/NEED_CONFIRMATION/FAILED`,按同步流程先补齐前置条件(登录、页面就绪、岗位确认、最终确认)。
|
|
469
470
|
3. 仅当门禁通过时,接口才会返回 `ACCEPTED + run_id`;默认不自动轮询,建议按需调用 `get_recommend_pipeline_run`(长任务至少每 30 分钟一次,除非用户明确要求更频繁)。
|
|
470
471
|
4. 若需临时中断,调用 `pause_recommend_pipeline_run`;接口会先返回 `PAUSE_REQUESTED`,随后在安全边界进入 `paused`。
|
|
@@ -474,8 +475,9 @@ Trae-CN / 长对话防循环建议:
|
|
|
474
475
|
|
|
475
476
|
说明:
|
|
476
477
|
|
|
477
|
-
- `start_recommend_pipeline_run`
|
|
478
|
-
- `prepare_recommend_pipeline_run` / `boss-recommend-mcp prepare-run`
|
|
478
|
+
- `run_recommend` 与 `start_recommend_pipeline_run` 是同一个异步 MCP 启动入口,但不会跳过同步确认流程。
|
|
479
|
+
- `prepare_recommend_pipeline_run` / `boss-recommend-mcp prepare-run` 只做参数门禁;它不启动筛选。普通 MCP 宿主现在运行时,prepare READY 后继续调用 `run_recommend` / `start_recommend_pipeline_run`,不要改用 CLI fallback。
|
|
480
|
+
- `prepare_recommend_pipeline_run` 的 READY 响应会带 `prepared_only=true`、`run_started=false`、`recommended_next_tool=start_recommend_pipeline_run`、`alternate_next_tool=run_recommend` 和 `next_action.do_not_call_prepare_again=true`;agent 应直接照这个字段继续下一步。
|
|
479
481
|
- `schedule_recommend_pipeline_run` / `boss-recommend-mcp schedule-run` 是推荐页定时启动的唯一推荐路径;它创建真实 package-owned detached scheduler,并返回 `schedule_id`。
|
|
480
482
|
- 定时心跳默认 120 秒一次;`updated_at` 仍会在阶段或进度变化时刷新。
|
|
481
483
|
- 每个 run 会持久化到 `~/.boss-recommend-mcp/runs/<run_id>.json`(可通过 `BOSS_RECOMMEND_HOME` 覆盖)。
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@ 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`;若是稍后/cron 启动,必须走 `schedule_recommend_pipeline_run`。先补齐缺失值并读取岗位列表,然后展示一次包含岗位、筛选项、criteria、目标人数、后置动作、可选最大招呼数、休息强度和定时信息的总确认;用户确认后设置 `final_confirmed=true` 即可启动或创建定时任务。2.0 CDP-only 路径不再支持 legacy recommend -> chat 自动衔接;若用户要聊天页筛选或求简历,必须在推荐页任务完成后显式改用 `boss-chat` 工具。
|
|
10
|
+
当用户要在 Boss 推荐页筛人时,必须走 MCP 工具 `run_recommend`(短别名)或 `start_recommend_pipeline_run`;若是稍后/cron 启动,必须走 `schedule_recommend_pipeline_run`。先补齐缺失值并读取岗位列表,然后展示一次包含岗位、筛选项、criteria、目标人数、后置动作、可选最大招呼数、休息强度和定时信息的总确认;用户确认后设置 `final_confirmed=true` 即可启动或创建定时任务。2.0 CDP-only 路径不再支持 legacy recommend -> chat 自动衔接;若用户要聊天页筛选或求简历,必须在推荐页任务完成后显式改用 `boss-chat` 工具。
|
|
11
11
|
|
|
12
12
|
## Hard Rules (Must Follow)
|
|
13
13
|
|
|
@@ -93,9 +93,10 @@ description: "Use when users want Boss recommend-page filtering/screening via bo
|
|
|
93
93
|
- 用途:当用户需要为 cron / 一次性自动任务提前填写完整参数时,先用它读取推荐页岗位下拉框的全部可用岗位名;默认会复用/自动打开本机 9222 Chrome 并导航到推荐页。
|
|
94
94
|
- 输出:优先把 `job_names` 里的值作为后续 `overrides.job` / `confirmation.job_value`。
|
|
95
95
|
- 限制:只读岗位列表,不启动筛选任务;若返回 `BOSS_LOGIN_REQUIRED`,必须让用户在自动打开的 Chrome 完成登录后重试,本次 cron 不得创建。
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
96
|
+
- 准备/门禁工具:`prepare_recommend_pipeline_run`
|
|
97
|
+
- 用途:只校验参数是否完整,不启动筛选任务。
|
|
98
|
+
- 要求:若用户要“现在启动”,返回 `status=READY` 且 `cron_ready=true` 后,下一步必须调用 MCP 工具 `run_recommend` 或 `start_recommend_pipeline_run`,禁止改用 CLI fallback。只有用户要“稍后/cron/定时启动”时,才继续创建定时任务。
|
|
99
|
+
- READY 响应会带 `prepared_only=true`、`run_started=false`、`recommended_next_tool=start_recommend_pipeline_run`、`alternate_next_tool=run_recommend`、`next_action.do_not_call_prepare_again=true`;必须照这些字段继续,不得再次调用 prepare。
|
|
99
100
|
- 若返回 `NEED_INPUT` / `NEED_CONFIRMATION` / `FAILED`:继续补齐 `pending_questions` 或修复登录/页面/config;不得先创建 cron。
|
|
100
101
|
- Cron 创建工具:`schedule_recommend_pipeline_run`
|
|
101
102
|
- 用途:保存已经 READY 的完整 payload,并启动 package-owned detached scheduler;到点后由包内 worker 直接调用 `start_recommend_pipeline_run`。
|
|
@@ -103,7 +104,7 @@ description: "Use when users want Boss recommend-page filtering/screening via bo
|
|
|
103
104
|
- 成功标准:必须返回 `status=SCHEDULED`、`schedule_created=true`、`schedule_id`、`run_at`。只有这个返回后,才可以告诉用户定时任务已创建。
|
|
104
105
|
- Cron 查询工具:`get_recommend_scheduled_run`
|
|
105
106
|
- 用途:用户问“任务是否启动/进度”时,先查 `schedule_id`。若到点后已启动,会返回内层 `run_id` 和 run 快照。
|
|
106
|
-
- 主工具:`start_recommend_pipeline_run`
|
|
107
|
+
- 主工具:`run_recommend` / `start_recommend_pipeline_run`
|
|
107
108
|
- 必填:`instruction`
|
|
108
109
|
- 关键输入:
|
|
109
110
|
- `confirmation`:新流程只需要 `{ "final_confirmed": true }`;旧版 `page_confirmed/page_value/.../job_confirmed/job_value` 仍兼容但不要主动制造逐项确认。
|
|
@@ -189,7 +190,7 @@ npx -y @reconcrap/boss-recommend-mcp@latest schedule-status --schedule-id <sched
|
|
|
189
190
|
|
|
190
191
|
## QClaw / Shell-Only Fallback
|
|
191
192
|
|
|
192
|
-
当 QClaw/OpenClaw 变体只暴露 shell、没有原生 MCP tool list 时,禁止停在“请使用 `start_recommend_pipeline_run` 工具”。必须用 shell 继续启动。
|
|
193
|
+
当 QClaw/OpenClaw 变体只暴露 shell、没有原生 MCP tool list 时,禁止停在“请使用 `run_recommend` / `start_recommend_pipeline_run` 工具”。必须用 shell 继续启动。
|
|
193
194
|
|
|
194
195
|
推荐做法:
|
|
195
196
|
|
|
@@ -207,11 +208,11 @@ npx -y @reconcrap/boss-recommend-mcp@latest run --detached --instruction-file .\
|
|
|
207
208
|
兼容路径:
|
|
208
209
|
|
|
209
210
|
- 若 `--detached` 不可用,或返回 `RECOMMEND_CLI_RUN_UNSUPPORTED_CDP_ONLY`,说明 npm/QClaw 仍在使用旧包;先运行 `npx -y @reconcrap/boss-recommend-mcp@latest install --agent qclaw` 并重启 QClaw。
|
|
210
|
-
- 在包更新未生效时,可以使用已验证过的直接 MCP stdio JSON-RPC 方式调用 `start_recommend_pipeline_run`;该方式等价于原生 MCP tool 调用,不能改用 recruit/search 路径。
|
|
211
|
+
- 在包更新未生效时,可以使用已验证过的直接 MCP stdio JSON-RPC 方式调用 `run_recommend` / `start_recommend_pipeline_run`;该方式等价于原生 MCP tool 调用,不能改用 recruit/search 路径。
|
|
211
212
|
|
|
212
213
|
普通 MCP 可用时:
|
|
213
214
|
|
|
214
|
-
`start_recommend_pipeline_run`
|
|
215
|
+
`run_recommend` / `start_recommend_pipeline_run` 仍是首选。`prepare_recommend_pipeline_run` 返回 READY 后,若用户要现在启动,必须继续调用这两个 MCP 工具之一;不要声称“prepare 覆盖了 MCP run 调用”,也不要切到 CLI detached fallback。
|
|
215
216
|
|
|
216
217
|
禁止错误回退:
|
|
217
218
|
|
package/src/index.js
CHANGED
|
@@ -98,6 +98,7 @@ const { version: SERVER_VERSION } = require("../package.json");
|
|
|
98
98
|
const TOOL_PREPARE_RUN = "prepare_recommend_pipeline_run";
|
|
99
99
|
const TOOL_SCHEDULE_RUN = "schedule_recommend_pipeline_run";
|
|
100
100
|
const TOOL_GET_SCHEDULED_RUN = "get_recommend_scheduled_run";
|
|
101
|
+
const TOOL_RUN_RECOMMEND = "run_recommend";
|
|
101
102
|
const TOOL_START_RUN = "start_recommend_pipeline_run";
|
|
102
103
|
const TOOL_GET_RUN = "get_recommend_pipeline_run";
|
|
103
104
|
const TOOL_CANCEL_RUN = "cancel_recommend_pipeline_run";
|
|
@@ -1134,7 +1135,7 @@ function createToolsSchema() {
|
|
|
1134
1135
|
},
|
|
1135
1136
|
{
|
|
1136
1137
|
name: TOOL_PREPARE_RUN,
|
|
1137
|
-
description: "只校验 Boss
|
|
1138
|
+
description: "只校验 Boss 推荐页流水线参数是否完整;不会启动筛选任务。若用户要现在运行,返回 READY/cron_ready=true 后必须继续调用 MCP 工具 run_recommend 或 start_recommend_pipeline_run;只有定时/稍后运行才调用 schedule_recommend_pipeline_run。不要因为 prepare READY 而改用 shell/CLI fallback。",
|
|
1138
1139
|
inputSchema: createRunInputSchema()
|
|
1139
1140
|
},
|
|
1140
1141
|
{
|
|
@@ -1154,11 +1155,16 @@ function createToolsSchema() {
|
|
|
1154
1155
|
additionalProperties: false
|
|
1155
1156
|
}
|
|
1156
1157
|
},
|
|
1158
|
+
{
|
|
1159
|
+
name: TOOL_RUN_RECOMMEND,
|
|
1160
|
+
description: "立即通过 MCP 启动 Boss 推荐页筛选。它是 start_recommend_pipeline_run 的短别名,适合 Trae/Trae-CN 等代理在 prepare_recommend_pipeline_run 返回 READY 后继续正式运行;MCP 内部会按需使用包内 detached worker,普通 MCP 可用时不要改用 CLI fallback。",
|
|
1161
|
+
inputSchema: createRunInputSchema()
|
|
1162
|
+
},
|
|
1157
1163
|
{
|
|
1158
1164
|
name: TOOL_START_RUN,
|
|
1159
|
-
description: "异步启动 Boss
|
|
1165
|
+
description: "立即通过 MCP 异步启动 Boss 推荐页流水线(含同步门禁预检);prepare_recommend_pipeline_run 返回 READY 后,如果用户要现在运行就调用本工具或 run_recommend。MCP 内部会按需使用包内 detached worker,普通 MCP 可用时不要改用 CLI fallback。",
|
|
1160
1166
|
inputSchema: createRunInputSchema()
|
|
1161
|
-
},
|
|
1167
|
+
},
|
|
1162
1168
|
{
|
|
1163
1169
|
name: TOOL_GET_RUN,
|
|
1164
1170
|
description: "按 run_id 查询异步/同步流水线运行状态快照。",
|
|
@@ -2625,7 +2631,7 @@ async function handleRequest(message, workspaceRoot) {
|
|
|
2625
2631
|
const toolName = params?.name;
|
|
2626
2632
|
const args = params?.arguments || {};
|
|
2627
2633
|
|
|
2628
|
-
if (
|
|
2634
|
+
if ([TOOL_RUN_RECOMMEND, TOOL_START_RUN].includes(toolName)) {
|
|
2629
2635
|
const inputError = validateRunArgs(args);
|
|
2630
2636
|
if (inputError) {
|
|
2631
2637
|
return createJsonRpcError(id, -32602, inputError);
|
|
@@ -2689,7 +2695,7 @@ async function handleRequest(message, workspaceRoot) {
|
|
|
2689
2695
|
payload = await scheduleRecommendPipelineRunTool({ workspaceRoot, args });
|
|
2690
2696
|
} else if (toolName === TOOL_GET_SCHEDULED_RUN) {
|
|
2691
2697
|
payload = getRecommendScheduledRunTool({ args });
|
|
2692
|
-
} else if (
|
|
2698
|
+
} else if ([TOOL_RUN_RECOMMEND, TOOL_START_RUN].includes(toolName)) {
|
|
2693
2699
|
payload = await handleStartRunTool({ workspaceRoot, args });
|
|
2694
2700
|
} else if (toolName === TOOL_GET_RUN) {
|
|
2695
2701
|
payload = handleGetRunTool(args);
|
package/src/recommend-mcp.js
CHANGED
|
@@ -1563,13 +1563,33 @@ export function prepareRecommendPipelineRunTool({ workspaceRoot = "", args = {}
|
|
|
1563
1563
|
};
|
|
1564
1564
|
}
|
|
1565
1565
|
const { parsed, normalized } = prepared;
|
|
1566
|
+
const nextAction = {
|
|
1567
|
+
immediate_run: {
|
|
1568
|
+
recommended_next_tool: "start_recommend_pipeline_run",
|
|
1569
|
+
alternate_next_tool: "run_recommend",
|
|
1570
|
+
same_arguments: true
|
|
1571
|
+
},
|
|
1572
|
+
scheduled_run: {
|
|
1573
|
+
recommended_next_tool: "schedule_recommend_pipeline_run",
|
|
1574
|
+
same_arguments: true,
|
|
1575
|
+
requires_schedule_field: true
|
|
1576
|
+
},
|
|
1577
|
+
do_not_call_prepare_again: true,
|
|
1578
|
+
do_not_use_cli_fallback_when_mcp_tools_available: true
|
|
1579
|
+
};
|
|
1566
1580
|
return {
|
|
1567
1581
|
status: "READY",
|
|
1568
1582
|
cron_ready: true,
|
|
1583
|
+
prepared_only: true,
|
|
1584
|
+
run_started: false,
|
|
1585
|
+
recommended_next_tool: nextAction.immediate_run.recommended_next_tool,
|
|
1586
|
+
alternate_next_tool: nextAction.immediate_run.alternate_next_tool,
|
|
1587
|
+
next_action: nextAction,
|
|
1588
|
+
message: "READY only means the payload passed validation; prepare_recommend_pipeline_run did not start a run. To start now, call start_recommend_pipeline_run or run_recommend with the same arguments. Do not call prepare_recommend_pipeline_run again, and do not use CLI fallback when MCP tools are available.",
|
|
1569
1589
|
review: parsed.review,
|
|
1570
1590
|
post_action: {
|
|
1571
1591
|
requested: normalized.postAction,
|
|
1572
|
-
execute_post_action: args.dry_run_post_action === true ? false : args.execute_post_action !== false,
|
|
1592
|
+
execute_post_action: args.dry_run_post_action === true ? false : args.execute_post_action !== false,
|
|
1573
1593
|
max_greet_count: normalized.maxGreetCount
|
|
1574
1594
|
},
|
|
1575
1595
|
target_count_semantics: TARGET_COUNT_SEMANTICS
|