Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BOSS海投助手

Chrome / Edge Manifest V3 扩展。在 BOSS 直聘职位页注入悬浮面板,读取左侧职位列表、按条件筛选、自动打招呼,并可选接入大模型自动回复聊天。

无构建流程,克隆后直接「加载已解压的扩展程序」即可使用。

功能

筛选

  • 主面板:职位关键词、工作地点、薪资、关键词模式(任一命中 / 全部命中)、排除职位词、每日上限
  • 高级设置:公司包含、排除公司、招聘者活跃状态
  • 关键词语法:后端, Java, +Go, -实习
    • 逗号(中英文)、顿号、换行均可分隔
    • +词 表示必须命中,-词 表示排除
    • 3 个字符以内的英文按词边界匹配,Go 不会命中 Google
  • 地点带别名表,填 浦东 能命中 上海·浦东新区,填 远程 能命中「居家办公」等写法
  • 薪资按区间重叠判断,20-35K 能命中 15-25K;岗位写「面议」时不会被数字条件命中
  • 四个一键预设:后端 / 前端 / 全栈 / 产品

运行

  • 点「开始沟通」后先自动滚到列表底部读完懒加载列表,再开始逐个匹配
  • 暂停后可从当前进度「继续沟通」,已处理过的职位不会重复;「结束本轮」才会清空本轮统计和跳过列表
  • 进度条实时显示本轮完成度,预加载阶段显示为流动状态
  • 匹配职位列表可直接点击定位,当前正在沟通的一条会高亮,支持「仅沟通此项」和「跳过」
  • 每日上限 + 当日计数,跨天自动归零
  • 检测到「无法进行沟通 / 今日已与 150 位 BOSS 沟通」弹窗时自动暂停
  • 单个职位连续失败 3 次自动跳过,避免死循环
  • 沟通记录最多保留 300 条,可导出 CSV

界面

  • 面板可拖动,位置、最小化状态、列表折叠状态都会记住
  • 最小化后收成一颗胶囊,仍然显示运行状态和本轮完成数
  • 运行日志面板:记录每一步动作与失败原因,可一键复制或清空
  • 跟随系统的深色模式,prefers-reduced-motion 下自动关闭动画

沟通

  • 多条招呼语,支持随机轮换
  • 变量:{jobTitle} {companyName} {location} {salary}
  • 可选发送 JPG 图片简历(依赖页面存在可用上传入口,属 best-effort)

自动回复(可选)

  • 支持 DeepSeek、豆包(火山方舟)、腾讯元宝/混元,以及任意 OpenAI 兼容接口
  • 只在聊天输入框可见、且最后一条消息来自对方时才回复
  • 携带最近 6 条上下文,同一条消息不会重复回复,两次回复间隔至少 6 秒
  • API Key 只保存在本机 chrome.storage.local,请求由扩展后台直接发出,不会下发到网页脚本

安装

  1. 打开 chrome://extensions/(Edge 为 edge://extensions/
  2. 打开「开发者模式」
  3. 点击「加载已解压的扩展程序」,选择本项目根目录

加载后进入 BOSS 职位列表页,右上角会出现悬浮面板。面板可拖动,位置会被记住。

使用

  1. 登录 BOSS,点顶部导航「职位」,确认左侧有职位卡片列表
  2. 在面板填职位关键词和工作地点,或直接点上方预设
  3. 点「开始沟通」

启动后的执行顺序:

  1. 自动滚动左侧列表到底部,尽量读完整个懒加载列表
  2. 计算哪些岗位命中条件
  3. 逐个点击岗位卡片,等右侧详情切换完成
  4. 在详情区找「立即沟通 / 打招呼」,出现「留在此页」时点它以留在列表页
  5. 聊天框出现后按需上传图片简历、填入招呼语、点击发送
  6. 通过输入框是否清空、聊天区是否出现该文案来二次确认发送成功

完整读取列表前,「职位」「匹配」「待沟通」会显示为 ,避免在列表没读完时给出误导性数字。

跑起来之后:右侧主按钮显示「进行中 / 沟通中」,副按钮是「暂停」。暂停后主按钮变成「继续沟通」,副按钮变成「结束本轮」。出问题时先展开面板底部的「运行日志」,里面有每一步的动作和失败原因,可以直接复制出来排查。

高级选项

点面板右上角齿轮打开独立设置窗口,所有改动自动保存到 chrome.storage.local,刷新页面和重开浏览器都不会丢。

可配置项:薪资、公司、排除公司、招聘者状态、招呼语(每行一条,第一条为默认)、招呼语轮换、每日上限、轮询间隔、图片简历、自动打招呼、自动切下一个、自动回复及各服务商配置。

自动回复配置好后可以点「测试自动回复」,它只验证 API 是否可用,不会往聊天框发消息。

项目结构

.
├─ manifest.json          扩展声明
├─ advanced.html          高级设置窗口
├─ icons/                 图标(由 tools/generate-icons.mjs 生成)
├─ src
│  ├─ background.js       service worker:设置读写、开窗、模型请求代理
│  ├─ content.js          悬浮面板、职位解析、筛选、自动流程、自动回复
│  ├─ advanced.js         高级设置页逻辑
│  └─ shared
│     └─ settings.js      三个运行环境共用的设置定义与归一化
├─ tests/                 纯逻辑单测(node:test,无第三方依赖)
└─ tools/generate-icons.mjs

三个执行环境都通过 src/shared/settings.js 拿默认值和归一化函数,避免各写一份导致字段漂移。content script 通过 manifest 的 js 数组注入它,service worker 用 importScripts 引入,设置页用 <script> 引入。

设置的读写约定

  • chrome.storage.local 是唯一的共享状态
  • 每个页面只写自己负责的字段(增量 patch),不做「读全量 → 改几个字段 → 写全量」,避免并发覆盖投递计数
  • 内容脚本优先直读 storage,只有需要归一化或调用模型时才走消息通道,规避 service worker 休眠
  • API Key、Endpoint、Model、system prompt 只在 service worker 侧读取,boss-helper:get-settings 返回的子集里不含这些字段

开发

改完源码后:

  1. 到扩展管理页点「刷新 / Reload」
  2. 回 BOSS 页面整页强刷
  3. 观察面板状态条

检查与测试(无第三方依赖,不需要 npm install):

npm run check   # 四个源文件语法检查
npm test        # node:test 单测
npm run icons   # 重新生成图标

测试覆盖筛选引擎(关键词 / 地点 / 薪资 / 活跃状态)、设置归一化与增量写入、密钥隔离、模型请求错误分类、聊天气泡归属判定与面板状态文案。tests/content-logic.test.mjstests/background.test.mjsnode:vm 加载源码并注入最小的 DOM / chrome 桩,因此不需要浏览器环境。

面板样式集中在 buildStyles() 里,颜色全部走 CSS 变量,深色模式只覆盖 .panel 上的变量;高级设置页同理,变量定义在 :root。改配色时优先改变量,不要往组件规则里塞新的硬编码颜色。

已知限制

  1. BOSS 页面 DOM 经常变化,按钮、弹窗、上传入口都可能失效,需要按实际页面继续适配 SELECTORS
  2. 图片简历上传依赖页面暴露可用的 input[type=file],不保证所有账号和页面分组都能成功。
  3. 招聘者状态筛选依赖列表卡片上能提取到的文本,不是所有卡片都稳定带状态。
  4. 运行日志只存在内存里,关闭页面即清空;需要留存请用「复制」按钮。
  5. 聊天气泡归属优先按 class 词段判断,认不出时按气泡左右位置兜底;页面大改版后可能需要补充 SELF_MESSAGE_TOKENS / FRIEND_MESSAGE_TOKENS
  6. 扩展不会绕过站点限制。页面不给沟通时只会记录失败或暂停。

常见问题

改了代码但页面没变化:先在扩展管理页 Reload,再整页强刷 BOSS 页面。

提示没有命中职位:优先检查关键词是否过窄、地点是否过窄,以及高级选项里的薪资 / 公司 / 排除公司 / 招聘者状态是否卡得太死。面板的提示条会给出主要卡在哪一项。

沟通数量到上限还会继续点吗:不会。检测到上限弹窗后会自动暂停,并点掉提示框。

暂停后再开始,会把之前沟通过的再来一遍吗:不会。点「继续沟通」从当前进度接着跑;即使点「结束本轮」再重新开始,本次页面内已完成的职位也不会重复处理。

自动回复没反应:确认已开启开关、填了 API Key,并且当前聊天窗口最后一条消息来自对方。缺少 Key 时会暂停自动回复,填好后自动恢复。

免责声明

本项目仅用于个人学习和浏览器扩展开发研究。使用时请自行评估风险,并遵守目标网站规则与适用法律法规。

About

No description, website, or topics provided.

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages