某直聘智能求职 Agent — 从采集到投递的全自动化流水线
🌐 官网:harnessjob.com
Harness Job 是一个基于 Claude Code Skill 架构的智能求职助手,通过 CDP 浏览器自动化 + AI 评分 + 人工确认的三层策略,帮助开发者高效求职。
本项目仅供学习和个人求职效率提升使用。
- 本项目与 某直聘(某科技)无任何关联
- 使用自动化工具操作招聘平台可能违反其用户协议,由此产生的账号封禁、法律纠纷等后果由使用者自行承担
- 作者不对任何直接或间接损失负责
- 请合理设置频率限制,避免对平台造成负担
- 建议仅在求职期间短期使用,投递完成后停止运行
| 能力 | 说明 |
|---|---|
| 智能采集 | 基于关键词+城市自动翻页采集岗位,内置去重 |
| AI 两阶段评分 | 快速预筛(关键词匹配) → 深度评分(AI 分析 JD) |
| 定制招呼语 | AI 根据岗位 JD + 个人简历生成个性化开场白 |
| 人工确认 | 投递前必须经过确认,支持逐个/批量审核 |
| 反检测发送 | 模拟浏览、随机间隔、时间窗口、休息日策略 |
| HR 回复监听 | 自动检测 HR 回复,触发定制简历生成与发送 |
| Web Dashboard | 可视化看板,实时查看漏斗数据与岗位状态 |
| 自动跟进 | 48小时未回复自动发送跟进消息(跳过周末) |
采集(scrape) → 预筛(prefilter) → AI评分(score) → 招呼语(greet)
→ 人工确认(confirm) → 发送(send) → [监听HR回复] → 简历投递
每一步都有人工干预点:确认环节是强制的,不存在完全无人值守的投递。
| 依赖 | 版本 | 用途 |
|---|---|---|
| Python | 3.9+ | 核心运行时 |
| Chrome | 最新稳定版 | 需开启远程调试 |
| AI API Key | Anthropic / DeepSeek / OpenAI | AI 评分 / 招呼语 / 简历生成 |
方式一:pip 直接安装(无需 clone)
pip3 install git+https://github.com/HungYann/harness-job.git方式二:clone 后本地安装(便于修改源码)
git clone https://github.com/HungYann/harness-job.git
cd harness-job
pip3 install -e .支持三种 AI 服务商,任选其一:
# Anthropic (Claude)
export ANTHROPIC_API_KEY="sk-ant-xxxxxx"
# DeepSeek(国内访问更稳定)
export DEEPSEEK_API_KEY="sk-xxxxxx"
# OpenAI
export OPENAI_API_KEY="sk-xxxxxx"也可以在 Web 配置面板的「AI 设置」中直接填写,无需设置环境变量。
方式一(推荐):在 Chrome 地址栏输入以下地址,勾选 "Allow remote debugging"
chrome://inspect/#remote-debugging
方式二:命令行启动(推荐,可控制配置文件隔离)
# macOS(必须加 --remote-allow-origins=* 否则 WebSocket 会被拒绝)
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
'--remote-allow-origins=*' \
--user-data-dir=/tmp/chrome-debug \
--no-first-run
# Windows
chrome.exe --remote-debugging-port=9222 --remote-allow-origins=* --user-data-dir=%TEMP%\chrome-debug完成后在 Chrome 中打开 www.zhipin.com 并登录账号。
python3 scripts/web.py &浏览器自动打开 http://127.0.0.1:8686 ,在面板中完成以下配置:
| 优先级 | 配置项 | 说明 |
|---|---|---|
| ⭐⭐⭐ | 上传简历 | 左侧「简历」区域,支持 .pdf 或 .md 格式 |
| ⭐⭐⭐ | 搜索关键词 | 如:Python开发、后端工程师 |
| ⭐⭐⭐ | 目标城市 | 选择投递城市 |
| ⭐⭐ | 期望薪资 | 最低 / 最高薪资(K) |
| ⭐⭐ | 一票否决词 | 如:外包、996、外派 |
| ⭐ | AI 阈值 / 频率 | 可保持默认,后续按需调整 |
python3 scripts/connect.py预期输出:
✓ Chrome 已连接: Chrome/xxx
✓ 发现某直聘页面: xxx
python3 scripts/run.py程序自动依次执行:Chrome 检测 → 采集岗位 → AI 评分筛选 → 生成招呼语 → 人工确认 → 自动发送
在"人工确认"环节程序会暂停,等待你操作:
| 按键 | 操作 |
|---|---|
a |
全部确认投递 |
s |
逐个审核确认 |
q |
取消,不发送 |
不想一键运行?可以拆分为独立步骤执行:
# 1. 采集岗位
python3 scripts/scrape.py -k "后端工程师" -l 50
# 2. AI 两阶段评分筛选
python3 scripts/score.py
# 3. 生成个性化招呼语
python3 scripts/greet.py
# 4. 人工确认投递清单(必须步骤,不可跳过)
python3 scripts/confirm.py
# 5. 自动发送招呼语
python3 scripts/send.py发送招呼语后,启动监听模式等待 HR 回复。收到回复后自动处理:生成定制简历、发送简历、自动回复问题。
# 持续监听(默认每 30 分钟检查一次)
python3 scripts/monitor.py
# 只检查一次
python3 scripts/monitor.py --once
# 自定义间隔(分钟)
python3 scripts/monitor.py --interval 15# 简要统计(各状态数量 + 回复率)
python3 scripts/status.py
# 完整仪表盘(漏斗 + 趋势 + Top 公司 + 近期动态)
python3 scripts/status.py --full
# Web 可视化看板
python3 scripts/web.py配置文件位于项目根目录 config.yaml,可通过 Web 面板可视化编辑,也可手动修改:
cp config.example.yaml config.yaml核心配置项:
| 配置段 | 关键字段 | 说明 |
|---|---|---|
profile |
resume_path, salary_min/max, deal_breakers |
个人信息与排除条件 |
search |
keywords, cities, max_pages |
搜索策略 |
scoring |
threshold, prefilter_threshold |
评分阈值(默认 71 分通过) |
throttle |
daily_limit, interval_min/max, send_windows |
反检测策略 |
ai |
provider, model, api_key |
AI 服务配置 |
monitor |
interval, max_resume_sends_per_cycle |
监听设置 |
follow_up |
enabled, interval_hours, skip_weekends |
跟进策略 |
支持通过环境变量覆盖路径:
export BOSSHUNTER_CONFIG="/path/to/config.yaml" # 自定义配置文件路径
export BOSSHUNTER_DB="/path/to/bosshunter.db" # 自定义数据库路径Harness Job 是标准的 Claude Code Skill,在 Claude Code 中打开本项目目录,直接对话即可控制全流程:
"帮我开始找工作"
"采集 Python 开发岗位"
"看看有没有 HR 回复"
"打开看板"
# 通过 marketplace 安装
claude plugin marketplace add https://harnessjob.com
# 或手动安装
claude plugin install harness-job --scope userBossHunter/
├── SKILL.md # Skill 行为定义(Claude Code 加载)
├── CLAUDE.md # AI Agent 行为规范
├── README.md # 本文件
├── LICENSE # MIT License
├── config.example.yaml # 配置模板(脱敏)
├── pyproject.toml # Python 包定义
├── resume.example.md # 简历模板示例
├── scripts/ # 独立入口脚本(无需安装直接运行)
│ ├── _bootstrap.py # sys.path 自动配置
│ ├── web.py # 启动 Web 面板
│ ├── connect.py # 检测 Chrome 连接
│ ├── run.py # 一键完整流程
│ ├── scrape.py # 采集岗位
│ ├── score.py # AI 评分
│ ├── greet.py # 生成招呼语
│ ├── confirm.py # 人工确认
│ ├── send.py # 发送招呼语
│ ├── monitor.py # 监听 HR 回复
│ └── status.py # 查看状态
└── src/
└── bosshunter/ # 核心源码
├── main.py # CLI 入口
├── config.py # 配置加载
├── db.py # SQLite 数据层
├── pipeline.py # 流程编排
├── ai/ # AI 评分 + 招呼语 + 简历生成
├── browser/ # CDP 浏览器连接
├── scraper/ # 岗位采集
├── executor/ # 发送 + 监听
├── tracker/ # 状态追踪
├── throttle.py # 反检测策略
├── ui/ # 终端交互 UI
└── web/ # Web Dashboard
本项目内置多层反检测机制:
- 时间窗口 — 仅在工作时间发送(默认 09:00-16:00)
- 随机间隔 — 每次操作间隔 60-180 秒随机
- 每日上限 — 默认每天最多 30 条
- 模拟浏览 — 发送前先浏览岗位页 15-30 秒
- 随机休息 — 5% 概率跳过当天(模拟真人行为)
- 渐进退避 — 连续错误时自动增加间隔
- 人工确认 — 所有投递必须经过人工审核
即便如此,无法保证 100% 不被检测。请自行评估风险。
| 现象 | 解决方案 |
|---|---|
ModuleNotFoundError |
pip3 install -e . |
| Chrome 连接失败 | 确认已开启远程调试:chrome://inspect/#remote-debugging |
| WebSocket 403 Forbidden | 启动 Chrome 时必须加 '--remote-allow-origins=*' 参数 |
| 采集到 0 个岗位 | 检查 Chrome 是否以 --remote-allow-origins=* 启动,重启 Chrome |
| 未发现某直聘页面 | 在调试 Chrome 中打开 www.zhipin.com 并登录 |
| 没有待确认的岗位 | 先依次执行 scrape → score → greet |
| 评分全为 0 / 全被过滤 | 检查 API Key 是否设置;可适当降低 prefilter_threshold(默认 40) |
| Web 面板打不开 | pip3 install bottle pyyaml |
| 保存配置后 API Key 丢失 | 已修复(v1.1+);如遇旧版本请重新填写 Key 后保存 |
| 发送被跳过(时间窗口) | 当前时间不在 send_windows 内,默认 09:00-16:00 |
| 发送被跳过(随机休息) | 正常现象(5% 概率),使用 --force 参数跳过 |
| 服务 | 文档 | 控制台 |
|---|---|---|
| Anthropic Claude | docs.anthropic.com | console.anthropic.com |
| DeepSeek | platform.deepseek.com/docs | platform.deepseek.com |
| OpenAI | platform.openai.com/docs | platform.openai.com |
| 技术 | 链接 |
|---|---|
| Chrome DevTools Protocol | chromedevtools.github.io/devtools-protocol |
| pdfplumber(PDF 解析) | github.com/jsvine/pdfplumber |
| websocket-client | websocket-client.readthedocs.io |
| Bottle(Web 框架) | bottlepy.org |
| 链接 | |
|---|---|
| 🌐 官网 | harnessjob.com |
| 📦 GitHub | github.com/HungYann/harness-job |
| 🐛 Issues | github.com/HungYann/harness-job/issues |
| 💬 Discussions | github.com/HungYann/harness-job/discussions |
欢迎 PR 和 Issue。请注意:
- 不接受任何绕过平台安全检测的 PR
- 不接受提高默认频率的 PR
- 建议先开 Issue 讨论再提交大改动
官网:harnessjob.com · 本项目与 某直聘、某科技无任何关联。所有商标归其各自所有者所有。