Fork 完就是你的,AI 求职框架怎么把 Claude Code 变成猎头

发布于 2026年07月12日 19:40 #Claude#Github 解读 原文链接

Fork 完就是你的,AI 求职框架怎么把 Claude Code 变成猎头 封面图
  • Fork-and-Own 模式让用户完全掌控求职工具和数据,无需依赖 SaaS 平台
  • 三层架构包括结构化画像、多平台职位抓取和 LaTeX 文档生成
  • 丹麦本地化限制可通过替换搜索 skill 适配其他市场
  • 测试覆盖度高,体现工程素养,社区推动 CI 自动化
  • 该模式可迁移至投资分析、学术申请等个性化场景

大家好,我是若风。

2026 年 3 月 18 日,一个叫 Mads Lorentzen 的丹麦开发者把自己的求职工具传上了 GitHub。四个月后,21,234 个 Star,6,244 个 Fork。

6,244 个 Fork。这个数字比大多数项目的 Star 还多。为什么这么多人要 Fork 它而不是直接用?

因为它的设计哲学就写在 README 第一句,「Fork it and own it」。Fork 完就是你的,不是你订阅的服务,不是你租的 SaaS,是你机器上跑的、你自己掌控的求职工具。

一句话定位

ai-job-search 是一个基于 Claude Code 的 AI 求职框架,你 Fork 之后填入个人资料,Claude 就帮你评估职位匹配度、定制简历、写求职信、准备面试。MIT 协议,TypeScript 为主,数据全在本地。

架构拆开看

很多人第一眼以为这是个简单的 Claude Code prompt 封装。翻进代码你会发现,它实际上是一个三层架构。

第一层是候选人画像系统。核心文件是 CLAUDE.md,这是整个仓库的灵魂。它的角色定义部分写了五条职责,职位匹配评估、CV 定制、求职信撰写、面试准备、职业策略。但真正有意思的不是这些职责定义,而是它下面的候选人画像模板。

画像分为六个维度,身份信息、教育背景、工作经验、技术技能、证书、出版物和获奖。每个维度都有一堆 [PLACEHOLDER] 占位符。你跑一次 /setup,Claude 会用交互式问答把这些占位符全部填上。

这套设计的本质是,把非结构化的人变成了结构化的数据。你的简历不再是 PDF 里的一堆文字,而是一个 Claude 可以精确引用的结构化档案。当你说「帮我匹配这个职位」,Claude 不是在重新读你的简历,而是在查一个结构化的画像,逐项比对职位需求。

第二层是多平台职位抓取管道.agents/skills/ 下有 6 个独立的搜索 Skill,每个对应一个丹麦招聘平台。

  • freehire-search
  • jobbank-search
  • jobdanmark-search
  • jobindex-search
  • jobnet-search
  • linkedin-search

每个 Skill 都是一个完整的 CLI 工具,有自己的 cli.tscommands/search.tscommands/detail.ts 和测试。这不是简单的 API 调用封装,每个平台有独立的解析逻辑,因为每个网站的 HTML 结构和 API 都不一样。

这些 CLI 工具的设计很统一。search.ts 做搜索,detail.ts 抓详情,helpers.ts 做数据解析。Claude 通过 SKILL.md 知道怎么调这些 CLI,CLI 返回结构化的职位数据,Claude 再拿这些数据做匹配分析。

第三层是文档生成系统templates/ 目录里是 LaTeX 模板,cv/cover_letters/ 是输出目录。salary_lookup.py 是一个 Python 脚本,做薪资参考查询。upskill/ 目录暗示还有一个技能提升模块。

LaTeX 是个有意思的选择。大多数求职工具用 Word 或 Google Docs 模板,输出 PDF。ai-job-search 用 LaTeX,意味着 Claude 生成的不是排版好的文档,是 LaTeX 源码,再通过 LaTeX 编译器生成 PDF。好处是,版本控制可以追踪每次修改,模板复用性极强,排版质量远超 Word。

Fork-and-Own 模式为什么重要

6,244 个 Fork 不是偶然的。这个数字背后藏着一个和大多数 AI 工具截然不同的模式。

大多数 AI 求职工具是 SaaS 模式。你上传简历,平台帮你匹配职位,生成求职信。你交月费,你的数据存在平台服务器上。平台关了,你的数据没了。平台改了定价策略,你没有选择。

ai-job-search 反过来。你 Fork 仓库,它是你的了。你的简历数据在本地,你的 Claude Code 在本地跑,你的职位搜索结果在本地。没有任何一个中间商可以关掉你的服务,也没有人可以看你的求职数据。

这个模式的代价是,你需要自己维护。Fork 完你要跑 /setup 填资料,如果原仓库更新了新的搜索 Skill,你要自己 merge 或 cherry-pick。issue #46 请求加一个 /followup 命令做跟进管理,这种功能更新你得自己拉。

但这个代价恰恰是 6,244 个人选择 Fork 的原因。他们不想把求职这件事外包给一个平台,他们想拥有这个工具。

丹麦本地化是特点也是限制

6 个搜索 Skill 有 5 个是丹麦招聘平台,只有 linkedin-search 是通用的。salary_lookup.py 查的很可能也是丹麦薪资数据。

这说明 ai-job-search 是 Mads 为自己的丹麦求职场景构建的。他没有试图做一个通用工具,而是先把自己的需求解决好,然后把代码开源让别人参考。

这恰恰是 Fork-and-Own 模式的力量。如果你在中国,你不需要 Mads 的丹麦招聘平台 Skill,你需要的是 BOSS 直聘、拉勾、智联的 Skill。你 Fork 他的仓库,保留 CLAUDE.md 的画像系统和 LaTeX 模板系统,把搜索 Skill 替换成中国的招聘平台,这个工具就变成你的了。

这是 Fork-and-Own 和 SaaS 的根本区别。SaaS 想覆盖所有人,结果是所有人的需求都只满足 70%。Fork-and-Own 只解决一个人的问题,但因为开源,Fork 之后的每个人都能把它调整成 100% 适配自己的场景。

测试覆盖度说明什么

一个值得注意的细节,每个搜索 Skill 都有测试。tests/ 下有 cli-flag-validation.test.tscommands.test.tsparsing.test.ts。这说明 Mads 不是写了个 demo 就传上去了,他在认真维护这些 CLI 的解析逻辑。

招聘网站的 HTML 结构经常变,解析逻辑一断就抓不到数据。有测试覆盖意味着当目标网站改版时,测试会报红,提醒你修复。这在爬虫类工具里是少见的工程素养。

issue #134 标题是「Run CLI test suites in CI」,说明社区在推动把测试自动化到 CI 里。这个项目正在从「一个人的工具」成长为一个有社区参与的工程项目。

这套设计能迁移到什么场景

我觉得 ai-job-search 最值得带走的不是求职功能本身,而是一个模式,把个人画像做成结构化数据 + 多源数据抓取 + AI 分析 + 文档生成

这个模式可以迁移到任何需要「个性化 + 多源数据 + 文档输出」的场景。

  • 个人投资分析,填入你的投资偏好,抓取多个券商/财经平台数据,AI 分析后生成投资建议报告
  • 学术申请,填入你的学术背景,抓取目标学校招生信息,AI 匹配后生成个人陈述
  • 自由职业者投标,填入你的技能栈,抓取 Upwork/Fiverr 项目,AI 评估匹配度后生成投标信

核心都是同一个三明治,结构化的个人画像做底层,多源数据抓取做中层,AI 分析和文档生成做上层。ai-job-search 把这个三明治用求职场景演示了一遍,但配方是通用的。

该 Fork 它吗

如果你正在找工作,而且用的是 Claude Code,这个仓库值得 Fork。但要做好准备,你至少要花一两个小时做 /setup 填资料,如果你的目标市场不是丹麦,你还要自己写搜索 Skill。

如果你不找工作,但你对 AI Agent 的应用架构感兴趣,这个仓库也值得读一遍代码。它展示了一个非常实用的模式,怎么用 Claude Code 的 Skill 系统 + CLI 工具构建一个完整的个人助手。不是炫技,是解决真实问题。

如果你只是想看看 21K Star 的项目长什么样,现在你知道了,它的核心就是一堆 CLAUDE.md 和 SKILL.md。没有魔法,只有工程。

评论互动

© 2026 王若风的技术博客 · Powered by Astro