Viy1204 / recruiting-copilot

Listed

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

masterModelToolSkill View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:Viy1204/recruiting-copilot

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 362b0b0Synced Aug 18, 2026

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

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

绝活日资料包

绝活日分享资料包

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

Plugin manifestDetected
TestsDetected
DocumentationDetected

Repository information

Language
JavaScript
License
Not reported
Last updated
Aug 18, 2026, 9:42 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.