一个基于 Spring Boot + Playwright + Vue 3 的 BOSS 直聘自动化项目,当前聚焦以下能力:
- 自动扫描职位并尝试发起沟通
- 自动处理聊天页未读消息回复
- 通过配置页维护筛选规则、调度参数和浏览器登录 Cookie
开始自动打招呼- 扫描 BOSS 职位列表
- 按城市、经验、薪资、正则规则做匹配
- 进入职位详情页后自动发起沟通
- 可选使用 AI 生成首轮打招呼内容
处理未读消息- 进入聊天页读取未读会话
- 提取最近对话上下文
- 调用外部 AI 生成回复
- 自动发送消息
自动调度- 支持按顺序组合执行开始聊天和回复未读
配置后台- 前端保留
BOSS 配置页面 - 后端保留当前仍在使用的配置接口
- 前端保留
bosspilot-java/
├─ frontend/ Vue 3 + Vite 前端配置页
├─ bosspilot-db/ JPA 实体与 Repository
├─ bosspilot-core/ Spring Web 与公共基础模块
├─ bosspilot-jd/ BOSS 自动化业务主逻辑
├─ bosspilot-main/ 启动模块与默认资源
├─ doc/ 每次代码改动的变更记录
└─ pom.xml Maven 聚合工程
- Java 21
- Spring Boot 3.3
- Playwright Java 1.49
- MySQL
- Vue 3
- Vite
- JDK
21 - Maven
3.9+ - Node.js
18+ - MySQL
8+
说明:
- 仓库当前已经打包了一份 Windows Chromium 到
third_party/playwright/chromium-1148 - 后端会优先使用仓库内浏览器,而不是依赖当前用户目录下的
ms-playwright
默认配置文件位于:
bosspilot-main/src/main/resources/application.yml
至少需要确认以下配置:
spring.datasource.*server.portbosspilot.ai-service.*bosspilot.browser.*
说明:
- 仓库中的数据库地址、用户名、密码是本地开发值,开源使用前建议自行替换
spring.jpa.hibernate.ddl-auto=update会在启动时自动更新表结构
当前项目主要通过以下方式获取登录态:
- 在 BOSS 配置页填写
manualCookie - 复用已有浏览器会话,让程序读取当前上下文
如果没有有效登录态,自动化主流程无法正常工作。
未读回复和 AI 打招呼依赖外部 AI SSE 服务:
bosspilot.ai-service.base-urlbosspilot.ai-service.boss-chat-endpoint
如果关闭 AI:
- 首轮打招呼会回退到默认文案
- 未读回复生成会失败或回退
在仓库根目录执行:
mvn -pl bosspilot-main -am spring-boot:run默认地址:
http://localhost:8686
在 frontend 目录执行:
npm install
npm run dev默认地址:
http://localhost:3000
Vite 已配置开发代理,/api 会转发到:
http://localhost:8686
当前只保留一个页面:
/boss:BOSS 自动化主配置
主要可配置内容包括:
- 手动 Cookie
- 职位名称 / 类型 / 描述正则
- 城市、经验、薪资条件
- 推荐页动态 / 静态筛选组合
- AI 首轮打招呼开关
- 未读回复上下文条数
- 自动同意附件简历卡片
- 调度次数与间隔
- 职位来源列表
GET /api/config/bossPUT /api/config/bossGET /api/config/filter-options
POST /api/automation/startPOST /api/automation/reply-unreadPOST /api/automation/scheduleGET /api/automation/status
mvn -pl bosspilot-jd -am testcd frontend
npm run build- 本项目依赖真实页面 DOM 和接口行为,BOSS 页面结构变化后可能需要同步修复
- Playwright、Cookie、浏览器环境、风控状态都会影响稳定性
- 仓库内附带的是 Windows 版 Chromium,跨平台运行时仍需补齐对应平台浏览器
- 前端当前是独立 Vite 工程,默认没有直接打包进 Spring Boot 静态资源
- 自动化能力请仅在合法、合规、符合目标平台规则的前提下使用
仓库中的每次代码改动都会在 doc/ 目录生成对应的说明文件。