招聘智能体:架构早就替你写好了。
招聘是唯一一个监管者在你动工之前就已经指定了系统设计的智能体领域,而且它禁止的恰恰是每个团队最先做出来的那个东西——一个读简历、写自由文本评语的模型。纽约市自 2023 年起就要求对自动化雇佣决策工具做年度独立偏见审计,欧盟《AI 法案》则把招聘与候选人评估划为高风险。两者都要求一个你的架构必须有能力产出的数字:你这套工具的入选率,按受保护群体拆开。要么从这个数字倒推着设计,要么将来重做一遍。
两条规则,合起来就把设计定死了。
纽约市第 144 号地方法自 2023 年 1 月 1 日起生效,2023 年 7 月 5 日起执法。只要在该市使用自动化雇佣决策工具筛选求职或晋升候选人,该工具就必须在过去一年内通过独立偏见审计、审计结果必须公开、且必须事先通知候选人。罚则从每次违规 500 美元起,持续违规可达每天 1500 美元。审计计算的是各族裔/种族与性别类别下的入选率与影响比——所以这套工具必须产出一个你数得出来的决策。
欧盟《AI 法案》把招聘明明白白放进了附件三:用于投放定向招聘广告、筛选或分析申请、以及评估候选人的系统,均属高风险。这会连带引入风险管理、数据治理、日志留存、技术文档、人工监督,以及即便工具是外购、作为部署方的你也要承担的义务。这些附件三义务原定的适用日为 2026 年 8 月 2 日;"数字综合法案"(Digital Omnibus) 一揽子方案提出将其推迟至 2027 年底前后,因此在据此排期之前请先确认生效日期。有疑问的只是它何时咬人,义务本身没有疑问。
本页是工程指引,不是法律意见,且各法域细节不同——伊利诺伊、马里兰、科罗拉多等州各有各的规定。请咨询法务。下面这部分则无论适用哪套规则都归你管:一个回答不出"这套工具筛掉了哪些候选人、按群体怎么分布"的系统,事后靠补一份政策文档是补不成合规的。
有意识地决定:你到底是不是在造一个决策工具。
每个团队都会伸手去抓同一个逃生舱:我们的智能体只是建议,决定的是人。这个区分是真实的,但比感觉上要窄。一套把 800 名申请人排序、只把前 40 名端到台面上的工具,即使按钮是招聘专员点的,也实质性地参与了决策——那 760 个没人看过的人,是被模型筛掉的。监管者论的是效果,不是点击发生在哪儿。
所以请把它做成一个架构选择而非一次意外,并且诚实面对自己上线的是哪一种:
- 真正的"不做决策"设计不按匹配度给候选人排序。它做摘要、抽取结构化字段、起草触达文案、安排面试、回答候选人问题——这些活儿改变的是流水线跑得多快,而不是谁在流水线里。价值的大头就在这儿,而它承担的义务最轻。
- 筛选工具会对人排序、打分或过滤。只有当你准备好为年度第三方审计出钱、公开结果、通知候选人、并保存好让审计得以进行的记录时,才去造它。那是一条预算科目和一个责任人,不是一个迭代任务。
- 危险的中间态是一份其实就是分数的"摘要"——智能体往某个字段里写"匹配度强,8/10",而招聘专员就按这个字段排序。它具备筛选工具的全部效果,却没有配套的任何机制,而这正是团队在毫无察觉中上线的东西。
如果它打分,就让这个分数可数、可归因。
偏见审计是对结果做算术。它需要:对工具触碰过的每一名候选人,都有一个离散的入选结果,以及可供分组的人口统计类别。自由文本的 LLM 输出没有入选结果,所以按那种方式建的团队会在审计时发现——数据根本不存在,也无法重建。
工程上的要求,只说一遍:工具必须为每名候选人产出一条离散、已存储、带时间戳的决策,并绑定到产出它的那个确切系统版本。
# screening/decision.py — the record an audit is computed from DECISION = { "candidate_id": "c_8f21", "requisition": "req_2026_114", "outcome": "advance", # advance | reject | refer_to_human "score": 0.71, "threshold": 0.65, # the cut, versioned like code "criteria": ["years_python>=3", "has_shipped_service"], "system": "screen-v4.2+claude-2026-05-14+rubric:sha256:7c1a", "decided_at": "2026-07-29T11:04:22Z", } # demographics live in a SEPARATE store, joined only for the audit
这条记录里有三个细节比看上去要紧。threshold 要版本化,因为挪一下分界线就能改变影响比,而模型代码一行都没动。system 字符串钉住的是灰度发布、版本化与固定里的那个三元组——审计覆盖的是一个系统,而浮动的模型别名意味着你审计的东西已经不存在了。人口统计数据则单独存储、只在审计时才join进来,因为筛选路径绝不能看见它。
把模型用在拓宽漏斗的地方,不要用在收窄的地方。
在招聘流水线里安放 LLM 的可靠规则是:让它做增加候选人或增加信息的活儿;让它离减少候选人的活儿远一点。这两侧承担的风险完全不同,需要的举证责任也完全不同。
- 拓宽类,低风险。改写职位描述、去掉排他性措辞。翻译招聘启事。回答候选人关于流程的问题。依据评分卡起草面试题。跨日历排期。触达文案——但要小心,定向广告本身就写在附件三里。
- 信息类,中风险。从简历中抽取结构化字段,交给确定性规则去判定。模型读非结构化文本、输出事实;做决定的是规则。这让决策保持可检查、可测试,也是整条流水线里价值最高的安全模式。
- 收窄类,高风险。排序、打分、拒绝、进短名单。可以做,但只能在 STEP 3 那套机制之内做。
- 根本别做。从视频、语音或写作风格推断性格、情绪状态或"文化契合度"。工作场所的情绪推断在欧盟《AI 法案》下是被直接禁止的,其余部分则是一桩附带完整记录的歧视诉讼。
抽取模式值得着重讲,因为它把大半个问题化解掉了。"这份简历显示出三年 Python 经验吗?"是模型答得好、审计员查得了的问题。"这是不是一个优秀候选人?"是模型答得流畅、但没人查得了的问题。
就当简历会泄漏受保护特征,因为它确实会。
去掉姓名、地址和日期只是及格线,而且它换不来中立。一份简历通过几十个相关联的信号编码了群体身份,而一个在开放互联网上训练过的模型全都读得懂:一所女子学院、一个兄弟会、受教育的国家、一个宗教志愿组织、一段服役记录、一段长度恰好等于育儿假的简历空窗、一种由母语塑造出的行文腔调。把显眼字段抹掉,抹掉的是那些你若拿来用会被指摘的字段;它抹不掉推断本身。
- 去测这个泄漏,而不是假定它不存在。拿真实简历,每次只扰动一个与群体相关的属性,测量结果会不会动。如果换一所大学对分数的影响大过换三年相关经验,你就在审计员之前先找到了自己的问题。
- 宁要评分卡字段,不要整体判断。被要求给出单一匹配分的模型,手上所有代理变量都可用。被要求给出八个具体的、与岗位相关的事实的模型,只能被限制在你点名的那些上。
- 盯住自由文本框。求职信和"介绍一下你自己"这类字段,携带着整份申请中密度最高的人口统计信号,同时又是你手上与岗位最不相关的输入。
- 把审计做成持续的,而不是年度的。法律下限是一年一次;影响比会随申请人池漂移,也会随每一次悄无声息的模型更新漂移。按月计算,你就能在它还只是一次配置改动时发现漂移——见策略执行。
让人工监督是真的,并留住能证明它的记录。
"每一次拒绝都有人复核"是最常见的监督说辞,也是最常见的空话。一个人面对 300 条模型写好的拒信理由、每条看四秒,那不是监督;那是一枚有工号的橡皮图章,而审计轨迹记录下来的正是这件事。真正的监督需要三个属性,而且每一个都要花钱。
- 复核者能看见模型看见的东西。抽取出的字段、评分卡、阈值、具体证据——而不是一段断言结论的散文。这就是智能体 UX 里的审阅成本问题:一件无法审阅的产物,只会产出未经审阅的决策。
- 推翻要便宜,并且被记录。如果分歧率接近零,那监督就没在发生。健康的流水线里,人会以一个可测量的比率推翻工具,而这个比率本身就是一个监控信号。
- 记录要比人活得久。谁复核的、什么时候、看到了什么、改了什么、在哪个系统版本下——按适用规则要求的期限留存,通常以年计。见审计轨迹与问责与角色看谁来签字。
还有一项常让工程团队意外的义务:依据欧盟《AI 法案》,部署方在把高风险系统投入使用之前,必须告知受影响的员工及其代表;而依据第 144 号地方法,受覆盖工具作用的候选人同样必须被通知。通知是一个产品界面——一个页面、一个时间戳、一条"它确实被展示过"的记录——而不是隐私政策里的一行字。
从拓宽那一侧起步,并且在有人认领审计之前就待在那儿。一个能起草招聘启事、抽取结构化字段、回答候选人问题、安排面试的智能体,交付了招聘流水线里可衡量价值的大部分,却一点也没碰上面那些机制。等到有人来要自动排序时,正确的第一反应不是写提示词——而是点出那个将要为年度审计出钱、公开审计、并在影响比上签字的人。
延伸阅读:面向智能体的欧盟《AI 法案》看完整义务集,数据治理看那个单独的人口统计存储,法律智能体看隔壁那个受监管领域。