recruiting-copilot
viy1204/recruiting-copilot
给 HR / 猎头的 AI 招聘工作流:岗位标准梳理、Boss直聘 + 猎聘双通道寻源初筛、市场人才盘点、简历评估、约面试、候选人台账与日报。可装成 Claude Code 插件或 DeepSeek Harness (dsh) 插件——后者自带可直接上手操作的「招聘浏览器」面板;也能配合任意读 AGENTS.md 的 AI 编程助手使用。
安装
dsh plugin --profile web add github:viy1204/recruiting-copilotREADME
recruiting-copilot —— AI 招聘副驾
给 HR / 猎头用的一套 AI 招聘工作流:逼问式梳理岗位真实要求 → Boss直聘 + 猎聘双通道每日寻源初筛 → 打招呼 → 约面试 → 候选人台账 → 日报。 另有市场人才盘点、简历评估,以及从飞书邮箱按需收取猎聘 / BOSS 的简历附件。
配合任意 AI 编程助手使用:Claude Code、Codex、workbuddy、qoderwork、MiniMax Code、Z code 等——
只要你的工具能读工作区里的 AGENTS.md,就能跑这套流程。
⚠️ 账号安全须知(2026-08-18 更新,用 DSH 面板的请务必读)
日常招聘动作请一律走 CLI 命令,别在「招聘浏览器」面板里手动点操作。
原因:boss-cli 的反检测保护(拦风控 SDK、把上报端点用 204 假装成功、注入页面守卫等四层) 全部挂在 CLI 进程自己的 CDP session 上,进程一退出就全部失效。已实测确认。所以浏览器 跨命令常驻期间是完全裸奔的,面板操作和面板发起的导航都在这个裸奔时段里,不受任何保护。
同一个测试账号在 2026-08-18 被限制两次:一次是排查时并挂第二个 host 加反复切贴合(页面秒级 反复 resize),限制几小时;一次是点面板的有头/无头切换(同一会话内 UA 在
HeadlessChrome与Chrome之间突变),限制 24 小时。本版本已做的加固:
- 摘掉有头/无头切换按钮——需要真窗口请用
RECRUIT_BROWSER_HIDDEN=false重启浏览器, 不要在同一会话内切模式。- 面板默认折叠、默认只读,且折叠状态持久化。展开会让 host 持续订阅画面并开启崩溃自愈; 要手动操作需按工具栏 🔒 显式打开。
- 风控页熔断:一旦页面落到 403 / verify / security-check,host 立刻停掉自愈重启、停掉 贴合重发、拒绝一切导航与启动,面板顶部显示红色提示条,需人工确认后才解除。 (被限期间继续访问会把恢复时间一路延长。)
如果你之前装过旧版本并在面板里手动操作过,建议
git pull更新后重启 DSH 会话。 细节与后续计划见 #33。
它帮你做什么
- 岗位梳理:一次一问的访谈,把「我要一个厉害的 XX」问成一份可执行的初筛标准——硬门槛、命脉技能、排除信号、目标公司、搜索词。同时产出对外 JD 与对内寻源笔记。
- 每日招聘:说一句「处理今天的招聘」,AI 就去查两个平台的未读、按你的标准主动搜人、初筛、经你确认后打招呼,然后补台账、出日报。
- 市场盘点:某个岗到底好不好招?一次深度调研说清市场供给、薪资水位、目标公司的人挖不挖得动,并附可推进名单。
- 简历收取与评估:直接丢本地简历,或让 AI 去飞书邮箱翻近期的猎聘 / BOSS 简历邮件,去重下载附件后走同一套 review、台账与面试档案流程。
- 约面试:查面试官忙闲、建带视频会议链接的日历日程、拉面试官进会、生成候选人邀约话术,面试档案自动同步。
- 越用越准:每轮从命中的真实简历反向提取搜索词,回填关键词迭代表,下一轮搜索更准。
- 安全红线:对外不可逆的动作(打招呼、点「不合适」、通知候选人)默认先经你确认,绝不自动拒人。
前置条件(所有工具通用)
- Node.js ≥ 20,本机装有 Chrome。
- 运行下方「安装与使用」里的依赖安装脚本。脚本装的 Boss CLI 是
Viy1204/boss-cli维护版——它跟着 Boss 前端改版走, 带着当前的兼容与安全基线。macOS 上如果 npm 全局命令不在PATH,脚本会幂等地改一次当前 shell 的配置文件(zsh 写~/.zprofile,bash 写~/.bash_profile)。 - 两个平台各扫码登录一次(登录态存在浏览器的 user-data-dir 里,一次能管很久):
两个 CLI 平时跑的都是无头浏览器,但boss login liepin loginlogin会自动换成可见窗口给你扫码—— 端口上已有无头实例时也会先关掉再以有头拉起,登录态不会丢。 - 可选:飞书用户装 lark-cli 并配置凭证 → 日报出飞书云文档、约面试直接建日历日程和视频会议, 还能从飞书邮箱收取猎聘 / BOSS 简历附件;不装则日报输出本地 Markdown、约面试给你一份手动建会清单、 简历需本地提供。寻源、本地简历 review 和台账功能都不受影响。
安装与使用
方式一:通用(Codex / workbuddy / qoderwork / MiniMax Code / Z code / 任何 agent 工具)
git clone <本仓库地址>
cd recruiting-copilot
sh skills/recruit-init/scripts/install-dependencies.sh
用你的 AI 工具打开这个目录,说:「帮我初始化招聘工作区」。 AI 会检查依赖、在你指定的位置建好工作区、注册各工具认得的项目级 skill, 然后逐个岗位跟你梳理招聘要求。
补充:用
~/.agents/skills约定的工具,也可以npx skills add Viy1204/recruiting-copilot把这套 skill 装成全局。不装也没关系——工作区里已经带了一份。
之后每天:用 AI 工具打开你自己的工作区目录,说 「处理今天的招聘」。 任何时候不确定该干什么,说一句 「这套工具怎么用」,AI 会按总目录带你走。
方式二:Claude Code 插件(额外获得 slash 命令与自动触发)
claude plugin marketplace add <本仓库地址>
claude plugin install recruiting-copilot
然后:
/recruit-init—— 初始化工作区(首次一次)/recruit-grill <岗位>—— 梳理某个岗位的要求/recruit-daily—— 处理今天的招聘(日常也可以直接说「处理今天的招聘」)/recruit-mapping <岗位>—— 深度盘点某岗的市场人才/resume-review—— 评估本地简历,或收取飞书邮箱的猎聘 / BOSS 简历附件后评估/interview-schedule—— 约面试:日历 + 视频会议 + 拉面试官,档案台账同步/ask-viy—— 不知道该用哪个?问它
方式三:DeepSeek Harness 插件(任意工作区都能用这套招聘 skill)
DeepSeek Harness(dsh)用户,
在任意目录执行:
dsh plugin --profile web add git+https://github.com/Viy1204/recruiting-copilot.git
(web 是 Web 界面 profile;headless 等其他 profile 同理,把 web 换成名字即可。)
安装后重启 DSH 会话,本仓库 skills/ 下的 7 个 skill 就会出现在任意工作区的
skill 目录里(不必把仓库克隆成工作区):
ask-viy、recruit-init、recruit-grill、recruit-daily、resume-review、
interview-schedule、market-talent-mapping。
附带功能——Web UI 右侧「招聘浏览器」面板:DSH Web 界面右侧是一只能直接上手操作的浏览器,
鼠标、滚轮、键盘、中文输入法、粘贴全都直通。BOSS 和猎聘都是可用的源,面板顶部一键切换;
浏览器没起时在面板里点一下就能拉起——用的是两个 CLI 各自的 user-data-dir 和固定调试端口,
登录态通用,之后跑 boss / liepin 命令会直连同一只,不会另开一只。
两只浏览器默认无头:不弹到前景、不抢键盘焦点,它在后台干活时你可以照常用别的软件。
想看它在做什么,看这个面板就是了——这正是面板存在的理由。面板默认开着「贴合」,
把页面视口固定成按源写死的尺寸(BOSS 958×1149、猎聘 1440×1149),
所以面板里的文字是原生大小,而不是整页缩小后的糊图。
确实需要一个真窗口时:设 RECRUIT_BROWSER_HIDDEN=false(本插件 / boss-cli / liepin-cli 三方共读)。
端口上已经有实例在跑时改这个变量不生效——那只会被直接复用,得先 boss shutdown / liepin quit 关掉它。
面板接管需要 @viyzhu/boss-cli-fork ≥ 0.7.0、@viyzhu/liepin-cli ≥ 0.2.0:更早的版本要么用随机调试端口,
要么命令跑完就关浏览器,面板连不上。装旧版时面板的空态文案会直接告诉你是版本问题。
更新 / 卸载:
dsh plugin --profile web update recruiting-copilot # 拉到最新提交
dsh plugin --profile web remove recruiting-copilot # 卸载
原理与本地验证见
dsh/README.md:仓库根package.json声明dsh.bundle,装好后作为 profile 的 patch 层,启用宿主 skill-filesystem 并把本仓库skills/注册为全局自定义 skill 根;同一个包还带 host 插件(CDP 抓帧) 与客户端模块(右侧面板)。
工作区长什么样
初始化后你会得到一个自足的招聘工作区(换任何 AI 工具打开都能接着干活):
你的工作区/
├── CONTEXT.md ← 唯一事实源:初筛硬规则、在招岗位与优先级、术语表、决策记录
├── AGENTS.md ← 告诉 AI 工具在这里怎么干活(路由 + 红线)
├── skills/ ← 工作流文档的唯一内容源(随工作区走)
├── .agents/skills/ ← Codex / Agent Skills 项目级自动发现入口
├── .claude/skills/ ← Claude Code 项目级自动发现入口
├── .qoder/skills/ ← Qoder 项目级自动发现入口
├── 01-jd/ ← 对外 JD + _internal/ 对内寻源笔记(不外发)
├── 02-sourcing/ ← dedup-ledger.csv 候选人台账(唯一事实源)+ shortlist
├── 03-interview/ ← 面试档案(一人一文件)
├── 04-offer/ 05-onboarding/
├── _shared/templates/ ← 新岗位/新面试的模板
└── runtime/
├── reports/ ← 本地日报与 review 汇总
└── resumes/ ← 邮件简历附件 + 导入去重索引
三个隐藏目录里只放指向 skills/ 的链接,不会复制出三套内容。其他工具即使没有自己的
skill 注册目录,也能从根目录 AGENTS.md 路由到同一套流程。ZCode 可以直接读 AGENTS.md;
想让技能出现在 ZCode 面板里,可在 Settings → Skills 中从 Codex 或 Claude Code 来源导入到当前 Project。
设计原则(为什么长这样)
- 本地文件是唯一事实源:台账、JD、面试档案都是你目录里的纯文本。AI 换了、工具换了,数据都还在。
- 标准与执行分离:筛选标准全在
CONTEXT.md(你的),工作流文档不写死任何数字(通用的)——改标准只改一处。 - 对内对外分离:寻源策略、排除信号、薪资带宽放
_internal/不外发;对外 JD 干净到可以直接发布。 - 不可逆动作必经确认:AI 可以帮你筛一千份简历,但拒绝一个人、联系一个人,默认由你拍板。
- 邮箱只是输入渠道:只读收取,不标已读、不移动 / 删除、不回复 / 转发;风险邮件和不可信附件不自动下载。
想了解这些取舍背后的原因,读 设计思路与理念。