目录

Kongming Student Job Matching Agent

孔明职配是面向学生求职场景的 AI 岗位匹配与简历优化智能体。项目通过简历解析、岗位推荐、JD 分析、匹配解释、简历优化建议、模拟面试和 AI 求职助手,帮助学生完成从“理解自身画像”到“准备投递材料”的求职分析闭环。

项目简介

难以判断岗位与自身经历是否匹配是学生在求职过程中常见的问题,同时学生也缺少面向目标 JD 的具体简历优化建议。孔明职配将简历、岗位 JD、面试回答和用户追问统一到一个求职上下文中,使用轻量多智能体流程和模型代理生成可解释结果。

当前仓库已实现 Web Demo,主要面向以下场景:

  • 学生上传或粘贴 PDF、图片、文本简历。
  • 系统结构化提取学生画像、经历证据、技能和求职方向。
  • 用户可以在简历编辑页修改结构化字段,并联动高亮原始 PDF 对应区域。
  • 扫描版 PDF 或图片简历可通过本地 RapidOCR 获取文字及坐标信息。
  • 岗位推荐优先检索本地岗位 RAG 知识库,再结合模型完成匹配分析。
  • 系统生成岗位推荐,并给出匹配评分、关键词覆盖、风险和行动建议。
  • 用户粘贴目标 JD 后进行二次分析。
  • 用户进入模拟面试,获得面试追问和反馈。
  • 用户通过 AI 助手进行连续求职问答。

核心功能

功能 当前实现
简历输入 支持文本文件、PDF、图片简历;PDF 优先读取文本层,质量不足时转视觉识别。
简历结构化 通过模型任务 resume-structure 提取姓名、学历、经历、技能、求职方向等字段。
简历编辑 支持编辑基础信息、教育、项目、竞赛、证书和语言能力,并联动高亮简历文档。
OCR 坐标识别 文本层不足时调用本地 RapidOCR,返回文字块和坐标用于字段定位。
岗位 RAG 基于 500 条岗位数据、SQLite/Qdrant、本地向量召回与重排返回可追溯岗位结果。
岗位推荐 优先使用岗位知识库召回结果,并通过模型补充匹配解释和行动建议。
本地匹配评分 src/matchEngine.ts 基于能力、经历、关键词、兴趣和成长潜力生成可解释评分。
JD 分析 支持用户输入岗位名称和 JD,生成岗位结构、投递优先级、优势、风险和行动建议。
简历优化 根据目标岗位和匹配差距生成个人总结、项目经历改写和技能关键词建议。
模拟面试 支持综合面、技术面、HR 面三种模式,包含语音输入、TTS 播报、Live2D/PNG 面试官兜底。
AI 求职助手 支持多轮对话,带入简历、岗位和匹配结果上下文。
报告导出 可导出 Markdown 分析报告。

使用的模型与算力环境

当前代码中的模型调用由后端代理统一封装:

  • 前端调用:src/giteeAiClient.ts
  • 开发环境代理:vite.config.ts 中的 /api/gitee-ai
  • Vercel API:api/gitee-ai.js
  • 核心模型调用:server/giteeAiCore.js

竞赛环境使用 Gitee AI 模力方舟上的沐曦 Token 资源包,配置如下:

GITEE_AI_BASE_URL=https://ai.gitee.com/v1
GITEE_AI_API_KEY=your_gitee_ai_access_token
GITEE_AI_PACKAGE=1492
GITEE_AI_MODEL=Qwen3-4B
GITEE_AI_VISION_MODEL=Qwen3-VL-8B-Instruct
GITEE_AI_REQUEST_TIMEOUT_MS=90000

模型代理已收敛为 Gitee AI / 沐曦资源包专用路径:服务端仅接受 https://ai.gitee.com/v1,每次请求携带 X-Package: 1492,不再保留其他模型平台的运行时回退。当前使用文本模型 Qwen3-4B 和视觉模型 Qwen3-VL-8B-Instruct,并已补充脱敏调用记录与截图证据。

仓库结构

.
├── api/                         Vercel API 入口,转发模型请求
├── docs/                        项目架构、技术说明、部署、证据与运行文档
├── public/                      静态资源、Live2D/2D 面试官、PDF.js CMap
├── scripts/                     解析器与 UI 验证脚本
├── server/                      服务端模型代理核心逻辑
├── src/                         React 前端、智能体、解析器、页面和样式
├── index.html                   Vite HTML 入口
├── package.json                 Node 依赖和脚本
├── vite.config.ts               Vite 配置和本地 API 代理
├── vercel.json                  Vercel 安全头配置
└── tsconfig.json                TypeScript 配置

更完整的结构说明见 项目架构与理解文档。

快速开始

环境要求:

  • Node.js 版本建议使用当前 Vite 7 可兼容版本,推荐 Node.js 20 或更新版本。
  • npm。

安装依赖:

npm install

本地开发:

npm run dev

浏览器访问 Vite 输出的本地地址,默认通常为:

http://localhost:5173

构建:

npm run build

预览构建产物:

npm run preview

配置说明

配置项 是否必填 用途 示例
GITEE_AI_API_KEY 模型能力必填 服务端模型代理鉴权 your_model_api_key
GITEE_AI_BASE_URL 比赛环境必填 Gitee AI OpenAI 兼容接口地址 https://ai.gitee.com/v1
GITEE_AI_MODEL 否 文本任务模型名称 Qwen3-4B
GITEE_AI_VISION_MODEL 否 图片/PDF 视觉兜底模型名称 Qwen3-VL-8B-Instruct
GITEE_AI_PACKAGE 否 Gitee AI / 沐曦 Token 资源包编号 1492
GITEE_AI_REQUEST_TIMEOUT_MS 否 服务端模型请求超时时间 90000
VITE_GITEE_AI_API_URL 否 前端覆盖模型代理地址 /api/gitee-ai
VITE_AVATAR_MODE 否 数字人模式标记 static

示例输入输出与运行流程

以下示例基于已脱敏的演示数据,展示从首页入口到简历分析、岗位推荐、模拟面试和 AI 助手的完整使用链路。

示例输入:学生简历 PDF、图片或文本内容,以及可选的目标岗位名称/JD。

示例输出:结构化学生画像、岗位推荐列表、岗位匹配评分、简历优化建议、模拟面试追问和 AI 助手多轮问答回复。

1. 首页与能力入口

首页展示项目定位、核心能力入口和岗位推荐/能力图谱预览。

首页 - 岗位推荐展示

首页 - 能力图谱展示

2. 简历解析与优化建议

用户上传或粘贴简历后,系统提取学生画像、项目经历、技能关键词和求职方向,并基于目标岗位生成简历优化建议。

简历解析结果

简历优化建议

3. 岗位推荐与匹配解释

系统根据学生画像生成岗位推荐列表,给出匹配分数、优先级、岗位职责、岗位要求和五维匹配评分。

岗位推荐列表

岗位详情与匹配评分

4. 模拟面试与 AI 助手

用户可以进入综合面、技术面或 HR 面模拟面试,也可以在 AI 助手中围绕简历诊断、岗位澄清、面试准备进行多轮问答。

模拟面试

AI 求职助手

5. 模型真实调用记录

项目已通过 Gitee AI / 沐曦 Token 资源包完成真实模型调用。下图为脱敏后的控制台调用记录,不包含访问令牌、Authorization header、Cookie 或完整 IP。

Gitee AI 真实调用记录

部署方法

当前项目包含 Vercel API 入口和 vercel.json 安全头配置,适合部署到 Vercel。

基本流程:

  1. 在部署平台连接仓库。
  2. 配置构建命令:npm run build。
  3. 配置输出目录:dist。
  4. 在部署平台配置 GITEE_AI_API_KEY 等环境变量。
  5. 部署后访问公网链接并验证简历上传、岗位推荐、JD 分析和模拟面试流程。

详细步骤见 部署指南。

证据材料

仓库已补充 Demo 视频网盘链接、项目展示 PPT、核心页面运行截图、模型真实调用证据、脱敏日志说明和性能测试记录。材料清单见 证据材料索引,整理说明见 演示材料与证据指南。

性能测试与运行日志

仓库当前包含:

  • scripts/verify-parsers.cjs:解析器验证脚本。
  • scripts/verify-ui.cjs:Playwright UI 验证脚本,使用 Mock /api/gitee-ai 响应。

仓库已补充 Gitee AI / 沐曦 Token 资源包真实调用证据。相关材料见:

开源代码参考来源

项目开源参考与第三方依赖说明详见:

当前仓库根目录包含 Apache-2.0 许可证和 NOTICE 文件。原创代码按 Apache License 2.0 开源;第三方依赖、运行时资源和素材仍遵循其各自许可证或授权边界,不能仅用本仓库 License 覆盖。

本项目为 Nanshan von Neumann Team 面向学生求职匹配场景开发的 AI 智能体 Demo。项目核心包括简历解析、岗位推荐、JD 分析、匹配解释、简历优化、模拟面试和 AI 求职助手等功能。

本仓库当前公开发布目的为本次竞赛提交、评审展示、可复现检查和学习参考。参赛、评审、商业展示、二次分发或修改版本应保留原始项目来源、Apache License 2.0 文本、NOTICE 文件和作者/团队署名。项目名称、截图、文档、PPT、演示材料、品牌标识和非代码素材不因代码采用 Apache-2.0 而自动放弃署名权或其他未明确授予的权利。

安全边界

  • 前端不直接保存或展示模型密钥。
  • 模型请求通过 /api/gitee-ai 后端代理转发。
  • API 响应设置 Cache-Control: no-store、X-Content-Type-Options: nosniff、Referrer-Policy: no-referrer。
  • .gitignore 已排除 .env、.env.*、日志文件和构建产物。
  • 用户简历内容当前主要保存在浏览器运行状态中;岗位知识库数据与索引仅保存在本地配置目录,不上传用户简历原文。
  • 公开演示和日志发布前需要对姓名、手机号、邮箱、学校、证件号、API Key 等信息脱敏。

文档索引

本地开发

比赛模型调用使用 Gitee AI 模力方舟上的沐曦 Token 资源包。请参考 .env.example 在本地创建不提交的 .env.local,并通过安全方式填写访问令牌:

GITEE_AI_BASE_URL=https://ai.gitee.com/v1
GITEE_AI_PACKAGE=1492
GITEE_AI_MODEL=Qwen3-4B
GITEE_AI_VISION_MODEL=Qwen3-VL-8B-Instruct

首次使用扫描版 PDF 或图片简历前,先在 D 盘建立本地 OCR 环境:

npm run setup:ocr

首次构建岗位知识库时执行:

npm run setup:rag
npm run build:job-index
npm run setup:job-reranker
npm run verify:job-rerank

重排模型约占 2.3 GB,默认缓存到 D:\ai_models\kongming-rerankers\bge-reranker-v2-m3。缓存完成后,本地岗位 检索会自动启用二阶段重排;页面请求不会联网下载模型。

启动前端和同源模型、OCR、岗位知识库代理:

npm run dev

生产环境的 Vercel 函数通过 /api/jobs/search 转发到独立岗位 RAG 服务,不会 在 Serverless 函数中加载本地 Python、Qdrant 数据目录或重排模型。部署变量和 容器运行说明见 岗位 RAG 独立服务,配置后可运行:

npm run verify:job-remote

有文字层的 PDF 会继续使用 PDF.js;仅当文字层为空或质量不足时,系统才调用 RapidOCR,并把识别到的文字坐标用于简历字段高亮。OCR 置信度不足时,语义识别任务通过 Gitee AI / 沐曦视觉模型完成。

关于

面向学生求职场景的 AI 简历解析、岗位匹配、求职建议与模拟面试智能体

706.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号