中文简历怎么喂:把AI求职工具的语义匹配调顺,先做对三件事

发布时间:2026/10/17 21:35:56
中文简历怎么喂:把AI求职工具的语义匹配调顺,先做对三件事 中文简历怎么喂把AI求职工具的语义匹配调顺先做对三件事【免费下载链接】ai-job-searchThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.项目地址: https://gitcode.com/GitHub_Trending/ai/ai-job-search2026 年ai-job-search频繁登上 GitHub Trending——一个把 Claude Code 变成求职工作区的开源框架/scrape搜职位、/rank批量打分、/apply生成定制化简历与求职信、/interview做面试准备。社区里大量文章都在讲怎么配模型、调参数、写 prompt但很多人忽略了一个更前置的问题简历本身是怎么被喂进这个系统的。这个框架的匹配链路是输入 → 语义评分 → 输出材料而评分质量的上限在输入端就定死了。项目作者一位被裁的地球物理学家用这套工作流投出 69 份申请、拿到 20 个一面并成功转行 AI 工程师他在 README 里反复强调一个经验输出质量的单一最大变量是你往 profile 里塞了多少细节。对中文用户来说喂简历这件事有三层坑格式层PDF 文本层陷阱、语义层中文术语与 JD 字段的映射、质量层评分框架对输入的隐含要求。这篇文章直接对着仓库源码讲清楚这三件事读完你就能在动任何参数之前先把输入侧调顺。一、简历格式为什么纯文本比 PDF 更稳/setup到底能读什么/setup是框架的入职入口它扫描documents/目录来构建你的候选画像。这个目录能吃什么格式直接决定了你的简历能不能被正确消化。documents/README.md 里写得很直白格式/setup可读性说明.pdf可读直接用 Read 工具解析.tex可读LaTeX 源码结构与内容都可读.md/.txt可读纯文本.docx不可读必须先转成 PDF.png/.jpg不可读扫描件不会被解析必须用文本型 PDF也就是说一张用手机拍下来、或者扫描仪生成的简历图片框架是看不见的——它根本没有文本层。而很多国产招聘网站导出的简历恰恰是这种格式。为什么ATS 视角的 PDF 是稀缺资源这个框架对 PDF 的警惕比一般求职者深得多。.claude/commands/apply.md 的 Step 5d 明确写了一条铁律ATS 解析器读的是 PDF 内嵌的文本层text layer不是渲染出来的页面。一份看起来完美的 PDF文本层可能是一堆乱码。仓库为此专门写了 tools/verify_pdf.py用pypdf优先或 Popplerpdftotext抽取文本层做四类检查联系信息必须是字面文本模板里 fontawesome 图标抽出来是MOBILE-ALT、Envelope这类字形名这是无害噪音但只靠图标或超链接承载的邮箱对 ATS 就是隐形的无乱码残留(cid:NNN)标记或替换字符说明字体嵌入时没有 Unicode 映射ATS 看到的和你看到的完全是两份文件阅读顺序正确多栏模板会把不同区块的行交错抽出来日期可识别这是最阴险的一条。中文简历最该避开的陷阱日期与编码.claude/skills/job-application-assistant/05-cv-templates.md 记录了一个真实事故一份用 moderncv 模板生成的简历在 Workday 导入时短合同的结束日期丢了、教育经历一条都没导进去被迫手动重录。原因有二LaTeX 的--会被合成一个 en-dashU2013很多解析器只在 ASCII 连字符U002D上切分日期区间于是2016--2024在文本层里是2016–2024解析器根本看不到一个区间。修复方式是日期参数只写单个连字符。只写单个年份没有结束日期\cventry{2016}导入后只有开始时间没有关闭时间。tools/verify_pdf.py里的--ascii-dates检查专门抓这个它故意不做折叠直接扫原始文本层里年份 Unicode 破折号的组合。而normalize_text()函数把映射回 U2019、--映射回 U2013、NFC 归一化——折叠只用于比较绝不用于输出因为原始文本层才是 ATS 真正看到的东西。对中文用户编码还有一层额外的雷pdftotext若来自 Xpdf 系构建默认按 Latin-1 输出。一份完全正常的中文 CV在缺了-enc UTF-8的情况下读回来全是替换字符——而仓库明确要求 fallback 必须带-enc UTF-8。中文、日文这类 CJK 文本对编码错误的敏感度远高于西文。结论很直接往documents/cv/里喂简历纯文本.md/.txt或文本型 PDF 最稳扫描件和.docx是最差输入。如果你现有的中文简历是 Word 或扫描版先在本地转成文本型 PDF 或纯 Markdown 再让/setup读比事后排查匹配分数异常便宜得多。二、中文岗位术语与JD字段的映射框架如何理解工作按职能不按职位名框架对检索策略的设计有一个核心认知同一个底层职能在不同公司、不同市场有完全不同的职位名。.claude/skills/job-scraper/search-queries.md 开头就要求Organize by function, not job title. The same underlying work carries different titles across companies and markets (a Data Scientist role at one employer may be posted as Insights Analyst or Data Consultant at another).评估侧同样如此——.claude/skills/job-application-assistant/04-job-evaluation.md 的 Experience Match 维度明确写着匹配的是工作的职能与性质而不是字面上的职位名Data Consultant 和 Data Scientist 可以是功能上完全相同的岗位。这对中文求职者是个好消息国内 JD 里数据挖掘工程师算法工程师BI 分析师商业分析经常描述同一类工作框架的设计本来就不要求你押中某一个精确标题。你在/setup --section search里要做的是描述你每天真正想做什么而不是背一串职位名。检索词的多语言规则翻译不要机翻search-queries.md有一条容易被中文用户忽略的规则每个查询类别都要用 Languages 表里的每一种语言写一遍并且要按语义翻译而不是逐字机翻——它举的例子是Frontend Developer应该翻译成Desarrollador Frontend而不是逐字对译。放到中文场景一个中英双语求职者/scrape的查询应当同时覆盖机器学习和machine learning、大模型和LLM、后端开发和backend developer。这一步不做搜索面直接砍半。这里还有一层更隐蔽的关联查询语言与你声明的 Languages 表强相关。框架有个 Language Gate后面细讲会按你的语言表硬性过滤岗位——搜索词生成和语言过滤用的是同一份数据语言表填得不诚实检索和评分两头都会错。Language Gate中文简历必须如实填写的语言表这是整个框架里对中文用户影响最大的一个机制。04-job-evaluation.md 的 Language Gate 在评分之前运行逻辑只有三行JD 的语言要求 vs. 你的 Languages 表裁决要求一种你根本没声明的语言如需要流利日语而你表里没有日语行FAIL硬停不评分、不起草要求你声明过的语言但要求等级流利nativeC1读起来明显高于你声明的等级FLAG 后继续不自动拒绝但必须把差距显式呈现给你裁决要求你声明过的语言、且等级不高于声明或 JD 没写等级PASS注意第一行的措辞未声明的语言被当作硬性拒绝而不是一个可以含糊过去的缺口。对中文用户这意味着两件事如果你把中文漏填了一份要求流利中文的 JD 会被静默砍掉而你根本不知道反过来诚实声明自己的真实等级比如英语 B1/B2比虚标fluent更划算——虚标只会让你在 FLAG 名单上反复被要求人工裁决而诚实声明 岗位要求更低时直接 PASS。/setup的 Path C访谈模式和 Path A文档模式都会主动收集语言表包括从 LinkedIn 导出的 Languages 区段。这是少数几个填错代价极大、填对零成本的字段。关键词映射用 JD 的原文词别用同义词/apply的最后一道关卡是 ATS 关键词覆盖检查Step 5d它把 JD 里的每个必选/优选词与抽取出的 CV 文本层逐一比对给出四种状态状态含义covered词原样出现或微不足道的变形synonym-only概念存在但用的是别的词missing (have it)你确实有这个技能但 CV 里没写missing (gap)真缺口保持缺失绝不硬塞规则原文有一句关键指导Prefer the postings exact term over a synonym when it is truthfully applicable - ATS keyword matches are often literal.当 JD 的原文词在事实上成立时优先用原文词——ATS 的关键词匹配经常是字面匹配。放到中文 JD岗位写高并发你的简历写大流量系统那是synonym-only——概念对上了字面没对上如果高并发确实是你真实做过的事改写成高并发系统成本为零收益是字面命中。岗位写熟悉 Kubernetes简历写容器编排经验同理。这个事实成立就改用原文词的规则是中文简历语义映射里性价比最高的一步因为它不需要你造假只需要你把真话换一种更贴 JD 的说法。与之配套的还有两个细节CV 语言是一个 profile 级设定CV language:行默认 English所有 CV 保持一致而求职信永远跟随每份 JD 的语言。给国内公司投递时把CV language改成中文并在 05-cv-templates.md 要求的范围内把模板里硬编码的英文章节标题Professional Experience、Education等一并翻译——该文件专门警告过CV 主体全中文化了章节标题却还是英文模板默认值读起来非常不专业而且特别容易被遗忘因为正文翻译才是显眼的部分。多词短语缺词的误报pypdf有时会在标点周围插入空格导致一个词被拆成两截。中文分词尤其容易踩这个坑机器学习被抽成机器 学习仓库的建议是在下结论前用另一个抽取器复核。受控词表中文检索时的隐性约束如果你用仓库自带的freehire-search多市场技术岗聚合器搜中文市场的岗位.agents/skills/freehire-search/SKILL.md 有两条硬约束facets 是受控词表不允许发明值--region/--country/--city/--seniority/--category/--skill都有预定义枚举比如--skill go,kubernetes且地理位置是 facet 不是自由文本。也就是说这套工具的检索粒度是英文词表驱动的中文长尾岗位更多要靠search-queries.md里的site:查询兜底——这也是框架设计上的分工CLI 负责结构化数据源WebSearch 兜底长尾。三、调参前先检查的输入质量清单社区文章爱讲temperature、并发、模型选择但仓库的设计文档反复指向同一个事实评分框架的每一分都是从你的 profile 里榨出来的。04-job-evaluation.md 的评分权重是Technical Skills30%Experience Match25%Behavioral Fit15%Career Alignment30%Location 是 Pass/Fail不参与加权Language Gate 和 Eligibility Gate 在评分前硬过滤。三个维度加起来 85% 的权重直接依赖输入质量。动任何调参旋钮之前先过一遍这份清单——每一条都能在源码里找到依据1. 事实三源一致性Grounding Audit 的前置条件/apply的起草者drafter与评审者reviewer都会执行 Factual Grounding Audit草稿里的每个日期、雇主、职位名、量化指标必须能被 .claude/skills/job-application-assistant/01-candidate-profile.md、cv/main_example.tex 和根目录 CLAUDE.md 的 Candidate Profile 三源联合体中的任意一个支持。三源之间互相矛盾会作为 profile-consistency warning 报告给你草稿与三源不符会被标记为 grounding 编辑。中文简历常见的坑是三个文件各写一版Word 版、PDF 版、口头补充版日期对不上——先把三处对齐是调参的绝对前提。2. Languages 表如实填写决定生死如前述未声明语言 硬拒。这一步的投入产出比最高。3. 角色描述写做了什么不要只写职位名README 的 Profile depth matters 一节给出了唯一一个被反复强调的经验法则输出质量的单一最大变量是 profile 的详细程度。它的例子是——Built ML pipelines for customer churn prediction in Python using scikit-learn给系统的素材远多于Python, machine learning。中文场景同理用 PyTorch 做过推荐系统处理过日均亿级请求比熟悉深度学习有价值一个数量级。特别是中文简历里常见的四字形容词沟通能力强抗压性好对语义评分基本是零信号框架的 Behavioral 维度靠的是 02-behavioral-profile.md 里结构化记录的行为特质而不是 CV 上的自我评价。4. Deal-breakers 和 Career Goals 不能空评分框架里 Deal-breakers 是自由文本04-job-evaluation.md 说得很清楚Strong parental-leave terms、minimum salary X、no on-call——每一条都是一行 profile、零代码、在/rank和/apply里有真实否决权。中文用户常见的不加班不接受异地薪资底线 X都应该落成这行字而不是只存在于对话里。5. 关键词覆盖遵循诚实规则missing (gap)永远保持缺失绝不硬塞never stuff。JD 要求的技能你确实没有正确做法是在求职信里诚实承认差距并给出桥接表述not in my daily toolkit yet; a natural extension of X而不是往 CV 里堆词——因为评审者 agent 会做 grounding 审计假词活不过第二轮。6. 数据闭环结果要回填最后一条常被忽略/outcome记录每份申请的结果面试阶段、offer、拒绝、沉默并把已投递的 CV、求职信、JD 原文归档到documents/applications/company_role/而/setupPath A 会从这些归档里校准评分框架哪些角色类型和行业真正拿到了面试、哪些反复无回应。中文求职者尤其应该利用这条国内招聘的已读不回比例高/outcome followup还能帮你把沉默超过 10 天的申请捞出来。跑三轮申请后再回炉/setup比闷头调 prompt 有效得多。三件事的顺序就是优先级先保证简历以可解析的文本形态进系统格式层再按 JD 原文词与语言表对齐语义映射层最后过一遍输入质量清单让评分框架有料可榨质量层。这三层做对了temperature高低、模型选谁、并发调多少才有讨论的意义。反过来输入侧一塌糊涂任何参数调优都是在给一个有缺陷的管道加马力。这套框架的定位从来不是AI 替你投简历而是AI 做你的求职信息预处理器——预处理的边界就是你的输入质量。【免费下载链接】ai-job-searchThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.项目地址: https://gitcode.com/GitHub_Trending/ai/ai-job-search创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询