本文之前发过,但排版有些问题,在此重发。

我一直认为,面试就像相亲一样,一看命运,二看感觉。命运负责安排什么人到你面前,至于能不能在一起,更多时候看感觉。简历筛选有时候也是看感觉,我不相信一个肉眼凡胎,一天面对几十上百份简历,能对每一份简历都做出客观的评价。

这话听起来有点残酷,但承认人的局限性,也许是我们思考“如何让筛选机制变得更公平、更客观”的一个好起点。

最近我们在招聘,HR 每天都甩几十份简历给我,说实话,我挺烦看简历的。精力有限,对于每一份简历我只能去抓关键词,看完后面的就忘了前面的,很难保证不会错过“对的人”。但我最近突然想到,我这个肉眼凡胎做不到,但 AI 可以啊!AI 最擅长的就是文本理解。

于是,我使用 WorkBuddy 探索出了一条路子,让 AI 轻轻松松对几十份简历进行评估和汇总。先看效果:

简历评估汇总效果图

下文将介绍这次实践的调优过程和一些思考。如果你不想看这些啰嗦的文字,我已经把调教好的工作流封装成了一个 WorkBuddy 的“专家”,你可以直接使用。将以下链接复制到电脑浏览器上打开,就可以把“资深 HR 招聘专家”添加到你的 WorkBuddy 专家队伍里。

点击这里,直接体验我封装好的“资深 HR 招聘专家”

当然,每个公司的具体招聘场景和需求各异,这个现成的专家可能无法满足你的所有需求,但阅读下文的思考过程,也许能为你的个性化流程设计带来启发。

重点前提:数据安全不容忽视

在开始尝试之前,我相信很多公司都有一个重要的考量:数据隐私

简历包含大量敏感的个人信息(如手机号、邮箱等),绝对不能让大模型直接读取到这些敏感数据。因此,在工作流中,我有一条铁律:在把简历内容发送给大模型之前,就必须让它自动过滤掉敏感信息,然后再将脱敏后的文本发给大模型进行评估。

具体方式是在指令中明确要求:“为了数据安全,提取文本内容时,用正则表达式过滤掉手机号、邮箱等敏感信息。”

如果想深入了解原理,请看我上一篇文章。

第一次尝试:关键词匹配 —— 太粗糙了

我跟 WorkBuddy 说:

你是经验丰富的人力资源招聘经理,“E:\HR\Agent工程师招聘简历” 目录下是我们收到的简历,请你逐个查看,并按照常见的筛选条件汇总成一个表格。
读取简历内容的流程和约束:
1. 为了保持原文结构,提取文件内容时,请使用 markitdown
2. 为了数据安全,提取文本内容时,用正则表达式过滤掉手机号、邮箱等敏感信息

它很快就跑完了。它写了 Python 脚本,使用 markitdown 提取 PDF 文本,用正则表达式过滤敏感信息,输出了一个 JSON 和 HTML 表格。不过它使用的是关键词匹配的方法,AI 自己生成一堆和这个岗位相关的关键词,然后去看看简历里有没有这些关键词。

结果:能用,但不太靠谱。

我翻了翻结果,发现了几个明显的问题:

  • 有份简历里写的是“2024 年毕业”,被解析成 24 年工作经验
  • 有份简历写到“线程池等常用技术”,被解析成他在一家叫**“线程池”**的公司工作过。
  • 评估逻辑太简单,就是看谁简历里出现的关键词多,“Agent 深度”这一项就给高分。

总结: 关键词匹配可以快速过滤噪音,但绝对不能作为最终评估。尤其是 Agent 这种新兴岗位,一个人的技术水平不能仅仅通过数关键词来判断。

第二次尝试:让 AI 逐份阅读评估 —— 维度不够

我换了个思路,让 WorkBuddy 真正去读每一份简历,流程如下:

PDF 文件
  ↓ markitdown 提取文本
  ↓ 正则脱敏
  ↓ 把每份简历文本送给大模型,按统一维度评估
  ↓ 大模型输出结构化字段(姓名、年限、技术能力、亮点、风险...)
  ↓ 汇总成表格

这次的结果比第一次好 —— 它确实读了每一份简历的内容,评分也有一定的依据。但我发现了一个问题:大家的分数都挤在一起,很难区分谁更适合这个岗位。

问题出在哪里? 评估维度太通用了,也就是维度不够丰富。“技术能力”的具体表现,对于前端工程师和 Agent 工程师是完全不同的。用同一套模板套所有岗位,自然区分不出谁真正符合要求。

第三次尝试:先做岗位画像,再批量评估 —— 终于对了

这次我先让 WorkBuddy 做一件事:先随机读 2-3 份简历,总结这个岗位的候选人有什么特点,水平高低体现在哪里。

我们这批简历主要是招“AI Agent 全栈工程师”。AI 读完 2 份后总结出了这个岗位的关键差异点,给了 9 个专属评估维度,每个维度 1-5 分,并且附上了评分锚点:

维度1 分3 分5 分
Agent 开发深度仅了解概念独立开发过 Agent架构级,主导多 Agent 平台
MCP 工具经验调用过 MCP开发过自定义 MCP 工具
RAG 能力仅了解实现过基础 RAGGraphRAG / LightRAG 高级方案
多 Agent 编排用过框架生产级多 Agent 协作系统
模型微调有 LoRA 经验全参微调 + 数据工程
部署运维Docker 部署K8s + 监控 + 容灾
全栈工程仅一种语言前后端都做过全栈 + 多语言 + 架构设计
项目质量玩具项目公司内部使用上线商用 / 万人用户
综合评分加权汇总(Agent 深度 ×2 + MCP ×1.5 + RAG ×1.5 + 其他 ×1)

有了这套专属标准,每个人之间的差距一目了然,这才是真正有用的评估。

但批量评估完成后,我又发现了另一个问题。

黄某,9 年经验,技术栈丰富,综合评分给了 B 级。但我去翻他的简历原文,求职意向上写着:“前端开发工程师,期望 17-20K”。

他根本不找 Agent 岗位。类似的还有:

  • 李某,5 年 Go + Agent + MCP,技术过硬,但求职意向是“Golang 语言工程师”。
  • 陈某,6 年阿里云 Agent 架构,A 级评分,但期望薪资 20-25K,超出了我们的预算。

于是我追加了一步:“重新检查所有简历里的期望岗位、期望薪资、期望城市,与我们的 JD 进行比对,不匹配的直接降级,存在偏差的单独标记。”

总结: 意向匹配是筛选的第一道关卡,而不是最后一道。技能再匹配,如果对方根本不找这个方向的工作,约来面试也是浪费时间。

最终成果

三轮下来,WorkBuddy 给我产出了一份可排序、可筛选的 HTML 汇总表,如文章开头的截图所示。

最终工作流(可直接照做)

经历过前面的踩坑,我把最终的流程固化成了以下 6 步:

  1. 输入基准:告诉 WorkBuddy 你的 JD(岗位名称、薪资范围、工作地点)。
  2. 提取文本:指定简历文件夹,让它批量提取 PDF 文本并去掉敏感信息。
  3. 第一道关卡(意向排查):检查期望岗位、薪资、城市与 JD 的匹配度,不匹配的直接降级或过滤(不要把 token 浪费在无意向的人身上)。
  4. 岗位画像:让它抽读 2-3 份通过初筛的简历,建立候选人画像,生成专属评估维度。
  5. 深度精筛:让它逐份阅读剩下的核心简历,按专属维度进行深度打分。
  6. 输出结果:生成可排序、可筛选的 HTML 汇总表。

你可以按照这个工作流,并结合你的个性化场景需求来编写自己的提示词。


本文基于真实招聘案例