简历通 ResumeForge 图标 # 简历通 ResumeForge [![CI](https://github.com/magicapple123/ResumeForge/actions/workflows/ci.yml/badge.svg)](https://github.com/magicapple123/ResumeForge/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/magicapple123/ResumeForge?label=release&color=2f81f7)](https://github.com/magicapple123/ResumeForge/releases) [![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![GitHub stars](https://img.shields.io/github/stars/magicapple123/ResumeForge?style=flat&logo=github)](https://github.com/magicapple123/ResumeForge/stargazers) [![Python](https://img.shields.io/badge/Python-3.11--3.13-3776AB?logo=python&logoColor=white)](docs/user-guide.md) [![Node.js](https://img.shields.io/badge/Node.js-20.19%2B-339933?logo=nodedotjs&logoColor=white)](docs/user-guide.md) [![Tests](https://img.shields.io/badge/tests-4%2C000%2B%20passing-success)](.github/workflows/ci.yml) **本地优先的 AI 简历工作台:不注册、不登录,数据只存在你自己的电脑上。**

▶ 在线体验(免安装)  ·  📖 使用文档  ·  🏠 官网

当前版本:`1.0.2` · [Release 页面](https://github.com/magicapple123/ResumeForge/releases) · [完整使用指南](docs/user-guide.md) · [架构设计](docs/architecture.md)

💬 来群里聊:QQ 922830167
装不上、跑不起来、想让 AI 更懂你的岗位,都可以在群里问;群文件里也备了安装包,GitHub 下载慢时可以直接从群里取。看群二维码 ↓

不会用 GitHub?把链接交给 AI 就行。
打不开 Release 页面、不知道点哪个文件,都可以把仓库地址 https://github.com/magicapple123/ResumeForge 发给任意 AI 助手(ChatGPT / DeepSeek / 豆包…),说一句「我想用这个软件,请一步步教我怎么装」;已经下载好的压缩包也一样——直接把它交给 AI,让它带你解压、找到该双击的那个文件。看快速开始 ↓

> 在线体验是一个**只读演示版**:界面是真的、数据是虚构的、AI 输出是预录回放。想真的生成、真的导出、真的投递,按下面的[快速开始](#-快速开始)在本机跑起来——Windows 第一次双击 `start.cmd`、macOS 第一次双击 `start.command`,都会自动装好环境;也可以到[官网](https://magicapple123.github.io/ResumeForge-official/)直接下载对应平台的安装包或压缩包(Windows 安装版 / macOS dmg 安装版 / 双平台便携包),不用经过 GitHub。 --- ## 简历通能干什么 一条完整的链路,从看岗位到拿到 offer,每一步都有对应功能,每一步的产出都能回头修正上一步:

简历通能干什么:找到并读懂岗位 → 判断匹不匹配 → 写出站得住的简历 → 导出与交付 → 投递与跟进 → 面试与复盘

它解决的是一类很具体的问题:**求职期间的资料是散的**。JD 躺在浏览器收藏夹里,简历文件有七八个版本叫 `简历-最终版2.docx`,投递进度记在备忘录,面试问到的问题面试完就忘了,改了三遍简历也不记得哪一版投给了哪家公司。 更要紧的是另一个问题:**AI 会替你把简历写得很漂亮,也会替你编。** 简历工具最危险的行为不是排版难看,而是把你没做过的事写进去——面试官追问两句就露馅。所以 ResumeForge 把「事实」从「表述」里拆出来单独管:生成结果里的学校 / 公司 / 项目名会与资料库逐条比对,不一致时给**防虚构警告**;正文还留着【待补】标记时导出会被拦下并指出具体位置。 ## 为什么值得用 市面上的简历工具大多要你先交出账号和数据,再决定要不要收你钱。简历通反过来: | | 简历通 ResumeForge | 常见的在线简历工具 | | --- | --- | --- | | **要不要注册登录** | 不要。装完即用,没有账号体系 | 先注册、先登录、先绑定手机 | | **简历和资料存在哪** | 你自己电脑上的本地数据目录(SQLite + 附件),可随时整份拷走 | 对方的服务器,导出要走会员 | | **要不要钱** | 永久开源免费(Apache-2.0),**没有会员、没有付费墙、没有导出次数限制** | 免费版限制模板 / 导出 / AI 次数 | | **AI 怎么用** | 按**每个岗位的 JD** 单独筛选事实、单独生成一版 | 通用模板 + 套话,一份改多处用 | | **会不会替你编** | 有「事实台账」挡着:只有你确认过的事实才参与生成 | 无 | | **投递要不要管** | 内置自动投递台 + 求职进度 + 提醒 + 内推 + 统计 | 基本不管,投完靠自己记 | | **断网能不能用** | 解析、检查、预览、全部导出都离线可用;不配模型也能用大部分功能 | 必须联网 | | **能不能自己改** | 源码开放,可自建、可改、可二次开发 | 闭源 | 还有几件同样重要、但不太好放进表格的事: - **不访问招聘网站,除非你亲手点了那个按钮。** 默认全部在本机完成;「投递台」是唯一会主动访问外部站点的链路,必须由你显式配置 + 显式点击开始,**不做无人值守运行**。 - **不保存招聘网站密码、Cookie、令牌或验证码。** 扫码登录在你自己打开的浏览器窗口里完成,应用不读取也不落盘登录态。 - **匹配度结论不带百分比,投递准入也不看分数。** 结论只有五类:`已匹配 / 表达缺口 / 证据不足 / 真实缺口 / 待确认`,每一类都能直接指导你改简历;结论区之后另有 0–100 的「匹配度参考分」(本地规则估算),仅作展示辅助、**不参与投递准入**,并始终带免责说明。 - **还在维护。** 有 CI、有 4,000+ 个用例、有数据库迁移链与升级方案——见[更新而不丢失数据](#-更新而不丢失数据)。 ## 界面速览 截图全部来自**真实运行的桌面版**应用,数据是内置的**纯虚构演示数据**(求职者「林晚晴」与一批虚构公司,邮箱统一 `example.com`),不含任何真实用户资料。 **两级导航跟着真实使用顺序走**——侧栏保留高频主流程七个入口,其余八个(我的资料、收藏夹、资料箱、知识库、工作台、求职统计、事实台账、回收站)收进页头「我的空间」下拉:

依次切换侧栏主入口(岗位广场、简历中心、投递台、网申填表、求职进度、模拟面试、求职助手)与页头「我的空间」下拉里的求职统计、事实台账、知识库与工作台

**首页**:从零到交付的进度清单、岗位/简历统计、按紧急度分色的近期提醒,一屏知道自己该干什么:

简历通首页:从零到一份可交付简历的进度清单、岗位与简历统计、按紧急度分色的近期提醒列表

**AI 是按岗位生成的,不是套模板**。挑一个岗位,定美化档位、篇幅与模板;生成时会从你的资料与经历总结里按 JD 筛选排序,**原始资料不会被修改**:

为「用户增长运营」生成简历的弹窗:当前模型 qwen-max、岗位适配与内容美化档位(轻度 / 均衡 / 深度)、篇幅与版式、字号与补充要求

生成完它会自动做两件事。一是**版面诊断**:下面这张图里内容超出所选页数(占用 154%),它直接给出按优先级排好的收紧顺序与一键「自动一页」。二是**来源与核对**:每个区块标注「回填原文 / 资料原文」,生成结果可以逐段溯源到你的资料库——模型编出来的东西不会悄悄留在简历里:

AI 生成简历的预览弹窗:版面诊断提示内容超出所选页数(占用 154%)并给出五步收紧顺序与「自动一页」;内容来源说明逐区块标注回填原文与资料原文;底部提供 AI 修改、质量检测、导出选项、一键脱敏等操作

**AI 定制简历的 A4 成品**(服务端用系统中文字体渲染,一页排版,PDF 可直接下载,也可以走浏览器打印):

A4 简历成品:页眉带形象照,单页版式、区块标题带强调色、技能标签带框

**岗位广场**:手动录入、粘贴原文、贴截图、传 pdf/docx 都能识别成可编辑草稿;技能标签保存时自动提取:

岗位广场:16 个在招岗位的列表,收藏星标、技能标签、来源角标、状态与备注,顶部提供搜索、筛选与批量工具

**岗位详情的匹配度分析**:逐条对照 JD 给出五类结论,每条都附 JD 原文与你自己的证据;找不到依据时如实写「资料中未提供」。五类结论本身不带百分比;结论区之后另有 0–100 的「匹配度参考分」(本地规则估算、带免责、不参与投递准入):

岗位详情抽屉:职位描述、任职要求、技能标签,与底部动作条「用 AI 生成简历 / 自行编写简历 / 岗位需求解读 / 匹配度分析 / 投递进度」

岗位匹配度分析结果:准入结论「需确认」、硬性门槛「硬性条件已满足」,硬性条件与核心能力逐条给出已匹配 / 证据不足等结论、招聘原文与依据,顶部提示含待确认条目时加入投递台需逐条确认

简历中心
简历中心:多份简历、来源区分(AI 生成 / 用户编写)、收藏、备注、版式与篇幅控制
自动投递台
自动投递台:采集 → 匹配 → 显式确认 → 自动投递,四步流程写在页面顶部
求职进度
求职进度:一家公司一个岗位一条记录,粘邮件 / 截图识别进展,先预览再写入
求职统计
求职统计:转化与卡点、时间与节奏、渠道与去向、简历与健康度
事实台账
事实台账:18 条主张的核实状态、承担程度与最近核实日期一屏总览
模拟面试
模拟面试:逐轮追问,结束后给维度评分与改进建议
求职助手
求职助手:能查库、能引用资料、只在明确要求时写数据
设置
设置:16 个模型预设、数据集与软件更新
**导出与脱敏**:PDF / Word / Markdown / 纯文本 / JSON / HTML 任选,可加水印;一键脱敏遮住姓名、电话、邮箱、公司与学校后再导出(面板见下方折叠区)。 **投递台操作动图**——勾选岗位 → 点「开始投递」→ 确认本批次范围。**在你点下去之前,它不会打开任何招聘网站**:

在投递台勾选岗位、点开始投递并看到批次确认,再切到自动采集页

**网申填表**:用应用里的**专用浏览器**打开公司官网的网申页,整页读取后智能逐项填表。它**只往文本框写值**——下拉、单选、日期控件不代做,认不出的会如实列出来让你自己点(「只填不交」,提交永远在你手里)。填充完成会显示成功率(成功填写数 / 页面可读框总数),也能导出**不含简历值的脱敏诊断**,方便反馈认不出的字段:

网申填表页:左侧专用浏览器与网址记录管理,中间为批量读取的当前表单字段与智能逐项填充结果,右侧是放宽模式卡片与填充记录

更多界面(点击展开:全局搜索、求职助手、导出面板、简历预览、资料箱、知识库、工作台、回收站、内置指南与更多细节图)
**一个框搜遍全站**:岗位、简历、内推、提醒、面经、事实台账、资料箱与技能一起搜,不用先想「这东西在哪个模块」:

在首页全局搜索框输入「用户增长」,同时列出匹配的岗位、简历、内推、提醒、面经、资料箱与技能

**助手会先查你的库再回答**——台账里的主张、面经、面试深挖记录都查得到,而且**未经你同意不改任何数据**:

在求职助手里问「我这份简历里,哪条说法最容易被面试官追问?」,助手逐字流式回答并引用事实台账、面经与面试深挖记录

**导出选项面板**:

简历预览的导出选项面板:六种格式多选、自定义水印、一键隐私脱敏

**匹配度分析动图**(从打开抽屉到逐条结论与参考分):

打开岗位详情抽屉、滚动查看匹配度结论并打开匹配度分析弹窗

简历预览与导出
简历预览:A4 版式可缩放拖动,版面诊断给单页占用率与建议顺序
资料箱
资料箱:证书、作品、链接与笔记,可带附件,点卡片看详情
知识库
知识库:面经总结、简历技巧与求职策略,正文支持 Markdown 预览
工作台
工作台:技能与版式,版式只填参数就能压进一页(截图为旧版界面,当前工作台只剩「版式」页签)
回收站
回收站:十六类内容删除后先进回收站,可多选批量恢复或彻底删除
内置使用指南
使用指南:首次启动自动弹出,之后随时可查
**细节裁切**:
岗位表格一行
行内操作收进「更多操作」,一屏能多看几行
全局搜索结果
搜索一次命中八个模块
事实台账一条
台账一条:原始事实、简历表述、承担程度与个人边界
从通知导入进展
粘邮件 / 截图识别进展,先预览「会发生什么」再确认写入
## ✨ 功能特性
全部功能一览(75 项,点击展开)
| 模块 | 说明 | | --- | --- | | 📋 岗位管理 | 粘贴招聘信息自动解析成草稿;**一次粘贴多份会拆分并逐条确认**;技能标签与来源自动标注 | | 🗂 备选岗位 | 还没核对的招聘信息先存这里,之后一键导入正式岗位(助手也能代导) | | 📥 拖拽导入 | 岗位识别、附件、照片、模板 HTML、数据集备份等都能从资源管理器直接拖进来 | | 🎤 模拟面试 | 设定岗位、难度与面试官风格后逐轮作答,会点评追问;结束给维度评分与改进建议;**报告下方可继续追问或停止追问**(追问不占正式轮次);材料可从记录选或导入文件(岗位侧吃 PDF / TXT,简历侧吃截图,解析失败给明确原因) | | 🎯 个性化题库 | 按岗位生成**基础 / 项目深挖 / 反问 HR** 三类题,可单题出参考答案;真实面试题可反推改简历 | | 🧰 工作台 | 「技能」与「版式」两页;版式只填参数(行高 / 页边距 / 强调色等)就能压进一页,也可以让助手代劳。自制模板与导入 HTML 入口已下线,旧模板仍按原样渲染 | | 🎨 试用与对比 | 制作台模板图库「试用与对比」:用**我的内容**并排比较两套模板并显示真实页数与溢出;排版覆盖可选「保留当前排版覆盖」或「采用模板默认」(清空字号/行距/颜色/页边距与局部排版,点它先弹二次确认,保存前可撤销一次);退出试用不改原方案,采纳才进历史 | | 👤 个人资料库 | 13 个板块(基本信息 / 教育经历 / 实习工作经历 / 项目经历 / 专业技能 / 校园经历 / 荣誉奖项 / 个人总结 / 学术成果 / 科研项目 / 知识产权 / 证书资质 / 语言能力)统一成资料库:**当前方案参与的分区才出现**,没数据的分区显示空态;基本信息与个人总结只有一条,其余可增删并拖动排序;点标题可单独**收起**(收起字段有值照常进 AI 与纸面),**隐藏**才排除且值保留、可恢复。可自建板块(如开源贡献),也可在任意分区(含 13 个内置分区)新增自定义字段:添加时可选「纸面位置」(标题行 / 元信息 / 正文前灰字 / 正文 / 正文后灰字 / 不上纸面;短字段默认正文后灰字、多行默认正文)与「仅素材」(只进 AI 生成与网申、不上纸面);自建板块上纸面时独立成栏、同样可按位置编排。**每个板块都能在资料页单独显示 / 隐藏**(隐藏 = 从当前方案移出,不参与生成、导出与网申;基本信息不可隐藏),顶部「已隐藏的板块」可逐项恢复;字段改为响应式多列、不再是每字段一行 | | 🗂 资料方案与当前方案 | 方案只记录「名称 + 参与哪些板块」,**不复制资料**——任何方案内编辑立刻对所有方案可见;资料页标题区「当前方案」下拉 + 「管理方案」,切换只影响此后新建 / 生成 / 网申取数,已保存的简历与正在编辑的草稿不变。页头「资料设置」是同一个弹层的总入口,顶部 **方案 / 板块与字段** 两个页签统管方案、板块与字段;单卡齿轮与「管理方案」照常保留。生成 / 新建 / 网申三条链路都按当前方案取数,方案只**减少**、不增加可发送资料;默认方案恒存在且不可删除,删当前方案会自动回落到默认方案并提示。**新建方案默认隐藏全部板块**(基本信息除外),非编辑态创建后自动切到新方案、可逐项显示;自建板块在资料页标题旁带「自建」标记 | | 🧭 旧资料升级说明 | 用含旧版资料的库升级后打开「我的资料」,页面顶部说明新版使用新的资料模型、旧资料不再显示但仍在本地与备份里、可从备份取出内容后手动重填;**不阻断任何操作**,新模型录入第一份有效内容后提示自然消失(旧表与旧数据一律不删、不迁移) | | 🌐 职业场景 | 页头「职业场景」可选职业阶段、目标行业/职能、就业状态、使用目的等组合(内置转行、科研申请、职业回归等快捷场景,也可自定义)。**切换只改本窗口的引导与建议,不改资料、岗位、已有简历、投递设置或后台任务**;生成简历时需显式开启「用于本次生成」(默认关闭,就业状态默认不发送),服务端冻结本次采用的场景快照 | | 📝 网申资料 | 「我的资料」中与简历资料横向切换的**统一网申补充板块**:证件、家庭、学籍、健康与到岗信息等;教育、实习和工作、项目、学术成果、证书、作品和社交账号等可新增多条。**可粘贴文本识别**:把网申页面上一屏栏目整段粘进来(也可给截图或 PDF/Word),能归到已有栏目的直接填好,目录外的新栏目先列成待确认项、逐条勾选才新增,**识别结果先校对再填入、识别中可取消**。网申填表合并读取简历基础信息与网申补充信息;**生成简历不读网申资料**。附件说明只存文字,文件须手动上传 | | 🖼 简历照片 | 最多存 8 张,点缩略图切换用哪张;**留在本机,不发送给模型** | | 🧾 事实台账 | 每条说法记下事实、表述、承担程度与边界;**只有「已确认」的参与生成**,未确认的显式避开 | | 🔎 面试深挖 | 按台账逐条压力测试,**标准在你看到问题之前就定下**;用「已验证 / 部分验证 / 未验证 / 存在矛盾」代替分数 | | 📦 资料箱 | 证书、作品、链接与笔记集中管理,可带附件,点卡片看详情;助手可读取引用 | | 📁 文件副本库 | 资料箱「文件副本」页签集中查看所有存入文件的副本(图片 / PDF 可直接预览,其它类型可一键调用系统程序打开);副本统一存本机应用数据目录并随数据集切换 / 迁移自动重建;助手可查询副本清单 | | 🖱 批量设置状态 | 岗位广场条目上右键「批量选择」进入多选后,可用批量工具栏对勾选岗位**批量设置状态**或批量删除 | | 🤖 AI 定制简历 | 按 JD 筛选事实流式生成;可选美化强度、篇幅(1–3 页 A4)、字号与模板(内置 5 种);**字体可选已下载 / 已导入的字体,仅影响预览 / HTML / PDF**(Word、Markdown 不跟着变;内置思源黑体约 32MB,在设置里按需下载);**板块顺序可调**(预览里调,PDF / Word / Markdown 导出同步生效);**联系方式可指定字段前强制换行**(每个字段整体不拆行,长网址不会被截断) | | ✍️ 自行编写简历 | 从个人资料预填后自由修改,编辑时旁边保留岗位职责与要求供对照;**页签与可见字段跟随「我的资料」当前方案**(创建时冻结),自建板块与系统板块同一套三区卡编辑(标题与元信息 / 正文前后灰字 / 正文);每个字段都是一个可拖动的独立内容,位置可选标题行 / 元信息 / 正文前灰字 / 正文 / 正文后灰字 / 隐藏;自定义字段与默认字段一样按纸面位置落位,不再以「标签:值」写进承载区;**「新建简历」弹窗已与制作台共用新编辑器**(三区卡 + 字段位置,初始内容整份来自当前方案投影);语言能力是独立页签;**中栏顶部「从资料填入」菜单按来源去重、只补空字段**,不覆盖手写内容;字段点开后再点收起,字段 / 条目的隐藏与删除在右键菜单,字段显示后回到隐藏前的位置;「本份简历结构」只有一个折叠开关(全展开时是「收起全部」,收起后变「展开全部」),并用「顺序」面板逐项上移 / 下移板块;新建简历与 AI 生成默认按「我的资料」顺序,可手动调或一键同步,通用新建支持清空所有内容 | | ✍️ 简历写作增强 | **STAR 量化改写**、**话术生成器**、**多风格润色**、**中英互译**、**版本差异对比**(本地计算);在「手动调整」里选中一段文字右键「AI 润色」即可**只改那一段**(结果先给你看,确认才写入) | | 🎓 科研简历 | 制作台中栏「学术成果 / 科研项目 / 知识产权 / 证书资质」四栏:题目、作者顺序与本人标记、发表状态(**在投 ≠ 已发表**,含在投 / 预印本等六值)、DOI / 链接、证照颁发机构/日期/状态;空栏位不写入内容。「版面」组的「文档模式」可切**普通简历 / 长 CV**(普通 1–3 页、长 CV 上限 10 页,切回普通时超页自动夹紧并提示);生成弹窗里也能显式选(不自动切换);分页可按分区或条目设置(见「分页控制」行) | | 🔗 来源核对与事实锁 | 制作台左栏「来源核对」:选中一条内容,看它来自哪条资料、关联时是哪一版、来源是否已更新;**未关联就明说未关联(不按文字相似度猜)**。可按选中内容建立 / 解除来源关联、新建手工来源、查看影响面与修订,并在来源更新后**采纳最新来源写回正文**(带 revision 条件写与冲突提示);事实锁锁定姓名 / 机构 / 时间 / 数字 / 职责边界,AI 改写想动它们会被拒并**逐条列出会改哪个值**——锁只约束 AI,你手动编辑不受限 | | 📤 外发预览与用量 | 设置页:把资料发给模型或其它服务前,先看「这次要发什么」(目标服务、资料类别、附件、已排除字段、是否抓取正文以及正文本身);「模型用量」按任务 / 模型列调用数与 token——**未知 token 不显示成 0**、未配置单价不估算费用。预览正文只存在内存、不落盘;用量可按任务 / 模型 / 数据集看**结束原因与重试**,费用只在配置单价时估算 | | 🎛 版面优化 | 预览「版面诊断」卡下方「按条件优化版面」:先设约束(不动字号 / 最小页边距 / 目标 1–2 页),再给最多 3 个**有差异**候选(改了哪些参数 / 减少多少溢出 / 可读性影响),应用后数值写回滑杆;无可行方案时明确说原因,**不偷偷缩字号**;另有**内容精简差异候选**(合并重复条目 / 去重要点 / 精简低相关),逐项确认后应用 | | ⚡ AI 修改简历 | 简历预览底部「AI 修改 / 重新生成」:填修改要求则**只改提出的部分**(其余逐字保留),留空则整体重新生成(事实不变、表达重写);岗位优化建议可**逐条采纳**并直接更新当前简历 | | 🏷 保存冲突三选一 | 在「简历制作台」保存时,如果同一份简历已在别的窗口改过,会先让你选「用最新的」「比较差异」「另存副本」;**不会默默覆盖**别人的改动 | | 🧭 文档大纲 | 制作台左栏「本份简历结构」(原「文档大纲」)按 页 / 栏 → 板块 → 条目 → 位置分组(标题行 / 元信息 / 正文前灰字 / 正文 / 正文后灰字 / 隐藏)列内容:可拖动排序、把字段拖到别的位置分组即改变纸面去向,可复制、**隐藏**(正式导出不含)、锁内容或锁排版;支持**结构搜索**(过滤高亮、键盘定位),点「在纸面定位」可直接滚到那一处,字段与要点可单独隐藏或复制。拖动时结构树与右侧预览**实时跟随**(窄屏把编辑内容收进抽屉时同样生效,并计入保存修改),松手才记一步历史 | | ✅ 制作台检查 | 制作台动作条「检查简历」:内容 / 排版 / 导出产物三层一起查,问题分「必须解决 / 需核对 / 排版建议」,给位置与修复入口,修完可复检 | | 🖥 专业视图 | 预览工具条:整页 / 适宽 / 100% 缩放、页导航、辅助线、灰度校样;动作条「命令」或 Cmd/Ctrl+Shift+P 打开命令面板,工作区预设只切面板可见性;「照片裁剪」只改取景(**原图不动**,可恢复原图),三种导出按同一份派生裁剪;**没裁剪时按原图比例展示**,不会被强制裁成方框或拉伸变形 | | 🔠 局部排版 | 制作台左栏「样式」组调**全局字体字号、字距行距、页边距与外观颜色**;没单独设过的属性跟随模板并标出来源,可逐项恢复继承(数值可直接输入或步进,Shift 单击五倍);按字段 / 角色的局部排版在中栏字段上**右键 →「调整排版」**:作用范围按所选字段自动推断,可就地改颜色、行距、缩进、项目符号、对齐、字距,日期与元信息字段另有「日期位置」(日期靠右 / 日期紧随标题,草稿与精确 PDF 同口径);正文输入框的文本工具区提供**加粗**与**链接**(HTML 可点击,PDF / Word 以「文字 (URL)」可见文本呈现),斜体入口已移除;项目符号三出口统一为「· / – / 不显示」;「条目字段排版」面板按板块或单条条目调整正文前后灰字段的 1–3 列、对齐方式、列间距、顺序与独占整行,多列默认等宽对齐,HTML / PDF / Word / Markdown 共用同一份装箱结果 | | 📄 分页控制 | 制作台左栏「排版参数 → 分页」:**分区**可设「从新页开始 / 整块不跨页」,**条目**也能在「本份简历结构」选中后单独设「从新页开始 / 整块不跨页」,随简历保存,HTML / PDF / Word 同口径。**页面概览与「获取分页报告」**:按真实 PDF 同一条管线测量页数/末页占用/溢出与手动分页标记,两页格子等宽排布、页数用满时显示「已达页数上限」;草稿预览不显示真实分页、不画假分页线 | | 🗂 表达资产库 | 收藏好用的表达(成果 / 方法 / 结果 / 总结),按关键词、类型、语言与岗位标签检索;换简历时一键插入(生成新对象身份),插入后仍可继续改 | | ↪ 撤销与恢复 | 制作台左栏「历史」:内容、排版、结构操作每一步都能撤销或恢复(连续输入合并成一步);**每一步直接写清「改了什么」**(板块增删排序 / 条目增删隐藏 / 字段增删移动 / 段落文字改了几处 / 版式参数),姓名·条目数·页数挂在悬停提示上,点一步可回到那一步;改坏一处能直接退回去,**⌘/Ctrl+Z 与 ⇧⌘/Ctrl+Z 同样可用** | | 🗃 命名版本与岗位变体 | 制作台顶部「版本」:把当前内容与排版存成**不可变快照**(创建(名称可留空自动命名)/ 冻结标记 / 默认与上一版逐字段比较「旧值 → 新值」/ 恢复);恢复会生成**新的当前版本**,历史版本与已投递记录不变。岗位变体独立编辑(创建入口二选一:从当前简历派生 / 从职业场景派生,点「创建变体」),可按勾选的内容路径**选择性同步**,不覆盖其它岗位定制;变体可保存**独立排版**并按变体直接导出 | | 🌐 双语版本与术语表 | 制作台「双语版本」:中英字段对照、逐字段生成翻译候选并**逐项采纳**(只写入选中的语言变体,不覆盖当前简历);数据集级术语表可锁定固定译法(人名、公司名、技能等),删除进回收站可恢复。翻译候选按批生成,**不会在大简历上 15 秒误报超时**;「在工作台查看这份译文」打开只读预览(不改主稿、不产生脏值) | | 📦 导出形式 | 制作台导出弹窗顶部先选**交付包**或**单独文件**:交付包把所选格式打成一个 zip(可另存归档原件与哈希清单);单独文件可多选格式**逐个导出**,进度显示「正在导出 2/3」,某一项失败会说明已完成几个。两者共用同一份排版结果与导出配置 | | 🧭 生成说明 | 预览里折叠展示「为什么是这样一份简历」:岗位信号、候选组成与省略原因;「没写进这份简历」的资料内容以**中性清单**分组列出(与"疑似虚构"警告分开),每组可一键 **AI 补上这段**;生成会读取资料里的 GitHub 主页与个人主页写入简历 | | 🛡 质量与合规检查 | 查重 / 敏感词 / 夸大风险 / 深挖风险 / 合规 / ATS 本地检测,与事实台账联动 | | 📚 简历历史 | 生成与手写的简历都自动留存,可收藏、按来源筛选、加备注、重新导出 | | 🔗 岗位关联 | 一个岗位可关联多份简历,岗位与简历之间双向可跳转 | | ⭐ 收藏夹 | 分页集中查看收藏的岗位与简历,可跳详情或取消收藏 | | 💡 岗位需求解读 | 依据招聘原文生成结构化需求总结、原文证据与通用准备建议 | | 🎯 岗位匹配度分析 | 逐条对照 JD 给五类结论与投递建议,附原文与证据;五类结论**不带百分比**,投递准入只看结论 | | 📈 批量岗位适配度分析 | 岗位广场进入「选择」模式勾选多个岗位后「AI 分析适配度」:结合个人资料**逐一分析**,按匹配度参考分从高到低展示;可选立即运行或后台运行,结果保存到「分析记录」供回看 | | 🤖 AI 对比选岗 | 在岗位广场勾选 2–12 个岗位,AI 先逐个核对匹配情况,再横向排出适合程度并解释原因;后台运行,结果保存到「分析记录」 | | 📊 匹配度参考分 | 0–100 参考分与 5 个分项,**仅作展示辅助、不参与投递准入**,带免责说明 | | 🎯 求职进度 | 一家公司一条记录走完「已投递 → 筛选中 → 测评 → 面试 → Offer」;粘邮件 / 截图识别进展,先预览再写入 | | 🗓 日历提醒 | 投递、面试、内推等日程可设提醒,按**紧急度分色**(逾期 / 24 小时 / 3 天),支持列表与月历 | | 🤝 内推管理 | 记录内推人、内推码与备注图片,按状态跟进并统计**内推转化率** | | 📈 求职数据看板 | 四个主题:转化与卡点、时间与节奏、渠道与去向、简历与健康度;**每张图各自成块、各有标题与口径**;趋势可选近 1 / 3 / 6 月 | | 🧠 面经知识库 | 沉淀真实面试经验(公司 / 岗位 / 题目 / 复盘),可检索、点卡片看全文 | | 📖 知识库 | 面经总结、简历技巧、求职策略等成文内容,带分类标签与 Markdown 预览;助手可检索增改 | | 🚀 自动投递台 | 按关键词 / 城市自动采集(站点筛选条件整条搬进来,后台跑);确认过的岗位排队后驱动本机浏览器投递,**只接纳来源在招聘网站内的岗位** | | 🧠 填表时学到的 | 填表时碰到**简历通里没有**的字段,**两个入口**都能记:批量模式填完弹一条汇总提示(**默认全勾、默认「通用」**,可取消其中几条);「点哪个填哪个」模式里**每个框旁边**都有「记住这条」,**当场就能记**——**认得出但资料里没值的框也能记**(就地补上,不用跳去别的页面)。记住后下次遇到同一字段**自动预填**。每条可选档位:**通用**(换哪家公司都成立)/ **场景**(与投递渠道有关)/ **本次**(只记下来、下次不自动填,内推码这类一次性的值用它)。来源和档位在「网申资料」里随时可改可删——**AI 认出来的值单独标「AI 认的」**,因为它比规则更可能认错字段。**清单外的自定义字段**(如「导师姓名」「实验室」)也可参与网申填表:普通模式只接受唯一精确对应,开启放宽模式后可按标签/上下文匹配并标记低置信度;有歧义或安全否决时不猜,填后请核对。**落点只有「网申资料」**:简历资料字段永不会被学走(程序里没有能改简历资料的那段代码);密码、验证码、他人信息走拦截,学不到。只存本机,**生成简历时不读** | | 📝 网申填表 | 用**独立专用浏览器**填写官网网申表单,输入网址可直接打开新标签页并管理网址记录,不覆盖已有网页;各页面可单独开关「点哪个填哪个」。整页读取后逐条核对再填充,或点输入框时在框旁确认建议;规则认不出的框可交给 AI 识别,**只发页面文字与字段名,不发资料值**。浏览器型号与投递台共用配置,但使用独立窗口;填充记录含真实值、只存本机。**只填不交**,密码与验证码永不自动填;**只往文本类控件里写值**——下拉、单选、复选、日期控件不代选,如实列成「需要你自己点选」;可另开**放宽模式**尝试文本标签/上下文匹配并代点下拉与弹层选项(见下一行)。填充完成展示**成功率**(成功填写数 / 页面可读框总数),可导出**不含简历值的脱敏诊断信息**,方便反馈认不出的字段 | | 🟢 放宽模式 | 「网申填表」的**可选例外,默认关闭**:显式开启后,会尝试用字段标签/上下文匹配未识别的文本框(含自定义字段),并代点下拉与弹层选项(**严格选项匹配 + 回读验证**);放宽文本匹配中只靠弱上下文的低置信度候选默认不勾、需要你确认,重复经历仅在记录数与页面顺序可配对时补齐。同意 / 声明类勾选仍需逐条确认;日期选择器与文件上传不代做。求职助手没有开关它的工具,要开请到页面或设置里开。放宽匹配可能选错,填完请核对;弹层多值须全部命中才动手 | | 🪪 网申专用资料 | 原「网申专用资料」中的国家和地区、证件、出生日期、政治面貌、籍贯、家庭信息等已并入统一「网申资料」;旧值仍可读取,**只用于填表,不进简历导出** | | 💬 AI 求职助手 | 流式问答,可关联岗位 / 简历 / 资料与联网搜索;能查提醒、内推、面经、统计等,**只在明确要求时写数据**;回答前会拿到本地时间与星期(深夜提醒早点休息);工具集覆盖投递失败诊断、查询版式、面经与内推录入;任意页面都可从「投投」悬浮球打开;侧栏与浮窗聊天记录分开保存,浮窗只展示联网和思考强度控制 | | 🧩 技能 | 新建、导入、编辑技能(提示词 + 知识文件),启用后约束助手作答风格 | | 🗒 会话管理 | 会话可重命名 / 置顶 / 收藏 / 分组 / 归档,可导出 Markdown 或存进资料箱 | | 📌 投投剪贴板 | **双击投投悬浮球**打开:把要反复粘贴的资料存成片段,一键复制;只存本机浏览器,不上传(单击悬浮球仍是打开助手) | | ✅ 批量选择与批量删除 | 简历中心、助手历史对话、历史面试、深挖历史、日历提醒、历史题库、网申填充记录等列表支持**批量选择**:「批量选择」→ 勾选 → 「删除所选」统一确认后删除(均进回收站可恢复) | | 🌐 通用简历 | 简历中心页头「AI 生成」生成或「新建简历」手写**不针对任何岗位**的跨行业简历:完整使用资料、不按方向筛选,各方向经历都保留,可多份;生成时可选普通简历或长 CV。新建简历的页签、页签名与每个板块的**可见字段**跟随**当前方案**(自建板块显示你起的名字,资料里隐藏的字段不出现;当前方案没有的分区不显示输入框,已有正文分区始终保留),并在创建时冻结进这份简历——之后改方案只影响新建的简历;资料改动 / 切换方案后自动刷新 | | 🖼 截图与文档识别 | 岗位与资料识别支持截图与 pdf / docx(Ctrl+V 贴图,最多 4 个、合计 ≤ 5 MB),文字在本机提取;**识别结果先列成清单供校对,确认后才填入,识别中可随时取消** | | 📄 多格式导出 | PDF **可直接下载**(服务端渲染);Word / HTML / Markdown / txt / JSON 均可导出;带版面的 HTML / PDF / Word / Markdown **由服务端同一份排版结果渲染**——同字段、同顺序,JSON 输出新版文档结构(含每条内容的纸面位置与版式);支持水印与**一键脱敏**。预览工具栏可切**「精确」**——那显示的就是导出引擎排出的同一份 PDF,与下载到的文件逐点相同;配置水印 / 脱敏后可先**预览真实产物**再导出。超出页数上限时**不自动缩字号**,按上限截断并如实提示 | | 📦 导出交付包 | 简历详情「导出交付包」:格式与命名规则、水印 / 脱敏、**真实产物配置预览**,可保存为导出配置;成套导出 zip + manifest(逐项哈希),可选归档**交付原件**(哈希与字体 / 渲染版本清单,可查看与删除) | | 💾 保存位置 | 设置 → 「数据」页签「保存位置」卡片:默认只存到浏览器默认下载目录,通过本机原生选择器选定文件夹后,本机前端导出简历会**同时落盘一份**到那里;远程/跨站导出会被拒绝 | | 🔓 助手放宽模式 | 设置 → 「AI 模型」页签「助手放宽模式」卡片:默认关;开启并**提前告知**后求职助手可读取完整资料(含姓名电话等敏感字段、网申填写值、历史对话),API 密钥等凭据任何模式下都不发送 | | 📦 离线分享包 | 打包成脱敏 HTML / PDF + 只读快照 + 评论回传文件,可选「只读 / 可评论」;可评论的包支持**对象批注**:导入回传的 `annotations.json` 后逐条标记已解决 / 忽略,对象变了的批注需重新关联(批注不进任何投递产物) | | 🏠 首页 | 快捷入口按使用顺序组织成 7 个去处;近期提醒卡片内嵌紧凑月历 | | 🖱 界面细节 | 行操作收进「更多操作」;列表与卡片**点一下就看详情**(Enter 同样可开);日期改为日历点选;**侧栏里用不到的模块可在 设置 → 应用 → 「界面与导航」里关掉**(只收入口,不删数据;首页、设置等始终保留) | | 🔍 全局搜索 | 一个框同时搜岗位、简历、内推、提醒、面经、台账、资料箱与技能 | | 🛡 防虚构校验 | 生成结果里的学校 / 公司 / 项目名自动与资料库比对,不一致时给出警告 | | 🔄 检查与更新 | 设置页可检查新版本、新建 / 导出 / 导入数据集;数据集备份**默认包含大模型 API Key**(可取消勾选;Windows 上以 DPAPI 加密形态随包);**Windows 双击 `start.cmd` / `stop.cmd` / `update.cmd`,macOS 双击 `start.command` / `stop.command` / `update.command`**,都是零依赖一键启动,`uninstall.cmd` 可清理本机环境 | | ♻️ 回收站 | 23 类内容删除后先进回收站,可批量恢复或彻底删除;只有二次确认才真正销毁。2026-10 起新增「方案 / 自建板块 / 自建字段 / 资料条目」四类;历史遗留的补充事实仍可在这里看到与恢复 | | 🔑 你的 Key 你做主 | 内置 16 个服务预设(DeepSeek / Claude / 豆包 / OpenAI / Ollama …),可取可用模型、调高级参数,并可切换接口协议 |
## 🛡 下载后被杀软或系统提示「有风险」怎么办 先说结论:**这个包里没有任何可执行文件**。解压后是源码、启动脚本(`.cmd` / `.command` / `.ps1`)和文档——没有 `.exe`、`.msi`、`.dll`,所以静态查杀命中的可能性很低,Windows 的「未知发布者 / SmartScreen」提示也**只针对 .exe / .msi,zip 本身不弹**。 真正可能触发提示的是**首次启动时的行为**:它会联网下载 Python 与 Node.js 的便携版(放在项目自己的 `runtime/` 里,不装进系统)。"下载并执行运行时"是所有杀毒软件的启发式引擎都会多看一眼的模式。它之所以这么做,是为了让你**不需要预装任何环境**:不装 Python、不装 Node、macOS 上也不用 Homebrew。 - 下载来源都是官方地址(python.org / nodejs.org),走 HTTPS,并且**校验官方提供的 SHA256 摘要**后才解压使用。整个过程在终端里可见,不做隐藏执行。 - 已经装好 Python 与 Node 的话,启动器会直接用现成的,不会重复下载。 - **想核对文件是否被动过**:每次发布都随包提供一个 `.sha256` 校验文件(与压缩包同名,例如 `ResumeForge-1.0.1-windows.zip.sha256`)。Windows 上 `Get-FileHash .\ResumeForge-1.0.1-windows.zip -Algorithm SHA256`,macOS / Linux 上 `shasum -a 256 ResumeForge-1.0.1-windows.zip`,与文件里的值对一下即可。 - **不建议**为了装它而关闭杀毒软件或加白名单。先核对上面的摘要;若校验一致却仍被拦截,把拦截的具体文件名与日志发到 [Issues](https://github.com/magicapple123/ResumeForge/issues) 或群里,那是需要修的问题,不是让你去关防护的理由。 ## 🚀 快速开始 ```powershell git clone https://github.com/magicapple123/ResumeForge.git cd ResumeForge ``` **环境要求**:Windows 10/11 或 macOS 13+;Python 3.11 – 3.13、Node.js ≥ 20.19.0。后两项**没装也行**——一键启动器会自动准备(Windows 用 `winget` 或经过校验的便携包,macOS 下载便携版解压进 `runtime/tools/`,**不需要 Homebrew,也不会要管理员密码**)。 > Python 3.14 暂不支持:锁定的后端依赖还没有对应的 cp314 轮子,装的时候会退化成源码编译并失败。 ### 一键启动(推荐) | 你的系统 | 双击这个文件启动 | 双击这个文件关闭 | | --- | --- | --- | | Windows 10 / 11 | `start.cmd` | `stop.cmd` | | macOS | `start.command` | `stop.command` | 首次运行会自动创建虚拟环境、装齐依赖并打开浏览器。发布包自带构建好的前端页面(`frontend/dist`),由后端同源提供,因此**打开的是后端地址**,运行期不再需要 Node: ```text http://127.0.0.1:8005 ``` 之后每次双击开始/停止即可,不需要分别启动前后端;也可以点页头的**退出**,把前后端进程一起停掉。
macOS 安装版(.dmg,v1.0.1 起提供)
不想用源码包?macOS 现在也有与 Windows 安装版同形态的桌面安装包:到 [Release 页面](https://github.com/magicapple123/ResumeForge/releases) 下载 `ResumeForge-<版本>-x64.dmg`(Apple Silicon 机型经 Rosetta 2 运行),双击安装后从「应用程序」打开「简历通」。 - **安装包未签名/未公证**:首次打开若提示「无法验证开发者」,右键 →「打开」即可;或在终端执行一次 `xattr -dr com.apple.quarantine /Applications/ResumeForge.app`。 - **首次启动需要联网**:应用会在首次启动时在线装配 Python 运行时(下载依赖,数分钟),之后启动即快。 - **数据位置**:用户数据放在 `~/Library/Application Support/ResumeForge/`,覆盖安装新版本不会丢数据。
macOS 用源码包看这里:第一次打开需要多一步
macOS 会拦下所有"从网上下载、又没有经过 Apple 签名"的程序,这个项目也在其中。所以第一次双击 `start.command` 时,可能提示 **「无法打开,因为 Apple 无法检查它是否包含恶意软件」**——这不是代码有问题,是系统的下载隔离机制。 处置办法(任选一种,**只需做一次**): 1. 在 Finder 里**右键点 `start.command` → 选「打开」**,再在弹窗里点一次「打开」; 2. 或者在「终端」里进入项目目录,执行一次: ```bash xattr -dr com.apple.quarantine . ``` 如果双击**完全没反应**(某些解压工具会丢掉可执行位),在「终端」里进入项目目录后执行下面这行,效果与双击完全相同: ```bash bash start.command ``` 首次运行会自动下载便携版 Python 3.12 与 Node.js 24 到 `runtime/tools/`(合计约 70 MB),所以第一次启动比之后慢。它们都放在项目目录里:**不写 `/usr/local`、不动你已有的 Homebrew / nvm**,删掉项目目录就等于卸载干净。 想换端口或不开浏览器:`bash scripts/macos/start.sh --backend-port 8010 --frontend-port 5180 --no-browser`,`--help` 有全部选项。更新用 `update.command`(只替换程序文件,`data/` 与 `.env` 不动)。
> 首次启动最常见的问题是依赖装不上,**基本都是网络原因**(默认走官方 PyPI / npm,国内经常超时)。启动器会在失败时用中文写明原因和下一步,照它说的做即可;最快的一条是换国内镜像重装后端依赖: > > ```powershell > backend\.venv\Scripts\python.exe -m pip install -i https://mirrors.aliyun.com/pypi/simple -r backend\requirements.txt > ``` > > 前端同理,在 `frontend` 目录执行 `npm install --registry=https://registry.npmmirror.com`。启动失败时窗口**不会**自动关,可以从容读完提示再截图反馈。 想把应用从这台电脑上清掉,双击 `uninstall.cmd`:它删除启动器生成的东西(`.venv`、`node_modules`、`dist`、`runtime/` 与各类缓存),**保留** `backend\data` 与 `backend\.env`,并且**不会删源码和文档**。macOS 上不需要卸载脚本:这个项目从不往项目目录之外写任何东西,**直接删掉整个文件夹就是干净卸载**(想保留数据就先导出数据集)。 ### 配置大模型(可选) 打开左侧 **设置 → 编辑设置**,选一个内置预设(自动填好接口地址与模型名)或「自定义模型(OpenAI 兼容)」,填 API Key 后点「测试连接」即可。内置 16 个预设,覆盖 DeepSeek、Claude(Anthropic 原生协议)、豆包、Kimi、通义、智谱、MiniMax、硅基流动、OpenRouter、OpenAI、Gemini、Grok、Groq、Mistral、Ollama、LM Studio。 > **不配模型也能用**:岗位解析、资料解析、匹配度五类结论、写作增强里的版本对比、质量与合规检查、全部导出格式都是**本地规则**,离线可用。只有需要「生成」的动作(AI 定制简历、岗位解读、模拟面试、求职助手、面试深挖)才需要模型;用 Ollama / LM Studio 这类本地模型时,连生成也不出本机。 ### 手动启动(开发与排错)
展开:后端 / 前端的分步命令与测试命令
```powershell cd backend # 创建虚拟环境并安装运行依赖 py -3 -m venv .venv $env:PYTHONUTF8 = "1" .venv\Scripts\python.exe -m pip install -r requirements.txt # 启动服务(默认 http://127.0.0.1:8000,接口文档见 /docs) .venv\Scripts\python.exe -m uvicorn app.main:app --reload --port 8000 ``` macOS / Linux 用 `.venv/bin/python` 替换上面的 Windows 路径;Git Bash 用 `export PYTHONUTF8=1`。 ```powershell cd frontend npm ci npm run dev # http://localhost:5173,已配置 /api 代理到 8000 端口 ``` 运行测试: ```powershell cd backend .venv\Scripts\python.exe -m ruff check . .venv\Scripts\python.exe -m pytest --cov=app --cov-config=../pyproject.toml cd ../frontend npm test && npm run lint && npm run typecheck && npm run build ``` 浏览器冒烟(Playwright,`frontend/tests/smoke/`)需要应用先跑起来,用例不对抗启动链——两种形态任选其一: ```powershell # 形态一:发布形态(后端同源,默认 smoke 口 8123) npm run build cd .. powershell -File scripts\Start-ResumeForge.ps1 -NoBrowser -BackendPort 8123 cd frontend # 形态二:开发形态(Vite 5173 + 后端 8000) cd backend .venv\Scripts\python.exe -m uvicorn app.main:app --port 8000 cd ../frontend npm run dev ``` 然后跑冒烟(发布形态零配置;开发形态把两个地址分别指给前端页面与 API): ```powershell cd frontend npm run smoke # 发布形态(默认 http://127.0.0.1:8123) $env:SMOKE_FRONTEND_URL = "http://127.0.0.1:5173"; $env:SMOKE_BACKEND_URL = "http://127.0.0.1:8000" npm run smoke # 开发形态 ``` 当前规模:后端与前端合计 **5,000+ 个测试用例**(后端覆盖率门槛 80%,后端单次全量约 4,200 个用例;确切数字以每次 CI 的汇总行为准)。GitHub Actions 在 Linux、Windows 与 macOS 上重复执行关键检查——macOS 那几个作业是刻意加的:它们会真下载便携运行时、从干净检出走完整启动链,并做浏览器冒烟,是 macOS 链路的持续把关;macOS 桌面安装包(dmg)自 v1.0.1 起同样由 CI 构建产出。
更完整的字段说明、隐私边界、升级与回滚、AI 故障排查,见[官网使用文档](https://magicapple123.github.io/ResumeForge-official/docs.html)。 ## 🏗 架构与数据边界 前后端分离,前端统一通过同源 `/api` 访问后端(开发由 Vite 代理,生产需要由 Web 服务器托管 `frontend/dist`,把 `/api` 反向代理到 FastAPI,并把非静态文件的前端路由回退到 `index.html`):

简历通架构图:React 前端 → 同源 /api → FastAPI 后端 → 本地 SQLite / 你配置的模型服务商 / 本机浏览器

几条贯穿全项目的设计取舍,读代码前先知道可以少走弯路: - **一个逻辑只有一份实现**:投递准入只有 `models/apply.py::admission_of`,行操作菜单只有 `components/common/RowActions`,卡片详情只有 `RecordDetail`,助手的能力地图由 `services/feature_catalog.py` 门面在运行时渲染(功能数据按原始顺序拆在 `feature_catalog_{profile,resume,workflow}.py`,守卫测试保证与 README 功能表、菜单和指南双向对齐)。 - **并发守卫下沉到 SQL**:批次状态用条件 `UPDATE ... WHERE status = ?` 原子推进,不用「先读后判再写」。 - **外部输入一律不可信**:岗位描述、粘贴文本与上传文件都按不可信输入处理,不做系统指令执行。 - **不用 `create_all` 掩盖迁移问题**:数据库由 Alembic revision 管理,新增表 / 列必须写迁移与降级脚本。 完整设计(含决策记录、扩展点与数据模型)见 [docs/architecture.md](docs/architecture.md),另有[项目导航图](docs/PROJECT_MAP.md)用于从功能倒查代码位置。 ## 🔐 数据、隐私与边界 这个工具会碰到你的身份证号、手机号、公司名和简历原文,所以边界写在最前面: - **默认全部留在本机。** 业务数据存在本机数据目录里:主库 `backend/data/resume_forge.db`(简历、岗位、台账、设置等;照片与部分历史字段以 base64 存库内),外加同目录的**副本目录**(`user_files/` 按内容寻址保存"我的文件",`referral_images/` 保存内推备注图)、`datasets/` 下的其余数据集、自动备份与导出产物。不经过任何第三方服务;导出、渲染、PDF 生成都在本机完成。桌面版这些文件位于 `%APPDATA%\ResumeForge\data`。 - **只有你主动配置并触发的动作才会发出请求。** 发送对象是「你自己填地址和密钥」的模型服务商,内容仅限完成该次生成所需的最小资料;**照片不会发送给模型**。 - **不保存招聘网站密码、Cookie、令牌或验证码。** 自动投递走 CDP 连接你自己登录的浏览器(独立用户目录),扫码登录由你在浏览器窗口里完成。 - **不硬编码密钥。** 仓库、`.env.example` 与代码里没有任何真实密钥;`.env`、数据库、照片、简历与导出文件都被 `.gitignore` 忽略。Windows 上 API Key 用系统 DPAPI 加密后落库(密文绑定当前用户与机器)。 - **分享给别人时可一键脱敏。** 离线分享包只包含脱敏 HTML/PDF + 只读快照,不含真实敏感信息。 - **默认只监听回环地址。** 这是一个**单用户**本地工具,不要把它暴露到局域网或公网——它没有账号体系,暴露即等于把数据库交给别人。 发现疑似安全问题时请遵循 [SECURITY.md](SECURITY.md),不要在公开 Issue 中披露可利用细节。 ## 🔄 更新而不丢失数据 岗位、资料、简历、助手历史与模型配置默认保存在 `backend/data/resume_forge.db`,可选的服务端环境变量在 `backend/.env`,两者都被 Git 忽略,`git pull` 不会覆盖。 - **最省事的备份**:**设置 → 数据集 → 导出当前数据集**(要连其余几份数据集一起带走就选「导出全部数据集」)。一份备份包**包含**:该数据集的整库快照(简历、岗位、资料、助手会话、台账与设置)、它引用到的磁盘附件(`user_files/`、`referral_images/`)、全部自定义字体(`data/fonts/`),以及全局模型配置(可取消勾选)。包内逐文件记 size 与 SHA-256,并写明各表行数;源库已缺附件或磁盘字节与登记哈希不一致时,界面会明确标为“不完整”。**不包含**:登录态(`browser-profile/`、`webform-browser-profile/`)、可重建的缓存与运行产物(`captures/`、`share_packages/`、`logs/`、`exports/`、`restore/`、`backups/`、`auto-backups/`),以及没选「导出全部」时其余数据集的库。数据目录里出现不属于以上任何一类的顶层项时,导出会提示“另有 N 项未纳入备份”——这条提示是**故意可见**的,避免新功能写到新目录的文件被静默漏掉。**资料板块 / 自定义字段 / 条目 / 方案 / 当前方案 / 字段偏好**等新表都在这份整库快照里;升级后不再从新界面读取的旧资料表**一张不删**、数据也完整保留在包内,所以“先从备份里取出旧内容、再手动重填”这条路始终走得通。换电脑时在新装的应用里「导入备份为新数据集」还原即可(备份默认包含 API Key,可取消勾选;Windows 上密文绑定本机,换机恢复可能仍需重填;本机已有同名字体时保留本机版本)。 - **跨版本迁移请在同版本之间导**:格式 5 起包内带全局模型配置、格式 6 起再带上字体。更早的版本(≤1.0.2)遇到这两种包会明确拒收并提示升级,而不是安静地只恢复数据库。 - **交付存档**:简历中心的「交付存档」可以在原简历删除后按标题、公司、岗位和来源查找历史交付。下载的是按快照重放的文件或冻结内容 JSON,不能承诺与原始下载文件字节一致;源记录 purge 不会自动清掉快照、附件和备份副本。 - **一键更新**:Windows 双击 `update.cmd`,macOS 双击 `update.command`(或 `bash scripts/macos/update.sh`)。两者都只替换程序文件,`data/`、`.env`、`runtime/` 一律不动;Windows 侧还有 `-DryRun` 只预览、`-SkipDependencies` 只拉代码不装依赖。 - **更新不会动数据库**:Alembic 迁移在下次启动时自动执行,迁移前会在 `backend/data/backups/` 写一份备份。应用内**设置 → 应用 → 软件更新**可直接检查、下载并显示进度;Windows 下载完成后可确认重启安装,程序会原地覆盖并自动重启,`data/`、`.env` 与 `runtime/` 不动。macOS 源码包走上面的 `update.command`(同样是"下载新包 → 只覆盖程序文件");用 `.dmg` 安装版的用户下载新 dmg 覆盖安装即可(数据在 `~/Library/Application Support/ResumeForge/`,不随安装目录覆盖)。更新包按当前平台挑选并核对发布方给的 `.sha256`;**成没成以"现在跑的是哪个版本"为准**——没起来会说出失败原因与日志位置(`runtime/update.log`),不会一律弹"已更新"。 不要使用 `git clean -fdx`,也不要删除整个项目目录后直接覆盖。完整的升级、压缩包更新与回滚步骤见 [docs/upgrading.md](docs/upgrading.md)。 ## ❓ FAQ **必须联网才能用吗?** 不需要。除「投递台」的采集 / 投递链路与你主动触发的 AI 生成外,其余功能全部离线可用;用 Ollama / LM Studio 这类本地模型时,连 AI 生成也不出本机。 **支持哪些岗位?只有 IT 岗吗?** 面向所有岗位。示例数据刻意用的是市场运营,技能词表覆盖跨行业专业能力、办公与业务工具、证书资质等分类。 **AI 会不会把我的简历写飞?** 三道闸:事实台账里只有「已确认」的条目会作为事实参与生成;未确认的说法会被显式避开;生成结果里的学校 / 公司 / 项目名会与资料库比对,不一致时给出警告。正文还留着【待补】标记时导出会被直接拦下并指出位置。 **匹配度怎么算?为什么说它只是参考?** 因为分数会让人误以为它能决定投递结果。五类结论说明的是「为什么」,可以直接指导改简历;0–100 的「匹配度参考分」只是展示辅助,**不参与投递准入**,并且带免责说明。 **多个岗位、多份简历会不会乱?** 一个岗位可以关联多份简历,一份简历也能看到它的目标岗位;简历中心可按来源(AI 生成 / 用户编写)与「有无岗位」筛选,收藏夹集中放重点,回收站兜住误删。 **为什么只能本机用?** 因为它没有账号体系与权限模型,业务数据(含身份证号、手机号这类个人信息)也没有加密存储。要多人共用需要先补上认证、TLS 与审计,这不是当前版本的目标。 ## 💬 交流与反馈 - **QQ 群 `922830167`** —— 交流使用体验、提需求、报问题,欢迎来聊。 **群文件里也放了安装包**:GitHub 下载慢(或下载总是中断)的时候可以直接从群里取。

简历通 QQ 群 922830167 二维码

- **Bug 与需求**:用 [Issue 模板](.github/ISSUE_TEMPLATE) 提交,附上版本号、系统与复现步骤。 - **安全问题**:请走私密渠道(见 [SECURITY.md](SECURITY.md)),不要在公开 Issue 里披露可利用细节。 ## ☕ 赞赏支持 简历通**永久免费开源**,不打赏也完全不影响任何功能。如果它帮你拿到了面试或 offer,想请作者喝杯咖啡的话,点下面展开即可:
👉 请作者喝杯咖啡(微信 / 支付宝)

赞赏码:微信支付与支付宝,金额随意;不打赏也完全不影响使用,点个 Star 同样是对作者的支持

金额随意,一杯奶茶也感激不尽。没空的话,去上面给个 Star 一样开心 ⭐

## 📖 文档 **普通用户**直接看官网的[使用文档界面](https://magicapple123.github.io/ResumeForge-official/docs.html)(排版友好、可搜索);**开发者**看仓库里的源码文档: | 文档 | 内容 | | ---- | ---- | | [使用指南](docs/user-guide.md) | 每个功能的字段说明、操作步骤与隐私边界(最完整的一份) | | [项目导航图](docs/PROJECT_MAP.md) | 从功能倒查代码位置的地图,想改某功能先看这份 | | [面试讲解指南](docs/INTERVIEW_GUIDE.md) | 怎么把项目讲清楚、讲出深度(亮点与高频追问) | | [架构设计](docs/architecture.md) | 分层、数据模型、决策记录、扩展点 | | [界面质量规范](docs/ui-quality.md) | 设计令牌、窄屏交互、键盘与可访问性验收标准 | | [升级与回滚](docs/upgrading.md) | 版本升级、压缩包更新、数据备份与回滚 | | [AI 故障排查](docs/ai-troubleshooting.md) | 模型连接、超时、输出异常与常见报错 | | [提示词调优](docs/prompt-tuning.md) | 各生成链路用的提示词与调整方法 | | [变更记录](CHANGELOG.md) | 每个版本改了什么 | | [贡献指南](CONTRIBUTING.md) | 开发环境、提交规范、测试要求 | ## 🧪 第六阶段验收证据(简历制作台 Q01–Q27) 本轮「简历制作台」修复的真机验证、截图、日志与逐项记录存放在 `runtime/investigation/phase6/`(本机证据目录,不随源码提交): | 任务组 | 任务 | 证据 | |---|---|---| | 制作台核心 / 后端文档链路 | Q01–Q04、Q19、Q26、Q27 | [results.md](runtime/investigation/phase6/results.md)、[results-backend.md](runtime/investigation/phase6/results-backend.md)、`shots/Q01-*`…`Q27-*` | | 预览 / 编辑器 | Q05、Q06、Q16、Q17、Q18、Q21、Q22 | [results-workbench.md](runtime/investigation/phase6/results-workbench.md)、`shots/Q05-*`…`Q22-*` | | 面板 / 结构 / 小样式 | Q07–Q10、Q20、Q23–Q25 | [results-panels.md](runtime/investigation/phase6/results-panels.md)、`shots/Q07-*`…`Q25-*` | | 局部排版四出口 | Q11–Q15 | [results-style.md](runtime/investigation/phase6/results-style.md)、`shots/Q11-*`…`Q15-*` | | 后续修复 | 字段 chip 收起 / 字段与条目右键菜单 / 隐藏恢复位置 / 结构面板性能 / 结构定位横向错位 / 结构悬停抖动 / 收起条目 / 板块顺序 / 新建与 AI 顺序 / 清空内容 | [results-followup-chip-collapse.md](runtime/investigation/phase6/results-followup-chip-collapse.md)、[results-followup-editor-perf.md](runtime/investigation/phase6/results-followup-editor-perf.md) | [results-followup-chip-collapse.md](runtime/investigation/phase6/results-followup-chip-collapse.md)、`shots/Q28-chip-collapse/` | | 索引与复现脚本 | — | [phase6/README.md](runtime/investigation/phase6/README.md)、`tools/browser.cjs` | > 证据全部来自隔离演示库(`runtime/demo/demo.db` 与各成员副本),未读写真实用户数据。 ## 🤝 参与贡献 欢迎 Issue 与 Pull Request。开始之前请读 [CONTRIBUTING.md](CONTRIBUTING.md) 与 [AGENTS.md](AGENTS.md)(后者是仓库的长期维护规则,包含「一处逻辑只留一份实现」「新增迁移要同步更新测试」这类会直接影响你 PR 能否通过的约定)。 - 修 bug 请先补一个能复现的测试,再改实现; - 用户可见的行为变化请同步更新 README、`docs/user-guide.md`、应用内使用指南与 `CHANGELOG.md`; - 新增数据表或列必须写 Alembic 迁移与降级脚本,并补「表集合前后不变」的断言; - 提交信息遵循 Conventional Commits(`feat:` / `fix:` / `docs:` …)。 这个项目采用 [Contributor Covenant](CODE_OF_CONDUCT.md) 行为准则。 ## 📄 许可证 本项目采用 [Apache License 2.0](LICENSE) 授权,© 2026 magicapple123。 - 你可以自由商用、修改、闭源分发或再许可,只需保留版权与许可声明、在修改过的文件中标注变更,并在分发时附带许可证副本。 - 软件按「原样」提供,不附带任何明示或暗示的担保。 - **代码授权不包含商标授权**:项目名称「简历通 ResumeForge」、图标与 logo 不随许可证一并授权,二次分发请使用自己的名称与标识。 - 1.0.2 及更早版本以 MIT 授权发布,该授权对这些版本持续有效且不可撤销;Apache-2.0 适用于之后的版本。 ## ⭐ Star 历史 如果这个项目帮你少踩了一个坑,给个 Star 会让我知道它值得继续维护。 [![Star History Chart](https://api.star-history.com/svg?repos=magicapple123/ResumeForge&type=Date)](https://star-history.com/#magicapple123/ResumeForge&Date)