招过人的朋友应该都懂这种崩溃,几十份简历堆在邮箱里,每份都要翻一遍工作经历、项目经历,看看技术栈对不对,看看有没有摆烂凑数的项目,看一天眼睛都花了。

前几天刷到一个叫hiring-agent的开源项目,是HackerRank旗下团队做的,思路挺直接,把一份PDF简历喂给它,它自己用AI把简历拆解成结构化信息,再顺着简历里的GitHub链接去翻这个人的开源项目,挑出最有说服力的几个,最后给出一份带评分、带理由的评估报告。
但,有件事需要提前说清楚。
这份评估报告是AI给出的参考意见,不是终审结论。大模型本身是有局限的,对项目的判断也可能带着它自己的偏向,一个人值不值得进面试,这事最后还是得由人来把关,不能让一个分数说了算。
如果你以后真打算拿它去筛选别人投来的简历,记得对候选人说清楚用了AI辅助评估,很多地方对自动化招聘工具其实也有相关的合规要求,用之前最好查一查。这篇教程接下来的所有演示,我都建议你先拿自己的简历练手,既安全,也最容易感受出这工具到底准不准。
把话说清楚了,开始正式动手。

先看看这工具到底是怎么干活的。
一份简历PDF进去,它先把PDF转成文字,按基本信息、工作经历、教育背景、技能、项目、获奖这几块拆开,一块一块喂给大模型去结构化提取。简历里如果留了GitHub主页链接,它会顺着这个链接去抓这个人的仓库列表,再让AI从里面挑出最有分量的七个项目。
信息备齐之后,由打分这一步出场,会从开源贡献、个人项目、有没有做过真正上线的产品、技术能力这四个维度分别打分,再加上一些额外的加分扣分项,最后配一段理由说明为什么打这个分。
整个跑完,命令行里会直接打印出一份看得懂的报告。
怎么安装呢?
首先,确认电脑上装了Python,版本要3.11以上,没装的话Windows去python.org下载安装包,安装时记得勾选下面那个把Python加入PATH的选项,Mac和Linux一般自带,没有的话用brew install python或者对应系统的包管理器装一下都行。
接下来要给这工具选一个驱动它的大模型,有两条路,二选一就行。
第一条路是用Ollama在自己电脑本地跑模型,完全免费,前提电脑别太老旧。
第二条路是用Google Gemini的云端API,免费额度够日常测试用,但要联网调用,得去注册拿一个Key。
新手没有强烈偏好的话,要选哪条路?我建议走Ollama这条路,本地跑着踏实,不用管网络和额度。当然,你的电脑也得能够上点强度才行。
走Ollama这条路的话,先去ollama.com把它装好,装完打开终端跑一下这条,让它常驻后台。
ollama serve装好之后,把这工具需要的模型拉下来,命令行敲这个。
ollama pull gemma3:4b如果你的电脑配置比较高,显存宽裕,可以换成效果更好的12b版本,配置比较紧张的话换成更轻量的1b版本,三选一,命令是一样的格式,换个尾巴上的数字就行。
模型准备好了,开始拉取hiring-agent这个项目本身。打开终端,依次敲下面这几行。
git clone https://github.com/interviewstreet/hiring-agentcd hiring-agent
接下来给这个项目单独建一个干净的Python环境,不跟你电脑上其他项目的依赖混在一起。
python -m venv .venv# 激活这个环境,Mac和Linux敲这条。source .venv/bin/activate# Windows敲这条。.venv\Scripts\activate
激活成功的标志,是终端命令行最前面会多出一个.venv的小标记。接下来装这个项目需要的所有依赖包。
pip install -r requirements.txt依赖装好,接下来配置。把示例配置文件复制一份出来。
cp .env.example .env用文本编辑器打开这份.env文件,里面有几个关键字段。
LLM_PROVIDER这一项填ollama,意思是告诉它用本地跑的模型。DEFAULT_MODEL这一项填你刚才拉下来的那个模型名字,比如gemma3:4b。
如果你走的是Gemini那条路,LLM_PROVIDER就填gemini,DEFAULT_MODEL填类似gemini-2.5-pro这样的型号,再多填一行GEMINI_API_KEY,把你申请到的那串Key粘进去。
还有一项GITHUB_TOKEN是可选的,填了之后抓取GitHub项目信息时不容易被限流,没有的话留空也能跑,只是遇到的人多了可能会被GitHub那边卡一下速度。
配置弄好,准备一份简历试试效果,强烈建议第一次先拿自己的简历练手。把简历存成PDF,放到一个你记得住路径的地方,然后回到终端跑这条,把路径换成你自己的文件位置。
python score.py /path/to/resume.pdf跑起来之后,它会先把PDF啃一遍转成文字,再分块抽取结构化信息,如果检测到简历里有GitHub主页,还会停一下去抓取项目数据,整个过程视模型大小和网络情况,可能要几十秒到几分钟,跑完会在命令行里打印出一份完整的评估报告,能看到刚才提到的那几个分项评分,还有具体的加分扣分理由。
这个项目还有个小细节值得说一下,打开config.py这个文件,里面有一个DEVELOPMENT_MODE的开关,默认是开着的,开着的时候除了在屏幕上打印报告,还会把每次的关键结果追加写进一份叫resume_evaluations.csv的表格里,方便你一份一份攒起来用表格软件横向对比,同时还会把中间结果缓存到cache文件夹下面,下次跑同一份简历不用重新走一遍提取流程,省时间。
如果你想看看这工具打分的标准到底是怎么写的,去翻一下prompts/templates这个文件夹,里面是一堆.jinja文件,basics、education、skills、projects这些每一块抽取逻辑都有自己对应的模板文件,打分那部分的标准也写在里面,全是用自然语言描述的规则,不是写死在代码里的死板逻辑。
也就是说,如果你觉得某个评分维度的权重不合理,直接改这些模板文件里的文字描述就行,不需要会写代码,这一点对非程序员出身的招聘从业者来说还挺友好。

讲完怎么安装和基础使用,再简单说一下可能会遇到的几个小bug。
第一个是PDF解析出来一团乱,常见原因是简历本身是图片扫描版而不是文字版PDF,这工具走的是文字提取路线,扫描件它读不出来,换一份文字版的PDF基本能解决。
第二个是跑起来卡在GitHub那一步很久,大概率是没填GITHUB_TOKEN,被限流了,去GitHub的Settings里申请一个免费的Personal Access Token填进.env,速度能明显好转。
第三个是评分看着不太靠谱,前后矛盾,是不是模型选错了?先看看选的模型是不是太小了,gemma3:1b这种轻量模型为了省资源会牺牲一些判断力,换成4b甚至12b的版本,评分的稳定性通常会好不少。

招聘这件事本来高度依赖人的主观判断,看一份简历顺不顺眼,很大程度上取决于看的人那天心情好不好、精力够不够。
这类工具想做的事情,是把第一轮筛选里那些可以量化的部分先交给AI算清楚,省下来的精力留给人去做真正需要人情味判断的部分,至于这个算法到底公平不公平,值不值得信,这事还得每个用的人自己心里掂量。
人来筛选简历会出现的一些“随机性”,在AI的控制下会大大减少,但,也因此过于“程序化/标准化”,也容易遗漏人才。我个人认为,人机结合,各自取长补短,不失为一种办法。
最后,再强调一句开头那句话,这工具给出的是参考分,真正决定要不要见一个人,最后这一步交给人,别交给一个分数。
如果喜欢我的文章,可以随手点个赞、在看、转发三连哦,也可以给我个⭐星标⭐,能够第一时间收到推送哟~
夜雨聆风