DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

whishi47 /

whishi47/dsh-get-jobs

Verified

投简历还在四个招聘 App 里一个个点「打招呼」?装一个插件就好:Boss直聘 / 猎聘 / 51job / 智联 的岗位筛选、AI 打招呼、自动投递、投递记录导出 Excel,全在一个面板里。一条命令装好,不用装数据库、不用编译、不用手动起后端。⚠️ 仅个人学习参考与辅助求职,禁止商用。

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@d55ee1e7
dsh-get-jobs logo

每天手动点几百次「打招呼」?让它替你点。

dsh-get-jobs 把 Boss 直聘 / 猎聘 / 51job / 智联招聘 的求职投递, 做成了 DeepSeek Harness 里一个看得见、点得动的可视化面板。

一条命令装好 · 不用装数据库 · 不用编译 · 不用手动开后端 · 投过哪家全给你记下来

English · 简体中文 · 更新日志 · 常见问题

status build PolyForm Noncommercial Node JDK TypeScript React Spring Boot SQLite Playwright DSH


一句话说清楚:这东西到底有什么用?

你告诉它「我想投什么岗位、在哪座城市、哪些公司别投」,它就替你把四个招聘平台上的岗位筛出来、按你的条件打招呼、把投过的每一条都记成一张表,最后还能导出 Excel。 整个过程,你在一个面板里看得见、随时停得下来。

不用写代码,不用反复敲命令,不用自己配 Java 环境、装 MySQL、起浏览器。 插件第一次启动会自己把后端下载下来、自己拉起来,面板变绿了就能用。

没装之前,你大概是这么投简历的

步骤 手动做有多烦
找岗位 四个 App 来回切,同样关键词搜四遍,还得躲开已投过的和不想去的公司
打招呼 一家家点,开场白复制粘贴,想写得贴切点还得一条条改
记进度 靠备忘录、Excel 或者脑子,过两天就忘了投过哪家、有没有回音
换条件 想换个城市 / 关键词 / 薪资范围,又得从头再来一遍
跑环境 想用自动化脚本?先装 JDK、装数据库、编译、开浏览器、处理报错……

装了之后

上面那件事 现在怎么做
找岗位 在「投递配置」里填一次关键词 + 城市 + 薪资,四个平台统一按这套条件筛
打招呼 写一句默认招呼语,或者点一下 AI 润色 让它替你改写;也可以上传图片简历一起发
记进度 投过的岗位自动进「数据」页,按平台筛、一键导出 Excel
换条件 改一个输入框,重新点开始
跑环境 不用管。插件自己下载、自己启动、挂了自己重启

🖥️ 装好之后,你会看到 6 个页面

每个页面说人话解释一遍,不用猜:

页面 你能在这儿干啥
概览 一眼看后端是不是活着、系统状态正不正常、有没有报错
投递配置 填岗位关键词、城市、薪资、要投哪几个平台;设默认打招呼语(可一键 AI 润色);上传图片简历;把不想投的公司加进黑名单
运行 点「开始」就按你设的条件去投,随时能停;上面能设「今天最多投几份」(合计一份数、每个平台各一份数),投到这个数就自动收工;后端进程意外退出会自动按 3s / 10s / 30s 重试
数据 投过的岗位全在一张表里,按平台筛选、单平台或四平台合并导出 xlsx
简历 上传 PDF / DOCX / TXT / MD 简历,AI 读出你的经历生成投递配置草稿,预览改一改,一键写回
设置 填 AI 的 Key / 接口地址 / 模型名、维护公司黑名单(可导出 CSV)、看系统状态和诊断日志

🗄️ 数据是本机一个 SQLite 单文件(db/getjobs.db),不需要安装任何数据库服务,也不会把你的简历传到别人的服务器(AI 接口由你自己配置)。


✅ 谁适合装 / ❌ 谁别装(说实话,不吹)

适合你,如果:

  • 你正在海投,每天要重复搜岗位、点打招呼、记投递记录
  • 你已经在用 DeepSeek Harness,想把求职流程也收进同一个工作台
  • 你愿意花几分钟填一次 AI 配置和投递条件

别装,如果:

  • 你想要「一键拿 offer」——这是投递效率工具,不保证面试和结果
  • 你希望全程零配置——平台的登录态需要你自己完成,AI 打招呼也要你自己填 Key
  • 你打算拿它做商业服务 / 批量代投 / 售卖账号——明确禁止,见下方「风险与免责声明」
  • 你电脑上装不了 JDK 21 和 Node 20

⚠️ 风险与免责声明(先读这一节)

这是一个用浏览器自动化「模拟鼠标点击」来完成投递的工具。它没有任何办法保证你的账号不被平台风控、限流或封禁。如果你介意这一点,请不要安装、不要使用。

账号风险:没有"绝对安全"

  • 投递动作由 Playwright 驱动真实浏览器完成:打开岗位页 → 点「打招呼」→ 输入文字 → 发图片简历,本质是模拟鼠标点击与键盘输入,不是平台官方 API。
  • 各招聘平台的用户协议通常不鼓励自动化操作。使用后可能出现:验证码变多、打招呼被限流、功能受限、账号被临时或永久封禁。
  • 降低频率只能降低概率,不能消除风险,不存在所谓"安全阈值"。
  • 如果这个账号对你很重要(唯一求职账号、已积累大量沟通记录),请不要用任何自动化工具碰它。

结果不保证

  • 不保证投递成功、不保证 HR 回复、不保证面试或 offer。
  • 不保证岗位数据完整准确 —— 数据来自平台页面,可能缺字段;平台改版也可能让选择器失效,届时需要更新版本。
  • 不保证 AI 生成的招呼语、简历评分、修改建议符合你的预期,也不保证它不编造内容 —— 发出去之前请自己过一遍。

责任与关系

  • 使用本项目即表示你理解并自愿承担上述风险;账号处罚、数据丢失、投递纠纷等后果由使用者自行承担,作者不承担责任。
  • 本项目与 Boss 直聘、猎聘、51job、智联招聘 及其运营方没有任何隶属、合作或背书关系,相关名称与商标归各自所有者。
  • 请遵守各平台用户协议与当地法律法规;禁止任何商业用途(见许可证)。

🔐 安全与隐私

数据存在哪(都在你自己电脑上)

数据 位置 注意
AI Key、模型配置 db/getjobs.db 的 config 表 明文存储,能读这个文件的人就能看到 Key
投递记录、岗位数据 同一个 SQLite 文件 含公司名、岗位名、薪资
图片简历 / 简历长图 data/boss/resume/resume.* 明文图片
运行日志 target/logs/get-jobs.log 已脱敏,但仍可能含岗位与公司信息
平台登录态 browser-data/(Playwright 用户目录) 等同于账号凭据,泄露即等于账号被接管

⚠️ 不要把 db/getjobs.db、browser-data/、data/ 打包发给别人或上传网盘。要分享配置,只发截图或手动抄字段。

什么会上网

目标 触发时机 发送内容
你自己配置的 AI 接口(默认 api.deepseek.com) AI 打招呼 / 简历解析 / 简历评估 / AI 润色 简历文本、岗位 JD、个人介绍
招聘平台(Boss / 猎聘 / 51job / 智联) 登录、搜索、投递 你的账号操作与聊天内容
GitHub Release 首次启动下载 jar / 数据库模板 无用户数据

除此之外不上传任何内容。插件不收集遥测,作者也拿不到你的数据。

本机服务边界

  • 后端只监听 127.0.0.1:9527,不对局域网或公网开放。
  • 但它没有登录鉴权:同一台机器上的任何程序都能调用这些接口(包括读取明文配置)。这是本机工具的常见取舍,机器上有不受信任软件时请自行评估。
  • 不要把 9527 通过反向代理、内网穿透暴露出去。

源码是明文的

插件是明文 TypeScript / JavaScript,后端是明文 Java。好处是你可以自己审计;代价是任何能改这些文件的人都能改它的行为。请只从本仓库或官方 Release 安装,不要用第三方重新打包的版本。


📌 已知边界(不保证什么)

  • Beta 状态:版本号还是 0.x,配置项与接口可能变,升级前看一眼 CHANGELOG。
  • 平台改版即可能失效:招聘平台前端一改,选择器、按钮、字段都可能匹配不到;这不是稳定 API,需要跟着修。
  • 长图是重排原文:按字符/标点折行,不是设计过的简历模板;极长简历会缩字号或截断。
  • AI 输出仅供参考:招呼语、评分、建议都可能不准确,发出去之前自己看一遍。
  • 未验证的环境:主要在 Windows + JDK 21 + Node 20 上验证;macOS / Linux 未做完整回归,路径与字体可能需要调整。

🚀 装,真的只要三步

第 0 步:先确认电脑上有这两个东西

打开终端,敲两行:

java -version    # 需要 JDK 21
node -v          # 需要 Node 20 或更高
  • 缺 JDK:装一个 JDK 21,并把 JAVA_HOME 指过去(或在配置里写 javaHome)。
  • 缺 Node:装 Node 20+(package.json 的 engines 就是 >=20)。
  • 网络:第一次启动要下载后端,需能访问 GitHub Release(约 265MB,只下一次)。

第 1 步:一条命令装插件

dsh plugin --profile web add "github:whishi47/dsh-get-jobs#master"

💡 不用先 clone、不用 npm install、不用编译:编译好的 lib/ 已随仓库发布,安装器即使拦截构建脚本也能直接加载;scripts/prepare.mjs 只在产物缺失时才兜底重建。

第 2 步:等它自己准备好(第一次要等一小会儿)

首次启动它会自动按顺序做完这些事,你不用插手:

下载 backend.jar(约 265MB)→ 下载 SQLite 模板库(136KB,只有表结构、无数据)
→ 缓存到本地 → java -jar 拉起后端 → 面板状态变成「就绪」

下载过一次就缓存在本地,之后离线也能用。求职功能还需要 Playwright 浏览器,后端第一次投递时会自动下载。

第 3 步:打开面板,按这个顺序点一遍(首次使用清单)

  1. 设置 → AI 设置:填你自己的 AI Key / 接口地址 / 模型名(不填的话,AI 打招呼和简历解析用不了)
  2. 简历:上传一份 PDF / Word 简历,让 AI 生成投递配置草稿,检查后写回
  3. 投递配置:填关键词、城市、薪资,选平台;写一句默认招呼语(可点「AI 润色」);要发图片简历就在这里上传
  4. 运行:点开始,看状态;想停随时停
  5. 数据:看看投了哪些,导出 Excel 存档;不想再投的公司在「设置 → 黑名单」里加掉

❓ 小白常见问题(卡住先看这里)

问题 怎么办
一直卡在「正在下载后端」 第一次要下 265MB,等一会儿。若网络访问 GitHub 慢,可手动下载 backend.jar 后用 jarPath 指定本地文件,或把 jarUrl / dbUrl 改成可达的镜像地址
面板一直显示「未就绪」 多半是 JDK 没找到。检查 java -version 是不是 21,或在配置里显式写 javaHome
提示找不到后端 jar 默认从 GitHub Release 下载;也可以自己构建 backend/ 后用 jarPath 指过去
AI 打招呼语没生成 / 写得很怪 先去「设置 → AI 设置」确认 Key、接口、模型填对了;招呼语太短可以在「投递配置」里点 AI 润色 让它改写
勾了「发送图片简历」但没发出去 需要在「投递配置」里先上传简历图片(有预览缩略图才算成功),不是只勾开关
要装 MySQL / Redis 吗? 都不用。数据就一个 SQLite 文件
AI 会不会很费钱?怎么控制? 默认已经开了三层保护:单次输出上限 300 token、单次运行/每日调用上限、招呼语批量池化(一批岗位共用一组,调用次数从「每岗一次」降到「每批一次」)。「设置 → AI 设置」能看到今日和本次运行用了多少 token,预算随时可调
它会不会突然停? 三种情况会自动停:达到今日目标、不在允许的时段、被平台弹了安全校验(进冷却)。运行页都会写清楚原因,不是卡死
怎么控制一天投多少份? 运行页的「今日投递目标」:合计填一个数(比如 30),下面四个平台各填一个数(比如 Boss 20、猎聘 10,填 0 表示该平台不单独限制)。哪一级先到就按哪一级停,不会再多投一份。改完立刻生效,不用重启后端
为什么我的招呼语开始重复了? 默认开启了「批量生成招呼语」:一次生成一组轮换使用,用来压成本。想每个岗位都单独生成,去「设置 → AI 设置」关掉这个开关即可(更个性化,也更费钱)
想让 AI 帮我筛掉不匹配的岗位? 「设置 → AI 设置」打开「AI 岗位匹配过滤」:每个岗位会先花一次很小的调用问模型「匹配吗」(只输出 yes / no,JD 截断到 1200 字),不匹配就跳过。默认关闭,因为调用次数会随投递数增加
简历评估会额外花钱吗? 会消耗 1 次大模型调用(约为一次招呼语生成的量级)。不点「AI 评估打分」就不会产生这部分费用
简历长图是什么?有什么用? 把上传的简历按手机阅读排成一张 1080 宽的长图,并自动写成 Boss 的「图片简历」——HR 在聊天里直接看到内容,不用下载附件。生成后可下载到本地,也可以随时重新生成
会不会把我的简历 / Key 传到别人服务器? 数据存本机;AI 请求发往你自己配置的接口地址。别把运行时的 db/getjobs.db 上传或分享出去,里面可能有你的配置
会不会封号? 有风险。请控制频率、遵守平台规则,别用它做批量代投。风险自担
我想改代码 / 二次开发 看下面的「开发者模式」,克隆仓库后 npm install --legacy-peer-deps 即可
我是 Mac / Linux 能用吗? 面板是网页,后端是 Java;JDK 21 与 Node 20 到位即可,路径配置按你的系统来

✨ 功能清单(详细版)

分类 能力 说明
省事 一键后端 自动探测 /api/health,没起来就 java -jar 拉起;缺 jar 时回退 gradlew 构建
省事 自动重启 进程意外退出按 3s / 10s / 30s 退避重试,最多 3 次,就绪后计数归零
省事 干净清理 只结束本插件拉起的进程,你原本在跑的实例不受影响
省事 状态可见 健康端点供面板读取,日志尾部脱敏后可看诊断信息
投递 四平台配置 Boss 直聘 / 猎聘 / 51job / 智联,参数分平台填、字段少时自动单列排版
投递 AI 打招呼 可一键润色默认招呼语;后端按岗位信息生成更贴切的开场白
投递 图片简历 上传简历图片并随打招呼一起发送
投递 黑名单 公司黑名单分页管理(每页 10 条)、CSV 导出(带 BOM,Excel 不乱码)
数据 岗位表 归一化岗位数据,单平台 / 四平台合并,xlsx 流式写出
简历 解析与草稿 PDF / DOCX / TXT / MD → 大模型出 AI 配置草稿 → 预览编辑 → 一键写回
面板 原生六页 概览 / 投递配置 / 运行 / 数据 / 简历 / 设置,无 iframe、无额外端口,每页都能滚动
简历 AI 评估打分 总分 + 五维评分 + 优势 / 待改进 / 修改建议 + 关键词命中,可导出独立 HTML 报告(打印即成 PDF)
简历 简历长图 把简历排成 1080 宽长图,一键同步为 Boss 图片简历,投递时直接发送;也可下载到本地
成本 用量与预算 今日 / 本次运行的调用次数与 token 可见;单次运行与每日限额可调,超限自动回退固定招呼语
投递 每日投递目标 合计目标 + 四个平台各自目标两级配额,任一到达就自动停投;支持「只在 9-23 点投」这类时间段限制;今日进度和「重置今日计数」都在运行页
投递 风控冷却 一旦被平台弹安全校验,自动冷却 N 分钟(默认 30),期间拒绝启动;运行页可看到剩余时间并手动解除
设置 配置备份与迁移 一键导出全部配置为 JSON(默认不含 API Key / webhook),换电脑或重装时导入即可恢复,空值不会覆盖已有 Key
设置 每日汇报 每天固定时间把「投了多少份 / AI 花了多少 token」推到企业微信,也可随时手动推一条
对话 聊天里启停 提供后端状态 / 启停工具,受 mutations 闸门约束(默认需确认)

📂 项目里都有啥

dsh-get-jobs/
├── assets/
│   └── logo.png             # 项目图标
├── src/
│   ├── client/              # 浏览器半边:React 原生面板(六页)
│   │   ├── App.tsx
│   │   ├── theme.ts
│   │   └── pages/           # 概览 / 投递配置 / 运行 / 数据 / 简历 / 设置
│   ├── backend/             # 后端托管:探测 / 拉起 / 重启 / 下载
│   │   ├── provision.ts     # jarUrl / dbUrl 来源 + 下载
│   │   ├── supervisor.ts    # 进程监管与自动重启
│   │   └── jdk.ts           # JDK 21 探测
│   ├── config.ts            # 插件配置 schema
│   ├── layout.ts            # 后端项目自动发现
│   └── api/                 # 前后端接口封装
├── backend/                 # Java / Spring Boot 后端源码(JDK 21)
├── lib/                     # 预构建产物(随仓库发布,公开安装开箱即用)
│   ├── index.js / index.d.ts
│   ├── client.js            # 浏览器半边(ModuleLoader 包裹)
│   └── backend/             # Node 半边编译产物
├── scripts/prepare.mjs      # 安装兜底:产物齐全即跳过构建,缺失才尝试构建
├── test/                    # Node + 浏览器真实挂载测试
├── cordis.patch.yml         # 插件行注入配置层
├── CONTRIBUTING.md          # 贡献指南(PR 流程 / 提交规范)
├── CHANGELOG.md             # 更新日志
├── README.md                # 中文文档(本文件)
├── README.en.md             # English documentation
├── package.json
└── LICENSE

⚙️ 配置项(大多数人不用改)

默认配置就能跑。只有下面这些情况才需要改:JDK 不在标准位置、网络下不动 GitHub、或者后端已经跑在别的端口。

在 profile 的 cordis.patch.yml 里按 id 覆盖:

- id: dsh-get-jobs
  name: dsh-get-jobs
  config:
    baseUrl: 'http://127.0.0.1:9527'
    javaHome: 'C:/Program Files/Java/jdk-21'
    autostart: true
    mutations: confirm
字段 默认 什么时候要动它
baseUrl http://127.0.0.1:9527 你的后端跑在别的端口
jarUrl GitHub Release 的 backend.jar 直连 GitHub 慢,换镜像地址
dbUrl GitHub Release 的 getjobs.db.template 同上
dataDir <DSH_HOME|~>/.dsh/get-jobs 想换下载产物存放位置
jarPath 自动 已有本地 jar,跳过下载(最省事)
projectDir 自动向上发现 想手动指定后端源码目录
javaHome 自动探测 JDK 21 系统找不到 JDK,或装了多个版本
autostart true 不想插件一挂载就启动后端
timeoutMs 15000 后端响应慢、总超时
mutations confirm 启停策略:confirm 需带 confirm: true,deny 拒绝,allow 放行

🌏 后端 jar 与数据库模板默认都从 GitHub Release 直连下载,首次拉一次后本地缓存复用。网络不便时可把 jarUrl / dbUrl 指向可达地址,或用 jarPath 指定本地 jar 完全跳过下载。


🛠️ 想改代码?开发者模式

dsh plugin --profile <profile> add /path/to/dsh-get-jobs   # 换成本仓库的本地绝对路径
dsh --profile <profile> --dump-config | grep dsh-get-jobs   # 期望看到 "# == dsh-get-jobs"

包内 cordis.patch.yml 会把插件行插进配置层;package.json 的 dsh.bundle.patch 指向它。

npm install --legacy-peer-deps
npm run build      # tsc(Node 半边)+ esbuild(浏览器半边)
npm run gates      # 包名 / patch / exports / 依赖 / 产物 / client / README 门禁
npm test           # 断言:Node + 浏览器真实挂载
npm run check      # build + gates + test 一次跑完

📌 约定(来自实际事故):面板必须有真实挂载测试,只做构建检查等于没测;面板必须有错误边界且边界在面板之上;slot 注册用 ctx.inject(['slots'], …),失败只丢面板、不阻断 boot;改写 package.json 一律用无 BOM 的 UTF-8。


🚀 后端有新版本怎么发布

后端源码随本仓库 backend/ 目录提供(纯 Java / Spring Boot,JDK 21)。每次后端有更新:

  1. 打包(JDK 21):
    cd backend
    ./gradlew bootJar --no-daemon
    
  2. 同步产物:把 backend/build/libs/*.jar 复制为 release-assets/backend.jar;backend/assets/getjobs.db.template 已只含表结构,直接复制为 release-assets/getjobs.db.template(切勿用运行时的 db/getjobs.db,其中含 API Key 与登录态)。
  3. 上传 GitHub Release:gh release upload <version> release-assets/backend.jar release-assets/getjobs.db.template --clobber
  4. 如需新版本,打新 tag(如 v0.3.1)并同步更新 CHANGELOG.md。

插件运行时默认从 GitHub Release 拉取这两个文件;网络不便可在配置里改 jarUrl / dbUrl,或用 jarPath 指向本地 jar。


🤝 参与贡献

欢迎 Issue 反馈与 Pull Request。流程与提交规范详见 CONTRIBUTING.md。

📑 更新日志

所有重要变更见 CHANGELOG.md。

📜 许可证

  • 协议文件:PolyForm Noncommercial 1.0.0,明确禁止任何商业用途,仅允许个人学习交流、技术参考与辅助求职投递之非商业使用、复制、修改与再分发。
  • 使用边界:如用于任何商业目的,须事先取得作者书面授权。
  • 署名要求:再分发须保留原作者署名(mattan)与许可证声明,不得移除。

Copyright © 2026 mattan. All Rights Reserved.

—/ 5

No ratings yet

Verified DSH bundle

Commit d55ee1e7e464

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout