企业招聘智能 Agent(React + Spring Boot)
对照篇:企业知识库智能问答 Agent(React + Nest)
本文讲Java 线:同一套 Agent 工程能力,场景换成招聘(JD / 简历 / 人岗匹配 / 发放 / 预约),栈换成React + Spring Boot + Spring AI + LangGraph4j。
具体代码与逐步实现文档不在正文展开——请到网盘下载完整资料后按 Demo 序号动手。
资料获取(重点)
百度网盘(本文档配套:实现 Demo 全套 + 仓库说明)
| 项 | 内容 |
|---|---|
| 分享名称 | 企业招聘智能 Agent(React + Spring Boot) |
| 链接 | https://pan.baidu.com/s/17-OQAKRXUUU-XkJsgwt5YQ?pwd=1234 |
| 提取码 | 1234 |
网盘内包含:
- 《代码仓库地址.md》— 前后端 Gitee / Git 克隆地址
docs/实现Demo/—00~23逐步实现稿(可复制代码 + 验收)- 样例 JD / 简历、规划说明书(可选)
建议阅读顺序:
- 先扫本文,弄清「项目是什么、有哪些能力、Demo 目录长什么样」
- 打开网盘 → 读《代码仓库地址.md》拉代码
- 按
实现Demo/README.md从00做到23,需要细节再翻对应xx-*.md
正文只做导览与目录,不贴大段实现代码——避免文章过长,也方便你本地对照最新文档迭代。
一、项目是什么
这是一套企业招聘智能 Agent演示系统:HR / 用人经理登录后,可针对已授权的岗位 JD / 简历资料库提问,系统通过RAG(检索增强生成)从文档片段找依据再回答(人岗匹配、岗位要求、候选人技能等),并展示引用来源;查不到依据时会拒答,不瞎编。
在 RAG 之外,还演示了 Agent 工程里常见的进阶能力:
- Spring AI 必用:Chat / Embedding 统一走 Spring AI(业务侧不手写 LLM HTTP)
- 按复杂度分层编排:简单问答直调 ChatClient → 流程用LangGraph4j→ 长程深评用Deep Agents侧车
- 意图分叉:制度/JD/简历走检索;查候选人、面试预约等走MCP 工具
- Skill 可配置:管理台配剧本,会话自动匹配或显式调用
- SSE 流式:回答逐字显示
- 多轮会话:左侧会话列表,历史落库
- Redis 限流:同一用户每分钟最多约 20 次提问
- HITL 人机审核:通过初筛 / 预约 / 取消等写操作,先 pending,点同意再执行
整体定位:简历 / 面试可讲清的完整链路,而不是只调一次大模型 API。
与 Nest 知识库篇Demo 能力同构、业务场景不同、后端栈不同——适合已会前端、要补 Java Agent 的同学。
二、架构概览(一眼看懂)
浏览器 React + Vite :5178 │ fetch + Cookie(Vite 代理 /api → Spring Boot) ▼ Spring Boot :8788 (包名 com.agentworks.recruit) ├── Spring Security JWT Cookie 登录鉴权 ├── KbGrant ACL(岗位/简历库授权) ├── 资料库 CRUD、文档上传、分块索引 ├── Skill Registry + AgentGraph(LangGraph4j + SSE) ├── MCP Client → 招聘 / 预约工具面 ├── MySQL + MyBatis(业务);独立向量库(如 Milvus) └── Redis(限流) ▼ 外部 API ├── DeepSeek(聊天) └── 通义 / OpenAI 兼容(Embedding)前后端两个独立工程、两个终端进程:前端只写页面,后端写接口与 AI 逻辑;模型 Key 只放在服务端配置,不进前端。
架构细节、表结构、MCP/Skill 说明书 →网盘文档,此处不展开。
三、技术栈(对照 Nest 篇)
| 层级 | 本项目(招聘 · Java) | 对照:知识库 · Nest |
|---|---|---|
| 前端 | React 19、Vite、TS、Ant Design、React Router | 同左(端口 :5178) |
| 后端 | Spring Boot、Java 21、Spring AI、LangGraph4j | Nest.js、LangGraph.js |
| 持久化 | MySQL + MyBatis;向量独立库 | Postgres + pgvector 同库 |
| 鉴权 | Spring Security + JWT Cookie | JwtGuard + Cookie |
| 缓存 | Redis(限流) | Redis |
| 文档 UI | Knife4j(/doc.html) | — |
| 样板代码 | Lombok | — |
端口约定(本项目):前端5178、后端8788(与 Nest 的 5173 / 8787 错开,可同机对照练习)。
四、实现 Demo 功能目录(全文核心)
下面这份目录对应仓库内:
enterprise-recruit-agent-web/docs/实现Demo/
每一份都是一份可抄作业的实现稿(目标 → 步骤 → 代码骨架 → 验收)。
想看「怎么写」:请到网盘打开同名 md,不要只停在本文列表。
4.1 总表(00~23)
| 序 | 文档 | 做完的样子(验收一句话) |
|---|---|---|
| 00 | 环境与双进程空壳 | 前后端起来,/api/healthok |
| 01 | 前端 antd 骨架 | 顶栏 + 路由占位 |
| 02 | 简单问答 · ChatClient | Spring AI 一问一答(L1) |
| 03 | LangGraph 最小图 | START→llm→END(L2) |
| 04 | MySQL 与 MyBatis 连通 | SELECT 1 + smoke 表;引入 Lombok / Knife4j |
| 05 | 登录鉴权 | Cookie JWT,ADMIN / STAFF |
| 06 | 资料库 CRUD | 建库改名删除 + ACL |
| 07 | 上传文档 | 上传 JD / 简历 md |
| 08 | 分块索引与向量 | Embedding 索引 + debug-search |
| 09 | RAG 问答 | 引用片段 + 无依据拒答 |
| 10 | 会话历史 | 左右布局,消息落库 |
| 11 | SSE 多轮 | 流式输出 + 停止 |
| 12 | 意图与候选人 Tool | C- / M- 意图分叉(过渡) |
| 13 | Redis 限流 | 超限 429 |
| 14 | 岗位需求 | 结构化 JobReq |
| 15 | 简历档案与评分排名 | 匹配度 + 排名 |
| 16 | 优缺点报告 | pros / cons + 依据 |
| 17 | 模拟发放与收件箱 | 发放 → 用人经理收件箱 |
| 18 | HITL 初筛 | 通过初筛走人审 |
| 19 | Compose 与评测 | 一键依赖 + 评测表 |
| 20 | MCP 业务 Server | 招聘工具面 MCP Server |
| 21 | MCP Client 与预约入口 | Client + 可约 / 预约 / 取消 |
| 22 | Skill 配置与调用 | 管理台剧本 + 自动/显式调用 |
| 23 | DeepAgent 侧车与深评 | L3 深评侧车(或设计验收) |
4.2 建议学习路径(勾选)
| 阶段 | 序号 | 你要能讲清的一句话 |
|---|---|---|
| 能登录 | 00~05 | 双进程 + MyBatis + JWT Cookie |
| RAG 通 | 06~09 | 上传 → 索引 → 带引用问答 / 拒答 |
| Agent 图完整 | 10~13、18 | 会话、SSE、意图、限流、HITL |
| 招聘业务闭环 | 14~17 | 岗位、评分排名、优缺点、发放收件箱 |
| 三件套升级 | 20~22 | RAG + MCP + Skill |
| 深评 | 23 | 何时上 Deep Agents、侧车怎么接 |
产品叙事一句话:HR 维护岗位与资料库 → 批量评分与优缺点 → 模拟发给用人经理 → 高风险操作走人审;进阶再上 MCP / Skill / 深评。
4.3 样例与对照
- 上传样例(在网盘 / 仓内
docs/samples):岗位 JD、简历等 - Node 对照:上文 Nest 知识库 Agent(差旅制度 / 工单 Tool)——能力同构,换栈换场景
五、LangGraph 意图图(核心逻辑 · 仅导览)
START → skill_resolve →(深评?→ Deep 侧车 : 主图) 主图 route ├─ rag → retrieve → generate → END ├─ mcp → mcp_invoke → summarize → END └─ hitl → pending →(resume 后写操作)→ END路由直觉:
- 深评 Skill → Deep Agents 侧车
- 「通过初筛 / 预约 / 取消」→ HITL
- 「候选人 / 可约」等 → MCP
- 其余 → RAG(极简可直调 ChatClient)
图节点怎么写、State 怎么传 →网盘实现Demo/03、09、12、18、20~23。
六、目录结构(拉代码后你会看到)
enterprise-recruit-agent/ enterprise-recruit-agent-java/ # 后端 :8788 enterprise-recruit-agent-web/ # 前端 :5178 docs/ 实现Demo/ # ★ 00~23 本文目录对应这里 samples/ # JD / 简历样例 …规划说明书…仓库地址以网盘《代码仓库地址.md》为准(例如 Gitee 上的enterprise-recruit-agent-web/enterprise-recruit-agent-java)。
七、本地怎么跑(摘要)
环境:JDK 21+、Maven、Node 20+、yarn、Docker Desktop。
- 按网盘说明克隆前后端
- 后端复制 local /
.env,填 DeepSeek、Embedding、库连接、JWT 密钥 docker compose起 MySQL / Redis(及向量依赖,按 Demo 进度)- 两终端:
mvn spring-boot:run(:8788)、yarn start(:5178) - 浏览器 http://localhost:5178/login
| 账号 | 密码 | 用途 |
|---|---|---|
| staff@corp.com | staff123 | 对话台 / 收件箱(用人经理) |
| admin@corp.com | admin123 | 资料库 / 岗位等(HR) |
逐步命令、配置项、排错表→ 网盘实现Demo/00与《项目运行》类文档,本文不重复贴长命令。
演示验收建议(跑通后自测)
- 上传岗位 JD + 简历样例,建立索引
- 问岗位年限 / 技能 → 有引用、能答;乱问 → 拒答
- 查候选人 / 预约类意图 → 走 Tool 或 MCP
- 「通过初筛」→ 待审批 → 同意后再变状态
- 连续提问触发限流提示
八、主要 API(节选 · 联调用)
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/auth/login | 登录,Set-Cookie |
| GET | /api/auth/me | 当前用户 |
| GET/POST | /api/kb… | 资料库与文档、索引 |
| GET | /api/agent/sessions | 会话列表 |
| POST | /api/agent/stream | SSE 流式问答 |
| POST | /api/agent/resume | HITL 审批 |
前端:fetch(..., { credentials: "include" }),经 Vite 代理访问 Spring Boot。
完整接口与 Knife4j 调试 → 本地起服务后打开后端/doc.html,细则见网盘文档。
九、和 Nest 知识库篇怎么一起用
| Nest 知识库篇 | 本文 · 招聘 Java 篇 | |
|---|---|---|
| 场景 | 差旅制度、工单/订单 | JD/简历、匹配发放、预约 |
| 后端 | Nest + LangGraph.js | Spring Boot + Spring AI + LangGraph4j |
| 向量 | PG + pgvector | MySQL 业务 + 独立向量库 |
| 文档形态 | 仓内docs/demo-*.md | 仓内docs/实现Demo/00~23 |
| 你怎么学 | 先通一条 RAG+HITL | 再换栈做招聘闭环 + MCP/Skill |
两套都做完,面试可以讲:同一套 Agent 能力,我在 Node 与 Java 两条栈都能落地。
十、写在最后
- 本文目的:让你快速判断「值不值得学、学什么、Demo 有几步」
- 实现目的:请到百度网盘取完整
实现Demo与仓库地址,按序号动手 - 文档会随项目迭代;以网盘 / 仓库内最新
实现Demo/README.md为准
网盘链接与提取码见文首「资料获取」;文档以网盘 / 仓库内最新实现Demo/README.md为准。
对照原创:企业知识库智能问答 Agent(React + Nest)