[{"data":1,"prerenderedAt":239},["ShallowReactive",2],{"content:project:job-agent":3},{"id":4,"title":5,"body":6,"cover":218,"date":219,"demoUrl":220,"description":221,"draft":222,"extension":223,"meta":224,"navigation":225,"path":226,"repoUrl":227,"seo":228,"status":229,"stem":230,"tags":231,"updated":237,"__hash__":238},"projects\u002Fprojects\u002Fjob-agent.md","Job-Agent：一条能跑完的求职链路，而不只是一个聊天框",{"type":7,"value":8,"toc":206},"minimark",[9,13,22,26,51,55,62,69,73,76,168,171,174,182,185,200,203],[10,11,12],"h2",{"id":12},"想解决的问题",[14,15,16,17,21],"p",{},"上一个项目（Gym-Agent）里我踩到的最大坑是：Agent 的行为只能靠手点去试，改一版提示词完全不知道是变好还是变坏。\n所以 Job-Agent 我从一开始就不是「做一个会聊天的求职助手」，而是想把\n",[18,19,20],"strong",{},"简历准备 → 岗位发现 → 匹配分析 → 投递跟进 → HR 沟通 → 模拟面试 → 复盘提升 → 行动确认","\n这条完整链路跑通，并且让每一层都可观测、可评测。",[10,23,25],{"id":24},"用户端一条真实的求职流程","用户端：一条真实的求职流程",[27,28,29,33,36,39,45],"ul",{},[30,31,32],"li",{},"简历上传后走解析与评分：文件用 Apache Tika \u002F POI \u002F PDFBox 抽取，MinIO 存原文件，预览和「设为默认简历」都有；",[30,34,35],{},"岗位列表、详情、收藏、推荐、搜索，简历与岗位做匹配分析，输出匹配分、优势、风险点和优化建议；",[30,37,38],{},"投递记录带状态流转和跟进提醒，HR 沟通记录支持回复识别与跟进动作；",[30,40,41,44],{},[18,42,43],{},"Agent Inbox"," 把跟进、面试、日报、提醒这些模块产生的待处理事项汇到一个地方；",[30,46,47,50],{},[18,48,49],{},"行动确认中心","：AI 生成的可执行建议先进这里，由用户点确认才执行。\n这条规则和上一个项目一样——模型可以提议，但不可以替用户做决定。",[10,52,54],{"id":53},"ai-模拟面试链路最长的一条","AI 模拟面试：链路最长的一条",[14,56,57,58,61],{},"选岗位和简历创建面试 → 从题库\u002FRAG 知识库抽题（去重、难度配比、知识点关联、用户错题优先）→\n用户开摄像头和麦克风",[18,59,60],{},"用语音作答"," → 接火山引擎\u002F豆包 ASR 转文本 →\n大模型拿参考答案 + RAG 知识 + 用户回答做相似度判断与评分 → 生成总体评分、逐题复盘、\n薄弱知识点、优化建议和学习计划 → 错题自动沉入错题本，并反过来影响下一轮抽题策略。",[14,63,64,65,68],{},"这条链路上最难的不是模型调用，是",[18,66,67],{},"失败怎么收场","：ASR 挂了、复盘 JSON 解析不出来、\n总结生成超时，每一种都有标准错误码和兜底路径，不会让面试卡在中间状态。",[10,70,72],{"id":71},"agent-的分层工程化","Agent 的分层工程化",[14,74,75],{},"这是我认为这个项目里最值得写的部分：",[77,78,79,92],"table",{},[80,81,82],"thead",{},[83,84,85,89],"tr",{},[86,87,88],"th",{},"层",[86,90,91],{},"做什么",[93,94,95,104,112,120,128,136,144,152,160],"tbody",{},[83,96,97,101],{},[98,99,100],"td",{},"Planner",[98,102,103],{},"把用户目标拆成计划、步骤、工具选择和完成条件",[83,105,106,109],{},[98,107,108],{},"Executor",[98,110,111],{},"按计划执行工具调用，记录步骤状态与输入输出",[83,113,114,117],{},[98,115,116],{},"Tool Schema",[98,118,119],{},"统一工具的名称、入参、出参、错误码、权限、副作用、是否需要用户确认",[83,121,122,125],{},[98,123,124],{},"Guardrails",[98,126,127],{},"Prompt 注入、工具越权、敏感操作拦截、PII 脱敏、JSON 输出校验",[83,129,130,133],{},[98,131,132],{},"Long-term Memory",[98,134,135],{},"沉淀偏好、简历摘要、面试反馈、历史决策；带冲突检测与版本历史",[83,137,138,141],{},[98,139,140],{},"Model Gateway",[98,142,143],{},"模型配置、API Key、路由、超时、重试、熔断、成本统计统一收口",[83,145,146,149],{},[98,147,148],{},"Prompt 管理",[98,150,151],{},"模板、版本、场景编码、灰度，业务方在页面上就能改",[83,153,154,157],{},[98,155,156],{},"Trace",[98,158,159],{},"主链路 + 工具链路 + 模型调用，耗时、token、费用、失败原因",[83,161,162,165],{},[98,163,164],{},"Eval",[98,166,167],{},"评测用例与批量回归，看工具选择准确率、参数准确率、RAG 命中率、JSON 与回答质量",[14,169,170],{},"RAG 侧做了文档与 chunk 两级入库、增量索引、删除同步、权限过滤、引用展示，\n以及混合检索 + 重排序的第一版；召回质量本身也可以评测——\n知识库最容易出现的问题不是「没实现」，而是「看着能用，其实什么都没命中」。",[10,172,173],{"id":173},"工作流与连接器",[14,175,176,177,181],{},"不适合在请求线程里同步做的事交给异步工作流：任务创建、状态机流转、失败重试与恢复、进度记录、定时调度，\n比如面试准备任务创建后给用户发提醒邮件；Admin 端能看到任务列表、失败原因和处理状态。\n外部连接器（招聘平台、邮箱、日历、通知渠道、简历导出）单独放在 ",[178,179,180],"code",{},"Job-Agent-Mcp-Tools"," 里，\n目前是预留接口，还没有真实对接。",[10,183,184],{"id":184},"哪里还不够",[27,186,187,190,193],{},[30,188,189],{},"连接器的真实对接没做完，「自动同步岗位」还只是设计；",[30,191,192],{},"Eval 用例覆盖的是核心链路，长尾场景没有；",[30,194,195,196,199],{},"项目进入现在这个阶段，我更该做的是",[18,197,198],{},"少加功能、多提质量","，把回归跑稳。",[10,201,202],{"id":202},"技术栈",[14,204,205],{},"后端 Java 17 \u002F Spring Boot 3.5.x \u002F MyBatis-Plus \u002F MySQL \u002F Redis \u002F Sa-Token \u002F MinIO \u002F LangChain4j \u002F\nSpringDoc，前端 Vue 3 + TypeScript + Vite + Pinia + Element Plus（地图用高德 JS API），\n模型侧统一走 OpenAI 兼容接口，语音用火山引擎 ASR。",{"title":207,"searchDepth":208,"depth":208,"links":209},"",3,[210,212,213,214,215,216,217],{"id":12,"depth":211,"text":12},2,{"id":24,"depth":211,"text":25},{"id":53,"depth":211,"text":54},{"id":71,"depth":211,"text":72},{"id":173,"depth":211,"text":173},{"id":184,"depth":211,"text":184},{"id":202,"depth":211,"text":202},"\u002Fimages\u002Fcovers\u002Fjob-agent.jpg","2026-06-01",null,"Spring Boot 多模块 + Vue3 双前端的求职 Agent 系统，覆盖简历解析、岗位匹配、投递跟进、AI 模拟面试与复盘；重点是 Agent 的分层工程化：Planner、工具 Schema、Guardrails、记忆、Trace 和 Eval。",false,"md",{},true,"\u002Fprojects\u002Fjob-agent","https:\u002F\u002Fgithub.com\u002FHFJ0624\u002FJob-Agent",{"title":5,"description":221},"maintenance","projects\u002Fjob-agent",[232,233,234,235,236],"Agent","LLM 应用","RAG","Spring Boot","可观测性","2026-07-08","B5cvrZBxRyjLAuaLBPAk0gQAQI3hzLcCkTCL0Yb-aCE",1792063306707]