# recruiting-copilot

> DSH 招聘 bundle：7 个 skill 串起岗位梳理、Boss+猎聘双通道寻源打招呼、简历评估与约面试，Web 右侧内置可远程操作招聘站的浏览器面板。

## Metadata

- Author: [@Viy1204](https://github.com/Viy1204)
- Repo: <https://github.com/Viy1204/recruiting-copilot.git>
- GitHub: [Viy1204/recruiting-copilot](https://github.com/Viy1204/recruiting-copilot)
- Stars: 40
- Language: JavaScript
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Topics: `agent-skills`, `ai-agent`, `boss-zhipin`, `chrome-devtools-protocol`, `claude-code`, `claude-code-plugin`, `deepseek-harness`, `dsh-plugin`, `hiring`, `hr-tech`, `liepin`, `llm`, `recruiting`, `resume-screening`, `talent-sourcing`, `workflow-automation`
- Forks: 13
- Open Issues: 0
- Last push: 2026-08-20T08:41:38.000Z
- Added: 2026-08-20T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:Viy1204/recruiting-copilot
```

## Wiki

## 一句话定位
这是给 HR / 猎头用的 AI 招聘副驾：把岗位梳理、Boss直聘+猎聘双通道每日寻源初筛打招呼、简历评估、约面试、候选人台账与日报串成一套 AI 工作流，并在 DSH Web 界面右侧内置一只可以直接上手操作的招聘浏览器面板。

## 核心能力
- 提供 7 个招聘 skill，覆盖「初始化工作区→梳理岗位→每日寻源打招呼→简历评估→约面试→市场盘点→日常问答」整条招聘链路
- 通过 AI 副驾把模糊的「我要一个 XX」聊成可执行的初筛标准，产出对外 JD、对内笔记与目标公司清单
- 每日一句话触发 Boss直聘 + 猎聘双通道寻源：查未读、搜人、初筛、确认后打招呼、补台账、出日报
- 简历评估既支持本地 PDF/图片，也支持从飞书邮箱按需收取猎聘/BOSS 简历邮件去重后入档
- 约面试时自动查面试官忙闲、建带视频会议链接的日历日程、拉面试官进会、同步面试档案
- 在 DSH Web UI 右侧 dock 列里渲染一只可远程操作的浏览器，复用 boss-cli / liepin-cli 的登录态

## 技术实现
- **语言**: JavaScript（ES Module，零第三方依赖）
- **关键依赖**: Node 内置 `fetch` / `WebSocket` / `child_process`（lib/index.js:29-32）；宿主 `@deepseek-ai/dsh-skill-filesystem` 与 `dsh-host-webserver`；外部 CLI `boss-cli`（Viy1204 fork）
- **架构模式**: 双重身份——既是 profile bundle（通过 `dsh/cordis.patch.yml` 启用宿主 skill-filesystem 行并把 `skills/` 注册为全局自定义 skill 根），也是 cordis 插件 + 客户端模块对（`lib/index.js` 挂载 `/plugins/recruiting-view/*` 路由，`client.js` 注册进 `shell.overlay` 插槽）
- **入口文件**: `lib/index.js`（host 插件，导出 `apply(ctx, rawConfig)`）/ `client.js`（浏览器端面板）/ `dsh/cordis.patch.yml`（profile patch 层）

## 适用场景
每天要处理大量 Boss / 猎聘沟通与候选人建档的 HR 或猎头，希望 AI 帮忙按既定标准搜索、初筛、生成打招呼话术并同步台账，同时在 DSH 界面里直接看到招聘站画面而无需切换窗口。也可用于一次性深度摸底某岗的市场人才结构，或在飞书邮箱里批量评估刚收到的简历。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 未声明 | 依赖宿主 `dsh-skill-filesystem` 与 `dsh-host-webserver`；web profile 才会出现右侧浏览器面板，headless 等无 webServer 的 profile 只注册 skill |
| Node.js | >=22 | `package.json` 的 `engines.node`；安装脚本最低要求 >=20，但 lib/index.js 使用了 Node 22+ 的内置 `fetch`/`WebSocket` |
| Chrome / Edge | 本机已装 | 用于面板驱动真实浏览器；找不到时可用 `CHROME_PATH` 或 `PUPPETEER_EXECUTABLE_PATH` 指定 |
| boss-cli (fork) | >=0.7.0 | 由 `skills/recruit-init/scripts/install-dependencies.sh` 自动装 `git+https://github.com/Viy1204/boss-cli.git#main`，旧版用随机端口面板连不上 |
| liepin-cli | >=0.2.0 | 同样由安装脚本装 `@viyzhu/liepin-cli`，旧版随机端口时面板空态会明确提示 |
| lark-cli | 可选 | 不装则日报输出本地 Markdown、约面试给手动建会清单、简历需本地提供；寻源与本地简历评估不受影响 |
| 平台 | 跨平台 | macOS / Windows / Linux；启动参数从 `process.platform` 判断，三平台都覆盖 |

## 安装方式
```bash
dsh plugin --profile web add github:Viy1204/recruiting-copilot
```

## 配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| `sources` | 数组 | 招聘浏览器面板要镜像哪些源（`boss` / `liepin`），每条配 `name` / `port` / `match` / `homeUrl` / `userDataDir` / `defaultHidden`；patch 里只写差异，其余从内置默认补 | `[boss:53470, liepin:53471]` |
| `frameIntervalMs` / `watchdogIntervalMs` | 数字 | 帧间隔（毫秒），过小增加带宽、过大增加延迟；受 200~30000 范围钳制 | 700 |
| `jpegQuality` | 数字 | MJPEG 推帧的 JPEG 质量，受 10~100 范围钳制 | 80 |
| `maxFrameWidth` | 数字 | 单帧最大宽度，受 320~4096 范围钳制 | 1800 |
| `RECRUIT_BROWSER_HIDDEN` 环境变量 | 字符串 | 三方共读的统一覆盖开关：设 `true` 强制无头、`false` 强制有头，**不设**时按各源自己的 `defaultHidden`（BOSS 有头、猎聘无头） | 未设置 |
| `BOSS_BROWSER_REMOTE_DEBUGGING_PORT` / `LIEPIN_BROWSER_REMOTE_DEBUGGING_PORT` 环境变量 | 数字 | 覆盖 boss-cli / liepin-cli 的固定 CDP 调试端口；改了环境变量，patch 里 `sources[].port` 也要跟着改 | 53470 / 53471 |
| `CHROME_PATH` / `PUPPETEER_EXECUTABLE_PATH` 环境变量 | 路径 | 找不到本机 Chrome/Edge 时，手动指定可执行文件路径 | 自动探测 |
| `BOSS_CLI_SOURCE` / `LIEPIN_CLI_SOURCE` 环境变量 | URL/包名 | 安装 boss-cli / liepin-cli 的来源（脚本读取） | `git+https://github.com/Viy1204/boss-cli.git#main` / `@viyzhu/liepin-cli` |

## 常见问题
**Q: 安装后还需要做什么？**

A: 需要本机装 Node ≥20、Chrome/Edge，并跑一次 `skills/recruit-init/scripts/install-dependencies.sh` 来装 boss-cli（Viy1204 fork）和 liepin-cli，再各扫码登录一次保存登录态。可选装 lark-cli 让日报出飞书云文档、约面试自动建日历。

**Q: 招聘浏览器面板里 BOSS 提示「账号受限」怎么办？**

A: 通常是触发了 BOSS 的风控——页面文案会写「检测到您的账号存在使用第三方招聘管理系统、插件、外挂、软件等辅助工具」。插件已经按源区分默认（BOSS 有头、猎聘无头），不要把 `RECRUIT_BROWSER_HIDDEN` 设成 `true`，那会把 BOSS 也拖进无头。被限期间只有 web 端受限，BOSS直聘 APP 和 PC 客户端照常可用。

**Q: 不装 lark-cli 会不会影响核心功能？**

A: 不会。lark-cli 只影响日报出飞书云文档、约面试建日历、从飞书邮箱收简历这三个可选场景；寻源、本地简历评估、台账、面板都不受影响，会以本地 Markdown 输出或手动操作清单替代。

**Q: 怎么卸载或回滚？**

A: 用 `dsh plugin --profile web remove recruiting-copilot` 卸载，用 `update` 子命令拉最新提交。如果之前在面板里手动操作过旧版本，重启 DSH 会话即可让新版加固生效——面板默认折叠、默认只读，有头/无头切换按钮已摘掉。

**Q: 面板空态提示「请更新 liepin-cli」是什么意思？**

A: 旧版 liepin-cli 用 `puppeteer.launch()` 分配随机 CDP 端口，面板按固定端口 53471 探测不到。需升级到 `@viyzhu/liepin-cli ≥0.2.0`，boss-cli 也要求 fork 版 ≥0.7.0，否则面板连不上那只浏览器。

**Q: 自动操作会不会被招聘平台风控？**

A: 打招呼、点「不合适」、通知候选人这类对外不可逆动作默认先经用户确认，AI 不自动拒人。插件内置风控熔断：页面落到 403/verify/security-check 时停掉所有自动动作并在面板顶部出红色提示，需人工确认后才能解除。

## 上手难度
进阶 — 需要先理解 DSH profile bundle 的双层身份（patch 启用 skill + host 插件接管浏览器），并且要在工作区里跑一次初始化流程；面板模式相关的环境变量（`RECRUIT_BROWSER_HIDDEN` / 端口覆盖）有平台经验门槛，但日常使用只需说一句「处理今天的招聘」。

## 已知问题与限制
- BOSS 浏览器默认有头、猎聘浏览器默认无头：曾观测到同一账号因无头 UA 被 BOSS 限制 web 端登录 24 小时，所以两个源不再统一无头（README.md:9-46）
- 不要设 `RECRUIT_BROWSER_HIDDEN=true`：会把 BOSS 也拖进无头，是已观测到的事故路径（README.md:22-23）
- 同一会话内切有头/无头模式的按钮已摘掉：UA 在 `HeadlessChrome` 与 `Chrome` 之间突变 = 24h 封号；host 的 `setMode` 实现保留但无 UI 入口（dsh/README.md:140-142）
- liepin-cli 旧版本用随机端口、面板接管不了：要求 `@viyzhu/liepin-cli ≥0.2.0`、`@viyzhu/boss-cli-fork ≥0.7.0`（README.md:144-146）
- 端口上已有实例时改 `RECRUIT_BROWSER_HIDDEN` 不生效：要重启得先 `boss shutdown` / `liepin quit` 关掉那只（README.md:142-143）
- 浏览器面板默认折叠、默认只读（输入派发关）：要动手得按工具栏 🔒 显式打开；折叠状态存 `localStorage` 持久化（dsh/README.md:144-146）
- 贴合（把页面视口固定到面板尺寸）失败重发上限 3 次：防止被秒级 resize 触发风控，超限后停手并把原因写到 `state.error`（lib/index.js:185-191）
- 风控/验证页熔断：URL 命中 `RISK_URL_RE`（403 / verify / security-check 形态）后停掉自愈重启、贴合重发与一切控制动作（除 `watch` / `clear-risk` / `set-target`），需人点提示条解除（lib/index.js:165-174）
- 风控检测故意排除 `about:blank`：那是新标签初始态，纳入会把面板自己锁死（lib/index.js:159-163）
- 外部 CLI 不可用时面板可拉起浏览器，但 boss-cli 的反检测保护只挂在 CLI 进程的 CDP session 上、进程一退出就失效：所以跨命令常驻期间面板看到的浏览器完全裸奔（README.md:27-29）
- boss-cli / liepin-cli / lark-cli 都是前置依赖：未装时初始化脚本会报缺，但不会阻塞建工作区；面板接管仅在 web profile 生效（README.md:58-74）

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [recruiting-copilot](https://deepseek-plugin.org/plugins/Viy1204/recruiting-copilot)
Wiki generated by AI (model: `MiniMax-M3`)
