1. 项目概述:一个AI驱动的求职自动化中枢
如果你正在找工作,或者考虑换工作,大概率经历过这样的场景:每天在LinkedIn、Indeed、Glassdoor等十几个招聘网站上反复刷新,看到感兴趣的职位,先要花半小时研究岗位描述,再花一小时根据JD(职位描述)修改简历,然后填写冗长的申请表格,最后还得手动记下申请了哪家公司、什么职位、申请日期,生怕错过后续的跟进。整个过程繁琐、重复,且极其消耗精力。更头疼的是,当你投了上百份简历后,收到回复的寥寥无几,你甚至不知道问题出在哪里——是简历不够匹配,还是投递的时机不对,或是岗位本身就不靠谱?
JobForge 正是为了解决这些痛点而生的。它不是一个简单的简历生成器,也不是一个广撒网的“海投”机器人。相反,它是一个构建在OpenCode平台之上的、由AI智能体(Agents)驱动的完整求职自动化管道。你可以把它理解为你私人的、24小时在线的求职策略师兼执行助理。它的核心目标不是帮你投递更多简历,而是帮你更聪明地投递,将有限的精力聚焦在那些真正匹配、成功率高、值得投入的机会上。
这个项目的核心逻辑是“质量优于数量”。它通过一套统一的、包含10个维度的加权评分系统,对每一个职位机会进行深度评估,量化其与你的匹配度。然后,基于评估结果,自动生成针对该职位优化的、能通过ATS(求职者追踪系统)筛选的简历PDF。整个过程,从你粘贴一个招聘链接开始,到生成评估报告、定制简历、并自动将申请记录到追踪器中,只需要几秒钟。它还能帮你扫描预设的招聘门户网站,自动去重,批量处理多个职位,管理后续跟进,甚至在收到拒信后进行分析,帮你找出模式、改进策略。
简单来说,JobForge 将求职从一个依赖运气和体力的手动过程,转变为一个数据驱动、AI辅助的系统性工程。接下来,我将为你深入拆解这个系统的设计思路、核心功能以及如何上手使用,分享我在配置和实际使用中踩过的坑和总结的经验。
2. 核心设计思路与架构解析
2.1 为什么是“管道(Pipeline)”而非“工具(Tool)”
很多求职工具是单点解决方案,比如简历模板网站、职位搜索聚合器。JobForge 的核心理念是构建一个端到端的自动化管道。这个设计源于一个深刻的洞察:求职不是一个孤立的事件,而是一个包含多个阶段(发现、评估、申请、面试、谈判)的连续流程。各个阶段的信息需要流动和复用。
例如,在“评估”阶段生成的岗位匹配度分析,应该直接流入“申请”阶段,用于生成定制化简历;在“申请”阶段记录的公司和职位信息,应该自动进入“追踪”阶段,用于后续的状态管理和跟进提醒;而“拒绝”阶段收集到的反馈,又应该回流到“评估”模型,帮助系统(和你)学习,在未来更好地识别不匹配的机会。
JobForge 通过一个中心化的数据层(主要是data/目录下的各种.tsv文件)和一套状态管理机制(states.yml)来实现这种信息流动。这使得整个系统成为一个有机整体,而不是一堆零散脚本的集合。这种管道化设计带来的最大好处是一致性和可追溯性。你任何时候都可以清楚地知道,某个职位为什么得了某个分数,基于哪版简历进行的申请,后续进行了哪些沟通。
2.2 智能体(Agents)与模型路由:成本与效能的平衡术
JobForge 重度依赖 AI 模型来完成评估、写作、分析等任务。但直接使用最强大的模型(如 GPT-4)处理所有任务成本极高。为此,项目设计了一套精巧的三层子智能体(Sub-agent)路由系统:
@general-free: 处理大量简单、模式化的任务,如信息提取、基础格式化。默认使用免费的模型路由(例如通过 OpenRouter 访问的免费模型),确保基础功能零成本运行。@general-paid: 处理需要一定推理和创造力的任务,如撰写评估报告的核心部分、生成个性化的简历摘要。使用性价比高的付费模型。@glm-minimal: 处理极其简单或对响应格式有严格要求的任务,可能使用更轻量、更便宜的模型。
这个架构的精妙之处在于“成本感知”。系统会根据任务的复杂度和重要性,自动分派给不同层级的智能体。例如,扫描招聘门户、去重这类任务,交给@general-free足矣;而为心仪公司生成一份关键的定制化简历,则会调用@general-paid。你还可以通过job-forge tokens命令查看详细的令牌消耗报告,真正做到开销透明。
此外,系统还集成了@razroo/opencode-model-fallback包。当某个模型因速率限制或服务器错误(5xx)失败时,它会自动在预设的备用模型链中轮换,并重试请求。这极大地提高了系统的鲁棒性,避免了因单点故障导致整个流程中断。
实操心得:模型路由配置默认配置已经足够优化。但如果你有特定的模型偏好(例如,只想用某一家供应商的模型),可以深入研究
AGENTS.md文件和.opencode/agents/目录下的配置。修改时要注意,@general-free的稳定性不如付费模型,对于求职这种关键任务,建议在@general-paid上配置一个你信任的、稳定的付费 API 密钥。
2.3 与开发环境深度集成:OpenCode、Cursor、Claude Code 和 Codex
JobForge 不是一个独立的桌面应用或网页服务,而是一个深度集成到现代 AI 辅助开发环境中的项目。它原生支持OpenCode、Cursor、Claude Code和Windsurf(Codex)。这种设计带来了两个巨大优势:
第一,上下文共享。你在编辑器中打开的cv.md(你的简历)、config/profile.yml(你的个人信息)等文件,对 JobForge 的 AI 智能体是直接可见的。这意味着智能体在评估职位时,能基于你最实时、最完整的个人资料进行,无需繁琐的导入导出。
第二,可编程性和可定制性。整个系统被设计为“可以由 OpenCode 自身来定制”。这听起来有点递归,但非常强大。如果你觉得默认的“角色原型(Archetype)”分类不适合你(比如默认偏重软件工程),你可以直接对 AI 说:“帮我把角色原型改成更适合数据科学领域的分类,加入‘机器学习工程师’、‘数据科学家’、‘数据分析师’。” AI 就会帮你修改相应的配置文件(如modes/_shared.md)。这种与 AI 协作共同进化工具的能力,是传统软件无法比拟的。
项目的安装过程也体现了这种集成思想。通过npx create-job-forge创建的项目,会在node_modules中安装job-forge包,并通过postinstall钩子脚本,在项目根目录创建一系列符号链接(symlinks),指向包内的配置文件。这样,你的个人项目(cv.md,profile.yml)和共享的 harness(套件)逻辑就完美地分离开了。你只需关心个人配置,无需触碰底层复杂的智能体指令和 MCP 配置。
3. 从零开始:详细配置与实操指南
3.1 环境初始化与项目创建
首先,确保你的系统已安装Node.js(建议 LTS 版本)和npm。然后,打开你的终端(或你喜欢的 IDE 终端),执行以下命令来创建你的个人求职项目:
npx --package=job-forge create-job-forge my-job-search cd my-job-search npm install这三行命令完成了以下工作:
create-job-forge: 从 npm 拉取最新的job-forge脚手架,在当前目录创建名为my-job-search的文件夹,并初始化一个基本的项目结构。cd my-job-search: 进入项目目录。npm install: 安装job-forge依赖包。这一步至关重要,它会触发包内的postinstall脚本(sync.mjs),该脚本会在你的项目根目录创建所有必要的符号链接,将 harness 的配置(指令、MCP 设置、技能定义)链接到你的项目中。
完成后,你的my-job-search目录看起来会像“项目结构”中描述的“你的个人项目”那样。核心的配置文件已经通过符号链接就位。
3.2 核心个人文件配置
接下来,你需要编辑几个核心的个人文件,这是 JobForge 为你工作的基础。
1. 简历文件 (cv.md):这是你的核心资料库。它不是一个简单的 PDF,而是一个 Markdown 文件。这种格式的优势在于易于编辑,且能被 AI 完美解析。你需要将你的完整简历内容粘贴到这里,包括:
- 联系信息
- 专业摘要
- 工作经历(公司、职位、时间、详细成就,尽量用量化指标,如“将系统性能提升 30%”)
- 教育背景
- 技能列表
- 项目经历
- 任何其他你认为重要的信息
注意事项:简历的“反AI检测”优化JobForge 在生成 PDF 时会应用一套“反AI检测”的写作规则。但这建立在你的原始内容
cv.md是“人类化”的基础上。避免使用过于模板化、堆砌关键词的句子。多使用主动语态和具体的成果描述。AI 在帮你优化时,是在此基础上进行结构调整和关键词强化,而不是无中生有。
2. 个人资料 (config/profile.yml):这个 YAML 文件定义了你的求职目标和身份。你需要仔细填写:
# config/profile.yml 示例 identity: name: “你的姓名” email: “你的邮箱” phone: “你的电话” location: “期望工作地点(城市,国家)” linkedin: “你的LinkedIn主页URL” portfolio: “你的个人网站或作品集链接” target: # 你寻求的职位头衔,可以是一个列表 roles: - “Senior Software Engineer” - “Backend Tech Lead” # 你感兴趣的行业或领域 industries: - “SaaS” - “FinTech” # 可接受的薪资范围(用于评估和谈判) compensation: base: “150000-200000” # 年薪,货币单位根据你所在地区定 equity: “true” # 是否接受股权 # 工作偏好 preferences: remote: “hybrid” # 可选:onsite, remote, hybrid relocation: “false” # 你的技能关键词,用于匹配计算 skills: primary: - “Node.js” - “TypeScript” - “分布式系统” - “AWS” secondary: - “Python” - “Docker” - “Kubernetes”3. 招聘门户列表 (portals.yml):这个文件告诉 JobForge 应该去哪些公司的招聘页面扫描新职位。项目预置了 40 多家科技公司的配置。你需要根据你的目标进行删减或添加。
# portals.yml 示例(片段) companies: - name: “Netflix” # 公司招聘页的URL模式 url: “https://jobs.netflix.com/search” # 用于在页面上定位职位列表的CSS选择器(通常需要一些前端知识来获取) selector: “div.job-postings-list a.job-title” # 扫描频率(可选) scan_frequency: “daily” - name: “Your Dream Startup” url: “https://www.dreamstartup.com/careers” # 如果预置选择器不工作,你可能需要手动检查页面元素并更新它 selector: “section.open-positions li a”配置好这些文件后,基础的设置就完成了。你可以通过运行opencode命令来启动你的 OpenCode 环境(如果你使用其他编辑器如 Cursor,则运行对应的命令如cursor),系统会自动加载所有 MCP 服务器(如 Geometra 用于浏览器自动化和 PDF 生成,Gmail 用于读取邮件)。
3.3 首次运行:评估一个职位
现在,让我们进行第一次实战。找到你感兴趣的一个职位的招聘链接(例如来自 LinkedIn 或公司官网)。
在你的 OpenCode 会话中,最简单的方式就是直接粘贴这个招聘链接。JobForge 的技能路由器(skill router)会自动检测到这是一个职位 URL,并触发完整的自动化管道。
你也可以输入命令:
/job-forge https://jobs.example.com/position/123几秒到一分钟内(取决于网络和模型响应速度),你会看到系统开始工作:
- Archetype Detection(角色原型检测):AI 会分析职位描述,将其归类到预定义的原型之一(如 LLMOps, Agentic, Product Manager, Software Engineer等)。这决定了后续评估的侧重点。
- A-F Evaluation(深度评估):系统会调用你的
cv.md和profile.yml,从以下6个维度生成一份详细的评估报告:- A. 角色总结:提炼核心职责和要求。
- B. 简历匹配度分析:逐条对比你的技能和经验与职位要求的匹配与差距。
- C. 职级策略:判断该职位与你目标职级的匹配度。
- D. 薪酬调研:基于职位地点和级别,提供市场薪酬范围参考。
- E. 个性化要点:指出你可以重点突出的个人经历或项目。
- F. 面试准备:基于 STAR+R(情境、任务、行动、结果、反思)方法论,建议可以讲述的故事。
- 生成物:评估完成后,会在
reports/目录下生成一个 Markdown 格式的评估报告,在项目根目录生成一个针对该职位优化的、名为CV_[职位名称]_[公司].pdf的简历 PDF,并在data/tracker.tsv文件中新增一条申请记录,包含公司、职位、申请状态(默认为“已评估”)、评分、日期等所有关键信息。
整个过程完全自动化。你现在拥有了一份量化的评估报告(知道这个职位值不值得投)、一份定制化的简历(知道怎么投)、以及一条清晰的追踪记录(知道投了什么)。
4. 核心功能模块深度使用与技巧
4.1 批量处理与门户扫描:提升求职效率
手动一个个粘贴链接效率太低。JobForge 提供了两个强大的批量功能。
批量评估 (/job-forge batch):如果你收集了一堆职位链接(可以保存在一个文本文件里,每行一个URL),可以使用批量处理命令。系统会并行启动多个评估任务(通过opencode run工作器),显著提升速度。批量处理的结果会汇总,并同样更新到追踪器中。
门户扫描 (/job-forge scan):这是真正的“火力全开”模式。运行此命令,JobForge 会按照portals.yml中的配置,自动访问每家公司的招聘页面,使用 CSS 选择器抓取最新的职位列表。关键在于它的“模糊去重(Fuzzy Dedup)”功能。招聘网站经常将同一个职位用不同的URL重新发布。系统会通过比较职位标题、地点等关键信息,识别出重复项,确保你的追踪器里不会出现重复记录。
实操心得:扫描配置调试预置的
portals.yml选择器可能因为网站改版而失效。如果扫描某家公司返回空结果,你需要手动检查该公司的招聘页面。使用浏览器的开发者工具(F12),检查职位列表的HTML结构,找到包裹职位链接和标题的元素,并更新对应的selector字段。这是一个一次性的调试工作,完成后就能长期受益。
4.2 申请追踪与智能跟进系统
data/tracker.tsv文件是你的求职仪表盘。它是一个制表符分隔的表格,可以用任何文本编辑器或电子表格软件打开。每一条记录都包含丰富的信息:
company,role: 公司和职位名称。url: 原始职位链接。status: 申请状态(评估中、已申请、已面试、已拒绝、已录用等)。score: 该职位的综合评分(0-100)。applied_date,last_contact: 关键日期。notes: AI 生成的评估摘要或你手动添加的备注。
状态管理由states.yml模板定义,你可以自定义状态流转的规则。
智能跟进 (/job-forge followup):这是防止申请石沉大海的关键。系统会根据预设的时间规则自动提示你:
- 申请后7天以上无回复:提示你考虑发送一封温和的询问邮件。
- 面试后1天:提示你发送感谢信。
- 通过Gmail MCP:系统可以配置为自动扫描你的收件箱,识别来自公司的邮件(面试邀请、拒信、录用通知),并建议你更新追踪器状态。
你需要手动执行跟进动作(比如发送邮件),但系统会告诉你“现在该做什么,对谁做”,让你永远不会错过最佳跟进窗口。
4.3 拒绝分析与谈判支持:将失败转化为经验
拒绝分析 (/job-forge rejection):收到拒信令人沮丧,但却是宝贵的学习机会。当你在追踪器中将某个申请的状态更新为“已拒绝”时,系统会提示你记录拒绝的阶段(简历筛、电面、终面)和原因(如“技能不匹配”、“经验不足”、“岗位取消”)。
长期积累后,你可以运行拒绝分析功能。AI 会分析所有被拒的记录,找出模式:你是否总是在某一类原型(Archetype)的职位上被拒?你的自我评分是否系统性高于招聘方的评价?这些洞察能帮助你调整求职策略,比如补充特定技能,或更客观地评估自己的匹配度。
薪酬谈判 (/job-forge negotiation):当你幸运地进入 offer 阶段,谈判是关键。此功能会帮你:
- 结构化薪酬分析:将 offer 拆解为基础薪资、奖金、股权、福利等部分。
- 市场对标:结合之前的薪酬调研,判断该 offer 在市场上的水平。
- 杠杆评估:分析你当前的其他机会(通过追踪器中的状态),评估你的谈判筹码。
- 生成谈判脚本:基于以上分析,AI 会帮你起草礼貌、专业、有说服力的谈判邮件要点或对话提纲。
记住,谈判的目的是达成双赢。这个工具提供的是数据支持和话术建议,最终的决定和沟通还需要你亲自把握。
5. 高级定制与故障排查
5.1 深度定制:让系统更懂你
JobForge 的默认配置面向广泛的软件工程角色。但它的强大之处在于可定制性。
1. 修改评估维度与权重:评估的10个维度及其权重定义在共享模式文件(通过符号链接访问,如modes/_shared.md)中。你可以让 AI 帮你调整。例如,如果你更看重公司文化而非薪酬,可以对 AI 说:“将‘公司文化匹配度’的权重从 10% 提高到 20%,相应降低‘薪酬竞争力’的权重。” AI 会指导你完成修改。
2. 创建自定义角色原型(Archetype):如果默认的“后端工程师”、“全栈工程师”等分类不适合你,可以定义自己的原型。每个原型都有一套对应的评估侧重点和面试问题库。在modes/目录下,你可以复制一个现有的模式文件(如software-engineer.md)进行修改,或者让 AI 从头帮你创建一个新的原型(如>
Supabase全栈开发实战:从数据库设计到边缘函数部署
1. 项目概述:从零到一,用 Supabase 构建一个现代应用原型最近在社区里看到不少朋友对后端即服务(BaaS)和全栈开发感兴趣,特别是想快速验证一个想法,但又不想在基础设施和数据库管理上耗费太多精力。我手头正…
LaTeX2Word-Equation:打破数学公式跨平台迁移的技术壁垒
LaTeX2Word-Equation:打破数学公式跨平台迁移的技术壁垒 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 在学术研究和技术文档编写中…
猫抓Cat-Catch终极指南:构建浏览器资源嗅探与流媒体处理的专业工作流
猫抓Cat-Catch终极指南:构建浏览器资源嗅探与流媒体处理的专业工作流 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今多媒体内容…
5分钟快速上手:Windows Cleaner开源工具帮你彻底解决C盘爆红问题
5分钟快速上手:Windows Cleaner开源工具帮你彻底解决C盘爆红问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 当你的电脑C盘突然变红,系…
3步实战配置ComfyUI-Manager离线模式:无网环境高效管理节点与模型
3步实战配置ComfyUI-Manager离线模式:无网环境高效管理节点与模型 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable va…
G-Helper AMD CPU降压功能深度解析:15℃降温背后的技术实现
G-Helper AMD CPU降压功能深度解析:15℃降温背后的技术实现 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenboo…