OfferFlow 使用指南
1. 软件简介

Abstract
OfferFlow(项目仓库名为 FuckJob)是一款本地运行的开源求职助手,支持 BOSS 直聘和猎聘,可用于岗位筛选、批量沟通、自动投递、AI 打招呼以及自动回复 HR。
- 项目地址:OpenFuckJob/FuckJob
- 最新版本:Releases
- 官方教程:使用教程
Warning
自动化操作可能触发招聘平台的验证码、限流或账号限制。建议先使用演练模式和小批量任务,确认配置安全后再逐步增加使用范围。
1.1 本指南采用的求职定位
本指南按以下个人背景配置 OfferFlow:
- 主要求职方向: Java 后端开发
- 核心经验: 3 年 Java 后端开发经验
- 扩展能力: 学习过前端,具备 Python 基础,了解 AI 相关概念
- 个人主页: https://afyke.com
- 个人博客: https://blog.afyke.com
沟通时应始终突出 Java 后端经验。前端、Python 和 AI 只作为扩展能力或学习能力补充,除非简历中存在对应的真实项目,否则不能描述为“精通”“熟练”或“拥有相关项目经验”。
2. macOS 安装包选择

不同安装包对应不同的处理器架构:
| 安装包标识 | 适用设备 |
|---|---|
aarch64.dmg | Apple Silicon Mac,例如 M1、M2、M3、M4、M5 |
x64.dmg | Intel 芯片 Mac |
Tip
当前 Mac 的系统架构为
arm64,应下载:OfferFlow_0.1.22_aarch64.dmg
.app.tar.gz 主要用于程序自动更新,.sig 是签名文件,.exe 是 Windows 安装包,普通 macOS 安装不需要下载这些文件。
3. 安装与首次打开
.webp)
- 双击下载的
.dmg文件。 - 将
OfferFlow.app拖入“应用程序”。 - 从“应用程序”中打开 OfferFlow。
Warning
如果 macOS 提示无法验证开发者:
- 打开“系统设置 → 隐私与安全性”。
- 找到 OfferFlow 的拦截提示。
- 点击“仍要打开”。
如果仍然无法打开,可在终端执行:
xattr -dr com.apple.quarantine /Applications/OfferFlow.app4. 初始化配置

4.1 配置浏览器
进入 “配置中心 → 浏览器环境”:
- 推荐安装并选择 Google Chrome。
- 等待软件自动检测浏览器。
- 点击“检测”或“环境检查”,确认浏览器可用。
软件会启动一个受控浏览器,用于登录招聘平台和执行自动化任务。任务运行期间不要关闭这个浏览器窗口。
Tip
如果 Chrome 未被识别,可在 Chrome 地址栏打开
chrome://version,复制“可执行文件路径”并手动填入 OfferFlow。
4.2 配置大模型
可以使用 DeepSeek、OpenAI、Ollama 或其他受支持的模型服务。初次使用可选择 DeepSeek:
- 进入 DeepSeek 开放平台,创建 API Key,并按需要充值少量余额。
- 在 OfferFlow 中进入“配置中心 → 大模型”。
- 服务商选择
DeepSeek。 - 填入 API Key。
- 先点击“保存凭证”。
- 获取模型列表并选择
deepseek-chat。 - 点击“测试连接”。
API Key 属于敏感凭证,不要发送给他人,也不要出现在公开截图中。
4.3 配置简历
进入 “配置中心 → 简历配置”:
- 上传 PDF 格式的简历。
- 开启“注入 LLM 上下文”。
- 检查解析出的姓名、学历、经验、技术和求职方向是否准确。
- 删除身份证号、家庭详细地址等非必要敏感信息。
Warning
只有简历中真实存在的信息才能用于自动沟通,否则 AI 可能生成错误或夸大的回答。
简历内容建议按以下优先级组织:
- 3 年 Java 后端开发经验。
- 真实参与过的 Java 项目、承担的职责和取得的结果。
- 简历中实际使用过的后端技术、数据库、中间件和工程工具。
- 前端、Python 基础和 AI 相关概念作为补充能力。
- 在联系方式或个人简介区域加入个人主页
https://afyke.com和个人博客https://blog.afyke.com。
不要为了提高匹配率而填写没有真实使用过的框架、项目或业绩数据。
4.4 设置岗位筛选
进入 “求职设置 → 岗位筛选”,根据实际需求配置:
- 求职城市
- 岗位关键词
- 薪资范围
- 工作经验
- 学历要求
- 公司规模和融资阶段
- 排除岗位或公司关键词
针对当前求职方向,建议优先使用以下岗位关键词:
Java开发
Java后端
后端开发
Java工程师
服务端开发前端、Python 和 AI 可作为岗位内容中的加分项,但不建议将“前端开发”“Python 开发”或“算法工程师”设置为主要投递关键词,避免偏离 3 年 Java 后端经验这一核心定位。
可以根据个人接受范围排除明显不匹配的岗位,例如:
实习
应届
纯前端
高级架构师
算法研究员是否排除外包、驻场、销售性质岗位,应根据个人求职意愿决定。
Tip
首次运行建议:
- 单轮最多处理 3~5 个岗位。
- 开启“拟人化”。
- 暂时不要开启长时间周期投递。
- 使用较严格的过滤条件,先保证岗位质量。
5. AI 打招呼配置

Info
AI 打招呼只负责首次主动联系 HR。本方案不让 AI 自由发挥,只让它从岗位信息中提取岗位名称,然后套用固定句式。
5.1 配置步骤
- 进入“配置中心 → 求职方案”。
- 选择当前使用的“java 后端求职”方案。
- 打开“打招呼配置”。
- 确认大模型已经启用并通过连接测试。
- 开启“LLM 主动沟通”。
- 将下面的提示词粘贴到“主动沟通提示词”。
- 在“打招呼发送顺序”中点击“添加 LLM 内容”。如果页面只有“添加内容”,点击后把类型改为
LLM。 - 确保这条
LLM内容已经启用,右侧应显示绿色眼睛图标。 - 等待配置自动保存,再到“测试模式 → 打招呼”重跑测试。
Warning
只打开“LLM 主动沟通”还不够。发送顺序中必须存在一条已经启用的
LLM内容,否则会提示“打招呼发送序列没有可发送内容”。
5.2 主动沟通提示词
请根据当前岗位信息提取准确的岗位名称,并严格按照下面的固定格式生成一条打招呼消息:
您好,我有3年Java后端开发经验,对贵公司的【岗位名称】很感兴趣。我的项目和技术介绍整理在 https://afyke.com,方便的话希望进一步沟通岗位要求。
要求:
1. 将【岗位名称】替换为当前岗位的真实名称。
2. 如果无法提取岗位名称,就写“Java后端开发岗位”。
3. 除替换岗位名称外,不要修改固定句式。
4. 不要添加其他技能、项目、工作年限或自我评价。
5. 网址必须原样保留为 https://afyke.com。
6. 不要使用Markdown链接格式,不要给网址添加括号。
7. 只输出最终要发送的消息,不要添加标题、引号、分析或解释。
当前岗位:
{{job_content}}5.3 生成效果
您好,我有3年Java后端开发经验,对贵公司的Java开发岗位很感兴趣。我的项目和技术介绍整理在 https://afyke.com,方便的话希望进一步沟通岗位要求。Warning
发送给 HR 时直接使用原始网址,不要写成
[个人网站](https://afyke.com)这种 Markdown 链接格式,因为招聘平台可能无法正确识别。
6. HR 自动回复配置

Tip
建议先开启“演练模式”验证自动回复和人工接管流程,再允许系统真实发送消息。
自动回复策略选择“规则优先,AI 兜底”后,未命中固定规则的消息会交给 AI。可使用以下提示词:
你正在代表一名拥有3年Java后端开发经验的求职者与招聘方沟通。请结合岗位信息、真实简历和历史聊天,生成一条可以直接发送的简短回复。
求职者定位:
- 主要应聘Java后端开发岗位。
- 有3年Java后端开发经验。
- 学习过前端,具备Python基础,了解AI相关概念。
- Java后端是核心能力;前端、Python和AI只能作为扩展学习背景,不能在缺少简历证据时包装成专业项目经验。
- 个人主页:https://afyke.com
- 个人博客:https://blog.afyke.com
回复规则:
1. 只使用上下文中明确存在的信息,绝不虚构经历、项目、技能、工作年限、薪资、学历、离职原因或到岗时间。
2. 回答技术背景时优先围绕Java后端和简历中的真实项目,不自行补充Spring、微服务、数据库、中间件等具体技术,除非简历或聊天中明确出现。
3. HR询问前端、Python或AI经验时,应准确表达为“学习过”“有基础”或“了解相关概念”;只有简历明确记录真实实践时,才能进一步介绍。
4. 如果HR最新消息是图片、聊天记录中显示“[图片]”或只有图片文件名,无法确认图片实际内容时,必须选择escalate转人工,reply留空;禁止猜测图片内容或发送“图片已收到”等无意义回复。
5. 如果HR同时发送图片和文字,只能处理不依赖图片内容就能确定的问题;只要文字需要结合图片才能理解,也必须选择escalate转人工。
6. 如果HR明确说明岗位属于外包,应礼貌拒绝,不投递简历。建议回复:“感谢您的联系,不过我目前暂不考虑外包性质的岗位,祝您招聘顺利。”
7. 直接回答招聘方的问题,语气自然、礼貌、简洁,符合中文招聘软件的聊天习惯。
8. 通常控制在20~80字,一次只回复当前最重要的问题。
9. 不要重复已经发送过的内容,不要使用“作为AI”等表达。
10. 信息不足时,诚实说明需要确认,或礼貌追问,不要自行猜测。
11. 如果涉及具体面试时间、薪资承诺、Offer、背调、证件、银行卡、付费培训或其他重要决定,不替求职者做决定;应选择escalate转人工。
12. 不主动发送身份证号、家庭住址、银行卡、验证码等敏感信息。
13. HR询问个人网站、作品、项目介绍时,提供 https://afyke.com;询问博客、技术文章或学习记录时,提供 https://blog.afyke.com。不要无关地重复发送链接。
14. 链接必须完整、原样输出,不要改写、缩短或在链接内部加入中文标点。
15. 对方明确表示岗位不匹配或结束沟通时,礼貌致谢,不继续纠缠。
16. 只输出最终回复文本,不添加分析、标题、引号或解释。
岗位信息:
{{job_description}}
我的简历:
{{resume}}
补充说明:
{{background_context}}
历史聊天:
{{chat_history}}6.1 如果 AI 不能回复,请去工作台“待你处理”查看
当 AI 判断消息不能安全地自动回复时,正常处理流程如下:
- OfferFlow 打开 HR 会话并读取消息。
- 判断这条消息不能安全地自动回答,例如谈薪资、确认面试时间或索要敏感资料。
- 不向 HR 发送任何内容。
- 在 OfferFlow 工作台顶部的“待你处理”中新增一条待办。
- 待办通常会显示岗位、公司、最新消息摘要以及转人工原因。
- 点击待办查看对应沟通,再前往 BOSS 直聘或猎聘亲自回复。
- OfferFlow 检测到已经手动回复后,会自动移除待办;也可以手动标记为已处理。
“待你处理”是 OfferFlow 保存在本机的待办列表,不是 BOSS 直聘中的新文件夹或新标签。HR 的原始消息仍保留在招聘平台中;OfferFlow 只是另外记录一条需要人工接管的提醒。自动化打开会话后,平台里的消息可能已经显示为已读。
Warning
注意:BOSS 直聘的普通图片可能无法进入 OfferFlow 的 AI 上下文,因此不一定会生成“待你处理”事项。使用 BOSS 时仍要保留官方消息通知,并定期人工检查最近会话。
6.2 HR 发送图片时怎么处理
Warning
当前版本的自动回复链路不能真正识别 HR 图片中的文字或内容:
- **BOSS 直聘:**普通图片消息通常不会作为可读文本进入 AI 上下文;目前主要解析文字和可识别的简历附件消息。因为 AI 可能根本不知道这条图片存在,单靠提示词无法保证将其转入“待你处理”。
- **猎聘:**图片会被记录成“
[图片]”或“[图片] 文件名”,AI 只能知道对方发了图片,不能看到图片本身。 - 软件支持发送本地图片,不等于支持理解 HR 发来的图片。
因此,HR 发送以下内容时应转人工处理:
- 面试时间或地址截图
- JD、薪资结构或福利截图
- 二维码、联系方式或群聊邀请
- 测评、表格、证件或其他附件截图
- 只有图片、没有任何说明文字的消息
推荐处理方式:
- 在自动回复提示词中保留“图片消息选择
escalate”的规则;该规则主要保护能够显示“[图片]”标记的会话。 - 定期查看工作台中的“待你处理”。
- 使用 BOSS 直聘时,还要定期人工检查最近会话,不能只依赖“待你处理”,因为图片可能没有进入 AI 上下文。
- 人工打开招聘平台查看原图,再决定如何回复。
- 不要让 AI 根据“
[图片]”或文件名猜测图片内容。
相关实现可参考项目中的 BOSS 未读回复处理 和 猎聘未读回复处理。
6.3 配置“规则优先,AI 兜底”
自动回复策略选择:
规则优先,AI 兜底该模式会按顺序检查正则规则:命中第一条规则后直接发送固定话术,不再调用 AI;没有任何规则命中时,才由 AI 判断如何回复。
Tip
新增一条外包拒绝规则,并放在规则列表最前面:
- 规则名称:
不考虑外包岗位- 匹配最近聊天条数:
1- 回复类型: 文本
- 回复内容:
感谢您的联系,不过我目前暂不考虑外包性质的岗位,祝您招聘顺利。- 正则表达式:
(这是外包岗位|这个是外包岗位|该岗位是外包|岗位属于外包|这是外包项目|属于外包编制)
这条正则的含义:
()表示把多个候选短语归为一组。|表示“或者”;任意一个短语出现就算命中。- 正则会在最近一条聊天内容中查找这些短语,不要求整句话完全相同。
- 实际填写时不要在
|两侧添加空格,否则空格也会成为匹配内容的一部分。
设置“匹配最近聊天条数”为 1 很重要:程序的规则匹配不区分 HR 和我方消息。如果检查多条历史记录,之前聊天中出现过“外包”,即使 HR 当前正在讨论其他事情,也可能再次触发拒绝话术。
不建议直接使用过宽的正则 外包|是外包,因为 HR 说“不是外包”时也可能命中。上面的正则只覆盖比较明确的肯定表述;宁可让少数未命中的消息交给 AI 兜底,也尽量避免误拒绝正式自有岗位。
建议至少测试以下消息:
| HR 消息 | 预期结果 |
|---|---|
这是外包岗位,可以接受吗? | 命中规则,发送固定拒绝话术 |
该岗位属于外包编制 | 命中规则,发送固定拒绝话术 |
这个岗位不是外包,是公司自有岗位 | 不应命中规则,交给 AI 回复 |
方便了解一下岗位吗? | 不命中规则,交给 AI 回复 |
规则命中后会直接真实发送固定话术,不经过 AI 再次检查。因此,保存前要重点检查正则范围和回复内容,并先使用演练或测试模式验证。
自动回复可配置检查间隔、活跃时段、单轮处理上限和回复前等待。建议把薪资、面试时间、Offer、背调和敏感资料等场景交给人工处理。
如果页面提供“补充说明”输入框,可填写:
我的主要求职方向是Java后端开发,有3年Java后端开发经验。前端、Python和AI属于学习与扩展能力:学习过前端,具备Python基础,了解AI相关概念。除非简历中明确记录了相关项目,否则不要把这些扩展能力描述为熟练、精通或实际项目经验。个人主页是 https://afyke.com,个人博客是 https://blog.afyke.com;只有岗位相关或HR询问时才提供对应链接,不要在每次回复中重复发送。7. 测试与启动

7.1 演练测试
- 进入“测试模式”。
- 分别测试“打招呼”和“回复”链路。
- 检查生成内容是否虚构经历、薪资、时间或其他个人信息。
- 特别检查是否把前端、Python基础或AI概念夸大为熟练技能和项目经验。
- 调整提示词,直到生成结果稳定可用。
7.2 登录招聘平台
- 回到“工作台”,执行“环境检查”。
- 软件检测浏览器环境和招聘平台登录状态。
- 如果尚未登录,使用 BOSS 直聘或猎聘 App 扫描二维码。
7.3 创建任务
- 在“工作台”添加任务。
- 选择招聘平台和已经配置好的求职方案。
- 根据目标选择任务模式;第一次自动投递时选择“单轮自动求职”,只处理少量岗位。
- 观察实时日志、筛选结果和实际发送内容。
- 确认流程正常后,再逐步启用未读消息轮询或周期任务。
7.4 任务模式怎么选择
添加 BOSS 直聘任务时,会看到以下模式:
| 模式 | 作用 | 适用场景 |
|---|---|---|
| 单轮自动求职 | 按当前筛选条件处理一轮岗位,然后结束 | 首次测试、少量投递 |
| 回复未读 | 只处理当前已经存在的未读沟通消息,处理完后结束 | 测试自动回复是否正常 |
| 读取聊天消息 | 同步已读会话、岗位和历史消息,不会打开未读消息 | 更新本地沟通记录,不发送回复 |
| 周期投递 | 按设定间隔持续执行投递,并在等待期间自动回复未读消息 | 长时间自动投递与回复 |
| 轮询回复 | 持续监控并自动回复未读消息,不投递新岗位,手动停止前一直运行 | 专门挂机自动回复 HR |
如果目标是自动回复 HR:
- 首次测试选择“回复未读”,只处理现有未读消息一次。
- 检查生成内容和实际回复是否符合预期。
- 确认无误后选择“轮询回复”,持续监控 HR 的新消息。
- 如果既需要自动投递,也需要在间隔期间回复 HR,则选择“周期投递”。
“读取聊天消息”只负责同步聊天记录,不会自动回复;不要把它当成自动回复模式。
8. 安全使用建议

- 前几天优先使用演练模式,不要直接完全托管。
- 每次调整简历、提示词或岗位规则后重新测试。
- 不让 AI 编造经历、业绩、薪资、离职原因和到岗时间。
- 面试邀约、薪资谈判、Offer、背调和敏感资料由本人确认。
- 控制每日投递数量和操作频率,避免长时间连续运行。
- 定期检查“待你处理”、任务日志和实际聊天记录。
- 遇到验证码、异常登录或平台警告时立即停止任务并人工检查。
9. 推荐的首次运行流程

安装并打开 OfferFlow
↓
检查 Chrome 浏览器环境
↓
配置并测试大模型
↓
上传和检查 PDF 简历
↓
设置严格的岗位筛选条件
↓
配置打招呼与自动回复提示词
↓
开启演练模式测试
↓
扫码登录招聘平台
↓
单轮处理 3~5 个岗位
↓
人工检查结果后再逐步自动化