问题背景:传统求职流程的瓶颈
在当前的就业市场中,求职者面临的核心困境是信息不对称与效率低下。手动追踪数十甚至上百个职位申请、为每个职位定制简历、评估公司与个人匹配度 —— 这些重复性工作消耗了大量时间,却难以保证质量。Career-Ops 项目正是针对这一痛点,基于 Claude Code 构建了一套完整的 AI 驱动求职编排系统,实现了从职位发现到申请材料生成的端到端自动化。
该系统的核心设计理念并非 "海投",而是精准筛选。正如项目作者所言:"公司使用 AI 筛选候选人,我只是给了候选人用 AI 选择公司的能力。" 系统通过 A-F 评分机制(10 个加权维度)过滤职位,强烈建议用户不要申请低于 4.0/5 分的职位,以此保护双方的时间成本。
14 种技能模式的状态机架构
Career-Ops 的技术核心在于其模块化的技能模式(modes)设计。项目通过 modes/ 目录下的 14 个 Markdown 文件定义了不同的工作场景,每个模式对应特定的 Agent 指令集:
- oferta.md:单职位完整评估(角色摘要、CV 匹配度、职级策略、薪酬调研、个性化建议、STAR 面试准备)
- pdf.md:ATS 优化简历生成
- scan.md:门户扫描(支持 Greenhouse、Ashby、Lever、Wellfound 等主流 ATS)
- batch.md:批量并行处理
- tracker.md:申请状态追踪
- apply.md:表单自动填充
- contacto.md:LinkedIn outreach 消息生成
- deep.md:深度公司调研
- training.md:课程 / 认证评估
- project.md:作品集项目评估
这些模式通过统一的状态机流转:
用户输入(职位 URL 或描述)
│
▼
┌──────────────────┐
│ Archetype │ 分类检测:LLMOps / Agentic / PM / SA / FDE / Transformation
│ Detection │
└────────┬─────────┘
│
┌────────▼─────────┐
│ A-F Evaluation │ 匹配度分析、技能缺口、薪酬调研、STAR 故事生成
│ (读取 cv.md) │
└────────┬─────────┘
│
┌────┼────┐
▼ ▼ ▼
Report PDF Tracker
.md .pdf .tsv
状态机的关键设计在于上下文继承。modes/_shared.md 提供了跨模式的共享上下文,包括用户档案、职业故事、证明点(proof points)等。系统通过 cv.md 和可选的 article-digest.md 持续学习用户背景,首次使用时需要充分 "喂养" 上下文,后续评估质量会显著提升。
Go Dashboard 实时同步机制
为了管理数十至上百个职位的追踪状态,Career-Ops 在终端层构建了一个基于 Go 的 TUI(Terminal User Interface)Dashboard。该组件采用 Bubble Tea 框架配合 Lipgloss 样式库,实现了 Catppuccin Mocha 主题的可视化管道浏览:
核心功能参数:
- 6 个过滤标签:按状态、公司、职级、评分区间等多维度筛选
- 4 种排序模式:按时间、评分、公司名称、申请状态排序
- 分组 / 平铺视图:支持按公司分组或平铺列表展示
- 懒加载预览:职位详情按需加载,避免大数据集卡顿
- 内联状态变更:可直接在 TUI 中修改申请状态
Dashboard 的数据源是本地 Markdown 表格与 TSV 文件的组合,通过 data/ 目录下的 pipeline.md 和 tracker.tsv 维护单一事实来源。这种设计确保了数据的可移植性与版本控制友好性,同时避免了外部数据库的依赖。
构建与运行参数:
cd dashboard
go build -o career-dashboard .
./career-dashboard --path ..
PDF 批生成流水线:ATS 优化与并行处理
简历生成是 Career-Ops 最具工程价值的模块。系统通过 Playwright/Puppeteer 将 HTML 模板渲染为 PDF,实现了 ATS(Applicant Tracking System)友好的输出:
技术实现要点:
- 字体选择:Space Grotesk(标题)+ DM Sans(正文),确保机器可读性
- 关键词注入:根据职位描述动态调整简历内容,提升 ATS 匹配度
- 模板引擎:基于
templates/cv-template.html的 HTML 模板,支持变量替换 - 批量处理:通过
batch/batch-runner.sh协调多个claude -p工作器,支持 10+ 职位的并行评估与 PDF 生成
批处理流水线的关键设计是自包含工作器模式。batch/batch-prompt.md 是一个完整的独立提示词,每个工作器接收单一职位描述,执行完整评估流程后输出报告、生成 PDF、更新追踪器。这种设计使得并行处理无需共享状态,天然支持水平扩展。
可落地的配置参数:
# config/profile.yml 关键字段
archetypes:
- llmops # LLM 运维
- agentic # Agent 系统
- pm # 产品经理
- sa # 解决方案架构师
- fde # 前端开发工程师
- transformation # 数字化转型
scoring_weights:
role_fit: 0.25
growth_potential: 0.20
compensation: 0.15
culture_match: 0.15
location_flexibility: 0.10
interview_likelihood: 0.15
门户扫描与数据完整性
Career-Ops 预配置了 45+ 公司的职位门户扫描器,覆盖 Anthropic、OpenAI、ElevenLabs、Retool、n8n 等 AI 领域头部企业。扫描器通过 Playwright 调用各 ATS 的公开 API(Greenhouse、Ashby、Lever 等)获取职位列表。
关键工程细节:
- 过期职位过滤:部分 ATS 会保留已关闭的职位在公开 API 中,需通过
--verify参数启用 Playwright 实时验证 - 去重机制:基于职位 ID 与标题的自动去重,避免重复评估
- 增量更新:仅对新发现的职位触发完整评估流程
扫描命令参数:
node scan.mjs --verify # 零成本发现 + Playwright 存活检查
工程实践建议
基于 Career-Ops 的架构设计,以下是可落地的实施 checklist:
初始化阶段:
- 创建高质量的
cv.md,包含结构化技能标签与量化成果 - 编写
article-digest.md积累 STAR+Reflection 故事库(5-10 个主故事可回答任何行为面试问题) - 配置
config/profile.yml定义目标原型与评分权重 - 自定义
portals.yml添加目标公司列表
日常使用:
- 使用
/career-ops {职位描述}触发完整流水线 - 评分低于 4.0 的职位建议跳过,保护时间成本
- 定期运行
npm run scan发现新职位 - 通过 Dashboard TUI 管理申请状态
性能优化:
- 批处理时控制并行度,避免 API 限流
- 使用
--verify参数过滤过期职位,减少无效评估 - 定期归档已关闭职位,保持追踪器数据量可控
资料来源
- GitHub - santifer/career-ops: AI-powered job search system built on Claude Code
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。