一句话简介: 你已经在用 Claude Code 写代码, 为什么不顺手用它找工作? Career-Ops 把 AI 编程 CLI 变成求职指挥官 — 粘贴一个 JD URL, 自动评估、生成 ATS 简历、追踪进度。作者本人用它筛了 740+ 个 offer, 生成了 100+ 份定制简历, 最终上岸 Head of Applied AI。
项目简介
Career-Ops (a.k.a. careerops) 是一个 AI 驱动的求职流水线, GitHub: santifer/career-ops, MIT 协议。它的核心定位是:
把任何 AI 编程 CLI 变成一个完整的求职 command center。
它不是又一个 "AI 改简历" 工具, 也不是海投机器人。Career-Ops 的设计哲学是 做减法: 从几百个 offer 里面, 帮你筛出真正值得投的那几个, 用 A-F 评分 + 6 大评估维度 + ATS 优化 PDF + 全自动追踪。
核心能力 (15 个 slash command):
| 场景 | 命令 | 说明 |
|---|---|---|
| 粘贴 JD URL | /career-ops | 自动流水线 (评估 + 报告 + PDF + tracker) |
| 单个评估 | /career-ops evaluate | A-F 评分 + 6 维度分析 |
| 多个对比 | /career-ops compare | 多 offer 排序 |
| 扫描岗位 | /career-ops scan | 45+ 预配置公司, 跑 Ashby/Greenhouse/Lever API |
| 批量评估 | /career-ops batch | 并发跑 claude -p workers |
| 生成 PDF | /career-ops pdf | ATS 优化简历 (Space Grotesk + DM Sans 字体) |
| LaTeX 导出 | /career-ops latex | Overleaf 友好的 .tex |
| 投递追踪 | /career-ops tracker | 状态总览 |
| 申请填表 | /career-ops apply | AI 辅助填表单 (不点 Submit) |
| 深度调研 | /career-ops deep | 公司调研 |
| 面试备战 | /career-ops interview | 公司专属 STAR+R 故事 |
| LinkedIn 触达 | /career-ops contact | 找人 + 起草消息 |
| 复盘模式 | /career-ops patterns | 拒信模式分析, 优化打法 |
| 跟进节奏 | /career-ops followup | 跟进时间表 |
| 课程/项目评估 | /career-ops training / project | 自我提升路径 |
支持的 AI 编程 CLI: Claude Code / OpenCode / Gemini CLI / Codex / Qwen / GitHub Copilot / Kimi — 只要是 follow open agent skill standard 的都行。
多语言支持: 默认英语, 另有德语 (modes/de/) / 法语 (modes/fr/) / 日语 (modes/ja/) / 土耳其语 (modes/tr/) / 简体中文 (README.cn.md) / 繁体中文 (README.zh-TW.md)。
战绩: 作者 santifer 用它 评估了 740+ 个 offer, 生成了 100+ 份定制简历, 最终拿到 Head of Applied AI 的 offer。
难度 / 时长 / 收获
- 难度: ⭐⭐ (中等, 需要会用 Claude Code 之类的 AI 编程 CLI)
- 时长: 30–60 分钟首次 onboarding (含 cv.md 准备 + profile 配置)
- 收获:
- 跑通一个真实可用的 AI 求职流水线
- 理解 "User Layer vs System Layer" 的 Agent 架构设计
- 学会用 A-F 评分 + STAR+R 故事做精准求职
- 看一个被 WIRED / Business Insider 报道过的开源项目怎么搭
- 顺手把 15 个 slash command 装进口袋, 求职期间天天用
目标读者画像
- 正在找工作 / 换工作 / 看机会的开发者
- 已经是 Claude Code / OpenCode / Gemini CLI 用户
- 想从"海投"切换到"精准投", 不愿在垃圾 offer 上浪费时间
- 想知道一个 7k+ Star 的生产级 AI Agent 项目长啥样
TIP
求职期最花钱的就是 token。Career-Ops 的 batch mode 跑 10+ offer 评估非常爽, 但接 Claude / Anthropic 官方 API 跑 100 份 offer, 一晚账单 $20-40, 一个月下来四位数的 token 成本很正常。
我的接法 (分享, 不是推荐): 接 Defapi, 走的是 Anthropic 兼容协议, Base URL 改一行就行:
# 假设你用 Claude Code, 在 ~/.claude/settings.json 或 env 里改
ANTHROPIC_BASE_URL=https://api.defapi.org
ANTHROPIC_API_KEY=sk-xxxxx # 在 defapi.org 后台拿
Defapi 的所有模型基本都兼容三套主流协议 — v1/chat/completions (OpenAI) / v1/messages (Anthropic) / v1beta/models (Gemini) — Agent 端零代码改动, 评估 prompt / STAR 故事 / tracker schema 全部照旧。模型还是同一个, 只是采购成本低一些, 求职期一个月 token 账单直接腰斩是实打实的。后面 FAQ Q5 会再展开。
核心依赖与环境
最低配置:
| 项目 | 要求 |
|---|---|
| Node.js | 20+ |
| AI 编程 CLI | 至少装一个 (Claude Code / OpenCode / Gemini CLI / Codex / Qwen / Copilot) |
| Playwright | Chromium 浏览器 (PDF 生成需要) |
| 操作系统 | macOS / Linux / Windows (WSL 推荐) |
可选 / 增强:
| 项目 | 用途 |
|---|---|
| Go 1.21+ | 跑 TUI Dashboard |
| Google AI Studio API Key | 跑 gemini-eval.mjs 独立脚本 (免费额度) |
| Chromium 浏览器 | 验证 offer 是否还活着 (Playwright 自动装) |
| 各种 LLM API Key | 接 Claude / OpenAI / Anthropic 协议即可 |
TIP
不一定要 Claude Max 订阅。Career-Ops 是"LLM 协议驱动"的, 任何兼容 v1/messages 或 v1/chat/completions 的 API 都能接 (具体接法见上面"目标读者"后的 TIP)。
完整项目结构树
career-ops/
├── AGENTS.md # Agent 通用指令 (跨 CLI)
├── CLAUDE.md # Claude Code 专属 (import AGENTS.md)
├── GEMINI.md # Gemini CLI 专属
├── cv.md # 你的简历 (你自己创建, 关键文件)
├── article-digest.md # 你的亮点证明 (可选)
├── config/
│ └── profile.example.yml # 你的个人画像模板
├── modes/ # 15 个 skill mode
│ ├── _shared.md # 系统层共享上下文
│ ├── _profile.template.md # 用户层定制 (放个人 archetype)
│ ├── oferta.md # 单 offer 评估
│ ├── pdf.md # PDF 生成
│ ├── scan.md # 岗位扫描
│ ├── batch.md # 批量处理
│ ├── auto-pipeline.md # URL → 评估 + PDF + tracker
│ ├── de/ # 德语模式
│ ├── fr/ # 法语模式
│ ├── ja/ # 日语模式
│ └── tr/ # 土耳其语模式
├── templates/
│ ├── cv-template.html # ATS 优化 CV 模板
│ ├── cv-template.tex # LaTeX 模板
│ ├── portals.example.yml # 45+ 预配置公司
│ └── states.yml # 投递状态词典
├── data/ # 投递数据 (gitignored)
│ ├── applications.md # 主追踪表
│ ├── pipeline.md # 待处理 URL 收件箱
│ ├── scan-history.tsv # 扫描去重
│ └── follow-ups.md # 跟进历史
├── reports/ # 评估报告 (gitignored)
├── output/ # 生成的 PDF (gitignored)
├── jds/ # JD 文本存这里 (可选)
├── interview-prep/ # 面试备战
│ ├── story-bank.md # 累积的 STAR+R 故事
│ └── {company}-{role}.md # 公司专属情报
├── batch/
│ ├── batch-prompt.md # worker 提示词
│ ├── batch-runner.sh # 编排脚本
│ └── tracker-additions/ # 待合并到主追踪表
├── dashboard/ # Go TUI (Bubble Tea)
│ ├── main.go
│ └── internal/
├── fonts/ # Space Grotesk + DM Sans
├── providers/ # LLM provider 配置
├── docs/ # 多语言文档 + 媒体报道
├── examples/ # 样例 CV / 报告 / 亮点
└── *.mjs # 扫描 / 验证 / 合并 / 健康检查脚本
作为用户, 你只需要碰 cv.md / config/profile.yml / modes/_profile.md / portals.yml 四个文件 — 这就是 User Layer, 系统更新不会动它。其余都让 Agent 自己处理。
手把手步骤
步骤 1: 克隆 + 安装
git clone https://github.com/santifer/career-ops.git
cd career-ops
npm install
npx playwright install chromium # PDF 生成需要
WARNING
不要跳过 npx playwright install chromium。后面 /career-ops pdf 走 Playwright 渲染, 缺 Chromium 直接报 "browser not found"。
步骤 2: 健康检查
npm run doctor
会验证 Node.js 版本、Playwright、关键文件、目录权限。失败的话医生会告诉你缺什么, 修完再跑一次。
步骤 3: 创建你的 cv.md
这是 整个流水线的源头 — 没有它 Agent 无法评估 offer。
在项目根目录创建 cv.md:
# Your Name
**Email:** [email protected]
**Location:** Berlin, Germany (CET)
**LinkedIn:** linkedin.com/in/you
**GitHub:** github.com/you
## Summary
Senior backend engineer with 6 years building distributed systems...
(目标: 2-3 段, 写"你做什么 + 你最强的一两件事")
## Experience
### Staff Engineer — Company A (2023 - Present)
- Led migration of X to Y, reducing Z by 40%
- (尽量带数字, 这部分会被 Agent 用来 match JD)
### Senior Engineer — Company B (2020 - 2023)
- ...
## Education
...
## Skills
Backend: Go, Python, PostgreSQL, Kafka
AI/ML: PyTorch, LangChain, RAG
...
TIP
不想自己写? 启动 Claude Code 之后, 跟它说 "我贴下我的旧简历" / "这是我 LinkedIn URL" / "我口述你帮我写", Agent 会帮你转成 cv.md。三种 onboarding 路径, README 里都给了提示词。
步骤 4: 配置 config/profile.yml
cp config/profile.example.yml config/profile.yml
打开 config/profile.yml, 填:
personal:
name: "Your Name"
email: "[email protected]"
location: "Berlin, Germany"
timezone: "CET"
targeting:
roles:
- "Senior Backend Engineer"
- "Staff Engineer"
- "AI Platform Engineer"
comp_target:
base_min: 130000
base_target: 160000
currency: "EUR"
remote_preference: "remote-first"
deal_breakers:
- "no on-call"
- "no Java"
- "no < 20 person startups"
# 想用中文 / 德语 / 法语 / 日语 / 土耳其语模式就加这一行
# language:
# modes_dir: modes/de
WARNING
不要手改 modes/_shared.md。系统更新会覆盖它。个人 archetype / 谈判话术 / 薪资目标, 一律写到 modes/_profile.md 或 config/profile.yml。这是 README 里反复强调的 Data Contract 规则。
步骤 5: 配置 portals.yml
cp templates/portals.example.yml portals.yml
默认带 45+ 公司 + 19 个搜索 query, 覆盖:
# AI Labs
- anthropic
- openai
- mistral
- cohere
# Voice AI
- elevenlabs
- vapi
- deepgram
# AI Platforms
- retool
- airtable
- vercel
- temporal
想加自己盯的公司, 在 portals.yml 里加即可。Job board 覆盖 Ashby / Greenhouse / Lever / Wellfound / Workable / RemoteFront。
步骤 6: 让 Agent 帮你 "Onboard"
# 选一个你装了的 AI CLI
claude # Claude Code
# 或
gemini # Gemini CLI
# 或
opencode # OpenCode
# 或
codex # Codex
在 CLI 里说:
帮我设置 career-ops。我刚 clone 下来, cv.md 和 config/profile.yml 都填好了。
请检查一下我的 onboarding 是不是完整的, 还有什么该补的。
Agent 会跑一遍开机检查:
cv.md在不在? ✅config/profile.yml是不是真的 (不是.example)? ✅modes/_profile.md是不是从_profile.template.md复制过来的? ⚠️portals.yml是不是真的 (不是.example)? ✅
任何一个 ❌ 都会进入引导模式, 一对一提示你补。
TIP
第一次跑 Agent 会主动问你 "你最自豪的一个职业成就是什么? 你有什么 deal-breaker? 你的 superpower 是什么?" — 多花 5 分钟认真答, 这部分会进 modes/_profile.md, 后续评估分数准不准全看它。第一周像在 onboarding 一个新来的招聘官, 第二周它就比大多数真人 recruiter 更懂你。
步骤 7: 第一次评估
粘贴一个 JD URL 给 Agent:
/career-ops https://jobs.anthropic.com/staff-software-engineer-applied-ai
Agent 会跑全自动流水线:
- Archetype 检测 — 分类成 LLMOps / Agentic / PM / SA / FDE / Transformation
- A-F 评估 — 6 维度 (Role summary / CV match / Level strategy / Comp research / Personalization / Interview prep)
- 生成报告 — 写到
reports/001-anthropic-2026-06-09.md - 生成 PDF — 跑 Playwright 渲染 ATS 简历, 输出到
output/001-anthropic-cv.pdf - 写入 tracker — 加一行到
data/applications.md - 更新 pipeline 完整性 — 跑
node verify-pipeline.mjs检查
你应该看到 30-60 秒后, 一份完整的评估报告 + 一份 ATS 简历 PDF 出现。
WARNING
第一份评估分数不会准。系统还不了解你, 容易给高分或低分。别急, 跑 3-5 份后, 根据结果反馈告诉 Agent "这个分数给高了" / "我没提过我有 XX 经验" — Agent 会把学到的写进 modes/_profile.md, 越用越准。
步骤 8: 第一次扫描
/career-ops scan
或等价地:
node scan.mjs # 零 token, 纯 API 抓取
node scan.mjs --verify # API + Playwright 二次验证, 过滤过期岗位
45+ 预配置公司 + 19 个搜索 query 一轮扫下来, 通常 200-500 个新岗位, 直接进 data/pipeline.md 收件箱。然后 claude -p workers 并发跑评估, 一晚上处理 100+ offer 不是梦。
步骤 9: 跑 TUI Dashboard (可选)
如果你想用终端 UI 看进度:
cd dashboard
go build -o career-dashboard .
./career-dashboard --path ..
6 个过滤 tab, 4 种排序模式, 分组/扁平视图, lazy-loaded 预览, 选中即改状态。Catppuccin Mocha 主题, 颜值能打。
步骤 10: 更新系统 (重要!)
Career-Ops 迭代快, 隔几周就有新 mode / 新公司配置。
# 在项目根目录, 让 Agent 帮你查
claude # 跟它说 "检查 career-ops 有没有新版本"
Agent 会自动跑 node update-system.mjs check, JSON 输出长这样:
{"status": "update-available", "local": "1.3.0", "remote": "1.4.0", "changelog": "..."}
它会告诉你 "v1.3.0 → v1.4.0 可用, 你的数据 (CV / profile / tracker / reports) 不会被碰, 要不要更新?"。要更新就:
node update-system.mjs apply # 更新
node update-system.mjs rollback # 不满意就回滚
常见问题排查
Q1: cv.md 找不到 / Agent 卡在 onboarding
最常见原因, cv.md 没放在项目根目录:
# 确认在项目根
ls -la cv.md
# 应该看到 -rw-r--r-- cv.md
# 没有就创建 (在项目根目录)
cd career-ops
touch cv.md
# 然后填内容
Q2: PDF 生成失败, "browser not found"
Playwright 没装或没装 Chromium:
npx playwright install chromium
# 国内网络慢的话可以加镜像
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright npx playwright install chromium
Q3: 评估分数虚高 / 虚低
第一周都这样。修复:
- 多跑 3-5 份评估, 每次给 Agent 反馈 "这分数我不同意, 因为 XX"
- Agent 会把学到的写进
modes/_profile.md - 重点看
modes/_profile.md里有没有补全: 你的薪资底线 / 远程偏好 / 角色定位 / 反向 case
重要: 个人化内容写到
modes/_profile.md或config/profile.yml, 不要改modes/_shared.md, 后者会被系统更新覆盖。
Q4: WebSearch / WebFetch 验证 offer 准不准
不准。Career-Ops 内部规则是 必须用 Playwright 验证 offer 还在:
# 走 slash command, 内部会跑 Playwright
/career-ops verify --url <JD_URL>
批量模式 (
claude -p) 里 Playwright 不可用, 会标**Verification:** unconfirmed (batch mode), 你得手动复核。
Q5: 批量评估 token 消耗爆炸
跑 100+ offer 评估, 一晚上 token 账单轻松过 $20。修复有三档:
- 降低 batch 数量 — 一次跑 10-20 个, 别一次扫 100+
- 本地模型兜底 —
ofertas(对比) /tracker/pdf这类结构化任务可以换本地小模型 - 接 Defapi 半价 API — 协议完全兼容, 跟官方走的是同一个模型, 每月账单直接腰斩 (具体配置见"目标读者"段后的 TIP)
Q6: 想换德语 / 法语 / 日语 / 土耳其语模式
# 1. 编辑 config/profile.yml
language:
modes_dir: modes/de # 或 fr / ja / tr
或者直接跟 Agent 说 "用德语模式跑", Agent 会切到 modes/de/ 下的评估逻辑 (带 DACH 市场的 13. Monatsgehalt / Probezeit / AGG / Tarifvertrag 这些本地化词汇)。
WARNING
改成 modes/de/ 之后, 你投英语岗位也会跑德语评估。除非你只投德语岗位, 不然保持默认英语模式, 只在投德语岗位时手动切。
Q7: 状态字段出现 **Applied** 之类带格式的脏数据
tracker 状态被手动加粗了。修复:
node normalize-statuses.mjs # 状态规范化
node dedup-tracker.mjs # 去重
node verify-pipeline.mjs # 健康检查
之后改 templates/states.yml 加 canonical 状态即可。
扩展阅读 / 进阶方向
- User Layer vs System Layer: 这是 Career-Ops 最有意思的工程设计 —
modes/_profile.md(用户) 永远不被modes/_shared.md(系统) 覆盖, 你 onboarding 的所有个性化东西, 跑 100 次系统更新也丢不了。建议读DATA_CONTRACT.md了解全貌 - 改 archetype: 跟 Agent 说 "change the archetypes to data engineering roles", 它会改
modes/_profile.md而不是modes/_shared.md - 多语言切换: 投德/法/日/土岗位时切
modes/{de,fr,ja,tr}/, 评估逻辑会自动本地化 (CDI / 賞与 / 通勤手当 这些当地词) - TUI Dashboard 进阶: dashboard 用 Go + Bubble Tea + Lipgloss 写的, Catppuccin Mocha 配色。源码在
dashboard/internal/, 想加自定义过滤 / 排序直接改 - STAR+R 故事银行:
interview-prep/story-bank.md会跨评估累积你的 "Situation + Task + Action + Result + Reflection" 故事, 3-5 份评估之后你就有了 5-10 个能应付任何行为面问题的故事 - fork 配套作品集: 作者的 portfolio 也是开源的 — santifer/cv-santiago, 有 AI 聊天机器人 + LLMOps 看板 + case studies, fork 一个改成你自己的
GitHub 仓库: santifer/career-ops, 多语言文档在 README.{cn,es,ja,ko-KR,pt-BR,ru,ua,zh-TW}.md, 设计哲学看 DATA_CONTRACT.md, 媒体报道在 docs/press/, 路线图在 ROADMAP.md (项目里搜不到的话, 问 Agent "show me your roadmap")。