ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Resume Matcher 实战指南:AI 简历定制、ATS 匹配与多供应商本地化部署

Resume Matcher 实战指南:AI 简历定制、ATS 匹配与多供应商本地化部署 Resume Matcher 实战指南AI 简历定制、ATS 匹配与多供应商本地化部署【免费下载链接】Resume-MatcherThe #1 AI Harness for Building Resumes, PDFs, Cover Letters more, locally with 100 LLMs support.项目地址: https://gitcode.com/GitHub_Trending/re/Resume-MatcherResume Matcher 是一款开源的 AI 简历工作台它围绕主简历 岗位描述的定制流程利用 LLM 生成针对性简历内容、求职信与邮件模板并提供 PDF 导出与多语言界面。本文以项目西班牙语文档 README.es.md 为主线结合 SETUP.es.md 部署手册与仓库源码后端配置、LLM 集成层、FastAPI 入口 等完整讲解其工作原理、核心功能、安装步骤、AI 供应商配置与 Docker 部署帮助读者快速落地一套可本地运行的简历定制系统。一、工作原理从主简历到定制简历的六步流程Resume Matcher 的核心理念是先建立一份主简历master resume再针对每一份岗位描述JD进行定制而不是每次从零重写。README.es.md 将其工作流概括为六步上传你的主简历PDF 或 DOCX粘贴目标岗位的职位描述审查AI 生成的改进建议与定制内容生成针对该岗位的求职信和申请邮件模板定制版式与章节使其符合你的风格导出为你偏好的模板所渲染的专业 PDF。从源码看这条流程由 FastAPI 入口 挂载的多个路由器共同支撑/api/v1/resumes简历解析与存储、/api/v1/jobs岗位描述、/api/v1/enrichment内容增强、/api/v1/resume_wizard引导式生成等全部以/api/v1为前缀。其中简历解析依赖pdfminer.six与markitdown[docx]见 pyproject.toml支持 PDF 与 DOCX 两种主流格式。二、核心功能深度解析2.1 主简历Master Resume你首先需要一份完整的主简历作为内容来源。上传后系统通过 LLM 将其解析为结构化数据模型对应 schemas/models.py后续所有针对岗位的定制都基于这份结构化主简历进行避免每次重复录入。2.2 简历构建器Resume Builder粘贴岗位描述后构建器会借助 AI 生成针对该岗位的定制简历。文档明确列出了四项可操作能力全部有前端组件支撑修改建议内容AI 生成的条目可在 resume-builder.tsx 中直接编辑增删章节通过 add-section-dialog.tsx 添加自定义章节项目、证书、语言等拖拽重排章节依赖dnd-kit/core、dnd-kit/sortable等库实现见 package.json对应 draggable-section-wrapper.tsx多模板切换在 Clásica / Moderna 两种风格的一列、两列布局间自由选择。前端还为构建器提供了 ATS 分数卡片ats-score-card.tsx与差异化预览diff-preview-modal.tsx让每一次定制都可见、可对比。2.3 求职信与邮件模板生成器系统会根据岗位描述与简历内容自动生成定制化的求职信和邮件模板。对应后端服务位于 services/cover_letter.py前端提供 cover-letter-editor.tsx 与 outreach-editor.tsx 进行在线编辑与预览并支持独立打印页面见 app/print/cover-letter/[id]/page.tsx。2.4 简历评分与关键词高亮开发中README.es.md 指出评分功能正在开发中目标是分析简历与岗位描述的匹配度并给出改进建议。从源码看该功能已有明确实现雏形services/ats.py 定义了 ATS 风格的三项子评分及其权重子评分权重说明keyword_match0.55简历精修流水线输出的关键词匹配率skills_coverage0.20简历技能与 JD 必备技能的重叠度section_completeness0.25必备章节summary/experience/education/skills的完整性本地规则判断不依赖 LLM整体分数为三项加权合成。前端配套有 keyword-matcher.ts 与 jd-comparison-view.tsx用于展示关键词命中情况。前端测试 keyword-matcher.test.ts 对关键词匹配逻辑进行了覆盖。2.5 PDF 导出定制好的简历与求职信可直接导出为 PDF。导出链路由后端 pdf.py 驱动底层使用Headless Chromium经 Playwright渲染前端打印页面app/print/resumes/[id]/page.tsx因此 PDF 与屏幕预览高度一致。2.6 内置模板文档提供了四套 PDF 模板全部可在 assets/pdf-templates 中查看预览图与 PDF 样例模板名称预览说明Clásica单列预览图 / PDF 样例传统干净布局适合大多数行业Moderna单列预览图 / PDF 样例当代设计注重可读性与美感Clásica双列预览图 / PDF 样例分栏结构层次更清晰Moderna双列预览图 / PDF 样例优雅双列组织更紧凑模板渲染组件位于 components/resume如 resume-modern.tsx、resume-two-column.tsx样式遵循Swiss International Style设计体系Tailwind CSS 4 实现。2.7 国际化i18n多语言 UI界面支持英语、西班牙语、中文、日语README.es.md 所述实际配置见 i18n/config.ts当前 locale 列表为en / es / zh / ja / pt / fr即英文、西班牙文、中文、日文、葡萄牙文巴西、法文六种多语言内容可生成指定语言的简历与求职信内容翻译文案位于 messages 目录en.json、es.json、zh.json、ja.json、pt-BR.json、fr.json并有 check_locale_parity.py 脚本与测试 i18n-locale-parity.test.ts 保证各语言键的完整性与一致性。2.8 Roadmap文档列出的规划方向包括关键词可视化高亮、AI Canvas 制作有冲击力且基于指标衡量的简历内容、多岗位描述批量优化。三、安装与快速开始3.1 前置要求工具版本要求检查命令Python3.13python --versionNode.js22node --versionnpm10随 Node.js 自带npm --versionuv最新uv --versionGit任意git --version其中uv是项目推荐的 Python 包管理器安装方式# macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) powershell -c irm https://astral.sh/uv/install.ps1 | iex # 或通过 pip pip install uv3.2 快速开始MacOS / WSL / Ubuntu# 克隆仓库 git clone https://gitcode.com/GitHub_Trending/re/Resume-Matcher.git cd Resume-Matcher # 后端终端 1 cd apps/backend cp .env.example .env # 配置 AI 供应商 uv sync # 安装依赖 uv run app # 前端终端 2 cd apps/frontend npm install npm run dev随后打开http://localhost:3000在 Settings 页面配置你的 AI 供应商即可。3.3 逐步配置后端后端是一个 FastAPI 应用负责 AI 处理、简历解析与数据存储。cd apps/backend cp .env.example .env nano .env # 或 code .env一个最小可用的 OpenAI 配置示例LLM_PROVIDERopenai LLM_MODELgpt-5-nano-2025-08-07 LLM_API_KEYsk-your-api-key-here # 本地开发保持默认即可 HOST0.0.0.0 PORT8000 FRONTEND_BASE_URLhttp://localhost:3000 CORS_ORIGINS[http://localhost:3000, http://127.0.0.1:3000]关于这份.env的完整参数可直接参考仓库中的 apps/backend/.env.example其对应的底层解析逻辑在 apps/backend/app/config.py 的Settings类中几个关键点LLM_PROVIDER支持openai、openai_compatible、anthropic、openrouter、gemini、deepseek、groq、ollama八种默认openaiLLM_MODEL默认gpt-5-nano-2025-08-07LLM_API_BASE用于 Ollama 或自定义兼容端点默认为空HOST / PORT默认0.0.0.0:8000RELOAD设true时uv run app会开启热重载仅开发REASONING_EFFORT支持minimal | low | medium | high留空则最大兼容LiteLLM 会对不支持的供应商自动丢弃该参数REQUEST_TIMEOUT_SECONDS单次简历定制/改进请求的硬超时默认 240 秒取值被钳制在 [30, 1800]使用本地 LLMOllama、llama.cpp时应调大且必须与前端NEXT_PUBLIC_REQUEST_TIMEOUT_MS 该值 × 1000保持同步否则前端会先中断请求CORS_ORIGINSJSON 数组格式FRONTEND_BASE_URL会被自动追加进允许列表见effective_cors_origins属性。安装依赖并启动uv sync # 创建虚拟环境并安装全部依赖 RELOADtrue uv run app # 开发模式启动启动成功后终端会输出类似INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRLC to quit) INFO: Started reloader process后端依赖与脚本入口定义在 apps/backend/pyproject.toml[project.scripts]中app app.main:main即uv run app的入口项目要求requires-python 3.13核心依赖包括fastapi、litellm多供应商统一网关、tinydbsqlalchemy数据存储、playwrightPDF 渲染等。3.4 配置前端cd apps/frontend # 可选仅当后端运行在非默认端口时才需要 cp .env.sample .env.local npm install npm run dev启动后终端输出类似▲ Next.js 16.x.x (Turbopack) - Local: http://localhost:3000前端 API 客户端位于 lib/api/client.ts默认API_BASE为/api/v1前端开发服务器会将请求代理到http://127.0.0.1:8000因此本地开发时前端与后端端口无需显式互指。四、配置你的 AI 供应商供应商既可以在应用的Settings页面配置推荐API Key 会加密存储也可以通过后端.env配置。4.1 选项 A云供应商供应商配置示例说明OpenAILLM_PROVIDERopenaiLLM_MODELgpt-5-nano-2025-08-07云端AnthropicLLM_PROVIDERanthropicLLM_MODELclaude-haiku-4-5-20251001云端Google GeminiLLM_PROVIDERgeminiLLM_MODELgemini-3-flash-preview云端OpenRouterLLM_PROVIDERopenrouterLLM_MODELdeepseek/deepseek-chat云端聚合多家模型DeepSeekLLM_PROVIDERdeepseekLLM_MODELdeepseek-chat云端OpenAI-CompatibleLLM_PROVIDERopenai_compatibleLLM_MODELllama-3.1-8bLLM_API_BASEhttp://localhost:8080/v1本地OpenAI-Compatible模式可指向任何暴露 OpenAI Chat Completions 接口的本地服务——llama.cpp、vLLM、LM Studio 等均可API Key 为可选留空时后端会自动传入一个占位值sk-no-key以通过客户端校验见 llm.py 中_effective_api_key。Anthropic 的.env示例LLM_PROVIDERanthropic LLM_MODELclaude-haiku-4-5-20251001 LLM_API_KEYsk-ant-your-key-here4.2 选项 BOllama 本地模型免费完全在本地运行、无 API 成本第 1 步安装 Ollama从官网下载并安装。第 2 步拉取模型ollama pull gemma3:4b其他可选模型mistral、codellama、neural-chat。第 3 步配置.envLLM_PROVIDERollama LLM_MODELgemma3:4b LLM_API_BASEhttp://localhost:11434 # Ollama 无需 LLM_API_KEY第 4 步确保 Ollama 正在运行ollama serve通常安装后 Ollama 会自动常驻后台。4.3 底层实现LiteLLM 多供应商网关为什么一个配置就能切换八种供应商关键在于后端在 apps/backend/app/llm.py 中基于LiteLLM做了统一封装模型命名规范化get_model_name()会自动为各供应商加上前缀如anthropic/、gemini/、deepseek/、ollama_chat/——后者路由到 Ollama 的/api/chat端点以支持 messages 数组OpenRouter 会强制补全openrouter/前缀API Base 归一化_normalize_api_base()会针对 Anthropic、Gemini、OpenRouter、Ollama 自动剥离用户粘贴的/v1等路径后缀避免出现/v1/v1/...双路径 404OpenAI 与 openai_compatible 则原样保留重试与熔断使用 LiteLLM Routernum_retries3针对超时重试 2 次、限流重试 3 次、服务端错误重试 2 次分别设置策略认证与参数类错误不重试并禁用冷却cooldown避免单部署场景下误伤超时自适应_calculate_timeout()按操作类型健康检查 30s / 补全 120s / JSON 180s、token 量与供应商Ollama 系数 2.0、OpenRouter 系数 1.5动态计算超时JSON 模式兜底complete_json系列会根据 LiteLLM 模型注册表判断是否支持response_format不支持时退化为纯 Prompt 约束并对gpt-5等推理模型自动迁移reasoning_effortminimal以保留历史行为。五、Docker 部署推荐使用 Docker Composedocker-compose up -d # 构建并启动 docker-compose logs -f # 查看日志 docker-compose down # 停止仓库根目录的 docker-compose.yml 展示了镜像运行所需的完整环境变量FRONTEND_BASE_URL默认http://localhost:3000、LOG_LEVELDEBUG/INFO/WARNING/ERROR、LOG_LLMLiteLLM 日志级别默认 WARNING、LLM_PROVIDER/LLM_MODEL/LLM_API_KEY/LLM_API_BASE数据通过命名卷resume-data:/app/backend/data持久化。使用 Docker 时需注意几点API Key 从 UI 配置在 http://localhost:3000/settings 页面填写而非通过.env文件从源码看API Key 经 crypto.py 加密后存入 SQLite 密钥存储不会以明文落盘见 config.py 中load_config_file/save_config_file的注释说明Ollama 跨容器访问若 Ollama 运行在宿主机Docker 容器内应把LLM_API_BASE设为http://host.docker.internal:11434而不是localhost。六、访问应用与首次运行清单两个服务都启动后可通过以下地址访问URL说明http://localhost:3000主应用Dashboardhttp://localhost:3000/settings配置 AI 供应商http://localhost:8000后端 API 根路径http://localhost:8000/docs交互式 API 文档Swagger UIhttp://localhost:8000/health后端健康检查首次运行清单打开 http://localhost:3000/settings选择你的 AI 供应商输入 API Key或配置 Ollama点击 Save Configuration 保存点击 Test Connection 验证连通性后端对应check_llm_health实现会发送一条最小请求并检查返回内容是否非空回到 Dashboard上传第一份简历。七、常用命令参考后端命令cd apps/backend # 开发模式热重载 RELOADtrue uv run app # 生产模式 uv run uvicorn app.main:app --host 0.0.0.0 --port 8000 # 安装依赖 uv sync # 安装含开发依赖用于测试 uv sync --group dev # 运行测试 uv run pytest # 查看数据目录JSON/SQLite 存储 ls -la data/前端命令cd apps/frontend npm run dev # 开发服务器Turbopack npm run build # 生产构建 npm run start # 生产启动 npm run lint # ESLint 检查 npm run format # Prettier 格式化 npm run test # Vitest 单元测试 npm run dev -- -p 3001 # 换端口数据库管理数据存储在apps/backend/data/目录。README.es.md / SETUP.es.md 提供的管理方式如下ls apps/backend/data/ # 查看数据库文件 cp -r apps/backend/data apps/backend/data-backup # 备份 rm -rf apps/backend/data # 重置从零开始从源码看当前主存储为 SQLiteresume_matcher.db应用启动时会执行幂等的 TinyDB → SQLite 迁移见 scripts/migrate_tinydb_to_sqlite.py 与 main.py 的 lifespan 逻辑并自动把旧版明文 API Key 迁入加密存储。八、常见问题排查后端无法启动ModuleNotFoundError确保通过uv run执行例如uv run uvicorn app.main:app --reloadLLM_API_KEY not configured检查.env中是否填写了所选供应商的有效 Key。前端无法启动 / 页面报 ECONNREFUSED先确认后端已启动cd apps/backend uv run uvicorn app.main:app --reload出现构建或 TypeScript 报错时清理 Next.js 缓存后重启rm -rf apps/frontend/.next npm run dev。PDF 下载失败Cannot connect to frontend for PDF generation后端无法访问前端页面进行渲染请依次检查前端是否在运行.env中FRONTEND_BASE_URL是否与前端地址一致CORS_ORIGINS是否包含前端地址。若前端运行在 3001 端口FRONTEND_BASE_URLhttp://localhost:3001 CORS_ORIGINS[http://localhost:3001, http://127.0.0.1:3001]Ollama 连接失败Connection refused to localhost:11434检查 Ollama 是否运行ollama list必要时手动启动ollama serve确认模型已下载ollama pull gemma3:4b。九、技术栈与项目结构技术栈一览组件技术后端FastAPI、Python 3.13、LiteLLM前端Next.js 16、React 19、TypeScript见 package.json数据库SQLite主存储TinyDB 迁移源样式Tailwind CSS 4、Swiss International StylePDFHeadless Chromium经 Playwright项目结构Resume-Matcher/ ├─ apps/ │ ├─ backend/ # Python FastAPI 后端 │ │ ├─ app/ │ │ │ ├─ main.py # 应用入口 │ │ │ ├─ config.py # 环境配置 │ │ │ ├─ llm.py # AI 供应商集成LiteLLM │ │ │ ├─ routers/ # API 端点 │ │ │ ├─ services/ # 业务逻辑ats/cover_letter/parser… │ │ │ └─ schemas/ # 数据模型 │ │ ├─ prompts/ # LLM 提示词模板 │ │ ├─ data/ # 数据库存储自动创建 │ │ ├─ .env.example # 环境变量模板 │ │ └─ pyproject.toml # Python 依赖 │ └─ frontend/ # Next.js React 前端 │ ├─ app/ # 页面dashboard、builder、tracker… │ ├─ components/ # 可复用 React 组件 │ ├─ lib/ # 工具与 API 客户端 │ ├─ messages/ # i18n 翻译文案6 种语言 │ └─ package.json # Node.js 依赖 ├─ docs/ # 附加文档架构、特性、设计规范 ├─ docker-compose.yml # Docker 配置 ├─ Dockerfile # 容器构建 └─ README.md # 项目总览十、进一步阅读若需深入架构与二次开发仓库内提供了丰富的配套资料README.md项目英文总览SETUP.md / SETUP.zh-CN.md / SETUP.ja.md多语言部署手册docs/agent/architecture/backend-guide.md后端架构与 API 细节docs/agent/architecture/frontend-workflow.md前端用户流与组件架构docs/portable/swiss-design-system/README.mdSwiss International Style UI 设计系统docs/agent/llm-integration.mdLLM 集成与供应商接入规范。至此你已经掌握 Resume Matcher 从工作原理 → 功能解析 → 安装部署 → 供应商配置 → 故障排查的完整链路。其主简历 岗位定制 多供应商 LLM 本地 PDF 导出的组合使其既可作为求职者的个人工具也可作为学习 FastAPI Next.js LiteLLM 全栈 AI 应用架构的参考实现。【免费下载链接】Resume-MatcherThe #1 AI Harness for Building Resumes, PDFs, Cover Letters more, locally with 100 LLMs support.项目地址: https://gitcode.com/GitHub_Trending/re/Resume-Matcher创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表