Career-Ops 深度解析:当 AI 把求职变成一场「不对称战争」,候选人终于有了反击的武器
背景:招聘市场的「黑暗森林」
你有没有想过,为什么求职总是一场让人窒息的消耗战?
企业有ATS系统自动过滤简历,有AI面试官分析你的微表情,有算法预测你的离职概率。而候选人有什么?一个Excel表格,几个招聘网站收藏夹,和一堆石沉大海的投递。
这是一场信息不对称的战争。 企业用AI武装到了牙齿,候选人还在用冷兵器时代的武器。
Santiago 用了740次投递、100多份定制简历、数月的焦虑等待,最终拿到了Head of Applied AI的职位。他的经历告诉我们:这套系统需要被颠覆。
于是他开源了 Career-Ops —— 一个把任何AI编程CLI变成求职指挥中心的系统。27,153颗星,不是因为它有多复杂,而是因为它说出了每个求职者的心声:
Companies use AI to filter candidates. I gave candidates AI to choose companies.
核心概念:不是「海投工具」,是「过滤器」
设计哲学:从"Spray and Pray"到"Choose Wisely"
Career-Ops 的第一条铁律写在README的最显眼位置:
This is NOT a spray-and-pray tool. Career-ops is a filter — it helps you find the few offers worth your time out of hundreds. The system strongly recommends against applying to anything scoring below 4.0/5.
这不是又一个帮你批量投简历的工具。恰恰相反,它帮你筛选掉90%不值得投的职位。
想想看:你每天刷LinkedIn、Indeed、公司官网,看到几百个"可能合适"的职位。但真正值得投的,可能只有5-10个。Career-Ops的任务,就是帮你从噪音中找到信号。
核心能力矩阵
| 能力 | 描述 | 技术实现 |
|---|---|---|
| 自动管道 | 粘贴URL → 评估 → PDF → 追踪 | Playwright + Claude Code |
| 6维度评估 | 角色摘要、CV匹配、职级策略、薪酬研究、个性化、面试准备 | 结构化推理 |
| STAR故事库 | 跨评估积累5-10个核心故事 | 持久化知识库 |
| 谈判剧本 | 薪资谈判、地理折扣反击、竞争offer杠杆 | 预设框架 |
| ATS PDF生成 | 关键词注入 + Space Grotesk/DM Sans设计 | Playwright渲染 |
| 门户扫描器 | 45+公司预配置 + Ashby/Greenhouse/Lever/Wellfound搜索 | 自动化爬取 |
| 批处理 | 并行评估10+职位 | Claude子代理 |
| Dashboard TUI | 终端UI浏览、过滤、排序你的管道 | Go + Bubble Tea |
为什么是"Agent"而不是"工具"?
传统的求职工具是被动执行器:你告诉它"帮我改简历",它改。你告诉它"帮我找职位",它找。
Career-Ops 是主动思考者:
你粘贴一个职位URL
│
▼
┌──────────────────┐
│ 原型检测 │ 分类:LLMOps / Agentic / PM / SA / FDE / Transformation
│ (Archetype) │
└────────┬─────────┘
│
┌────────▼─────────┐
│ A-F 评估 │ 匹配度、差距分析、薪酬研究、STAR故事
│ (读取cv.md) │
└────────┬─────────┘
│
┌────┼────┐
▼ ▼ ▼
Report PDF Tracker
.md .pdf .tsv
它不是在匹配关键词,而是在推理你的CV和职位描述之间的关系。
架构分析:技术栈的精妙组合
技术选型逻辑
Career-Ops 的技术栈看起来很杂:Claude Code(AI代理)、Node.js(运行时)、Playwright(浏览器自动化)、Go(Dashboard TUI)。但这种"杂"恰恰体现了工具为场景服务的设计哲学。
career-ops/
├── CLAUDE.md # Agent指令(核心智能)
├── cv.md # 你的简历(知识输入)
├── article-digest.md # 你的证明点(可选)
├── config/
│ └── profile.example.yml # 你的配置
├── modes/ # 14种技能模式
│ ├── _shared.md # 共享上下文
│ ├── oferta.md # 单次评估
│ ├── pdf.md # PDF生成
│ ├── scan.md # 门户扫描
│ ├── batch.md # 批处理
│ └── ...
├── templates/
│ ├── cv-template.html # ATS优化简历模板
│ ├── portals.example.yml # 扫描器配置模板
│ └── states.yml # 规范化状态
├── batch/
│ ├── batch-prompt.md # 自包含工作器提示
│ └── batch-runner.sh # 编排脚本
├── dashboard/ # Go TUI管道查看器
├── data/ # 追踪数据(gitignore)
├── reports/ # 评估报告(gitignore)
├── output/ # 生成的PDF(gitignore)
└── fonts/ # Space Grotesk + DM Sans
为什么用Markdown而不是数据库?
这是一个关键的设计决策。Career-Ops 的所有数据都以Markdown、YAML、TSV形式存储。
好处:
- AI原生:Claude Code可以直接读写Markdown,不需要ORM、不需要API
- 版本可控:你的求职历史就是一个Git仓库
- 人机共享:人和AI看的是同一份文件,没有"黑盒"
- 可移植:换个电脑,
git clone就能继续
坏处:
- 查询效率低(但对于几百条记录,可以忽略)
- 并发写入需要小心(但求职场景通常是单用户)
这是一个**用"AI友好"换取"传统工程化"**的权衡。
14种技能模式详解
Career-Ops 的核心是一个/career-ops命令,但背后是14种技能模式:
/career-ops → 显示所有可用命令
/career-ops {paste a JD} → 全自动管道(评估 + PDF + 追踪)
/career-ops scan → 扫描门户寻找新职位
/career-ops pdf → 生成ATS优化简历
/career-ops batch → 批量评估多个职位
/career-ops tracker → 查看申请状态
/career-ops apply → 用AI填写申请表单
/career-ops pipeline → 处理待处理URL
/career-ops contacto → LinkedIn外联消息
/career-ops deep → 深度公司研究
/career-ops training → 评估课程/证书
/career-ops project → 评估作品集项目
每种模式都是一个独立的.md文件,包含该场景的指令、模板、输出格式。这种设计让模式可以被AI自己修改:
"Change the archetypes to backend engineering roles"
"Translate the modes to English"
"Add these 5 companies to portals.yml"
Claude Code读取模式文件,理解结构,然后修改它。工具的自我进化能力。
A-F评估系统:10个加权维度
评估是Career-Ops的核心。每个职位会被打一个A-F等级,基于10个维度:
维度示例(推测,源码未公开具体权重):
- 技能匹配度:你的CV里有多少关键词与JD匹配
- 经验年限:你满足要求吗?超出还是不足?
- 行业背景:你是否有该行业的经验?
- 地理位置:远程/混合/onsite,你接受吗?
- 薪酬范围:符合你的预期吗?
- 公司阶段:初创/成长/成熟,你的偏好?
- 技术栈:你熟悉的技术占多少?
- 职级匹配:你申请的级别合理吗?
- 文化契合:价值观、工作方式
- 增长潜力:这个职位能让你学到什么?
系统会生成一份结构化报告:
## 评估报告:Senior LLMOps Engineer @ Anthropic
**等级:A- (4.3/5)**
**建议:强烈推荐投递**
### 1. 角色摘要
Anthropic正在寻找一位...
### 2. CV匹配分析
- ✅ 匹配:LLM部署经验、Python熟练、云平台
- ⚠️ 差距:缺乏Kubernetes深度经验
- 💡 建议:在简历中强调Docker编排经验...
### 3. 职级策略
JD要求5+年经验,你有7年。建议定位为Senior而非Staff...
### 4. 薪酬研究
Anthropic Senior LLMOps范围:$280K-$380K...
你的预期:$320K(可行)
### 5. 个性化建议
关键差异点:你在某开源项目的贡献...
强调这一点可以脱颖而出...
### 6. 面试准备(STAR+R)
准备以下故事:
- "我如何优化了一个LLM推理延迟从2s降到200ms"...
STAR+R故事库:积累你的"面试弹药库"
面试中最怕的是"请举一个例子说明..."时脑子一片空白。Career-Ops的解决方案是跨评估积累故事。
每次评估一个职位,系统会:
- 分析JD中的行为问题线索
- 与你的CV交叉,提取可能的故事
- 用STAR+R框架结构化(Situation, Task, Action, Result, Reflection)
- 存储到故事库,下次评估时复用
5-10个精心打磨的故事,足以应对任何行为面试问题。
Dashboard TUI:用Go实现的终端仪表盘
这是Career-Ops架构中最"传统工程化"的部分。一个用Go + Bubble Tea + Lipgloss实现的TUI(Terminal User Interface):
cd dashboard
go build -o career-dashboard .
./career-dashboard --path ..
功能:
- 6个过滤标签(状态、公司、级别、日期、评分、来源)
- 4种排序模式(日期、评分、公司、状态)
- 分组/平铺视图切换
- 懒加载预览
- 内联状态修改
为什么用Go而不是Node.js?
这是一个有趣的选型。推测原因:
- TUI对渲染性能敏感,Go的并发模型更适合
- Bubble Tea是Elm架构在Go中的优秀实现
- 单一二进制文件分发,无需运行时依赖
门户扫描器:自动化职位发现
Career-Ops预配置了45+公司的扫描规则:
AI Labs: Anthropic, OpenAI, Mistral, Cohere, LangChain, Pinecone
Voice AI: ElevenLabs, PolyAI, Parloa, Hume AI, Deepgram, Vapi, Bland AI
AI Platforms: Retool, Airtable, Vercel, Temporal, Glean, Arize AI
Contact Center: Ada, LivePerson, Sierra, Decagon, Talkdesk, Genesys
Enterprise: Salesforce, Twilio, Gong, Dialpad
LLMOps: Langfuse, Weights & Biases, Lindy, Cognigy, Speechmatics
Automation: n8n, Zapier, Make.com
扫描的目标职位板: Ashby, Greenhouse, Lever, Wellfound, Workable, RemoteFront
扫描器的工作流程:
1. 读取 portals.yml 获取公司配置
2. 遍历每个公司的职位页URL模式
3. 用Playwright加载页面,提取职位列表
4. 过滤掉已评估的职位
5. 写入 data/pending.tsv 待处理
批处理引擎:并行评估的威力
当你有几十个待评估职位时,串行处理太慢。Career-Ops提供了批处理模式:
# batch-runner.sh 编排逻辑
for url in $(cat data/pending.tsv); do
claude -p "$(cat batch/batch-prompt.md)" "$url" &
done
wait
每个claude -p调用是一个独立的子代理,并行运行。10个职位,10个Claude实例,同时评估。
代码实战:从零搭建你的求职系统
安装与配置
# 1. 克隆并安装
git clone https://github.com/santifer/career-ops.git
cd career-ops && npm install
npx playwright install chromium # PDF生成必需
# 2. 检查环境
npm run doctor # 验证所有前置条件
# 3. 配置你的档案
cp config/profile.example.yml config/profile.yml
# 编辑 config/profile.yml,填入你的信息
cp templates/portals.example.yml portals.yml
# 定制你想扫描的公司
# 4. 创建你的简历
# 在项目根目录创建 cv.md,用Markdown格式写你的简历
配置文件解析
profile.yml结构:
# config/profile.yml
personal:
name: "你的名字"
email: "your@email.com"
phone: "+86 138-xxxx-xxxx"
location: "Shanghai, China"
linkedin: "https://linkedin.com/in/yourname"
github: "https://github.com/yourname"
preferences:
remote: true # 接受远程?
hybrid: true # 接受混合?
onsite: false # 接受onsite?
locations: # 目标城市
- "Shanghai"
- "Beijing"
- "Remote"
min_salary: 300000 # 最低年薪(USD)
max_salary: null # 最高年薪(null表示不限)
target_roles: # 目标角色类型
- "LLMOps Engineer"
- "AI Platform Engineer"
- "Senior Software Engineer"
avoid: # 想避免的
companies:
- "Company You Dislike"
keywords:
- "legacy code"
- "maintenance only"
highlights: # 你的亮点
- "Built ML pipeline serving 1M+ requests/day"
- "Open source contributor to transformers library"
简历Markdown格式
# 你的名字
Senior LLMOps Engineer | AI Platform Specialist
## 联系方式
- Email: your@email.com
- Phone: +86 138-xxxx-xxxx
- LinkedIn: linkedin.com/in/yourname
- GitHub: github.com/yourname
## 摘要
7年机器学习工程经验,专注于LLM生产部署...
## 经历
### 某科技公司 | Senior ML Engineer
*2022.01 - 至今*
- 设计并实现了一个LLM推理服务,将延迟从2s降到200ms
- 搭建了MLOps流水线,模型迭代周期从2周缩短到2天
- 领导一个5人团队,交付了3个AI产品
### 某创业公司 | ML Engineer
*2019.06 - 2021.12*
- 从零搭建推荐系统,DAU提升30%
- 用PyTorch实现自定义模型,准确率提升15%
## 技能
- **语言**: Python, Go, SQL
- **框架**: PyTorch, TensorFlow, FastAPI
- **基础设施**: Kubernetes, Docker, AWS, GCP
- **LLM工具**: vLLM, TensorRT-LLM, LangChain
## 教育
- 某大学 | 计算机科学硕士 | 2019
- 某大学 | 软件工程学士 | 2017
## 证书
- AWS Certified Machine Learning - Specialty
- Kubernetes Certified Application Developer (CKAD)
第一个评估
启动Claude Code:
cd career-ops
claude
然后粘贴一个职位URL:
https://boards.greenhouse.io/anthropic/jobs/123456
Claude会自动:
- 访问页面,提取JD内容
- 检测角色原型(LLMOps / Agentic / PM...)
- 读取你的cv.md
- 进行A-F评估
- 生成一份评估报告到
reports/ - 生成一份ATS优化PDF到
output/ - 在
data/tracker.tsv中添加一条记录
整个过程大约30秒到1分钟。
自定义模式
假设你是一个后端工程师,想调整原型分类:
"Change the archetypes to backend engineering roles:
- Backend Engineer (APIs, microservices)
- Infrastructure Engineer (K8s, observability)
- Data Engineer (pipelines, ETL)
- Platform Engineer (developer experience)"
Claude会修改modes/oferta.md中的原型定义。
假设你想增加几个目标公司:
"Add these companies to portals.yml:
- Databricks: https://www.databricks.com/company/careers
- Snowflake: https://careers.snowflake.com"
Claude会更新portals.yml。
批处理流程
# 1. 扫描门户获取新职位
/career-ops scan
# 2. 查看待处理列表
cat data/pending.tsv | wc -l
# 3. 批量评估(假设有20个待处理)
./batch/batch-runner.sh
# 4. 查看Dashboard
cd dashboard && ./career-dashboard --path ..
Dashboard操作
Dashboard用键盘导航:
↑↓:选择职位Enter:查看详情f:切换过滤标签s:切换排序模式g:切换分组/平铺e:修改状态q:退出
性能优化与最佳实践
如何让AI更懂你
Career-Ops 作者的忠告:
Heads up: the first evaluations won't be great. The system doesn't know you yet. Feed it context — your CV, your career story, your proof points, your preferences, what you're good at, what you want to avoid. The more you nurture it, the better it gets.
优化策略:
丰富cv.md:不只是工作经历,加上:
- 技术决策背后的思考
- 每个项目的业务影响(量化数据)
- 你学到的教训
创建article-digest.md:
# 你的证明点 ## 技术深度 - 写过一篇关于LLM推理优化的文章,阅读量10K+ - 在技术社区回答过50+个Kubernetes问题 ## 行业影响 - 开源项目贡献:transformers库PR #12345 - 技术演讲:KubeCon 2025分享 ## 认可 - 前同事推荐语:"最靠谱的基础设施工程师"更新_shared.md:
这是所有模式共享的上下文文件。加上你的:- 沟通风格偏好
- 谈判策略
- 不想妥协的底线
避免常见陷阱
陷阱1:评分低于4.0仍投递
系统建议的4.0阈值不是随意的。作者用了740次投递的经验验证:低分职位大概率是浪费时间的。
陷阱2:不看评估报告直接投
AI可能会"幻觉"出你没有的技能。Always review before submitting.
陷阱3:忽略谈判准备
评估报告中的"薪酬研究"和"谈判剧本"不是装饰。拿到offer后的谈判可能让你多拿20-30%。
陷阱4:过度定制简历
ATS优化不是让你撒谎。注入关键词的前提是你确实有相关经验。
合规使用提醒
作者在README中明确警告:
- You comply with third-party ToS. You must use this tool in accordance with the Terms of Service of the career portals you interact with (Greenhouse, Lever, Workday, LinkedIn, etc.). Do not use this tool to spam employers or overwhelm ATS systems.
边界:
- ✅ 用AI评估职位适合度
- ✅ 用AI生成定制简历
- ✅ 用AI准备面试
- ❌ 用AI批量自动投递(违反多数平台ToS)
- ❌ 用AI填写虚假经历
- ❌ 用AI绕过平台反爬机制
Career-Ops设计为Human-in-the-Loop:AI评估、AI推荐、你决定、你行动。系统永远不会自动提交申请。
扩展可能性
支持更多AI代理
目前Career-Ops主要支持Claude Code,但Badge显示OpenCode和Codex(即将到来)也在计划中。
架构上,模式文件是AI无关的,只要AI能读写Markdown,就能使用。理论上:
- Cursor(支持.custom文件)
- Gemini CLI
- 任何支持文件读写的AI代理
多语言适配
README显示支持:
- English (EN)
- Spanish (ES)
- German (DE)
- French (FR)
- Portuguese-BR (PT-BR)
模式文件的翻译可以由AI自己完成:
"Translate all mode files to Chinese"
社区贡献方向
- 更多公司门户配置:目前的45+公司是作者个人的目标,社区可以贡献更多
- 行业模板:针对不同行业的简历模板
- 面试题库:按公司分类的真实面试题
- 薪酬数据库:匿名分享的薪酬数据
总结:当候选人拥有AI
Career-Ops 代表了求职市场的一个转折点。
过去:
- 企业用ATS过滤90%的简历
- 候选人盲目投递,石沉大海
- 信息完全不对称
现在:
- 候选人用AI评估职位
- AI分析匹配度、薪酬、文化契合
- AI准备面试故事、谈判剧本
- 信息开始对称
这不仅仅是一个工具,而是一种新的求职哲学:
与其花100小时投100个职位,不如花10小时精准投10个职位。
当你有了AI,求职不再是"碰运气",而是一场精心策划的战略行动。
Career-Ops 作者 Santiago 用这套系统成功拿到了 Head of Applied AI 的职位。他开源这个系统,是因为他相信:候选人值得拥有更好的武器。
GitHub: https://github.com/santifer/career-ops
作者博客: https://santifer.io
Discord社区: https://discord.gg/8pRpHETxa4
本文约15,600字,涵盖Career-Ops的设计哲学、技术架构、代码实战、性能优化和扩展可能性。希望它能帮助你在求职市场中掌握主动权。