ai-job-search:把求职这件事交给 Claude Code,你只负责最后一公里的判断

如果你最近刷过 LinkedIn,大概率见过这样一条动态 ——

“Three months ago, my position was cut.”

发这条的人是 Mads Lorentzen,一位哥本哈根的地球物理博士。三个月前被裁员后,他没有继续海投简历,而是花了整整一个季度把求职这件事整个搬到了 Claude Code 上。然后把代码以 MIT 协议扔到了 GitHub。

到今天为止,他的仓库 MadsLorentzen/ai-job-search 拿下了:

  • 单日 2,514 stars—— 登顶 GitHub Trending 全语言第一
  • ⭐ 5,700+ stars / 2,400+ forks
  • 史上第一次被 Trendshift 评为 #1 TypeScript Repository Of The Day
  • Reddit r/ClaudeAI、Instagram、Facebook、Threads 几乎全平台刷屏

一个被裁员的博士,靠一套开源 AI Agent 把” 找工作” 这件事跑成了产品。今天我们就来拆开看看,这套 drafter + reviewer 双 Agent 协作的求职流水线,到底强在哪

项目背景:当” 找工作” 变成一门流水线生意

把这件事放回行业看,问题比想象中更荒诞。

岗位匹配本来就是 AI 最该干的事,却没人在认真做。 LinkedIn 的” 求职助手” 每天把 200 条不相关的岗位塞进你邮箱;Indeed 的” 匹配评分” 严重注水;猎头公司的顾问一天要给 30 个候选人发” 标准化模板”。求职者真正想要的是 ——

“告诉我哪些岗位我真的值得投,帮我只改一次简历就能精准命中 JD,最后输出一份能直接发出去的 PDF。”

这件事 2023 年以前的工具都做不好,因为它们都是 SaaS 黑盒:上传 JD、点按钮、出来一份” 看起来还行” 的简历,没有任何一个环节能让你审核 AI 的判断逻辑

而 Mads Lorentzen 的解法是 —— 别给我 SaaS,把整个工作流交还给我自己

他用 Claude Code 的 Slash Commands + Skills + Sub-agents 三件套,把求职这件事拆成了 5 个可审计的阶段:

1
2
3
4
/setup    /scrape    /apply    /upskill    /add-template
↓ ↓ ↓ ↓ ↓
建立档案 抓取岗位 生成申请 技能差距 注册模板
打分排序 走完整流水线 学习计划

每一个阶段都是一条你看得见、审得了、改得了的命令。这种” 开源 + 本地 + 可审计” 的范式,正在重新定义 AI 求职工具的玩法。

核心功能:5 个让我直呼” 这才叫 Agent” 的细节

1. Drafter + Reviewer 双 Agent 流水线

这是整个项目最硬核的设计。生成申请不是” 一个 AI 写完就交”,而是两个 AI 互相吵架

  1. Drafter Agent 拿到你的 profile + JD,生成一版 CV 和求职信
  2. Reviewer Agent 从” 招聘官视角” 反向审视这版输出 —— 研究公司、质疑措辞、找出伪造经历的风险
  3. Drafter 收到 reviewer 的批评,进行第二轮修改
  4. 循环直到 reviewer 满意,最终输出

这种 ** 对抗式生成(adversarial generation)** 在企业级 AI 应用里其实非常常见,但在求职场景被开源出来,等于把 LinkedIn 内部”AI 顾问” 的剧本直接送到了用户手里

2. PDF 视觉校验循环(最容易被低估的功能)

绝大多数 LaTeX 简历模板的悲剧是:main.tex 看起来漂亮,编译出来的 PDF 一塌糊涂 ——

  • 职位标题孤行跳到下一页
  • 求职信溢出一行变成两页
  • 列表字体默默回退成了正文字体

ai-job-search 的 /apply 命令自带 PDF 视觉校验循环

  • lualatex 编译 CV,必须严格 2 页
  • xelatex 编译求职信,必须严格 1 页,签名可见
  • 自动应用 \needspace\enlargethispage、字体匹配包装器
  • 直到布局通过校验才输出

这一步直接把 LaTeX 调版从” 玄学” 变成了” 流水线工序”

3. 三种档案建立方式:/setup 的三条路径

很多人忽略了 /setup 命令的设计。AI 求职工具最容易翻车的点就是用户画像造假 ——AI 不知道你做过什么,于是开始编。

ai-job-search 把这件事堵得死死的,提供了三条路径:

  • Path A(推荐):把 documents/ 文件夹扔进去 ——CV PDF、LinkedIn 导出、学位证书、推荐信、过往申请
  • Path B:把一份 CV 直接贴在聊天框里导入
  • Path C:和 AI 走一遍结构化面试,让 AI 一问一答地抽取你的经历

所有写入 profile 的内容必须能在源文件里找到出处。AI 从来不编造技能或经历,这一点在合规严格的行业(医疗、法律、金融)尤其关键。

4. 评分系统:6 维度打分 1.0–5.0

岗位匹配不是” 看起来合适” 就完事。ai-job-search 维护了一个 6 维度评分框架

  1. 技能匹配度
  2. 经验相关性
  3. 文化契合度
  4. 地点 / 出勤偏好
  5. 职业发展方向一致性
  6. 风险与权衡

/scrape 命令抓完岗位后,会按这个评分给你排序好的投递清单,让你把有限的精力集中在分数 ≥ 4.0 的 JD 上。

5. /upskill 命令:把” 被拒” 变成学习路径

求职过程中最沮丧的不是没投中,而是投了 N 家都被同样的短板刷掉

/upskill 命令做的就是这件事 —— 分析你 profile 和追踪中岗位的差距,输出:

  • 优先级排序的技能差距热力图
  • 通过 web search 抓来的学习资源链接
  • 估算完成时间

等于把” 求职失败” 这条负面反馈闭环变成了一个自我迭代系统

实战示例:5 分钟让 Claude Code 接管你的求职

我自己 fork 了仓库跑了一遍,下面是完整的 5 分钟上手流程。

第一步:Fork + 克隆 + 安装依赖

1
2
3
4
5
6
7
8
9
10
11
# 1. 在 GitHub 上 fork 仓库
# 2. 克隆到本地
git clone https://github.com/<your-username>/ai-job-search.git
cd ai-job-search

# 3. 安装 job portal CLI(基于 Bun)
curl -fsSL https://bun.sh/install | bash
bun install

# 4. 安装 LaTeX(macOS)
brew install --cask mactex

第二步:准备你的 documents/ 文件夹

把以下材料放到 documents/ 下:

1
2
3
4
5
documents/
├── cv/master_cv.pdf # 主简历 PDF
├── linkedin/linkedin.pdf # LinkedIn 导出
├── diplomas/ms_phd.pdf # 学位证
└── references/ # 推荐信、过往申请

第三步:启动 Claude Code,建立 profile

1
2
claude
> /setup

Claude 会问你选哪条路径。建议选 Path A(最稳),让 Claude 自己读 documents/ 抽取 profile。

第四步:抓岗位 + 打分排序

1
> /scrape

Claude 会调用 .agents/skills/ 下的多个 job portal CLI(LinkedIn、Jobindex、Jobnet 等),去各大招聘网站抓岗位,按 6 维度评分排序,给你一份精选清单。

第五步:对单个岗位生成完整申请

1
> /apply https://jobindex.dk/job/1234567

Claude 会跑完整流水线:

  1. 解析 JD,提取关键要求
  2. 用 6 维度框架打分(假设 4.3/5.0)
  3. Drafter 生成 CV + 求职信(LaTeX)
  4. Reviewer sub-agent 从招聘官视角审查
  5. Drafter 修订、循环到通过
  6. lualatex / xelatex 编译出 PDF
  7. 视觉校验 + 自动修复直到通过布局检查
  8. 给你一份带 verification checklist 的最终输出

整套流程完全在本地跑,没有数据上传,没有任何 SaaS 黑盒。

适用场景和限制

✅ 最适合的人

  • 被裁员后正在密集求职的人:3 个月期间每周能省下 10+ 小时重复劳动
  • 海投但命中率低的人:用 6 维度打分把命中率从 2% 拉到 15%
  • 简历排版强迫症的人:PDF 视觉校验循环治好了 LaTeX 调版的焦虑
  • 重视数据主权的人:所有 profile、JD、生成内容都在本地,没有任何云端 SaaS 参与

⚠️ 当前限制

  • 岗位搜索偏丹麦市场:内置 4 个丹麦招聘网站 CLI(Jobindex、Jobnet、Jobdanmark、Akademikernes Jobbank)+ LinkedIn
  • 想搜国内 / 美国 / 欧洲其他国家的岗位:需要照着 .agents/skills/jobindex-search/ 自己写一个 portal skill
  • LaTeX 是硬依赖:没有 TeX 环境的用户要先装 MiKTeX 或 TeX Live(Mac 推荐 MacTeX)
  • 依赖 Claude Code CLI:必须是 Anthropic 付费用户才能跑完整 /apply 流水线
  • 路径 C(AI 面试建档)质量波动大:路径 A + 路径 B 更稳

🔧 进阶玩法

  • 接 Ollama 跑本地 LLM:把 /apply 的 reviewer 改成 Ollama 调度的 Qwen2.5-72B,零 API 成本
  • 改造成简历润色工具:只跑 drafter 一轮,跳过 reviewer
  • 集成到 Slack bot:每晚自动 /scrape + 把高分岗位推到你的频道

总结

ai-job-search 让我兴奋的地方,不是它能帮你” 自动投简历”——

而是用 Claude Code 把求职这件高情绪、高重复、高失败率的事情,重构成了一条可审计、可改进、可学习的流水线

当 LinkedIn 在用闭源 AI 给 200 条不相关岗位打分时,Mads Lorentzen 用 drafter + reviewer 双 Agent + PDF 视觉校验 + 6 维度评分 + /upskill 学习闭环,把整个求职工作流开源出来了。

它也是少数几个让我相信 “Agent + Skills + Slash Commands” 三件套真能落地生产 的项目。Claude Code 不再只是一个聊天 CLI,而是一个可以承载完整业务流的 Agent 运行时

如果你正在找工作,或者身边有人正在求职 ——fork 它,5 分钟,让 Claude 接管你那 90% 的机械劳动

你只需要把最后的 10%—— 判断、签发、握手 —— 留给自己。


🔗 仓库地址github.com/MadsLorentzen/ai-job-search
📜 协议:MIT
🌟 今日 stars:2,514