如果你最近正在找工作,你大概率经历过这种崩溃循环:每天早上打开 LinkedIn、Indeed、公司 careers page 一个一个刷,刷到眼睛疼,看到一堆 JD 又不知道哪些值得投。最后要么海投一堆低匹配岗位,要么漏掉几个真正的优质机会。
2026 年 6 月 6 日,GitHub 上线了一个叫 autopilot-jobhunt 的项目,做的事情很简单——让 AI agent 替你扫招聘页、评分、推送通知,需要的时候一键生成定制求职信。开源、免费、跑在你自己的机器上,24 天涨到 102 颗星,被收录进 Glama MCP 索引。
这篇文章会拆解它的工作原理,然后重点讲怎么把它改造成适合中文求职场景的版本——因为原项目默认盯的是 EU/NZ/Remote-friendly tech 公司,想找拉勾、Boss直聘、猎聘上的机会,得自己改几处。
一、autopilot-jobhunt 在做什么:四步流水线
整个项目的数据流极简,可以拆成四步:
- 🌐 扫描 130+ 公司 careers pages — 通过 TinyFish API(免费,无信用卡)每晚自动扫描预配置的招聘 URL 列表
- 🧠 LLM 批量打分(0-100) — 把抓到的 JD 和你的简历全文喂给 LLM,让模型判断匹配度
- 📱 Telegram 推送 Top N — 评分超过阈值(默认 60)的岗位自动推到你的手机
- ✉️ 一键生成求职材料 — 收到通知后,回
autopilot draft <id>,60 秒内生成定制 cover letter + resume bullets
整个 pipeline 是 cron-like 的——你每天下班回家,手机里可能已经有当天最匹配的 5 个岗位了。
原文作者把它叫做”agentic job search”——区别于”被动投递简历”的传统模式,autopilot-jobhunt 想做的是”主动找你该投的岗位”。这种”主动 agent”模式,可能是未来 AI 求职类工具的主流方向。
另外值得一提的是,整个项目的代码量并不大——核心模块 scanner.py / drafter.py / notifier.py / llm_utils.py / tools.py / mcp_server.py 加起来不到 2000 行 Python。这意味着一个熟悉 Python 的开发者花一个周末就能 fork 一份、改成自己的场景。这种”代码即配置”的轻量级,是它能快速被 fork 和传播的根本原因。相比之下,那些动辄几万行的”企业级 AI 平台”反而很难被个人用户改造。如果你正准备做一个 AI agent,这种”小而美 + 一键跑通”的设计,远比堆功能重要得多。
💡 找工作的最大成本不是写简历,而是”不知道哪些岗位值得投”。
二、60 秒跑通整个流程
原项目提供了两种模式:Standalone CLI 和 Claude Code MCP。下面先讲 CLI 模式,5 步跑通。
1. 安装
# 或带 MCP 集成:
pip install 'autopilot-jobhunt[mcp]'
2. 初始化
autopilot init
会生成 config.json、companies.json、resume/、.env 四个文件。

3. 填配置
config.json:放你的个人信息(姓名、技能、偏好城市、薪资区间)companies.json:放你要监控的招聘 URL 列表(原项目预配置了 130+ EU/NZ 公司)resume/YOUR_RESUME.md:放你的简历(markdown 格式).env:放 API 密钥
4. 准备 API key
需要的服务全部免费:
| 服务 | 作用 | 必需 | 怎么拿 |
|---|---|---|---|
| TinyFish | 扫描 careers pages | 必填 | agent.tinyfish.ai 注册 |
| OpenRouter | LLM 评分 | 不需要 Claude CLI 时必填 | openrouter.ai 注册 |
| Telegram Bot | 推送通知 | 可选 | @BotFather 创建机器人 |
5. 跑一次扫描
终端会实时打印扫描进度:
3 new job URLs. Fetching details…
Scoring jobs…
Saved 2 jobs from Mistral AI
Scanning HuggingFace…
5 new job URLs. Fetching details…
Saved 3 jobs from HuggingFace
Scan complete.
Top 5 sent to Telegram.
到这里,agent 已经替你把”扫 + 评分 + 推送”三件事做完了。接下来只需要:
autopilot export # 把所有扫到的岗位导出成 CSV
6. 设为每晚自动跑(可选)
如果你想完全自动化,加一行 crontab 就行:
30 2 * * * cd /path/to/my-job-hunt && autopilot scan >> scan.log 2>&1
从此以后你什么都不用管,每天早上打开手机,Top 5 匹配岗位已经在 Telegram 里等着你了。
💡 一个 agent 的价值,不取决于它能做什么,而取决于它替你省下了多少时间。
原作者把整个 5 步流程控制在 60 秒内——这个设计哲学很值得学习:任何 agent 的”上手成本”超过 5 分钟,99% 的潜在用户就会放弃。
三、0-100 评分逻辑:不是关键词匹配,是 LLM 真的读简历
autopilot-jobhunt 最值得说道的设计,是它的 LLM 评分机制——和市面上”关键词匹配”的求职工具完全不同。

评分分级表
| 分数 | 含义 | 建议动作 |
|---|---|---|
| 80-100 | 高度匹配 | 立即申请 |
| 60-79 | 良好匹配 | 值得申请 |
| 40-59 | 部分匹配 | 看心情 |
| < 40 | 不匹配 | 自动跳过 |
默认 min_score 是 60,也就是说评分低于 60 的岗位直接不推送——这避免了”AI 帮你投一堆垃圾岗位”的反效果。
评分 Prompt 怎么写
原项目的评分 prompt 是这样设计的:让 LLM 读你简历全文 + 岗位 JD 全文,然后用一句话解释”为什么匹配 / 为什么不匹配”。
举个例子,扫描 Mistral AI 后,Telegram 推送可能是这样的:
📍 Paris/London/Marseille, On-site
🔧 Python, LLMs, RAG, AWS, MLOps, DevOps
✅ Role combines applied AI + ML infrastructure in EU,
aligns with MLOps/RAG expertise and relocation goal
Score: 85/100
注意那个 ✅ 后的解释——这不是关键词,这是 LLM 真的读了两个文档后给出的判断。如果它说”不匹配”,理由也很具体,比如”需要 5 年分布式系统经验,你的简历只有 2 年”。
多模型 fallback
为了避免”某个模型 API 挂了整个流程废掉”,OpenRouter 接入了 4 模型 fallback 链。主模型挂了会自动切到下一个,直到四个全挂才报错。这种”工程冗余”是生产级 agent 的标志——而不是 demo 级的”能跑就行”。
评分不准怎么办:三个调优技巧
如果你跑了几次发现评分”离谱”(比如明明很匹配的岗位打分 50,或者明显不匹配的反而打分 80),可以从三个方向调:
- 简历写得越具体越好——评分 LLM 是读你简历全文,如果你只写了”熟悉 Python”,它就不知道你熟悉到什么程度。改成”用 Python 写过 200+ 自动化脚本,覆盖 ETL / API 集成 / 数据清洗”会准很多。
- 在 config.json 里加 positive_keywords / negative_keywords——作为 LLM 评分的”额外加权”,比如你不想去纯外企,就把”global / multinational”设为 negative。
- 手动微调 prompt——
scanner.py里的评分 prompt 可以直接改,加你自己的”必须满足的条件”或”加分项”,比如”5 年以上分布式系统经验 → +10 分”。
四、把它改造为中文求职场景(本土化实战)
这是这篇文章的重点——原项目默认盯的是海外公司,直接用在国内求职场景会水土不服。下面按优先级讲改造步骤。
改造 1:替换 companies.json 的目标公司
原项目 companies.json 里有 130+ EU/NZ/Remote 公司,需要替换成中文平台的公司列表。有三种粒度的策略:
策略 A:盯大厂招聘官网(推荐)
直接填大厂的官方 careers URL:
{"name": "字节跳动", "careers_url": "https://jobs.bytedance.com/", "search_domain": "bytedance.com", "location": "北京/上海/杭州", "region": "国内"},
{"name": "阿里巴巴", "careers_url": "https://talent.alibaba.com/off-campus", "search_domain": "alibaba.com", "location": "杭州/北京", "region": "国内"},
{"name": "腾讯", "careers_url": "https://careers.tencent.com/", "search_domain": "tencent.com", "location": "深圳/北京", "region": "国内"},
{"name": "美团", "careers_url": "https://zhaopin.meituan.com/", "search_domain": "meituan.com", "location": "北京", "region": "国内"},
{"name": "小米", "careers_url": "https://hr.xiaomi.com/", "search_domain": "xiaomi.com", "location": "北京", "region": "国内"}
]
策略 B:盯拉勾 / Boss直聘 / 猎聘 / 脉脉搜索结果
这四个平台的搜索结果页通常需要登录态或反爬,TinyFish 这种通用爬虫不一定能跑通。但有 workaround——你可以用 TinyFish 抓”高级搜索 URL”(带筛选条件),成功率更高。

策略 C:盯猎头 / HR 的 LinkedIn / 脉脉
如果你有特定的猎头 / HR 关注列表,可以把他们发布的岗位抓过来。
改造 2:把简历改成中文 + 调整评分 prompt
原项目评分 prompt 是英文的,中文简历喂进去会”语义失配”——LLM 可能会因为语言不同而低估匹配度。
修改方法:在 scanner.py 里找到评分 prompt,把英文 instruction 改成:
你是一位资深招聘专家。请阅读下面这位候选人的简历和目标岗位 JD,然后给出 0-100 的匹配评分。
【候选人简历】
{resume_text}
【目标岗位 JD】
{job_description}
【评分维度】
1. 技术栈匹配度(40%):候选人的技能是否覆盖岗位要求
2. 行业经验匹配度(30%):候选人的过往经历是否与岗位行业相关
3. 城市/远程匹配度(15%):候选人的工作地点偏好是否与岗位一致
4. 薪资/职级匹配度(15%):候选人的预期是否与岗位级别一致
【输出格式】
Score: <0-100>
Reason: <一句话解释为什么匹配或为什么不匹配>
"""
关键点:把英文 prompt 改成中文后,LLM 对中文简历的语义理解会更准,评分会更合理。
改造 3:把 Telegram 推送改成更适合国内的方式
Telegram 在国内需要科学上网。如果你不想用 Telegram,可以:
- 改造 1:换成企业微信 / 飞书 webhook(国内最通用)
- 改造 2:换成邮件推送(用 Resend / SendGrid 免费额度)
- 改造 3:改成本地 HTML 报告 + 每日邮件汇总(更适合周末统一看)
代码改动很小——notifier.py 里的 send_telegram 函数替换成对应的 webhook 调用就行。
💡 一个开源项目的真正考验,不是它能不能跑,而是它能不能在你自己的场景里跑。
改造 4:把评分阈值调成”国内保守模式”
国内求职有几个特殊考量:
- “卷”:同一个岗位会有几百人投递,即使评分 85 也要快速投,不能等
- “内推”权重:评分可以再加一个”是否有内推渠道”的维度,内推岗位评分自动 +10
- “急聘”标记:有些岗位长期挂着不急,真正急聘的会在 JD 写”急” / “3 天内到岗”——可以单独标记
这些都可以在 config.json 里加自定义字段实现。
五、Claude Code MCP 集成:用自然语言驱动 agent
如果你用 Claude Code,可以直接把 autopilot-jobhunt 当成 MCP server 接入,用自然语言驱动整个流程:
claude mcp add autopilot-jobhunt \
–env TINYFISH_API_KEY=your_key \
–env OPENROUTER_API_KEY=your_key \
–env TELEGRAM_TOKEN=your_token \
–env TELEGRAM_CHAT_ID=your_chat_id \
— python -m job_hunt.mcp_server
接入后,在 Claude Code 里直接说:
"Draft an application for job #2"
"Export jobs from the last 7 days with score above 70"
Claude Code 会自动调用对应的 MCP 工具,执行扫描 / 生成 / 导出。整个 agent 跑在你自己的电脑上,但”指挥它”的界面是 Claude Code 的自然语言对话——这其实是 omni-harness 的一个迷你版本。
六、”一人痛点 agent”的爆款公式
autopilot-jobhunt 24 天 102 颗星,看起来不多,但对”垂直场景工具”来说已经不错了。把它和前面两篇讲到的 Skill 市场 / omnigent 对比,你会发现一个清晰的模式:
真正能爆的 AI agent,不是”什么都能做”,而是”替你解决一个具体痛点”。
把它总结成一个公式:
> 痛点足够具体 + 解决方案足够自动化 + 工作流足够轻量 + 用户可以一键跑通
autopilot-jobhunt 四个条件全中:
- 痛点:求职期间每天刷 100+ 招聘页的痛苦(具体、真实、高频)
- 自动化:扫描 + 评分 + 推送全自动化,不需要人工介入
- 轻量:pip install 一行命令,跑在你自己的机器上,不需要付费 SaaS
- 一键跑通:
autopilot init之后跟着文档 5 步跑完
💡 AI agent 的下半场,不是做大而全的平台,而是做小而美的”一人痛点”工具。
如果你正在考虑做自己的 AI agent,autopilot-jobhunt 是一个非常好的对标模板。它证明了:
- GitHub 仍是 AI agent 的主要分发渠道(不是 Chrome Store、不是 GPT Store)
- MCP 集成是加分项(不是必需,但能让 Claude Code / Cursor 用户零成本接入)
- 免费 + 开源 + 跑在用户本地仍然是最被接受的部署模式
- README 第一屏必须讲清楚”替你做了什么”(不是”我们用什么技术栈”)
💡 在 AI agent 时代,代码不再是壁垒,”发现一个真问题”才是。
补充一个数据点:autopilot-jobhunt 在 GitHub 上的 stargazer 列表里,排名靠前的 contributors 大部分是 EU/Remote 求职场景的开发者。这说明一件事——真正能持续维护一个 agent 的人,就是天天被这个痛点折磨的人。这也解释了为什么很多”大而全”的 AI agent 平台做得不够好,因为它们的团队并没有天天被某个具体痛点折磨。
💡 最好的 AI agent 产品经理,就是那个被痛点折磨得睡不着觉的用户本人。
写在最后
回到开头那个问题——autopilot-jobhunt 是不是 AI agent 时代”个人生产力工具”的代表?
它没有 omnigent 那么宏大的叙事,也没有 Skill 市场那么大的想象空间。但它做的事情很具体:让你在找工作这件事上,每天少花 2 小时。对一个正在求职的人来说,这种时间节约比任何”革命性”都更实在。
更重要的是,它的代码和架构完全公开,任何人 fork 一份改成中文求职场景,就能立刻拥有自己的”AI 求职助手”。这种”开箱即用 + 容易改造”的开源项目,可能比任何”杀手级应用”都更能推动 AI agent 的实际渗透。
💡 AI agent 真正改变生活的方式,是它默默替你做完那件你不想做的事。
你或者身边的朋友,正在被什么”一人痛点”困扰?有没有想过把它做成 autopilot-jobhunt 这样的开源 agent?(评论区聊聊)
💡 当 AI agent 学会了”替你做一件具体的事”,它就不再是技术,而是工具。
💡 下一个 killer agent,可能就藏在你每天重复做的某件烦人事里。


我要评论