--- name: recruit-daily description: > 每日招聘流水线:把"查 boss+猎聘未读 → 双通道主动寻源 → 硬规则初筛 → 打招呼 → 补台账 → 出日报" 串成一条流水线。当用户说"处理今天的招聘"、"有没有未处理人选"、"帮我找找 X 岗的人"、 "给合适的人打招呼"、"出今天的招聘日报",或在招聘工作区做任何寻源/初筛/建档动作时使用。 --- # recruit-daily —— 每日招聘流水线 每日主力动作:把 Boss 直聘 + 猎聘两个渠道的「查未读 → 主动寻源 → 初筛 → 打招呼 → 建档 → 出日报」串成一条流水线。 网页开工(默认):确认用户招聘工作区后,按 [`../recruit-board/references/hosts.md`](../recruit-board/references/hosts.md) 统一接入;脚本可用时为 `daily` 先 start、保存 run id 并进入真实步骤,在耗时寻源前确认服务并打开或复用网页,同时交付本轮链接。步骤、降级和记录命令遵循 [`共享进度协议`](../recruit-board/references/progress.md),按下方完成判据结束各步,跳步写理由,整轮无法继续而等待授权时记 `wait`。 在 unread / screen / greet 等实际步骤中每处理完一人就及时写 `result`,初筛未通过、失败或跳过也写理由,未核实发送不记成功。按 [`跨轮事项与重点`](../recruit-board/references/decisions.md) 开工先读未解决事项和待执行动作;主动任务标 `manual`,定时巡检标 `scheduled`。需要用户拍板时登记独立事项并把返回的 `decisionId` 关联收据;只暂停依赖该决定的动作,其余已授权工作继续。有价值的核实进展立即记 `highlight`;新事项和重点按共享契约写已核实的 `context`,人选使用 `scope:candidate` 与 `candidateId=JSON.stringify([姓名,原岗位])`,岗位/工作区问题分别标 scope,不凭自由文本猜关联。重点的 `details` 只记适用的核实细节,最多 8 项短文本;旧格式仍可读。收尾在结束 run 前写 `summary`,没有变化也明确记录,不能把未记录当成无变化。 普通巡检的执行范围以调度任务原指令为准:只读巡检不会因发现待执行动作获得外发权限。本轮持续打招呼授权不跨轮继承;续办前核对具体授权是否仍有效、动作是否已经完成。用户拍板后更新独立事项,并分别记录标准/台账同步和实际动作结果;不需要重开已经结束的 run。 **这是编排文档**:CLI 命令细节见 [`references/channels.md`](references/channels.md), 台账与日报格式见 [`references/ledger-and-report.md`](references/ledger-and-report.md), 日报卡片推送见 [`references/daily-card.md`](references/daily-card.md)。 本文档只管「顺序、判断、跨渠道协同、安全」。 ## 铁律:先读事实源,别凭记忆 开工**先读**(都在工作区根下): - `CONTEXT.md` —— 术语、**初筛硬规则**、**在招岗位与优先级**(唯一事实源,随时可能更新)。 - `AGENTS.md` —— 分工与「不可逆动作等确认」红线。 - `01-jd/_internal/.md` —— 各岗命脉技能 / 排除信号 / **关键词迭代表**(寻源前必读,越搜越准)。 **本文档不写任何硬规则数字**——年龄线、学历线、地点要求全部以 CONTEXT 为准,避免两处打架。 如果 CONTEXT 硬规则区还是空的(没跑过岗位梳理),停下来先走 `skills/recruit-grill/SKILL.md`。 ## 主流程(按需跳步) 1. **查未处理**: - `boss list --unread`(角标 > 0 才有) - `liepin chatlist --json`,过滤 `unread_count` 非 "0"。 - **有未读**:逐个按 CONTEXT 硬规则判 → 该回复的回复、该要简历的要、 该排除的**先记台账等用户确认**(绝不自动点"不合适")。 - **没未读**:转主动寻源。 2. **定寻源岗位与优先级**:读 CONTEXT「在招岗位与优先级」,按优先级分配今天的额度。 3. **双通道 × 双入口寻源**(每个目标岗都跑),命令与坑见 channels.md: - **boss**:人才库 `boss search <词> --job <岗>` + 推荐 `boss recommend <岗>`。 (`boss positions` 当前读不出职位,别拿它拿岗位槽位——岗位名直接用 CONTEXT 里的。) - **猎聘**:`liepin joblist --json` 拿 ejobId → `liepin search "<词>" --city <城市> --json` + `liepin recommend --json`。 - 搜索词用 `_internal/.md` 关键词迭代表里最新一轮的有效词。 - **完成判据**:每个目标岗,boss 与猎聘各自的 search + recommend 两入口都跑过——漏一个渠道或入口 = 没做完。 CONTEXT 里若已沉淀"某岗某渠道无效"的结论,可按结论跳过并在日报注明。 4. **硬规则初筛**:严格套 CONTEXT「初筛硬规则」+ 各岗 `_internal` 的**命脉技能**与**排除信号**。 判定顺序:硬门槛(年龄/学历/地点)→ 命脉对口 → 排除信号 → 评级(⭐~⭐⭐⭐,命脉强 = ⭐⭐⭐)。 5. **打招呼**(对外不可逆——先读下方安全规则)。合适的按渠道打。 - **完成判据**:每个过筛人选要么已打招呼、要么记了跳过原因(硬规则/额度/已联系过),逐一回报,无静默遗漏。 6. **补台账** `02-sourcing/dedup-ledger.csv`(去重键 = 姓名+应聘岗位)。格式见 ledger-and-report.md。台账是**唯一事实源**。 - **完成判据**:本轮接触过的每个候选人在台账里有且仅有一行;无重复序号;按岗位计数与本轮处理人数对得上。 7. **出日报**: - 本机有 `lark-cli` 且已配置 → 飞书云文档; - 没有 → 写本地 `runtime/reports/YYYY-MM-DD.md`。 - 两种载体结构相同,见 ledger-and-report.md。内容**从台账同步**,不另立事实源。 - **完成判据**:日报含今日概况数字、按岗人选表、待用户确认清单三块,且文档链接/文件路径已回给用户。 8. **推日报卡片(可选补充)**:用户要在 IM 收到提醒时,往飞书推一张互动卡片,正文只放 「四个数字 + 重点人选 + 待你拍板清单」,长尾折叠,按钮跳第 7 步的文档。骨架、字段坑与发送命令见 [`references/daily-card.md`](references/daily-card.md)。没 IM 通道 → 跳过,别伪造推送。 - **完成判据**:卡片过 schema 校验**且**过美观度自查(校验通过≠可发),五层结构齐, 数字与台账一致,`message_id` 与收件人已回给用户。 9. **回填关键词迭代表**:从本轮「初筛通过/强匹配」的真实简历反向提取搜索词, 写回 `01-jd/_internal/.md` 的迭代表(有效词/无效词/积极信号/拒绝模式)。下轮先读它。 - **完成判据**:今天每个出过「初筛通过」人选的岗位,迭代表都新增了一行。 ## 打招呼安全规则(对外不可逆,最重要) - **默认逐个/批量打招呼前必须用户确认**(不群发)。用户在本轮**明确授权**"合适的直接打招呼" 即视为本轮的持续授权,可直接打,但**逐一回报**打了谁;跨轮不自动延续,明天要重新授权。 - **boss 搜索池打招呼没有自动模式**(`--greet auto` 不存在):只能 `boss search` 之后 `boss greet --index <序号>` 一个一个点,**消耗开聊权益或畅聊卡且不可撤回**(两者并存,VIP 每日权益每次 30 点)。先 `--dry-run` 验证定位, 再去掉它真打。既然是逐个点,就别指望工具替你筛——**命脉判断在打之前做完**, 用命脉关键词 + `--degree/--exp-range/--status` 这些筛选参数把池子收窄,再逐个确认。 ⚠️ **账号权益耗尽会是「静默失败」**(卡片只剩「联系Ta」,点了不报错也不建会话,CLI 却回显 ✅)。 **boss-cli ≥0.8.3 自动切畅聊卡并重试**;**打完必须回 `boss list` 数新增会话**才算数。 ⚠️ `boss search` 会残留上次岗位(实测退回「动捕导演」致池子全错、按序号打错人)——每次先看输出头是不是「不限职位」。 细节见 [`references/channels.md`](references/channels.md)。 - **遇每日沟通额度上限**(付费弹层):停下问用户,别自己决定花付费权益。 - **遇风控 / 账号异常 / 验证码**:立即停,不硬闯,报告用户。 - **商业敏感信息**(CONTEXT 里标注敏感的内容)**不写进对外话术和日报**; 对外提及公司/产品名前跟用户核对口径。 - 打招呼是**按职位**的:同一人换岗可重复打;打前用 chatlist / 台账去重, 别重复骚扰(尤其猎聘对已建会话会重发消息)。 ## 什么时候不用本流程 - 新开岗位 / 改标准 → `skills/recruit-grill/SKILL.md`。 - 本地收到的简历(猎头/内推/直投),或飞书邮箱猎聘/BOSS 简历收取与评估 → `skills/resume-review/SKILL.md`。 - 某岗深度市场盘点 → `skills/market-talent-mapping/SKILL.md`。 - 约面试 / 改期 → `skills/interview-schedule/SKILL.md`(建日程前必经用户确认)。 - 发 offer、谈薪 → 完全等用户明确指令,逐案处理。