メインコンテンツへスキップ
V

recruiting-copilot

viy1204/recruiting-copilot

给 HR / 猎头的 AI 招聘工作流:岗位标准梳理、Boss直聘 + 猎聘双通道寻源初筛、市场人才盘点、简历评估、约面试、候选人台账与日报。可装成 Claude Code 插件或 DeepSeek Harness (dsh) 插件——后者自带可直接上手操作的「招聘浏览器」面板;也能配合任意读 AGENTS.md 的 AI 编程助手使用。

インストール

dsh plugin --profile web add github:viy1204/recruiting-copilot

README

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 在 HeadlessChromeChrome 之间突变),限制 24 小时

本版本已做的加固:

  • 摘掉有头/无头切换按钮——需要真窗口请用 RECRUIT_BROWSER_HIDDEN=false 重启浏览器, 不要在同一会话内切模式。
  • 面板默认折叠、默认只读,且折叠状态持久化。展开会让 host 持续订阅画面并开启崩溃自愈; 要手动操作需按工具栏 🔒 显式打开。
  • 风控页熔断:一旦页面落到 403 / verify / security-check,host 立刻停掉自愈重启、停掉 贴合重发、拒绝一切导航与启动,面板顶部显示红色提示条,需人工确认后才解除。 (被限期间继续访问会把恢复时间一路延长。)

如果你之前装过旧版本并在面板里手动操作过,建议 git pull 更新后重启 DSH 会话。 细节与后续计划见 #33

它帮你做什么

  • 岗位梳理:一次一问的访谈,把「我要一个厉害的 XX」问成一份可执行的初筛标准——硬门槛、命脉技能、排除信号、目标公司、搜索词。同时产出对外 JD 与对内寻源笔记。
  • 每日招聘:说一句「处理今天的招聘」,AI 就去查两个平台的未读、按你的标准主动搜人、初筛、经你确认后打招呼,然后补台账、出日报。
  • 市场盘点:某个岗到底好不好招?一次深度调研说清市场供给、薪资水位、目标公司的人挖不挖得动,并附可推进名单。
  • 简历收取与评估:直接丢本地简历,或让 AI 去飞书邮箱翻近期的猎聘 / BOSS 简历邮件,去重下载附件后走同一套 review、台账与面试档案流程。
  • 约面试:查面试官忙闲、建带视频会议链接的日历日程、拉面试官进会、生成候选人邀约话术,面试档案自动同步。
  • 越用越准:每轮从命中的真实简历反向提取搜索词,回填关键词迭代表,下一轮搜索更准。
  • 安全红线:对外不可逆的动作(打招呼、点「不合适」、通知候选人)默认先经你确认,绝不自动拒人。

前置条件(所有工具通用)

  1. Node.js ≥ 20,本机装有 Chrome。
  2. 运行下方「安装与使用」里的依赖安装脚本。脚本装的 Boss CLI 是 Viy1204/boss-cli 维护版——它跟着 Boss 前端改版走, 带着当前的兼容与安全基线。macOS 上如果 npm 全局命令不在 PATH,脚本会幂等地改一次当前 shell 的配置文件(zsh 写 ~/.zprofile,bash 写 ~/.bash_profile)。
  3. 两个平台各扫码登录一次(登录态存在浏览器的 user-data-dir 里,一次能管很久):
    boss login
    liepin login
    
    两个 CLI 平时跑的都是无头浏览器,但 login 会自动换成可见窗口给你扫码—— 端口上已有无头实例时也会先关掉再以有头拉起,登录态不会丢。
  4. 可选:飞书用户装 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 Harnessdsh)用户, 在任意目录执行:

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-viyrecruit-initrecruit-grillrecruit-dailyresume-reviewinterview-schedulemarket-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 可以帮你筛一千份简历,但拒绝一个人、联系一个人,默认由你拍板。
  • 邮箱只是输入渠道:只读收取,不标已读、不移动 / 删除、不回复 / 转发;风险邮件和不可信附件不自动下载。

想了解这些取舍背后的原因,读 设计思路与理念

绝活日资料包

绝活日分享资料包

関連プラグイン