如果你曾向申请人追踪系统(ATS)上传过简历,并纳闷为什么从来没有人看过它,那么你已经理解了 AI 招聘的“黑箱问题”。大多数简历评分工具都将它们的逻辑隐藏在 SaaS 控制面板和礼貌的拒绝邮件背后。HackerRank 则采取了不同的路线。它的 Hiring Agent 是开源的,这意味着任何人都可以拆解它、追踪代码,并准确查看 LLM 是如何将一份 PDF 和一个 GitHub 链接转化为一个数字的。一位开发者正是这样做的。他们发现的并不是一个完善的招聘框架,而是一面镜子,向我们展示了自动化是如何轻易地将个人观点代码化的。

底层逻辑

整个流程看似简单,实则不然。候选人的 PDF 简历会被转换为 Markdown,然后解析为具有工作经历、技能、教育背景和侧边项目字段的严格 JSON 结构。Python 脚本将数据从一个阶段传输到下一个阶段,但真正的“思考”发生在提示词链(chain of prompts)中。每个部分都有自己的提示词。LLM 读取结构化数据,应用用纯英文编写的评分规则,然后返回评分。

这种架构至关重要。核心工作并非发生在巧妙的算法或训练循环中,而是发生在提示词的措辞里。只要在指令集中修改几个形容词,同一名工程师就会从“强烈录用”变成“弱势候选人”。这使得该工具非常脆弱,但也使其变得诚实。大多数 AI 招聘供应商绝不会让你看到提示词。HackerRank 的原型揭示了一个真相:简历评分一直关乎评分细则(rubric),而非代码。

35% 的暴政

最显著的偏见隐藏在评分细则中。开源贡献占总分的 35%。这是一个巨大的权重。为了直观理解,候选人的整个工作经历、教育背景和技能组合必须在剩下的 65% 中,与他们业余编程生活的一个片段进行竞争。

规则甚至比权重所暗示的还要严格。个人的 GitHub 仓库不计入分数。维护自己的库,无论多么有用,得分都是零。该工具仅奖励对他人项目的贡献。候选人必须成为他人代码库的提交者(committer)才能赢得这些分数。

这种偏好带有真实的统计学权重。维护自己工具的工程师通常是因为他们解决了一个无人解决的问题。他们可能从事禁止外部贡献的工作,可能工作在大型开源社区较少的地区,或者仅仅是因为家庭责任导致无法在下班后进行无偿编程。通过这种方式编写提示词,该工具测量的并非纯粹的工程能力,而是对特定编程文化的参与度,然后将其称为“客观性”。

当指令失效时

评分细则还试图奖励初创公司经验。提示词明确建议为创始人(founders)和早期阶段的工程师提供额外加分。这在理论上听起来很合理。初创公司的老兵通常身兼数职,并在压力下交付成果。于是,测试者进行了一项实验。他们拿了一份简历,除了最近的工作头衔外什么都没改,用三个不同的标签运行了三次 Agent:Senior Java Engineer、Founding Engineer 以及 Co-founder / CTO。

分数几乎没有变化。LLM 基本上忽略了指令。

这是整个审计中最重要的发现之一。它证明了提示词规则仅仅是一种建议。大型语言模型是在海量的文本语料库上训练的,这些语料库本身就包含着关于“什么是高质量信号”的顽固偏见。如果模型的训练数据将声望与特定的头衔、公司名称或关键词联系在一起,而不是与“创始工程师”这个短语联系在一起,那么你精心编写的指令可能根本不起作用。提示词告诉模型要关注初创公司的头衔,但模型有自己的想法,而且模型说了算。当输出结果是招聘评分时,人类意图与机器行为之间的这种差距是危险的。

毫无意义的评分项

除了主要的权重分配外,评分细则中还充满了极其具体的微观规则,这些规则感觉不像是数据驱动的决策,倒更像是某人在深夜进行的头脑风暴。

一个 LinkedIn 个人资料恰好值一分。不是看资料的质量,不是看推荐信的数量,也不是看工作经历的深度。仅仅是在简历上放一个 URL,就会为总分增加一分。与此同时,作为 Google Summer of Code 的参与者则值五分。如果候选人在 GitHub 上有 fork 的仓库,代理程序会忽略任何自身 fork 数少于五个的仓库。

这些规则中的每一条,都是披着“静默系数”外衣的响亮价值判断。为什么拥有 LinkedIn 账号就值一分?它只表明候选人知道如何填写社交网络资料,并不代表他们能设计分布式系统。为什么 GSoC 的权重是 LinkedIn 链接的五倍?或许是因为提示词(prompt)的作者尊重这个项目。而这种尊重现在变成了一项招聘政策。那么,为什么要把界限划在五个 fork 上?一个只有十个用户的工具可能解决了某个关键的利基问题。但在这种系统下,它简直就像不存在一样。

这些数字并非源于回归分析,而是由个人选定的。有人认定开源参与度占工程师价值的三分之一以上;有人认定 LinkedIn 个人资料值 1 分。当你将这些猜测自动化时,你就赋予了它们软件般的权威性。

每个提示词都是一种偏见

构建简历评分代理最难的部分不是解析 PDF 或调用 API,而是决定什么才是重要的。评分提示词中的每一个字,都是关于“什么是优秀的工程师”的价值判断。个人项目是否应该比全职工作更重要?公开代码是否应该比企业内部工作更重要?社交媒体资料是否根本就不该重要?这些问题没有数学上的正确答案,只有文化偏好。

当招聘团队手动进行这些操作时,至少偏见会分布在许多审核员身上,他们可以产生分歧、进行校准并从中学习。当 LLM 执行此操作时,一名提示词工程师的偏见就会固化为一个可大规模运行的可重复函数。工具并没有消除主观性,它只是将其存档了。

将其视为镜子,而非过滤器

HackerRank 的 Hiring Agent 最好被理解为一个原型。它感觉就像一个初稿,事实也确实如此。它为我们提供了一个观察 AI 招聘工具构建方式的迷人视角,但它缺乏真实招聘机构所具备的校准、测试和多样化输入。

如果你正在构建招聘技术,请仔细研究它。它展示了任意规则是如何迅速演变成自动化门槛的。如果你是一名候选人,请记住这些系统并非神谕。它们只是披着自然语言外衣的电子表格,承载着编写提示词者的假设。

在这些工具接受偏见测试的严谨程度能与它们所评判的工程师相匹配之前,它们应该作为人类对话的参考,而非取代人类对话。