过去四个月我一直泡在一个看着有点"疯"的项目里:让我自己写的一套AI智能体系统去当"老板",从挂招聘启事、筛简历、面试、定薪、安排试用期指标,到最终给出开人建议,全程由AI主导,我只留了一个最终审批权。项目上线第一天,它花五分钟就把招聘启事生成并发布到三个渠道;四个月后,它开掉了自己招进来的第一个人。这中间踩过的坑、调过的参、跟业务方吵过的架,我觉得比市面上绝大多数"AI 取代HR"的PPT都值得写下来。
先说清楚:这不是一个"放着不管的自动驾驶老板",而是一个"人类保留最终审批权的AI管理决策系统"。它解决的问题很具体——小团队的管理者经常被重复性事务淹死:写JD、筛简历、约面试、盯绩效、写改进计划,每一项都费时间又容易带个人情绪。AI老板解决的核心矛盾是"管理动作的标准化和可追溯性",让每个决定都有数据支撑,让每个环节都有留痕。
这篇文章会把整套系统从设计思路、招聘发布、绩效追踪,到那次争议不小的解雇决策,全部拆开讲。适合三类人看:正在折腾AI Agent落地的工程师、想把手头管理流程自动化的团队负责人、以及单纯好奇"AI值不值得托付人事决策"的吃瓜同行。
1. 项目本质:AI老板不是聊天机器人,是一套决策系统
1.1 从"自动发招聘"到"自动开人"的完整链路
很多人听到"AI老板"第一反应是"是不是拿ChatGPT写个招聘启事就行"。我一开始也想偷懒这么干,结果发现完全不是一回事。写一条JD只要一次对话,但如果AI要承担"老板"角色,它需要的是覆盖一个员工生命周期的完整决策链:岗位画像生成 → 招聘启事发布 → 简历解析筛选 → AI面试评估 → 录用决策 → 试用期目标拆解 → 绩效追踪 → 预警触发 → 改进计划制定 → 解除雇佣建议。
这条链路里每一步都不是孤立的。JD里写的岗位要求,会被下游绩效Agent拆成试用期考核指标;面试评分会沉淀为员工基线,四个月后预警Agent判断"这个人该不该留"的时候,会拿实时表现去跟这个基线比。所以这个项目的本质不是"一个AI",而是一套流程:把老板的每个管理动作,拆成可以被大模型调用、被工作流编排、被数据库记录的最小单位。
我最初犯的错是试图用一个大模型对话搞定所有环节——让一个Agent既筛简历又写绩效报告又做解雇判断。结果是它回答招聘问题时带着绩效报告的口吻,写解雇建议时又忽然开始安慰候选人。后来才明白,管理场景里每个动作的角色定位、语气、输出格式都完全不同,必须拆开。
1.2 为什么必须用多智能体协作而不是单一模型
这是这个项目最核心的架构决策,我前后纠结了两周。多智能体(Multi-Agent)的优点是职责单一、可维护、可单独调优,缺点是调试成本高、上下文传递容易丢信息。单一模型的优点是简单,缺点是它同时扮演"面试官"和"裁决者"时,立场是冲突的。
举一个我实测踩过的例子:早期版本里,同一个模型既做面试评价,又做绩效预警。它给某候选人的面试打出了"沟通能力4.6分",结果四个月后预警Agent需要参考这个分数判断该员工是否有改进空间时,同一个模型却倾向于推翻自己的历史评价——原因只是它在"预警"这个任务下被提示词引导得更加悲观。这在心理学上叫确认偏误,大模型同样会犯。
分裂成四个Agent之后,每个角色有独立的提示词模板、独立的模型配置、独立的输出JSON Schema,互不污染。招聘Agent只干招聘,绩效Agent只认数据。最后决策Agent做综合判断时,它读到的每一份材料都标注了出处和置信度,不会自己捏造。
1.3 整体架构与Agent角色分工
技术栈不复杂,但很实用:Python + FastAPI做服务层,Redis做任务队列,PostgreSQL存所有结构化数据,LangGraph做Agent编排。模型用了两个:贵的旗舰模型负责面试对话、绩效文本分析、决策推理这类需要语义理解的任务;便宜的轻量模型负责简历字段抽取、JD关键词解析这类结构化任务,成本直接砍掉一大半。
| Agent名称 | 核心职责 | 关键输入 | 关键输出 |
|---|---|---|---|
| 招聘Agent | 岗位画像、JD生成、多渠道发布、简历初筛 | 部门用人需求一句话、渠道反馈数据 | 结构化JD、面试候选名单 |
| 面试Agent | 行为面试、技术评估、产出评分卡 | 职位画像、候选人简历 | 五维评分卡、面评记录 |
| 绩效Agent | 试用期指标拆解、双周绩效快照、预警分级 | 工作数据源、评分卡基线 | 绩效报告、红黄橙预警 |
| 决策Agent | 综合研判、建议输出、风险提示 | 绩效Agent报告、面评历史、改进记录 | 决策建议报告(留人类审批) |
这套架构有个额外好处:任何一个环节单独升级都不影响其他环节。比如后来我发现简历解析用便宜模型出错率高,单独换了个更好的结构化抽取模型,其他Agent完全不用动。这就是拆分的实际价值,不是炫技。
2. 五分钟挂出招聘启事:从一句话需求到多平台发布
2.1 让AI理解"我们要招什么样的人"
实际场景是这样的:下午三点,业务负责人甩给我一句话——"招个Python后端,三年经验,能扛订单模块"。这句话的信息量极低,如果直接把这句话丢给大模型生成JD,出来的东西基本是网上抄的模板:精通Python、熟悉Django、具备良好沟通能力……全是正确的废话。
我的做法是让招聘Agent先做一步"岗位画像补全",它要基于行业常识和公司现状,把一句需求拆成五个维度:硬性技能(Python、数据库、框架)、项目经验(订单类系统优先)、软性素质(协作、主动性)、风险标签(频繁跳槽、技能栈完全不符)、薪酬预算范围。这个拆解过程做成了一次结构化追问:AI会先输出一份"画像草案",然后列出它不确定的信息点,由管理员补充确认。
这个步骤很像帮朋友介绍对象:你不能只说"帮我找个合适的",你得把"年龄、身高、工作、性格、能接受异地吗"这些维度先拉出来,不然相亲过程就是浪费彼此时间。AI不做这一步的话,后续所有环节——简历筛、面试题、试用期考核——都会建立在一个模糊地基上。
实操中的关键点是:画像补全必须输出为固定JSON结构,不能是一段散文。因为下游的简历初筛、面试出题都要按字段索引。我在这个环节用了Pydantic定义Schema,大模型输出直接做结构校验,不合格就批判重试。第一次跑通时,从需求输入到结构化画像生成,耗时约80秒。
2.2 生成JD与多平台发布:五分钟怎么算出来的
岗位画像定稿后,JD生成反而是最轻松的环节。我给招聘Agent定了几条硬规则:JD不超过400字(移动端阅读友好),包含职责、要求、亮点、流程四段;必须包含一句差异化卖点;禁止使用"具有良好的抗压能力"这类空话。第一次生成耗时45秒,效果中规中矩,后来我发现把公司实际做的事情写进去——比如"处理日均十万单量的订单系统重构"——应聘质量立刻提升一个档次,这一点非常重要。
然后是多渠道发布,这才是"五分钟挂出招聘启事"这句话里真正费时间的部分。我接了三类渠道:主流招聘平台(通过它们的开放API)、一个技术社区、两个行业微信群。不同渠道的文案版本不一样,招聘平台版本偏正式,技术社区版本要突出技术栈亮点,微信群版本要短促有力。AI先跑一版标准JD,再由脚本按各渠道限制自动改写和排版。
我掐过表:画像生成80秒,JD生成45秒,渠道改写和自动发布约2分半钟,加上最后人工抽检一遍,总计4分40秒左右,卡在五分钟内。这里的人工抽检环节我给的是"免检信任权"——后续几次发布如果AI产出稳定,管理员可以不看直接放行。实际上我每次都看了,因为JD里哪怕一个错别字,挂出去就很丢人。
2.3 发布后的数据回流:AI开始"盯盘子"
大部分人会以为挂完招聘启事就完事了,但这个项目里,发布只是招聘Agent工作流的起点。发布完成后,系统自动进入"数据回流"模式:每个渠道的曝光量、访问量、投递量每6小时拉取一次,存入PostgreSQL,形成一条转化漏斗。招聘Agent每天凌晨对漏斗做一次归因分析——某个渠道曝光不低但投递极少,它会自动尝试调整JD标题里关键词的排序,观察次日是否有改善。
这个过程发生了两次实实在在的调整:第一次是某平台PC端投递量正常、移动端几乎为零,Agent判定是JD前两行不够抓眼球,自动把亮点句子提前,移动端投递量涨了37%。第二次是技术社区渠道投递的简历普遍偏初级,Agent分析简历中的技能关键词分布后,建议我把"三年经验"改成"三年以上,有独立项目交付经历",并主动加了两种必问的技术栈细节。这些动作都不需要我介入,它自己按预设的调整权限执行。
这个环节给我一个很深的体会:AI在这套系统里最值钱的能力不是"写文案",而是"把文案当成一个可迭代的实验品"。人类手动发布一个JD之后通常不会看一眼数据,但AI会,而且会基于数据持续优化。五分钟挂出去的不仅是一则启事,更是一个会自动进化的入口。
3. 四个月里AI老板做了什么:从入职到绩效追踪的完整闭环
3.1 候选人筛选与AI面试的关键设计
第一周投递量不错,总共84份简历。招聘Agent用轻量模型做了解析和初筛:先把PDF、Word简历转成文本,再抽取教育经历、公司、技能、项目描述、工作年限等结构化字段,然后跟岗位画像做加权匹配打分。初筛后剩11份,再由贵的模型做第二轮"简历深读",重点看不评分项——比如项目描述里有没有体现"主导"还是"参与"、跳槽频率是否异常、技能的版本号是否跟团队技术栈吻合。
这里我踩过一个直观的坑:简历解析初期用的是纯正则+模板匹配,某位候选人简历里写的"熟练使用Python"被解析成"Python技能:熟练",没问题;但另一个写"在Python项目中使用过Django框架进行开发"的,解析器把"项目中使用过"当成了技能描述,没有提取出"Python,Django"两个技能点,导致打分偏低。后来切到轻量模型做抽取,准确率从78%提到93%,但也做不到100%。所以简历初筛的阈值我设得很宽松,宁可多放进来几个误判的,不能漏掉真本事的人。
AI面试是另一个让我反复打磨的环节。面试Agent的设计原则是"结构化的半开放式对话",每轮面试固定几个模块:自我介绍与经历验证(用来验证简历真实性)、行为面试题(按STAR法则展开)、技术深度题(针对画像里的硬技能出题,比如"订单系统怎么防止超卖")、反问环节(给候选人提问机会)。每个模块结束,面试Agent会即时填一个五维评分卡:技术能力、项目经验、沟通协作、学习能力、稳定性。
打分卡不是让AI拍脑袋打分,每项都必须附一个引用来源。比如技术能力打4分,必须引用候选人原话:"我用Redis分布式锁加库存预扣解决了超卖,QPS压到2000没问题",AI打分的依据是候选人暴露了"分布式锁""库存预扣"这些关键词,且逻辑自洽。如果候选人回答含糊,分维度分数会被自动限制在3分以下。这套机制的目的不是追求绝对准确,而是防止AI被表达能力强但技术稀松的候选人忽悠。
3.2 试用期目标拆解与双周绩效快照
入职之后,绩效Agent会做一件很多小公司从来没做过的事:把JD里的要求自动拆成试用期考核指标。方案是OKR式的——基于岗位画像的输出字段产生3到4个目标,每个目标带可量化指标和权重。比如"订单模块交付"对应"第4周完成库存扣减服务接口开发,代码评审通过率大于90%",权重30%;"协作与沟通"对应"双周迭代评审会主动汇报进展,无缺席",权重15%。
数据来源是自动采集的:代码提交系统(提交频率、代码量、Review通过率)、任务管理看板(任务完成率、延期率)、IM机器人自动收集协作反馈(同事每两周对新人做一次匿名评价)。绩效Agent每双周生成一份绩效快照,压缩成一段摘要和一张雷达图,推送给我和本人。前六周,这套流程运转得相当顺畅,被招进来的新人各项指标都在正常区间,唯一的小瑕疵是代码Review偶尔出现格式问题,属于新人对团队规范的熟悉过程。
重头戏在第七周开始变化。代码提交量开始周期性下滑,从日均12个commit降到5个,同时任务完成率从90%掉到60%。绩效Agent标记了一次"黄色预警",系统自动发送了提醒给当事人。我当时没有太在意,觉得可能是家里有事或者任务变难了,这是后来所有问题里我最后悔的一个判断。
3.3 预警机制:AI什么时候开始"想开人"
预警机制是整个系统设计里我最满意、也最希望所有团队抄作业的部分。预警不是一拍脑袋想出来的,而是"硬规则 + 模型分析"双通道。硬规则是每天跑一次的固定计算:双击率的组合(比如"连续两周代码提交量下降超过30%且任务完成率低于70%")触发黄色预警;单指标极端恶化(比如"代码Review缺陷率超过团队均值2倍且持续三周")触发橙色预警。模型通道则是由贵的模型每月做一次"趋势背离分析",它会把员工数据跟团队基线对比,发现一些单指标正常、但组合模式异常的隐性问题。
预警分三个等级,对应的管理动作完全不同,这点特别重要:
| 预警等级 | 触发示例 | 系统动作 |
|---|---|---|
| 黄色(观察) | 单周指标下滑、一次任务延期 | 自动通知本人和管理者,生成简短归因 |
| 橙色(改进) | 连续两周双指标恶化 | 启动30天改进计划,AI生成具体任务清单 |
| 红色(解除) | 改进计划未达标、数据持续恶化 | 生成解除雇佣建议报告,进入人类审批流 |
第七周那次黄色预警,AI生成的归因里有一个细节引起了我的注意:代码提交量下滑的起始时间,正好与团队上线一个新项目的冲刺周期重叠。AI的初步判断是"可能的疲劳或任务切换导致的投入度下降",但也标注了一行小字:"不排除存在外部因素,建议一线管理者进行一次一对一沟通。"当时我确实找当事人聊了,对方表示"家里有点事,过阵子就好"。后来的事实证明,那次沟通并没有解决根本问题,而系统的记录完整保存了这段沟通过程。
4. 开除第一个人:触发条件、决策过程与合规执行
4.1 那次解雇是怎么被触发的
时间点在第11周时,局势已经很明朗了。新员工经历了连续两个考核周期不达标,代码交付量是团队同岗位平均值的43%,缺陷率却是团队均值的2.1倍。第七周启动的改进计划写了三条任务:修复历史遗留缺陷、参与一个新模块开发、每周输出进展报告。三条任务只完成了一条,还是最容易的那条。
第11周绩效Agent自动生成了红色预警报告。这份报告的措辞比我想象中克制——没有"建议立即开除"这种煽动性表述,而是列了一串数据事实,配套一份"数据质量说明":它承认绩效数据不完美,承认缺失了对员工个人状态的一手了解,建议由人类管理者核实情况后再做决策。说实话,看到AI在"建议开人"的时候还在声明自己的局限,我当时的感受很复杂。但反过来说,正是这份克制让决策链路变得可信。
一个关键的分析点让我最终下定决心:AI在报告里对比了该员工入职第一个月的绩效基线——第一轮绩效快照他完全正常,代码量、任务完成率、Review质量都在中位线以上。结论不是"能力不足",而是"投入度陡降且不可恢复"。这个区分很重要,因为它把问题归因从"面错人"(招聘Agent的责任)转移到"人岗持续匹配失败"(管理责任),避免了一刀切的甩锅逻辑。
4.2 决策Agent的研判逻辑与人类审批点
红色预警触发后,决策Agent自动启动了一次"解雇研判"。它会收集四份材料打包成一个决策包:绩效Agent的红色预警报告、面评记录(从AI面试评分卡到双周快照)、改进计划执行明细(三次Plan的记录与结果)、同期团队基线数据(证明这不是整体业务下滑导致的误伤)。
然后它生成一份"解除建议报告",内容是:事实摘要、数据支撑、风险提示(比如这位员工入职时间不到6个月,解雇法律程序上没有复杂的竞业和赔偿争议,但需注意程序合规)、建议方案(推荐"协商解除+按合同补偿金N+1",并标注这个方案是基于行业惯例的参考,不能替代劳动法律师的判断)。整个过程从红色预警到报告生成,用时约10分钟。
关键来了:系统设计了严格的人类审批流。所有解雇类建议必须经过我的确认,且预留了72小时冷静期。这72小时里,我做了三件事:重新翻了原始绩效数据(不是AI的摘要)、给当事人安排了一次正式的绩效面谈(用AI提供的面谈脚本做参考)、咨询了一位有劳动争议处理经验的朋友。最终我确认了建议报告中的结论,并在系统里点击了"批准执行"。
这里必须说得非常明确,这也是整个项目里我反复强调的底线:AI没有开除任何人,它只负责产出分析和建议。真正执行解雇动作的,是建立了完整证据链之后的我、HR同事和员工的主管。AI把"老板"的一部分判断工作替代了,但法律主体、伦理责任和最终签字永远要由人来承担。这是不可让步的红线。
4.3 解雇执行中的合规细节与人性化处理
执行环节,系统再次展示了结构化流程的价值。它自动生成了一套"解除雇佣执行包":给HR的操作检查清单(包括确认合同条款、计算赔偿金、准备离职证明等)、给主管的面谈脚本(开场白、事实陈述、过渡方案讨论、话术禁忌)、给员工的离职交接清单。这些内容全部基于真实法律与人力实践常识生成,但最后都经过了HR同事的逐字审核修改。
我反省过这个项目里做得到位和不到位的地方。最到位的一点是证据链:从第一次黄色预警到最终解雇,所有绩效快照、改进计划、沟通记录都自动保存在PostgreSQL里,时间戳完整。后来HR在和员工谈赔偿时,员工其实没有提出争议,但我心里清楚如果发生仲裁,这套系统积累的证据足以支撑解除行为的正当性——这一点对任何要动手裁员的团队都是最有价值的参考。
做得不够好的一点是面谈脚本的语气。AI第一次生成的脚本里有一句"根据系统数据,你的绩效不达标",被我改成了"我们回顾了这几个月你的工作记录,发现在某些指标上确实存在明显差距"。AI用词精准但缺乏温度,人在执行时可以也应该把冷冰冰的数据转换成有同理心的话。这也是"AI出方案、人做执行"这个模式真正的优势:数据能提供底气,人类能提供体面。
最终结果是:协商解除,赔偿N+1,当天完成工作交接和资料回收。当事人离开的时候没有明显的冲突,但也谈不上愉快。这个项目第一次完整跑通了"招—用—预警—解除"全链路,而对我来说,真正有意义的不是"省了多少钱",而是拿到了一个极其珍贵的案例:AI的决策过程第一次被真实世界的结果验证了。
5. 踩过的坑与主线心得:AI管人的边界在哪里
5.1 最大的坑:数据偏差让AI差点冤枉了一个好员工
这个坑发生在项目运行到第二个月,跟被开除的人无关,但让我对整个系统的可靠性产生了第一次大动摇。当时团队里另一个员工(试用期,表现优秀)连续一周被绩效Agent标为"代码提交量显著下降",黄色预警即将升级。我拉出数据一看,发现他提交量下降的原因是那周在做数据库迁移脚本——这类工作是一整块提交的,不是每天几十个小commit,所以"提交量"这个指标完全失效。
这个案例让我彻底理解了什么叫"指标系统永远有盲区"。后来我做了两个修正:一是在数据源接入层面,增加了"任务类型标签"——重构、迁移、文档、技术调研这类工作单独统计,不跟日常开发混在一起算;二是给每个指标加了"数据可信度"属性,预警在数据可信度不足的情况下不能触发,只能提示"数据质量警告"。
另一个坑是休假和调休的处理。初始版本里,员工请两天假,系统不知道,直接把"两天零提交"当作负面信号。接入考勤系统数据后,这类误报才消失。很多初级AI管理项目都会在这里翻车——AI本身不产生偏见,但喂给它的数据里带着偏见,它只会把偏见放大成算法层面的"客观结论"。全流程数据质量检查这一步绝对省不得。
5.2 不能省的环节:人类审核点该设在哪
这个项目里我设置了三道必需的人工审批闸门:Offer发放(招错人成本最高,必须在发offer前有人类判断)、转正与预警升级(涉及员工利益变化,需要人类了解上下文)、解雇与重大处分(涉及法律与伦理,必须人类最终拍板)。福利环节如自动安排培训、自动提醒休假则不设审批,让AI自己跑。
我试过把审批闸门减少到一道(只在解雇时审批),结果第二周就出了岔子:面试Agent想给一位候选人发offer,评分卡总分很高,但面评记录里标注过"候选人在反问环节主动询问了加班强度,暗示对工作强度敏感",而这位候选人面试的岗位刚好是强节奏的订单核心组。如果没有人类在这一棒把关,很可能入职后很快产生不适配。所以审批点设置的逻辑不是"信任或不信任AI",而是"在后果不可逆或代价高昂的环节,必须有人兜底"。
实操上还有一个提醒,审批窗口必须有超时提醒机制。我一度忘了在72小时里点审批,系统在最后6小时连发三次提醒,才没有让流程卡死。如果未来这套系统真的在更多公司跑起来,审批节点的SLA(服务响应时限)设计会是用户体验的关键。
5.3 提示词设计经验:如何让AI"说话像老板"而不是"像老师"
提示词工程上的一个核心技巧:不要向AI提问"你认为该员工表现如何",而要下指令"基于以下数据,按规则X计算指标Y,并给出结论"。前者让AI自由发挥,容易跑偏;后者逼它走流程,结果可控。比如绩效Agent的核心指令写的是:"你是绩效评估系统。对以下数据进行计算,并与基线表对比,按预警规则表输出等级、归因和证据引用。禁止对未提供的数据做猜测。"这份提示词帮我拦截了大量"AI编造归因"的情况。
第二个技巧是全局人格设定。我给所有Agent设定了一句共同的公司背景:"我们是一家50人规模的互联网创业公司,强调交付速度与工程质量平衡,管理风格务实,反对官僚主义。"这句话看似简单,但影响深远——同一个"该不该开人"的问题,如果AI不知道自己所在的公司规模、文化、容忍度,它给出的建议会忽左忽右,因为没有价值锚点。
第三个技巧是统一输出Schema。所有Agent的输出必须是JSON格式,字段命名统一,枚举值固定。比如预警等级只能是yellow/orange/red三个值,不能出现"中等风险""需注意"这种模糊词。结构化的输出让整个人类审批界面非常清爽,我每天花五分钟扫一遍数据就行,不用去读大段AI生成的"读后感"。
5.4 这套模式后续可以怎么扩展
现在这套AI老板系统被我拆成了两个方向继续延伸。第一个方向是"AI管理助手"—把"AI当老板"的身份降级成"给真人老板做参谋",直接降低了使用门槛,也规避了"AI决定人去留"这个令大多数人不适的心理坎。第二个方向是把它接进更多系统:接财务系统做薪酬调整测算,接OA系统做考勤联动,接客服系统做新人服务质量考核。这些扩展本质上都不是新开发,而是给已有的Agent加数据源和触发事件。
我还想尝试的另一个扩展是让多个公司共享脱敏基线数据——比如把绩效预警的"双指标组合阈值"做成行业基准,让AI在判断时不只是对标本公司中位数,还能对标同类公司的健康区间。这个方向的价值很大,但需要非常谨慎地处理数据隐私。我的思路是先做成纯统计常量,不涉及任何个体数据,只沉淀"经验阈值"这种不可反推的聚合参数。
这个项目做到今天,对我个人最大的改变是:我不再把AI当作一个"会聊天的工具",而是真正把它看作一个"需要管理、需要校验、需要设计权限边界的协作方"。AI老板四个月里开掉了一个人,但它收获的教训,我也同步收获了——数据会说谎,流程会漏洞,人的复杂性永远超出算法的假设。反过来,也正是因为有了这套系统,我第一次如此清晰地看到"管理动作"可以被拆解、被量化、被验证闭环。这可能才是这个实验最大的收益。
最后分享一个我写代码之外的小技巧:每一份Agent产出,不管是JD、绩效报告还是预警建议,我都强制要求附带"置信度自评"和"数据缺口声明"。AI说"我有80%把握"的时候,我作为人类审批者反而更容易做出安排;AI说"这里缺了考勤数据和最近一次1v1记录"的时候,我会先去补齐数据再决策。这个习惯后来帮我规避了至少三次潜在误判。如果你也想做类似的AI管理落地,先把这两栏加进你的输出设计里,它会带来意想不到的收益。