大家好,我是小黑
群里隔三岔五有人扔简历出来求点评,千篇一律的"精通Java"、"负责后端开发",换了个排版,内核还是那堆废话。一份简历投了八十家公司,回音寥寥,不是能力不行,是每家公司要的人不一样,同一份PDF去砸所有HR的脸,跟拿同一把钥匙开所有锁有什么区别?

今天我给大家推荐一个5.6万 Star的开源项目,AI求职系统,根据你要投递的招聘信息单独优化生成简历,极大增加进面机会。
项目介绍
career-ops是个AI驱动的求职系统,底层跑在Claude Code上。它不是一个海投工具,而是个过滤器。我们从几百个职位里筛出值得花时间的那几个,系统打分,满分5分,低于4分的不建议申请。
开源者自己就是这套系统的第一个用户,他用career-ops评估了740多个职位,生成了100多份定制简历,最后拿到了 Head of Applied AI 的offer。现在他把代码开源出来,随便改。GitHub上5.6万star,还在涨。

功能详解
career-ops的功能不是堆出来的,是用出来的,我挑几个真正值钱的讲。
职位评估与A到F评分

我们贴一个职位链接,或者直接把JD文本丢进去,它先跑archetype detection,判断这个岗位的分类,然后读我们的cv.md,从10个维度打分,A到F。不是关键词匹配,是AI真的在读简历和JD,做推理,输出一份markdown报告,同时生成一份针对这个岗位优化的PDF简历。
为每家公司单独生成定制简历
以前大家普遍投简历,一份PDF走天下。career-ops的做法是每家公司单独生成一份,它读JD,读我们的cv.md,把关键词自然嵌进去,排版用HTML模板,Playwright转成PDF。生成之前会出草稿,不合适的地方你改完,然后确认后它才会生成终版。

面试故事库与薪资谈判脚本
它有个面试故事库,每次评估完,STAR+Reflection格式的故事会攒起来。攒够5到10个,基本能覆盖大部分行为面试题。薪资谈判脚本也内置了,手里有别的offer怎么拿来谈薪,基本的像为什么选择我们公司等常规行为面试题都有现成的话术。
职位扫描与自动入库
扫描功能我印象挺深,预置了45家公司,Anthropic、OpenAI、ElevenLabs、Retool、n8n这些都在里面。覆盖Greenhouse、Ashby、Lever、Wellfound这些招聘平台,node scan.mjs跑一遍,新职位自动进pipeline。
这个功能挺好,但是可惜对应的是海外职位,但没事,社区有人做了适配,GitHub上有个issue 专门对接了支持了Boss直聘,还搞了个career-ops-cn分支,这个稍后讲。
终端看板与批量处理
Dashboard是用Go写的TUI,Bubble Tea框架,Catppuccin Mocha配色。npm run serve:dashboard启动,能在终端里浏览、筛选、排序手头在跟的职位。6个过滤标签,4种排序方式,支持分组和平铺视图,不用开浏览器,终端里就能管完整个求职流程。
batch模式可以并行评估10个以上职位,用后台CLI worker跑,适合周末集中扫一遍招聘网站,周一早上看结果。不用一个个点,一行命令全搞定。
数据本地存储,不碰服务器

简历、联系方式、评估记录全存本地,不会上传到某个服务器,这个设计非常好,信息安全很重要,我也不想让第三方服务器知道我在面哪家公司。AI provider只接收我们选的那家,Anthropic、OpenAI或者Google Gemini。代码全开源,prompt也开源,我们能看到AI到底在干什么。
安装部署
跑起来需要Node.js,Claude Code或者Codex这些AI CLI已经装了的话,Node大概率已经有了。
最快的方式是一行命令:
npx @santifer/career-ops init
npx随Node.js一起提供,只运行一次安装程序,不会在全局安装任何东西。这行命令会把最新版本克隆到./career-ops并安装依赖,然后cd进去,打开AI CLI:
cd career-ops
claude
或者gemini、codex、qwen、opencode、agy、grok,都行。
首次启动时,career-ops会通过对话引导我们完成设置,问简历、问目标岗位、问薪资范围,完全不用手动编辑配置文件。
它支持的CLI不少,Claude Code、Codex、Gemini、OpenCode、Grok、Qwen、Agy都能跑。甚至不用装CLI也行,Google Gemini有个独立脚本,只要一个API key,免费额度够用。
实战一把
安装完成后,我还是用Codex来玩这个项目,首先贴了一个Boss直聘的职位链接进去(这个脱敏处理了,你可以贴你感兴趣的岗位):
https://www.zhipin.com/job_detail/xxxxxxxx.html
career-ops自动识别,跑完整套pipeline,先出archetype判断,再出A到F的评分报告。

我第一次贴链接,它给我判了个C,理由是:
技术匹配度高,8 年 Java / Spring Boot / 微服务经验明显覆盖这个岗位;但 JD 是 3-5 年、14-19K、信息密度很低、北京银行项目语境,对 8 年候选人偏 downlevel,所以给了 C+,适合验证流程或随手聊,不建议重投入。
这个还是蛮准的,因为我随便在Boss上找的一个招聘链接~~。
然后它还给了一份具体的分析报告:
岗位要求结合公司背景:

匹配度和处理策略:

面试可能遇到的问题及回答话术:

如果面试,建议追问面试官的问题及结论:

然后它问我要不要生成定制简历:

我说生成PDF,它开始读我的cv.md,把JD里的关键词自然嵌进去,排版,转PDF。整个过程在聊天里完成,我能看到它在想什么,随时喊停,生成的PDF字体干净,ATS能过,直接丢给HR就行。
生成的最终效果:

这个我全程没有做干预,有需要停下来问我哪里需要补充修改的我都是直接过,另外信息安全很重要,我这份简历把名字,之前的公司都删掉了,所以看着会稍微有点怪,它自动补上了待填写什么什么这种信息。
但是排版真的不错,我看比很多人自己做的简历要美观.另外简历内容上,它是真给我改了不少,我没有银行项目经验它说的是也能适应银行项目对沟通、稳定性和交付规范的要求,还把原先项目介绍里面的部分可能适配银行,金融系统的加上了,强行靠拢,适配招聘要求。一个字,绝!
扫描模式更爽,这个能根据你的简历自动给你筛选合适岗位,根据每个招聘信息定制你的简历。
周末跑node scan.mjs,预置的45家公司最新职位全抓下来。加--verify参数,Playwright逐个打开页面验证,死的职位自动过滤。结果进pipeline,我周一早上用/career-ops tracker看一眼,哪些该投,哪些该弃,一目了然。
重点来了!!!
我们之前留了一个伏笔,就是这个开源项目是老外开发的,对接的都是国外的企业,我们用的话,需要简单适配一下,以Boss直聘为例,Boss在国内程序员用的多。
这个适配很实用,具体做法分两步:

第一步:手动登录保存cookie。 把社区提供的save-cookies.mjs放到项目根目录,跑:
node save-cookies.mjs
这行会打开一个浏览器窗口,加载Boss直聘登录页。我们自己手动登录,登录成功后脚本把cookie存到本地文件,比如boss-cookies.json,关掉浏览器,这一步就算完了。
第二步:用stealth脚本抓JD。 把fetch-jd-stealth.mjs也放到根目录,跑:
node fetch-jd-stealth.mjs --url "https://www.zhipin.com/job_detail/xxxxx.html"这行读刚才存的cookie,用Playwright stealth插件模拟真人行为,随机滚动、停留几秒,再抓页面。抓下来的JD文本直接输出,想批量抓的话,把链接写进一个txt,一行一个:
node fetch-jd-stealth.mjs --file jobs.txt --output ./jd-raw/
跑完./jd-raw/里全是抓下来的JD文本,再贴进career-ops评估就行。
注意两点:
- 1. cookie大概一周过期,过期了重新跑
save-cookies.mjs。
这俩脚本纯社区贡献,官方没维护,出问题得自己改。
batch模式适合手里攒了一堆JD的情况,扔一个文件夹进去,后台worker并行跑,10个职位一起评估。结果出来,高分的前三家公司,我们重点跟进。
我的看法
career-ops让我看到的不是又一个AI玩具,是一个完整的工作流。
我见过很多人找工作靠运气,实力很强但根本不会写简历,连面试那关都到不了。career-ops把这套流程变成了系统工程,AI评估,人做决策,数据本地存,简历每家公司单独定制,非常实用。
GitHub仓库:
https://github.com/santifer/career-ops