本次文档更新(2026-11-05):截图与说明按仓库当前代码(2.0.0)重录。以下几处行为与 1.x 不同,先读一遍可避开常见问题。
- 「不限篇幅」可在制作台直接选择:保存后刷新仍为「不限」,预览与导出都按实际页数执行,不会再被自动压缩成 1 页。
- 「最大篇幅」对六种格式生效:七种导出格式中,除 JSON 外的 PDF / Word / HTML / Markdown / 纯文本 / 图片(PNG)都按同一上限裁剪,并说明从哪一块起没有导出。
- 新增「图片(PNG)」导出:由同一份 PDF 逐页转出(300 dpi),单页直接下载,多页打成一个 zip。投递时仍建议用 PDF,版式与分页最稳定。
- 双语版本可用:同一份简历可建英文版,逐字段对照、逐条采纳;姓名、机构、时间与数字有事实锁,不参与翻译改写。
- 生成弹窗的板块顺序补齐 12 个内置板块:出版物、科研项目、专利、资质证书现在可以排进正文,自建板块同样在清单里。
- 资料字段可以隐藏:自定义字段与默认字段都有隐藏开关;隐藏与私密字段不会出现在全局搜索与生成候选中。
- 基本信息新增 5 个可进页眉的字段:意向城市、作品集链接、政治面貌、驾照、到岗时间。
- 两处口径变化:Word 导出补齐页头分隔线、技能标签底色与项目符号;ATS 总分改按关键词覆盖率重算,同一份简历的分数会比旧版低,属口径修正,不代表质量下降。
三步上手
-
下载并解压
从官网下载对应平台的压缩包(Windows 为
ResumeForge-2.0.0-windows.zip,macOS 为ResumeForge-2.0.0-macos.zip;仅含程序源码,不含任何个人数据),解压到任意目录;能访问 GitHub 的话也可以git clone仓库。 -
双击启动文件
Windows 双击
start.cmd,macOS 双击start.command。启动器会自动准备 Python 与 Node.js 环境、安装依赖、拉起前后端并打开页面(默认http://127.0.0.1:5173)。首次需要联网,通常几分钟。macOS 第一次打开会被系统拦一次,处理办法见 第 1 节。 -
按需配置大模型
要用 AI 生成简历、岗位需求解读、求职助手与面试相关功能时,去「设置 → AI 模型」填接口与 API Key 并测试连接。只是维护资料、管理岗位、手写简历与导出的话,可以跳过这一步。
不会用 GitHub、也看不懂 Release 页面?把链接交给 AI 就行。把你看到的链接、或者已经下好的压缩包发给任意一个 AI 助手(ChatGPT、DeepSeek、豆包、Claude 都行),让它一步一步教你怎么下载、怎么解压、双击哪个文件开始用。也可以直接把下好的 zip 交给它,让它先看看里面是什么、告诉你点哪个文件。
比如对 AI 这样说,它就会给你分步骤的操作说明:
我想用 https://github.com/magicapple123/ResumeForge 这个软件,请一步一步教我怎么装、怎么打开。
先跑一遍演示数据,是最快的上手方式。在「设置 → 数据与导出 → 导入备份为新数据集」里导入官网提供的演示数据包(由 2.0.0 导出,适用于下载区的 2.0.0;2.0 不导入 1.x 备份包),切换过去就能看到 31 个岗位、15 份简历(含带形象照的 A4 成品与真实的版面诊断 / 防虚构核对记录)、21 条事实主张、20 条求职进度、13 条投递记录(分 6 个批次,含失败诊断)、4 份岗位匹配度分析(含五类结论与依据)、14 条网申资料、12 条网申填充记录、6 条内推、20 条提醒、17 篇知识库笔记、18 份资料箱材料,另有 7 个助手会话、2 场模拟面试、2 场已完成的面试深挖(含复盘与复练队列)、2 份题库历史与 3 个后台生成任务。导入只会新增一份数据集,不动你现有的数据;演示包内的模型配置不含 API Key,导入后请填入自己的 Key 再使用 AI 功能。
界面导览:首页与侧栏
打开应用先看到首页。它不承担具体操作,只回答两个问题:现在是什么状态、下一步该做什么。
四张统计卡与「第一份交付」进度
- 统计卡:岗位总数、开放中岗位、已生成简历、近 7 天生成。只做概览,不可点击。
- 「从零到第一份可交付简历」:按三个阶段给出下一步——准备事实(填好资料里的姓名与联系方式,或已有台账 / 简历事实)、选择目标岗位、核实并交付(把台账里的主张逐条核实,有简历后导出或投出)。每个阶段都有自己的入口,完成后打「已完成」标记;三阶段全部结束,面板自动消失。
- 面板底部固定说明:手动填写、本地检查与导出不需要配置模型;需要 AI 的功能随时可在设置里配置。
快捷入口、搜索与最近动态
- 快捷入口:默认列出岗位广场、简历中心、投递台、求职进度、模拟面试、求职统计与设置;卡片右上角可改显示哪些入口,至少保留 1 项,选择结果保存在本机。
- 全局搜索:输入关键词回车,结果按类别分组,键盘与鼠标都能操作(见 30 节)。
- 最近动态三卡:最近岗位、最近生成的简历、最近投出去的,各带「查看全部 / 看进度」入口。
- 近期提醒:列表与月历两种视图,按紧急度分色(见 19 节)。
侧栏与启动弹窗
- 侧栏顺序固定:首页 → 岗位广场 → 简历中心 → 投递台 → 网申填表 → 求职进度 → 模拟面试 → 求职助手 → 设置。左下角是「使用指南」;GitHub 仓库入口在页头右上角,与「退出」并排。
- 可收起:收起后把宽度让给正文,状态会被记住。
- 中英文切换:设置 → 外观与交互 → 语言;英文界面下枚举值与后端下发的标签走同一套翻译。
- 启动提醒弹窗:设置里开启且有未完成提醒时,打开应用会先弹「近期提醒」,每个会话只弹一次;「使用指南」还开着时排在它之后,避免两个弹窗叠在一起。
不用安装,先在线点一遍
在决定要不要下载之前,可以先到 在线体验页 真实点一点:那里嵌着一个跑在浏览器里的演示实例, 界面、导航、列表、详情抽屉全是真的,只有数据是虚构的。 屏幕区右上角有全屏开关,点一下会铺满整个窗口(再按一次或按 Esc 退出), 小屏笔记本和平板上看得更清楚。
体验版没有接入真实的大模型。AI 相关的输出(求职助手回复、AI 生成简历) 都是提前录好的回放——你输入什么都不会得到新回答。它只是让你熟悉界面和流程, 不是一个能在浏览器里干活的替代品。
体验版能做什么
- 翻遍全部页面:工作台、岗位管理、需求解读、事实台账、简历生成、求职进度、统计、面试准备、求职助手、资料箱、知识库、回收站、设置……
- 打开任意岗位、简历、投递记录的详情抽屉,看清楚每个字段长什么样、关系是怎么串起来的。
- 看一眼 AI 输出长什么样(回放的助手分析、回放的简历草稿,逐字吐出来的效果与真实版一致)。
- 在体验页左上角的六步引导里点一下,内嵌实例会直接跳到对应页面。
体验版不能做什么
- 不能真的用 AI。没有接入任何模型接口,回复是预录回放。
- 不能改任何东西。它是只读快照,新增、修改、删除都会被拒绝并提示你下载完整版。
- 不能导出文件。只能看版面,拿不到 PDF / Word / Markdown / JSON。
- 自动投递台不可用。那条链路要驱动你本机的浏览器,只能装在你自己电脑上。
- 不要往里填真实信息。页面上的数据全是虚构的,你填的任何内容也不会被保存。
想真的用它,去下载完整版
完整版装在你自己电脑上:接你自己的模型接口真实流式生成与分析、数据只存在本机、 可导出 PDF / Word / Markdown / 纯文本 / JSON 并一键脱敏、自动投递台能真的投出去并分类诊断失败原因。 同样免费、Apache-2.0 开源,只有你自己调模型产生的费用。
体验完直接到 下载页 拿最新版本, 或者回 在线体验页的下载区 看完整的能力对照表。
项目在持续更新
这个项目还在持续开发中,功能、界面和文档都会不断变化,体验版的快照也会跟着一起更新。 觉得哪一步别扭、想要什么功能、遇到报错,都欢迎到 发表议题; 如果它对你有一点用,欢迎在 GitHub 仓库 点一个 Star 就是最直接的支持。
1. 安装与启动
系统要求
- 操作系统:一键启动器支持 Windows 10 / 11 与 macOS。Linux 目前仍需手动启动前后端,见本节末尾。
- 运行环境:不需要预装 Python 或 Node.js——启动器会自己在
runtime/下准备一套,不污染系统环境。macOS 上同样不需要 Homebrew,也不会写/usr/local、不弹管理员授权。 - 磁盘:程序本体很小,运行环境与依赖约数百 MB;数据(数据库、照片、附件)另计。
- 网络:首次启动需要联网下载运行环境与依赖;日常使用中只有你主动触发的 AI 调用、联网搜索与招聘网站操作需要出网。
- 端口:后端默认监听
8005,前端开发模式用5173。被占用时用启动参数换端口。
方式零:桌面安装版(Windows exe / macOS dmg,最省心)
到 Releases 页面(或本站下载区)下载 ResumeForge-Setup-2.0.0.exe(Windows)或 ResumeForge-2.0.0-x64.dmg / ResumeForge-2.0.0-arm64.dmg(macOS,v1.0.1 起提供;Apple Silicon 机型选 arm64 包,Intel 机型选 x64 包,x64 也可经 Rosetta 2 运行),安装后从桌面 /「应用程序」打开「简历通」:
- 不需要预装任何环境:Python 与 Node.js 的便携版运行时在首次启动时自动准备,不写系统目录。
- 数据位置固定且独立:
%APPDATA%\ResumeForge\data——数据库、附件、备份与浏览器登录态都在这里,升级、卸载、重装程序都不碰它。 - 从 0.18.0 安装版升级不会丢数据:1.0.0 的安装器内置「旧数据抢救」——升级前把旧安装目录里的数据逐文件校验复制,安装完成后再交还应用,由应用弹窗确认、先备份再迁到用户目录;过程中检测到应用在运行或校验不一致会中止安装并保留原数据。
- 应用内更新:设置 → 更新与帮助 → 软件更新,可直接检查、下载并原地重启安装;更新包下载后自动核对发布方提供的 SHA-256。
- macOS 安装版(dmg):安装包未签名,首次打开若提示「无法验证开发者」,右键 →「打开」即可(或执行
xattr -dr com.apple.quarantine /Applications/ResumeForge.app);用户数据在~/Library/Application Support/ResumeForge/,覆盖安装新版本不会丢;首次启动会在线装配 Python 运行时(需联网,数分钟)。
一键启动(便携包 / 源码:Windows 与 macOS)
- Windows:解压后进入目录,双击
start.cmd。macOS:在 Finder 里双击start.command。 - 首次运行会依次完成:准备 Python → 建立虚拟环境 → 安装后端依赖 → 准备 Node.js → 安装前端依赖 → 启动前后端 → 打开浏览器。整个过程会有中文进度提示。
- 看到浏览器自动打开页面即算成功。窗口不要关,它就是这个应用的进程。
首次安装失败时,提示会告诉你怎么做,而不是只丢一句英文报错。最常见的是网络被拦导致依赖装不上,启动器会给出可直接粘贴的国内镜像命令,例如:
backend\.venv\Scripts\python.exe -m pip install -i https://mirrors.aliyun.com/pypi/simple -r backend\requirements.txt
「打不开这个地址就是网络被拦了」这样可自查的判据也一并写在提示里。
照做还是装不上?来 QQ 群 922830167 里问一句,群文件里也备了安装包。
macOS 首次打开会被系统拦一次
从网上下载、又没有经过 Apple 签名的程序,macOS 都会拦下来,这个项目也在其中。所以第一次双击 start.command 时,可能提示「无法打开,因为 Apple 无法检查它是否包含恶意软件」——这不是程序有问题,是系统的下载隔离机制。处置办法任选一种,只需做一次:
- 在 Finder 里右键点
start.command→ 选「打开」,再在弹窗里点一次「打开」; - 或者在「终端」里进入项目目录,执行一次
xattr -dr com.apple.quarantine .,之后再双击。
如果双击完全没反应(某些解压工具会丢掉可执行位),在「终端」里进入项目目录后执行下面这行,效果与双击完全相同:
bash start.command
macOS 侧的启动器同样是零依赖自举:Python 与 Node.js 都下载便携版解压到 runtime/tools/ 里,不需要 Homebrew、不需要管理员密码,也不会写 /usr/local。Python 版本窗口是 3.11~3.13,Node.js 需要 20.19.0 以上。
启动参数
| 参数 | 作用 | 示例 |
|---|---|---|
-BackendPort | 指定后端端口(默认 8005) | start.cmd -BackendPort 8010 |
-NoBrowser | 启动后不自动打开浏览器 | start.cmd -NoBrowser |
-Reinstall | 强制重建运行环境与依赖(排错用) | start.cmd -Reinstall |
上表是 Windows 的写法。macOS 用同样的开关,参数名改成连字符形式,例如 bash start.command --backend-port 8010、bash start.command --no-browser;在 Finder 里双击时无法带参数,需要换端口或不想自动开浏览器时,就用终端执行一次。--help 可以列出 macOS 侧支持的全部选项。
关闭服务
Windows 双击 stop.cmd,macOS 双击 stop.command;也可以在启动器窗口按 Ctrl + C。直接关闭窗口也可以,但用停止脚本会先把后端进程收干净,避免端口残留占用。
手动启动(开发、排错或 Linux)
后端在 backend 目录:
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt # macOS/Linux 用 .venv/bin/python
.venv\Scripts\python.exe -m uvicorn app.main:app --port 8005
前端在 frontend 目录:
npm install
npm run dev # 开发模式,默认 5173
npm run build # 构建生产版本
手动启动时前端需要知道后端在哪:设置环境变量 VITE_BACKEND_URL=http://127.0.0.1:8005 再运行 npm run dev。默认值是 http://127.0.0.1:8000,与一键启动器的 8005 不同,这是最容易踩的一处。
2. 配置大模型(可选)
进入「设置 → AI 模型」。这里既能用内置预设,也能填任意 OpenAI 兼容接口。
使用内置预设
下拉里有 16 个常见服务:DeepSeek、Claude(Anthropic 原生协议)、豆包、Kimi、通义、智谱、MiniMax、硅基流动、OpenRouter、OpenAI、Gemini、Grok、Groq、Mistral、Ollama、LM Studio。选择预设会自动填好 Base URL、模型名与接口协议。
接口协议不是可选项,而是必须跟着服务走的一项。选了 Claude 的原生预设就会把协议切到 Anthropic 原生;只填地址不改协议的话,会拿一整套 Messages 协议去发 Chat Completions 请求,而错误信息只会说「接口返回 404」,看不出是协议选错了。
填写参数
- 接口协议:OpenAI 兼容(绝大多数服务)或 Anthropic 原生(支持扩展思考与独立 system 字段)。
- Base URL / 模型名:预设会填好;自定义时按服务商文档填,注意有些服务的 Base URL 需要带
/v1。 - API Key:本地无需鉴权的服务(如 Ollama)可以留空。
- 温度:默认 0.1。简历生成更看重事实稳定性,不建议调高。
- 输出上限:默认「不限制」,即使用服务商与模型的默认上限,避免被一个手写的 4096 悄悄截断。
- 高级参数(按需展开):top_p、频率惩罚、存在惩罚、随机种子、top_k、重复惩罚、停止词(最多 4 条)、Anthropic 扩展思考预算,以及一个「额外请求体字段」的口子,用来传各家自创的长尾参数。
填完点 测试连接,通过后再 新建配置 保存。获取可用模型 会按当前账号实际可用的模型列出来,比自己猜模型名可靠。
保存多套配置
「新建配置」可以命名保存,同一名字会覆盖更新。配置以卡片列出,每张显示模型名、Base URL 与状态,点「使用」即切换为当前配置。页头的模型下拉也能直接切换,双击还能就地测一次连接。常见用法:一套线上主力模型 + 一套本地 Ollama(断网或不想花钱时切换)。
用量与费用估算
「用量」卡片按缓存命中 / 未命中 / 输出三档分别统计 token,再按每百万 token 的单价折算成费用估算。三档分开算,是因为缓存命中的单价通常低一个量级,混在一起得出的数字没有参考价值。它只用来感知成本,实际账单仍以服务商为准。
API Key 是怎么存的
Key 存在本机的应用设置里(SQLite 数据库),不上传任何服务器。在 Windows 上会用系统 DPAPI 加密后落库(密文绑定当前用户与机器),非 Windows 平台保持明文。导出数据集时默认包含全局模型配置与 API Key(开关「备份中包含全局模型配置与 API Key(所有已保存记录)」默认勾选);不需要时取消勾选,Key 就不会跟着备份包出门。要重填时用「重新填写」即可。
不配模型也能做什么
- 岗位的手动录入、编辑、筛选、批量操作与来源标注;
- 本地规则解析岗位文本(技能标签、字段拆分);
- 匹配度分析的本地降级:不调模型,各条要求如实标为「待确认」并说明未做 AI 逐条比对;参考分仍由本地规则算出,但不能当成 AI 结论;
- 版式渲染、六种内置样式、版式预设、A4 预览与版面诊断;
- 全部导出格式(HTML / PDF / Word / Markdown / 纯文本 / JSON / 图片 PNG);
- 简历版本差异对比、ATS 本地检测;
- 资料、台账、资料箱、知识库、提醒、内推、回收站与数据集备份的全部管理操作。
需要模型才能用的是:AI 生成简历、岗位需求解读、匹配度分析的五类结论、写作增强四件套、质量检查里的夸大与深挖风险点、求职助手、模拟面试、题库、复盘与面试深挖。参考分不在此列——它始终由本地规则计算。
3. 我的资料与照片
「我的资料」是所有简历的数据来源。这里填一次,之后每一份简历、每一次生成都复用它。
各板块的默认顺序是:教育经历 → 实习/工作经历 → 项目经历 → 专业技能 → 校园经历 → 荣誉奖项 → 个人总结 / 自我评价 → 学术成果 → 科研项目 → 知识产权 → 证书资质 → 语言能力;基本信息固定在页眉,不参与排序。顺序按招聘方通常先看什么排:先看最近在做什么、做过什么项目,教育经历只留可查证的信息。想换顺序时,在「我的资料」里拖动板块把手(也可上移 / 下移),保存后记住;自建板块固定排在最后。
基本信息
姓名、性别、出生年月、手机号、邮箱、所在城市、意向城市、求职意向、个人主页、GitHub 主页、作品集链接、政治面貌、驾照、到岗时间,以及一段自我介绍。这些字段会直接进入简历头部,也会用于导出时的完整性检查;其中意向城市、作品集链接、政治面貌、驾照、到岗时间这 5 项默认不进页眉;需要它们出现在页眉时,生成后在制作台的页眉里添加字段,加入时会连当前值一起带过去。字段默认放在纸面哪个位置,由「字段设置 → 纸面位置」决定。生成简历时个人主页与 GitHub 主页会随候选资料提供给模型(见 第 8 节)。
教育、工作、项目、科研与证书等板块
- 每类经历都是一组结构化字段(单位、角色、起止时间、描述等),用「添加一条」新增。
- 校园经历(学生会、社团、竞赛)单独一类,应届生版本主要靠它撑起来。
- 每条经历都可以附一份 Markdown / TXT 参考文件:把当时的结项说明、数据截图说明、复盘笔记放进去,生成简历时模型会读到它。附上文件名与字数会显示在字段旁,点「查看内容」可以核对。
自建板块、自定义字段与隐藏
- 自建板块:在「我的资料」的板块管理里新建,建好后和内置板块一样能拖排序、能进生成弹窗的「板块顺序」清单,也能出现在简历正文里。
- 自定义字段:每个板块都可以加自己的字段(例如「招聘信息来源」)。字段设置行上有与默认字段同形态的隐藏开关。
- 整个板块也能隐藏:每个板块同样可以显示 / 隐藏,隐藏后不参与生成与搜索;字段在宽屏下自动排成多列网格,不必一路往下滚。
- 隐藏不等于删除:数据还在,只是不参与全局搜索、不进生成候选;「全部收起」只影响展开态,两者不是一回事。
- 页眉字段:基本信息里有 5 个字段默认不进页眉(意向城市 / 作品集链接 / 政治面貌 / 驾照 / 到岗时间),需要时在制作台的页眉里添加,加入时会连当前值一起带过去。
- 参与岗位筛选:自建板块可以单独选择是否参与岗位筛选。开了才进筛选条件,关了不会在岗位广场多出一个没人用的筛选项。
资料方案:只记「参与哪些板块」
资料方案解决的是「同一套资料按不同用途取用」:投技术岗时只带项目与技能,投科研岗时要把学术成果与科研项目带上。方案 = 名称 + 参与哪些板块,它不复制资料——在任何方案里改过的内容,立刻对所有方案可见。所以它很轻,也不会分叉出「两个方案里同一条经历说法不一样」。
入口在资料页标题区:「当前方案」下拉用来切换,「管理方案」打开同一个弹层,弹层顶部是「方案 / 板块与字段」两个页签。规则不多,但每条都明确:方案名称 1–40 个字符、最多 20 个方案;默认方案恒存在且不可删除;新建方案默认只显示基本信息,其余板块逐项打开;删掉当前方案会回落到默认方案并提示;正在编辑资料时不能切换方案,先保存或取消。
切换只影响此后的新建与生成:新简历、AI 生成、网申取数按新方案算;已经保存的简历和正在编辑的草稿不受影响——它们创建时就把页签与可见字段冻住了,之后改方案只影响新建的那些。
简历照片
「选择照片」打开照片库,最多保存 8 张,点缩略图切换当前使用哪一张。照片只留在本机数据库里,不会发送给模型,导出的 HTML / PDF / Word 会带上它(JSON 与纯文本导出不含照片,这是格式本身的限制)。
照片裁剪是非破坏的「取景」:裁切只保存一组取景参数,原图仍然完整保留,换模板或改比例时随时重新取景,不用重新上传。
整段粘贴识别
不想一条条填?把已有的简历全文粘进识别框(也可以贴截图、传 pdf/docx),识别后回填成可编辑草稿。识别结果一定要逐条核对——尤其是日期、数字与公司全称,这几个字段最容易错。
通用简历不在这里生成
2026-10 起,「我的资料」页底部不再提供生成入口。不绑定岗位的通用简历统一从简历中心 →「AI 生成」创建:它读当前方案包含的板块,不按岗位筛选资料(见 第 8 节);简历中心 →「新建简历」则是按当前方案预填资料的手写入口(见 第 9 节)。
职业场景:只改引导,不改数据
页头有「职业场景」下拉,没选时显示「不指定场景」。场景描述的是一段时间里的处境:应届校招、在职看机会、转行、找实习。新建时可以套用内置的快捷场景,也可以自己填:场景名称、职业阶段、使用目的、合作形式、内容语言、当前就业状态、目标行业(最多 5 个)、目标职能、使用地区、偏好栏目、表达偏好。
切换场景只改这个窗口里的引导与建议:它不改你的资料、岗位、已有简历、投递设置,也不动正在跑的后台任务。它是一层「现在按什么口径跟你说话」,不是一份数据。
要让场景真正影响生成,得在生成弹窗里显式打开「本次生成使用职业场景」(默认关闭)。打开后服务端只发送允许的表达维度,并冻结一份快照;姓名与联系方式不发送,就业状态默认也不发送——场景里另有一项「允许就业状态进入本次生成」,同样默认关闭。关着的时候,请求与没有这个功能时完全一致。
4. 截图与文档识别
岗位录入与资料录入共用同一套识别能力。凡是「粘贴 / 识别」出现的地方,都支持下面三种输入,并且可以混着用。
怎么把内容给进去
- 粘贴文本:复制招聘信息原文,直接粘进文本框。
- 截图:按 Ctrl + V 直接贴图,或点「添加截图或文档」选文件。贴进来的图会先显示成缩略图,可以逐个删掉再识别。
- 文档:选本地的
pdf或docx文件。 - 拖拽:岗位识别、备选截图、资料附件、个人照片、助手附件、经历参考文件、技能包、模板 HTML、数据集备份,都支持把文件从资源管理器直接拖进对应区域。
支持哪些格式与限制
| 类型 | 格式 | 限制 |
|---|---|---|
| 图片 | png / jpg / webp / gif / bmp / tiff | 一次最多 4 张,单张 ≤ 2 MB,合计 ≤ 5 MB;bmp / tiff 会自动转为 png |
| 文档 | pdf / docx | 文字在本机提取;扫描版 PDF(纯图片)提取不到文字,需要改为贴图。一次最多 4 份,同样计进上面那 5 MB 合计额度 |
| 文本 | 纯文本 | 与图片、文档一起参与同一次识别 |
扩展名和内容不一致也能用。把 .docx 改名成 .pdf 之类的常见误操作不会直接失败,应用会按内容判断真实类型。反过来,上传图片时如果内容与扩展名都不像图片,会提示「内容与扩展名不符」并拒绝,避免把不可解析的内容送去识别。
两条识别路径的差别
- 配了模型:图片与文档一起交给模型做多模态识别,字段拆分更准,能处理排版复杂的招聘长图。
- 没配模型:文本部分用本地规则解析出部分字段(能识别常见的「岗位 / 公司 / 城市 / 薪资」结构)。图片识别在没有多模态模型时会提示「当前模型不支持图片输入」——这是诚实的失败,而不是假装识别成功给你一份空草稿。
识别后要核对什么
- 日期:起止时间最容易被识别成邻近的数字。
- 数字:薪资、人数、比例建议回原文对一遍。
- 专有名词:公司全称、项目名、技术名词。
- 字段归属:粘进来的一段内容有没有被分到正确的字段(职责 vs 要求)。
保存岗位时在备注里会自动标注来源(粘贴文本 / 图片 / 文档识别),方便日后回查这份内容是识别的还是手填的。
5. 岗位管理与采集
手动填写
在「岗位广场」点「手动添加」,可以只填标题与公司,也可以把整段招聘信息粘进去让它自动拆成「职位描述 / 任职要求 / 其他信息」。一次粘贴多份招聘信息时,应用会先拆分成多条草稿,让你逐条确认后再入库——批量导入最怕的就是把两条岗位粘成一条。
备选岗位(暂存区)
还没核对的招聘信息先放进「备选岗位」:粘贴一段文本、贴一张截图都可以。自动采集的结果也先落在这里,勾选后再导入岗位广场,而不是直接把宽泛关键词采到的东西一股脑塞进正式列表。已导入的条目会标成「已导入」并记下导入到了哪一条岗位。
拖拽导入:按扩展名分流
岗位识别、备选截图、资料附件、个人照片、助手附件、经历参考文件、技能包、数据集备份,都支持把文件从资源管理器直接拖进对应区域:拖到岗位表单就是附件或截图,拖到照片区就是照片。这些落点管的是「拖到哪」,各自处理自己认识的文件。
除此之外,把文件拖到窗口任意位置,会先出现一层整屏的「松开即可导入」遮罩,按扩展名分流:.zip 走数据集导入,确认后新增一份数据集,当前正在用的那份不受影响;.csv 弹「CSV 请从岗位页导入」并把你带到岗位页的「导入 CSV」;.json 按文件内容新建一份手写简历。其余扩展名仍然按落点区域决定去向。
分流的理由是:同一个拖放动作在不同页面含义不同,按「文件本身是什么」判断,比按「落在哪」更不容易放错。
两条边界:一次只拖一个文件(岗位 CSV 例外,它支持多选,到岗位页用「导入 CSV」);不支持的扩展名会明说可以拖哪三种,而不是静默忽略。CSV 的解析、逐行预览与分批提交都在岗位页做,全局投放只负责带路,不再实现第二套解析。
列表与筛选
- 支持按关键词搜索(标题、公司、城市、描述、备注)、按状态与岗位类型筛选、按列排序。
- 保存时自动提取技能标签,标签会参与后续搜索与匹配分析。悬停职位格可以看到导入时间。
- 行内操作(详情 / 生成简历 / 自行编写 / 相关简历 / 编辑 / 删除)直接排在行末,行更紧凑;长文本硬截断,不再撑出横向滚动条。
- 导入 CSV:可以一次选多个文件,也可以直接把表格内容粘进导入框;岗位与备选岗位都支持。
批量设置状态与批量删除
要动一批岗位时先进入选择模式:在任意一行上右键 →「批量选择」,勾选后列表上方出现批量工具条,写着「已选 N 个岗位」。工具条上可以一次批量设置状态(选好状态再点「应用状态」,投递状态也在这条路径上改)或批量删除;「批量操作」菜单里还有「AI 生成简历」「岗位需求解读」「匹配度分析」与「加入投递队列」,选中哪几条就只作用于哪几条。
删除是软删除:条目进回收站,可在那里恢复(见 29 节)。选多了可以「清空选择」,不想继续就点「退出选择」回到普通列表——普通列表的行内操作仍然照旧,批量按钮不会出现在平时。
补齐详情
历史遗留的岗位可能只有链接没有 JD 正文(早年采集时详情页抓不到)。「补齐详情」只做一件事:按岗位 id 重新打开详情页补抓 JD。它只补空——已有描述的直接跳过,不会覆盖你改过的内容;跳过回收站里的条目;跳过没有投递链接的条目。补到正文后会重算技能标签。选择模式下可以只补勾选的那几条;单批上限 200 条(补详情要逐个打开页面,很慢),超过会拒绝并提示分批。
收藏夹
岗位与简历都可以收藏,「收藏夹」页分两个页签分页查看,可跳详情或取消收藏。它跟「岗位广场」的关系是:广场是全集,收藏夹只收录你主动挑出的条目。
岗位与简历互相关联
一个岗位可以关联多份简历:同一个 JD 你可能按不同侧重各写一版(技术深度 / 项目管理),也可能先出一版草稿再出一版终稿。岗位行内的「相关简历」列出该岗位下的全部简历,点哪一份就进哪一份;从简历详情也能跳回它关联的岗位,两个方向都走得通。
关联只记关系,不改内容:它不会把 JD 写进简历,也不会因为多挂了一份简历就把岗位状态往前推一格。简历中心也能反过来按岗位看——「岗位关联」下拉里可选「有目标岗位」或「通用简历」,也可以直接按某个岗位筛;按岗位筛过的列表地址里带 ?job_id=,存成书签可以直达。
没有关联岗位的那一份就是通用简历,列表里会单独标出来(见第 8 节的「通用简历」)。
回收站里的岗位
删除岗位是软删除:先进回收站,可在那里恢复或彻底删除。详见 29. 回收站。
6. 需求解读与匹配度分析
这两个功能界面相近,但用途不同,不能混用:
| 岗位需求解读 | 岗位匹配度分析 | |
|---|---|---|
| 看什么 | 只读招聘原文 | 你的个人资料 + 简历 + 事实台账 |
| 给出什么 | 结构化需求总结、原文证据、通用的求职准备建议 | 逐条匹配结论 + 投递建议 + 参考分 |
| 不做什么 | 不碰你的资料,不给匹配结论 | 结论不含百分比(参考分仅展示辅助,明确不参与准入) |
| 什么时候用 | 刚拿到 JD,想先快速看懂它在要什么 | 准备投之前,判断该不该投、差在哪 |
岗位需求解读:只读原文,不碰你的资料
位置有两处:岗位详情抽屉里的「岗位需求解读」,以及筛选条上的同名入口。它的输入只有一样东西——招聘原文。
产出也分三块:结构化的需求总结(职责、硬性要求、加分项)、每条总结对应的原文证据,以及一段通用的准备建议(针对这类岗位该准备什么,而不是针对你)。它不读你的资料与简历、不给匹配结论、不产出任何百分比——想知道自己差在哪,用下一节的匹配度分析。
要一次看几份 JD,走「批量操作 → 岗位需求解读」:勾选若干岗位后它作为后台任务逐个跑,可以随时取消,也可以关掉窗口先去忙别的,完成时会弹出通知(见第 8 节「生成期间可处理其他事务」)。
AI 对比选岗(多个岗位放在一起看)
筛选条上的「AI 对比选岗」不是逐岗出结论,而是先把每个岗位按五类结论分析一遍,再横向排序并解释为什么这个排在前面。逐个看时很容易得出「每个都还行」,放在一起才有区分度。它同样不产出百分比,排序依据是结论与证据,不是分数。
匹配度的五类结论
分析结果把每一条 JD 要求归入五类之一,每一类都配 JD 原文摘录与你的证据:
- 已匹配:你的资料里有对应的事实。
- 表达缺口:事实有,但简历里没写清楚。
- 证据不足:资料里提到了,但没有可验证的具体内容。
- 真实缺口:确实不具备。
- 待确认:信息不够,需要你自己判断。
结论汇总成投递准入建议:能投 / 需确认 / 不投。硬性门槛(学历、年限、专业等)任一命中「真实缺口」即判为不满足;不确定时不会替你拍板,而是标成「需确认」。
匹配度参考分
五类结论之后另有一个 0–100 的参考分与 5 个分项(技能覆盖 / 年限 / 项目相关度 / 硬性门槛 / JD 关键词覆盖),每条带一句可读依据,例如「核心与加分项共 18 条,已匹配 6 条」。三条口径必须说清楚:
- 它是纯本地规则现算的派生值,不调模型、不落库;
- 不参与投递准入——能投 / 需确认 / 不投仍然只看五类结论;
- 固定携带免责文案:不代表真实 ATS 解析结果或投递成功概率。
分数用单一色相绘制、不按高低变色,因为后端没有定义档位,前端自己划「好 / 差」的线就是在编造一个它没有的判断。它放在结论区之后也是同一个理由:不能让它盖过准入结论。
批量适配度分析:选择模式里一次跑多个岗位
在岗位广场点「选择」,勾选多个岗位,再从「批量操作」里选「匹配度分析」。面板会先说明这一批要做什么:为勾选的岗位逐一分析匹配情况,分析在后台逐个进行——可以随时取消,也可以关掉窗口先去忙别的,完成时会弹出通知。
面板上「重新分析已有结论的岗位」默认关闭:已经有匹配结论的岗位会被跳过,避免只为补一两条就重跑整批。开着它才会连旧结论一起重算。
结果按参考分从高到低排,每一批都保存进「历史记录」,重开面板还能回看第几批、共几个岗位、完成几个、失败几个。口径与单个岗位分析完全一致:结论不带百分比,参考分只作展示与排序,不参与投递准入。取消也不会浪费——取消前已经完成的那几个仍然保存着。
7. 事实台账
这一节是简历通跟其他工具差别最大的地方,值得完整读一遍。
台账记录的不是“我有什么经历”,而是一条条可对外表达的主张。每条主张写清四件事:
| 字段 | 写什么 | 作用 |
|---|---|---|
| 原始事实 | 照实写,不包装。例如「活动后台报名 12,400 人,去重后约 11,000,到场约 6,000」 | 这是唯一的事实基线,生成简历时只认这里 |
| 简历表述 | 准备怎么写进简历。例如「主导季度主题营销活动,参与人数 1.2 万」 | 模型润色时不会越过这条表述的强度 |
| 承担程度 | 参与 / 负责模块 / 主导方案或交付 / 项目负责人 | 约束表述强度:「参与」不能写成「主导」 |
| 个人边界 | 团队做了什么、你做了什么。例如「不含线下到场人数」 | 面试被追问时你知道该说到哪 |
核实状态决定用途,而不是决定好坏
- 已确认:可以作为事实写进正式简历,也是生成简历时唯一进入提示词的部分。
- 待确认:只能进草稿,且正文里必须保留【待补】之类的占位符。
- 已过期:内容会随时间变化(如去年的报价),更新前不作为最新事实。
- 不采用:保留原因供复盘,不进入任何对外材料。例如「把团队成果写成个人成果」这种写法可以留一条作为反面记录。
与生成、导出的联动
- 生成简历时:只有「已确认」的条目会作为事实基线进入提示词;未确认的说法会被列成「禁止使用」;承担程度与个人边界会约束表述强度。台账为空时生成链路的行为与以前完全一致,不会因为多了这个模块而变样。
- 导出时:正文里还留着【待补】【待确认】【待补充】【待核实】这类标记的简历会被拦下,并指出具体位置。拦下不等于堵死——弹窗里可以选「仍要导出草稿」。六种带版面的导出格式(PDF / Word / HTML / Markdown / 纯文本 / 图片 PNG)与浏览器打印都适用这条规则;JSON 是数据交付物,不受篇幅与标记拦截影响。
- 助手侧:助手能查台账,但不能替你确认:写入路径一律不接受核实状态,新建的条目都是「待确认」。让模型把自己新建的条目标成「已确认」,等于让它自己给自己发通行证。
来源核对:这条主张是从哪来的
台账条目可以挂来源:来源类型、引用位置与原文摘要。旧数据里关联不到原位的来源会如实标成「无法定位」并保留下来,不会静默消失——来源核对的价值,就是被追问「这句话从哪来的」时真有东西可指。
从资料生成条目
已有资料不想重新敲一遍?点「从资料生成」,应用会读你的教育 / 工作 / 项目经历,生成一批待确认的条目草稿。它们默认是「待确认」,需要你逐条核对后手动确认。
8. AI 生成简历
在「简历中心」点「AI 生成」,或在岗位详情里点「生成简历」,都会打开生成弹窗。生成会读取:岗位 JD + 你的个人资料 + 事实台账里已确认的条目 + 你补充的额外要求。
生成期间可处理其他事务
整份简历生成要跑一会儿。等待窗口上有「后台继续」——关掉它,任务在后端照跑, 完成或失败都会来告诉你(居中弹窗并播放提示音;等待窗口仍打开时只显示右上角卡片,不打断操作)。 提示音可以在「设置 → 更新与帮助 → 提醒与提示音」里关掉。
- 页头能看到还剩几个任务:有任务在进行时,页头会出现「后台任务」入口,点开能看到每个任务在做什么、 已经收到多少字、后端进度到哪一步。
- 不想要就地取消:取消会通知后端把任务停掉,不会留下半成品简历。
- 同样的机制也覆盖岗位解读、匹配度分析、投递与采集批次——这几个都会在页头的任务入口里出现。
生成前要选的几项
弹窗里分三组:「岗位适配与内容美化」(通用简历为「内容美化」)、「篇幅与版式」与「补充要求」。改动只作用于本次生成,不改动全局默认值;字号、行距、页边距、格式版式等细项不在弹窗里,生成后在制作台调。
| 选项 | 取值 | 怎么选 |
|---|---|---|
| 内容美化 | 开关 + 轻度 / 均衡 / 深度 | 开关文案随入口变化:从岗位生成是「根据岗位要求美化拓展经历」,通用简历是「用资料里的总结文件补足经历细节」。开启后选档位:轻度只调整措辞,几乎不扩写;均衡补齐表达与结构;深度在不超出事实边界的前提下充分展开。三档都不会越过台账里写的事实与承担程度。悬停任一档位可查看该档的具体说明;关闭时只筛选并整理原有资料,补充要求也不会改变正文。 |
| 文档模式 | 普通简历 / 长 CV | 普通简历按 1–3 页排;长 CV 最多 10 页。长 CV 是显式选择的页数策略,不会因为内容多就自动切换。 |
| 最大篇幅 | 普通简历 1 / 2 / 3 页 长 CV 1–10 页 |
应届或经历较少选 1 页;内容多再放宽。内容少时会自然留白,不会硬撑满。生成弹窗里没有「不限」,需要不限篇幅时生成后到制作台选(见 11 节)。 |
| 样式模板 | 经典 / 现代 / 精简 优雅 / 极简 / 学术 |
决定版式观感,共 6 套。弹窗里只选模板;强调色、行高、页边距这些版式参数生成后在制作台调,那里有实时预览。 |
| 字段语言 | 中文 / English | 只改小节标题与字段名(如 Education / Skills),不翻译你写的正文。要连正文一起换语言,用双语版本(见 9 节)。 |
| 字体 | 跟随模板 / 已下载或导入的字体 | 默认跟随模板;要换字体先确认它已下载或已导入。内置的思源黑体需要先在设置里下载。 |
| 板块顺序 | 12 个内置正文板块 + 你的自建板块 |
弹窗里可直接拖动排序,默认跟随「我的资料」里排好的顺序。学术成果、科研项目、知识产权、证书资质都在这条清单里,没有自建板块时是 12 项;空板块不会生成任何内容。基本信息固定在页眉、不参与排序,所以摘要里的「N 个板块」会比清单多 1。 |
| 补充要求 | 自由文本,选填 | 例如「突出可核对的数字,不要形容词堆砌」「这段经历按 STAR 展开」。要求会附在提示词之后,只影响表达方向;事实锚定、篇幅上限与防虚构规则不变。 |
生成过程:后台任务 + 真实阶段条
生成是一个后台任务,不是一段锁死界面的转圈:
- 弹窗里有结构化阶段条:整理资料 → 筛选资料 → 调用模型生成 → 校验修复 → 完成。阶段由后端下发的 progress 文案映射,映射不上的只显示原文,不硬凑。
- 进度显示「已接收 N 字」,刻意不做百分比——模型是流式逐字输出,后端无法预知总长,任何百分比都只能靠猜。
- 关掉弹窗不会中断生成,它会继续在后台跑,并持续轮询进度。
- 可以点取消。取消后不落库、不留半成品简历。
- 完成后弹出「简历已生成」通知,并直接打开结果预览。
- 已经有进行中的生成任务时,再点会返回 409 提示,连点两次不会造出两份简历。
已知限制:原生 Anthropic 协议 + 开启「思考强度」+ 多轮工具调用时,官方要求把上一轮的思考块原样回传,这一步尚未实现,该组合的第二轮可能被服务端以 HTTP 400 拒绝。遇到时把「思考强度」调回「关闭」,或改用 OpenAI 兼容协议即可;只回答、不调用工具时不受影响。
一次生成多份(批量生成)
岗位广场选择多个岗位后可以「批量 AI 生成简历」,每个岗位各生成一份。默认参数在「设置 → 外观与交互 → 批量操作 → 批量生成简历」里调;真正点批量生成时还会弹一张卡片,当场改的只作用于这一批,不会同时改动你的全局默认值。批量任务进行中有一条跨页可见的全局浮条,切到别的页面也知道还剩几个。
通用简历:不针对岗位的那一份
方向还没定,或者要留一份「什么都能投」的底稿时,用通用简历。入口是简历中心的「AI 生成」(不选岗位),或者「新建简历」手写一份。
它完整使用资料、不按方向筛选:各方向的经历与技能都保留,只受篇幅预算约束;原始资料不会被改动。生成时同样可以选普通简历或长 CV——长 CV 是显式选的页数策略,不会因为内容多就自动切换。
通用简历的页签与可见字段跟随当前方案,并在创建时冻结:之后改方案只影响新建的简历,这一份的骨架不变。资料改动或切换方案后它会自动刷新;如果有未保存的修改,会先问你是覆盖还是保留。可以存多份,不同用途各存一份。
防虚构校验
生成结果里的学校、公司、项目名会自动与资料库逐条比对,不一致的在记录上标记警告,提醒你核对。配合事实台账的「已确认才可用」规则,这两道闸门一起把「AI 替你编」挡在简历之外。
生成说明与「未收录清单」
简历预览里有折叠的「生成说明」,解释这份简历为什么长这样:岗位信号、候选资料的组成与省略原因——全部由确定性数据拼装,不经模型之手。「资料里有但没写进这份简历」的内容从「疑似虚构」警告里分出来,以中性的「未收录清单」分组展示,默认收起,用条数徽标保留「还有 N 条」。条目级的处理分三种:能靠改写补上的(技能 / 语言 / 个人总结)给「AI 补上这段」;自建板块的条目给「补进简历」,按条目 id 确定性地写进去并修剪清单;其余条目改为「去制作台添加」,并明说 AI 不能凭空新增条目。
生成现在还会读取资料里的 GitHub 主页与个人主页:这两个字段随候选资料提供给模型,并作为简历的独立字段渲染在页眉联系方式区(简历编辑器里也可手动填写),只作展示、不参与防虚构核对。
AI 修改 / 重新生成
简历详情底部有「AI 修改 / 重新生成」入口:填修改要求则只改你提出的部分(其余内容逐字保留),留空则整体重新生成(事实口径不变、表达与结构重新组织);修订直接更新当前记录并刷新预览。姓名、照片与联系方式不进模型、由代码强制回填,模型改不了也看不见。
岗位优化建议逐条采纳
「岗位优化建议」弹窗里每条建议都带「采纳并修改」:按这条建议修订简历(同样只改它涉及的内容)并立即刷新预览,不必整份重来。
简历中心:每份简历都在这里留档
AI 生成的、从岗位生成的、自己手写的,都会自动留在「简历中心」,不用手动另存。列表里每行显示名字、目标岗位、来源(AI 生成 / 用户编写)与更新时间,点一下进详情或预览。
常用动作都在列表上:左侧「收藏」列可以把重要的几份标出来;「岗位关联」下拉能按「有目标岗位 / 通用简历」筛,也能指定某个岗位;每行可以加一条备注(写清这份是投哪一类岗的),点「预览 / 导出」直接进导出流程;勾选多份后可以「批量导出」或「批量删除」。
还没保存过的草稿不在列表里——制作台顶上那句「未保存,保存后才会出现在简历中心」说的就是这件事。删除进回收站,可恢复。
9. 简历制作台
打开制作台:三栏、顶栏与底部状态栏
简历制作台是一个铺满窗口的工作面,横着分三栏:左栏放这份简历的参数与结构,中栏按板块填内容,右栏是画布——纸面跟着改动实时重排。右栏和导出用的是同一套模板与同一份版式,所以“看到的就是导出的样子”;草稿态下它不画真实分页,以精确预览和导出为准。
- 三档形态:窗口宽于 1280 像素时三栏并排;窄到 1280 以下,中栏收进抽屉,顶栏多出「编辑内容」;再窄到 1000 以下,左栏也收进抽屉,顶栏多出「排版参数」。功能一样不少,只是换了个入口。
- 列宽可调:两条分隔条分别管左栏与中栏——左栏 380 ~ 640 像素(默认 380),中栏 380 ~ 760 像素(默认 448),右栏始终至少留 420 像素,窗口不够宽时上限自动往下压。拖动期间只有样式在变,松手才落一次盘;鼠标移出窗口、或在窗口外松手,也会安全收尾,不会卡在半拖状态。
- 键盘也能调:Tab 落到分隔条后,按 ← / → 每次 16 像素;双击任一条分隔条,两条一起复位。宽度记在本机,下次打开还是这个宽度。
顶栏这一行放标题、这份简历的名字和全部动作。除了「保存修改 / 取消修改」(有改动时才出现,草稿态换成「保存到简历中心」),右侧固定是这几颗:
| 顶栏按钮 | 做什么 |
|---|---|
| 导出 | 打开导出面板:格式、水印、脱敏、照片都在那里选(见 12 节)。点导出时会先跑一次检查,有必须解决的问题先问你一句。 |
| 检查 | 打开「检查简历」面板,按内容 / 排版 / 产物三层查一遍,见本节后文。 |
| 版本 | 命名版本与岗位变体:存不可变快照、派生变体、按变体导出,见本节「命名版本与岗位变体」。 |
| 恢复默认列宽 | 把左栏与中栏的宽度一键回到默认值,和双击分隔条是同一个动作。 |
| 关闭 | 最右边的 ×。内容或版式还有没保存的改动时会就地拦一下,卡片长在这颗按钮上,问「放弃并关闭」还是继续编辑;干净时直接关,不弹任何东西。 |
标题旁显示这份简历的名字。从某个岗位或场景进来时,名字旁还会标一句「本次场景:…」,说明这份内容是照哪个场景写的。没保存过的草稿会多一句「未保存,保存后才会出现在简历中心」——否则你会以为它已经在简历中心里了。
纸面下方是一条随滚动吸底的状态栏:左边是缩放读数(百分比)与缩小 / 放大 / 适应页面三颗按钮,其中「适应页面」就是缩放复位;右边一句说明「按原始尺寸显示,虚线是分页位置」。按住 Ctrl 滚滚轮也能缩放;纸面比相框宽时,还会提示可以左右拖动查看。
左栏六个页签:各管一摊
左栏顶部是一排页签。左栏默认只有 380 像素宽,六个四字标签挤不进一行,所以页签条会自己换行(窄时两行、宽时一行);← / → 循环切换,Home / End 跳到首尾。切页签会回到顶部——上一页滚到一半的位置不该带到下一页。
| 页签 | 管什么 | 什么时候来这一页 |
|---|---|---|
| 排版参数 | 整份简历长什么样:模板与版式、文档模式与篇幅上限、字段语言、联系方式换行、分页开关、页面概览,以及样式(行距、页边距、字号、字体、颜色)。 | 打开制作台默认就停在这里。想让篇幅、字号、边距变一变,先来这页。 |
| 本份简历结构 | 按纸面位置看整份简历的层级:页眉 / 板块 → 条目 → 位置分组 → 字段,能排序、隐藏、锁定、复制条目,下面还挂着条目字段排版。 | 要动“哪个字段放在哪、这一条怎么排、哪一条不上纸面”时来。改结构别在中栏一个字段一个字段地翻。 |
| 双语版本 | 同一份简历的中文版与英文版:逐字段对照、逐条采纳翻译,另有事实锁与术语表。 | 要投外企或英文岗位时来。只想让纸面上的小节标题变英文,用「字段语言」就够,不用来这页。 |
| 表达资产库 | 收藏过的句子库:按类型、语言、岗位标签检索,选中位置后一键插入。 | 想复用以前写过的好句子、又不想翻旧简历复制粘贴时来。 |
| 来源核对 | 这条内容是资料带出来的、AI 写的还是你手打的,它的出处、来源链(原句 / 当前改写 / 来源最新版本)与已关联比例在哪。 | 投出去前想确认“这句话我说得出口吗”、或者来源更新后想知道哪几条受影响时来。 |
| 历史 | 这次打开以来每一步改动,以及撤销与恢复。 | 改错了,或者想看看刚才那一下到底动了什么时来。 |
后四个页签只在打开一份已保存的简历时出现。草稿和只读场景里没有可对照的语言版本、没有可插入的位置、也没有可记录的历史——与其摆一排点不动的页签,不如不显示。
版面参数:模板、版式、文档模式与页面概览
「排版参数」页签按模板 / 版面 / 样式三组排列,每组能单独折叠,折叠状态记在本机。
模板与版式:模板决定用哪一套排版,可以带图库试用与对比(见 27 节);版式是模板下面的预设档位,选「跟随模板」时这份简历不另设版式,模板换了它跟着换。
文档模式与篇幅:普通简历按 1–3 页算,长 CV 最多 10 页,篇幅上限还能选「不限」。切模式时后端按模式把页数夹进合法区间,再把夹紧后的真实值写回滑杆——不会出现“滑杆显示 5 页、实际按 3 页排”。
字段语言只决定纸面上那几句固定文案(小节标题、字段名)的语种,不翻译你写的正文。要连正文一起换语言,用「双语版本」。
联系方式换行:页眉的联系方式默认每个字段整体不拆行、字段之间自动换行,长网址不会从中间被截成两行。下拉里挑一个或多个字段,就在那个字段前强制换行(例如把个人主页单独放到第二行)。这个值随简历保存,HTML 预览、精确预览、Word 导出、HTML 导出四条链路读同一份取值,不会在某个格式里换得不一样。
分页:这一组平时只给一行摘要——没有板块设新页时写「分页:没有板块设新页」,设过的写「分页:N 个板块设了新页」,展开后才是逐板块的「从新页开始」开关。板块级与条目级断页分别在「排版参数」与「本份简历结构」里设,断页只在精确预览与导出时真正生效。
页面概览与分页报告:点「获取分页报告」后,服务端按真实 PDF 排版再排一遍并读渲染日志(不是前端数页——草稿的分页规则与 PDF 不一样,数出来的页数一定和导出对不上),回来告诉你实际几页、末页占了多少、有没有溢出、以及第一处溢出的内容落在哪一条;点它就能跳到纸面那一处。正文或版式一改,这份报告就作废,重新获取才有新数。
样式:行距、页边距(可以先调整体,再逐边调上 / 右 / 下 / 左)、字号、字体、颜色。每行末尾那一格是来源说明:没改过时写「随模板」(选了版式预设时写「随版式」),说明这个值继承模板;改过之后那一格换成一颗 ↺,点了回到“打开这份简历时”的取值。两者不是一回事——想回到模板默认值,双击参数名,或聚焦后按回车。
科研简历与长 CV
投高校、研究院所或读博,用的是同一套制作台,只是要多填几栏。中栏有「学术成果 / 科研项目 / 知识产权 / 证书资质」四栏:题目、作者顺序与本人标记(勾选后简历里会把你的名字加粗,姓名文本不变)、DOI 或链接;知识产权另有发明人顺序与专利状态;证书资质记颁发机构、日期与状态。没有内容的栏位不会写进简历,空着就是空着。
发表状态是六值:已发表 / 已接收 / 出版中 / 在投 / 预印本 / 其他。「在投」不会被写成「已发表」,导出也按这里填的值走——审稿中的稿子写成已发表,是学术简历里最不该出现的那类错误。
篇幅在「版面参数 → 文档模式」里切普通简历 / 长 CV:普通 1–3 页,长 CV 上限 10 页。从长 CV 切回普通时,超出上限的页会被自动夹紧并提示你,不会静默裁掉正文;夹紧后的真实值会写回滑杆,避免“滑杆显示 5 页、实际按 3 页排”。生成弹窗里同样能显式选文档模式,不按内容多少自动切换。
本份简历结构:按位置查看、排序、隐藏与锁定
这一页是整份简历的树,层级就是纸面的层级:页眉(合并成一行「基本信息」)/ 板块 → 条目 → 位置分组(标题行 / 元信息 / 正文前灰字 / 正文 / 正文后灰字 / 隐藏)→ 字段。面板头上写着「N 个板块 · N 个条目 · N 个字段」与「按当前设置约需 N 页」。
- 每行都标来源与状态:圆点区分「来自资料」与「手动添加」;徽标写明已隐藏、内容已锁定、排版已锁定、仅素材(不上纸面,只给 AI 生成与网申填表用)、断页。字段还没有值时显示字段目录里的中文名,枚举值显示中文标签,不会露出一串英文 key。
- 排序与跨组移动:直接拖,或者用键盘——Alt 加上 ↑ / ↓ 调顺序,Alt 加上 ← / → 换位置分组。拖动期间纸面按新顺序实时重排,松手才记一步历史,拖到行外松开等于取消。
- 显示 / 隐藏、复制条目、锁内容、锁排版:隐藏只影响正式导出,编辑态仍留着原文,随时能放回来;复制出来的条目是新的对象身份,和原条目互不影响;锁内容后 AI 与翻译不能改正文但还能调排版,锁排版后正文能改但排版不会被自动化改写。
- 搜索与联动:顶部搜索框一起搜板块、条目、字段与位置名(合并进「基本信息」的页眉字段,也能按「联系方式」找到);↑ / ↓ 选择、Enter 定位、Esc 清除。选中一行,纸面就高亮那一段;反过来在纸面上点一下,也会选中树里对应的行。
- 连选:按住 Shift 点条目可以整段连选(也可以用 Shift 加上 ↑ / ↓),批量改排版时用得上。
- 全部改动都进历史:结构树里的每一次写操作都算一步,Ctrl + Z 就能退回去。
结构化编辑器
在简历中心点「自行编写」,或从岗位详情的对应入口进入。新建简历时就能先排板块顺序,也可以一键清空默认内容再从头写;编辑器左边是按板块划分的字段(基本信息、教育、实习/工作、项目、出版物、科研项目、专利、资质证书、技能、语言、校园、获奖,以及自建板块),右边常驻目标岗位参考面板:职责、任职要求、技能标签与其他信息都在那里,写的时候不用来回切窗口。
两种编辑范围:改这一处,还是改整份
先说清楚这两个入口,它们经常被混着用:
| 只改选中的这一处 | 手动调整(整份) | |
|---|---|---|
| 怎么进 | 预览里切到「编辑」,点纸面上的任意内容(某条项目要点、个人总结、项目名、电话……) | 简历详情底部的「手动调整」 |
| 改什么 | 只有你点中的那一栏:当即可改文本,也可以用一句话让 AI 重写 | 整份简历的所有栏目 + 写作增强(STAR / 润色 / 翻译 / 话术)+ 版本对比 |
| 怎么保存 | 「保存这一栏」 | 「保存并更新预览」 |
两者写的是同一份数据、走同一条落库路径,区别只在改动范围——“这条要点补个数字”不该要求你打开整份编辑器再翻到对应标签页。
局部改写走两条路:在制作台选中字段后直接改中栏;或在纸面上选中文字,右键「AI 润色」并点「替换选中」。预览里点一下只负责选中该字段,不会打开独立的编辑器窗口。
四个就地变换(写作增强)
对某一段经历描述,选中后可以直接做四种变换。四种都是「一段文本进、一段文本出」:结果先显示在面板里,点「回填」才写回选中那段;右键落在不可编辑的位置时只能复制。
| 功能 | 做什么 | 注意 |
|---|---|---|
| STAR 量化改写 | 把「负责市场活动执行」改写成「情境 → 任务 → 行动 → 结果」,并尽量量化。 | 可以挂一条台账主张作为事实边界:改写不会越过你当时写的承担程度与边界。这是它与普通“润色”最大的区别。 |
| 话术生成器 | 同一段事实一次生成三种表达:简历版 / STAR 版 / 面试口述版。 | 面试口述版可以当作追问时的答题稿。 |
| 多风格润色 | 大厂严谨 / 简洁干练 / 应届校园三种风格。 | 风格只改语气与用词,不改事实。 |
| 中英互译 | 忠实原意地翻译,数字、日期、术语不篡改。 | 需要投英文岗位或多语言版本的简历时用。 |
任意输入框里选中一段文字,右键菜单还有「AI 润色」:结果就地回填,卡片可以拖动、可以「继续改写」,不满意可以还原。它和上面四个变换用的是同一条模型链路,但入口不限于简历编辑器。
四个变换都不做本地降级:未配置模型时接口会返回清晰的中文错误,而不是给你一段伪造的“改写结果”。宁可明确告诉你没模型,也不假装做了 AI 处理。
制作台的 v2 结构与字段排版
上面几节讲的是版面级参数(整份简历一起变)。这一节讲条目与字段级——同一条经历里那几个字段怎么排、哪一块占多宽。两者在 2.0 里被彻底分开了:版面级在「排版参数」,条目级在「本份简历结构」页签的「条目字段排版」里,改之前先确认自己在调哪一层。
- 条目头布局三选一:左右(标题与元信息分列)/ 上下(标题在上、元信息在下)/ 元信息在上,按板块选一次即可。
- 文字级别:一次改一组属性(字号、加粗、段前、段后),其余细调(颜色、斜体、行距、缩进、项目符号、对齐、日期位置、字距)在「更多参数」里单独调——两边列同一批键就会互相覆盖,所以分工写死。
- 条目字段排版:承载区里的补充字段可以两两一行,也能按逐列宽度与逐间隔调;每个字段会标明它是「继承板块」还是「本条覆盖」,覆盖错了可以逐项恢复继承。
- 补充字段可以单独隐藏:隐藏只影响显示,内容仍然保留,随时能放回来。
- 仅本份简历的板块:制作台里可以新建只属于当前这份简历的板块,也能删掉自己建的板块,不影响「我的资料」里的其他简历。
- 层级对照看结构页签:以前那个只读的「简历结构示例」示意弹窗已经删掉——现在「本份简历结构」里的一行就是纸面上的一段,选中哪一行纸面就高亮哪一段,比示意图更准。
撤销、恢复与历史步骤
制作台的每一次改动都有记录:左栏「历史」页签按时间列出已进行与可恢复的步骤,顶部工具栏提供「撤销」与「恢复」,快捷键为 Ctrl + Z 与 Ctrl + Shift + Z(可在「设置 → 快捷键」改键)。
- 记录哪些操作:编辑正文、调整排版、结构操作、调整条目排版与加粗,各自带动作名,一眼能看出改的是哪一类。
- 每一步都有一句人话摘要:除了动作名,每行还有一句按板块 → 条目 → 字段 → 版式的优先级取出来的说明,例如「「工作经历」新增条目「字节跳动」」「页数上限改为 2 页」。一次改了多处时只留最能说明问题的那一条,其余收成「等 N 项」——历史每行只有一行宽,铺开三行反而看不出是哪一步。
- 保留 50 步:超出后最早的记录被丢弃,避免长会话无限占用内存。
- 先看再决定:点任意一步会显示当时的摘要(名称 · 条目数 · 页数),确认后再「回到这一步」。
- 会丢改动,所以先问:回到较早的一步会丢弃它之后的改动,操作前有确认;「回到当前」可以退回最新状态。
- 没有可撤销或可恢复的步骤时,按钮置灰并给出提示,不会静默无响应。
- 未完成标记会拦住导出:正文里还有「待补」这类标记时,导出面板先拦一下,把后端给的原因原样列出来,两个出口是「我去改简历」与「仍要导出草稿」。它拦的不是导出,而是“以为补完了其实没补”——第三页静默丢掉的那种事故就出在这里。
保存冲突:三选一,不静默覆盖
两个窗口打开过同一份简历时,后保存的那一次不该直接盖掉别人改的内容。保存时检测到版本冲突,正文上方会给出三选一:
- 用最新的:放弃本地这次改动,换成服务端最新那一版;
- 比较差异:并排看「你的版本」与「服务端最新」,逐处确认后再决定;
- 另存副本:把本地这版存成一份新简历,标题带「(副本)」,原简历保持别人改过的那版。
判定很严格:只有后端明确返回版本冲突业务码才算冲突,才走这三选一。不带业务码的 409、网络中断、超时一律按普通报错处理——改动还留着,保存按钮就是重试入口,你不需要先想清楚这是哪一种失败。
表达资产库:把好用的表达存下来
制作台左栏的「表达资产库」收藏可复用的表达,换简历时直接插入,不必再翻旧简历复制粘贴。它的定位是「句子库」,不是「资料库」——存的是怎么写,不是写过什么。
- 收藏:在中栏选中一条要点,点「收藏当前要点」;没选中内容时会提示先选中。有未保存修改时先保存再收藏,避免存下旧版本。
- 检索:支持关键词(内容或岗位标签)、类型、语言与岗位标签四类筛选,可按最近使用、使用次数或收藏时间排序,筛选条件可一键清空。
- 插入:先在左侧选中要插入到的条目,再点插入;插入会生成一个新对象并自动选中,接着改即可。简历已在别处更新时提示重新打开,不会把旧内容写回去。
- 删除可撤销:删除进回收站,Toast 上可直接撤销;回收站里也能恢复(见 29 节)。
双语版本:同一份简历的中文版与英文版
需要投外企或英文岗位时,可以给同一份简历建一个英文版:两份版本共用素材、各自排版,英文版不会覆盖当前语言的正文本。
- 字段对照:中英逐字段并排,标出「一致 / 有差异 / 两边都空」,不用在整篇里找改动。
- 逐条采纳:先生成翻译,勾选要的条目再「采纳选中」写入;不想采纳的单条跳过即可。
- 事实锁:姓名、机构、时间与数字由事实锁保护,不参与翻译改写——翻译可以换句式,但不能改事实。
- 术语表:同一个词在各处译法统一,避免「项目」一会儿 project 一会儿 program。
- 两个语言版本可以分别预览与导出,页数与排版各算各的。
命名版本与岗位变体
- 命名版本是不可变快照:保存时命名,之后改正文不会动它;恢复历史会生成一个新的当前版本,不会改写已经投出去的记录。
- 岗位变体:同一份底稿按不同岗位派生,每份可以保存独立排版,也能按变体直接导出——投技术岗和运营岗时不用来回换模板。
- 版本与变体都挂在同一份简历下,切换时预览与导出跟着走。
版本差异对比
在简历中心任选两份简历做对比。结果按字段分区,只显示有变化的区块:字符串行内做词级高亮,列表条目用 + / − 标记,照片显示为 [图片]。想看原始差异时展开「查看原始差异」作为兜底。这个对比用本地算法计算,不调用模型。
检查简历:内容、排版、产物三层
顶栏的「检查」打开一个只读面板——它不改简历里的任何一个字,只回答“这份东西现在能不能导出去”。检查分三层:
- 内容:还有没有待补的标记、链接格式对不对、导出要不要脱敏、哪些话需要回事实台账核对。
- 排版:按当前版式排下来会不会超页、是不是过密或偏空、字体有没有缺字、粗体是否可用。
- 产物:真排一遍 PDF(勾了 Word 就再加一遍 Word),看文字有没有丢、阅读器读到的顺序是否和纸面一致、是否超页、隐藏内容有没有漏进去、渲染会不会直接失败。
每条问题带三级严重度:必须解决 / 需核对 / 排版建议。可以勾「只看必须解决」把清单收窄;组内按严重度排序,同一级保持后端给的顺序——复检前后同一条问题不会换位置,否则你找不到刚才那条。结论里有位置(板块 · 字段 · 页)与「依据」,能给出修复入口的就给一颗具体动作按钮(定位到这一项、增加一页、打开版面诊断、打开精确预览…),给不出的就明说“按说明手动处理”,不摆一颗“确定”了事的按钮。
结果带快照指纹:正文、版式、模板、页数上限、字号、语言、文档模式里任意一项变了,旧结果就标成「结果基于上一版,重新检查可更新」,而不是继续拿上一版的结论告诉你“没问题”。复检还会对比上次的结果,列出已解决几条、仍有几条。
和 第 10 节的分工:第 10 节那份面板是一份内容风险报告——查重、敏感词与 ATS、夸大风险、面试深挖风险点、合规,六类一次看全,回答的是“这些话能不能说”。这里回答的是“这份文件发出去会不会缺字、缺段、超页”:内容层只留与导出直接相关的几类(待补标记、链接、脱敏、要不要回事实台账核对;其中 ATS 与事实核对复用的是第 10 节那套规则,两处结论不会互相矛盾),另外多了排版层与产物层——那两层只有真排一遍才知道,第 10 节不做。顶栏「导出」上的那道闸门,用的就是这里的结果。
有约束的版面优化:只动四个旋钮
版面诊断卡片里(卡片本身见 11 节)除了「自动一页」,还有「按条件优化版面」。它和自动一页动的是同一批旋钮,但允许你先把底线说清楚:
| 旋钮 / 约束 | 含义 |
|---|---|
| 四个旋钮 | 页边距、区块间距、行高、字号。优化只动这四个,模板、字体、结构、正文一个字都不碰。 |
| 不动字号 | 勾上之后候选不许改字号,只收页边距、区块间距与行高。 |
| 最小页边距 | 给页边距设一个下限(毫米),任何候选都不会收到这个值以下;不设就是不限制。 |
| 保持条目完整 | 只收紧间距与字号,不改分页与条目结构——不让方案把一条经历劈成两半来省地方。 |
| 目标篇幅 | 要压到几页,默认跟随这份简历的篇幅上限;选「不限篇幅」时不做收敛。 |
每个候选都真排一遍再量,不是算出来的估计值:卡片上写明改了什么(页边距 14 → 12 毫米)、预计几页、溢出减少了多少、可读性影响是「几乎无感 / 轻微 / 明显」,只把确实让溢出变少的方案算可行。应用之后数值会填回左栏滑杆、可撤销,你还能接着手调。
在当前约束下确实找不到方案时,它明说原因:内容本来就放得下、约束把所有候选都排除了、收紧后仍然溢出、参数已经收到最紧没有可再收的、还没量到当前版面。宁可告诉你“只能精简内容或增加页数”,也不硬给一个比现在更差的方案。
10. 质量与合规检查
简历编辑页的质量检查面板把「这份简历投出去有哪些风险」拆成六类:查重、敏感词与 ATS 检测在本机用确定性规则做;夸大风险、面试深挖风险点与合规校验需要模型并联动事实台账。凡涉及判断的都会写明免责。
| 检查项 | 查什么 | 是否用模型 |
|---|---|---|
| 查重 | 同一份内容在库里是否重复出现 | 否,本地规则 |
| 敏感词 | 不适合出现在简历里的表述 | 否,本地规则 |
| 夸大风险 | 表述强度是否超出台账里写的承担程度 | 是,联动事实台账 |
| 面试深挖风险点 | 哪些说法一旦被追问就会露馅 | 是,联动事实台账 |
| 合规校验 | 保密义务、NDA、违规表述等红线 | 是 |
| ATS 本地检测 | 格式、关键词覆盖、信息位置三类静态检查 | 否,本地规则 |
ATS 检测带明确免责:它不是招聘系统的真实解析结果。不同的 ATS 实现差异极大,任何声称“通过 ATS 检测”的说法都无法验证。这里只做能在本地确定的三类静态检查,并如实标注它的边界。
ATS 总分怎么算(口径已变更)
关键词分项现在等于 round(100 × 覆盖率) − 堆砌扣分,量化加分移进格式分项。此前两者是脱钩的:缺 1 个核心词和缺 12 个都只扣一条 medium,核心词为空的 JD 还会被判成覆盖率 100%,于是「零关键词命中」的简历也能拿到 92 分。
同一份简历、同一份 JD 的分数会普遍下降(完全不对口的组合从 92–95 降到约 55)——这是让分数重新有区分度,不是退步。核心词为空时退回「核心 + 补充」做分母,两者都为空才显示「未识别到可比对关键词」,不再假装 100%。
11. 版面诊断与自动一页
简历预览上方有一个「版面诊断」面板。它把「看起来空 / 挤」这类主观感受变成可测的数字。
诊断口径
- 单页简历:正文占用 82% ~ 96% 算合适;超过 96% 判为偏高(接近溢出);低于 82% 判为偏空。
- 多页简历:额外看末页——低于 70% 说明最后一张几乎是空的,读者会有一种“内容不够”的印象。
- 高度由浏览器实测提供(版面只有真正排版之后才存在),但规则全在后端:多少算满、先动哪个旋钮、缩到哪为止,是可以被逐条测住的判断。
建议的顺序本身就是规则
诊断会给出一组按固定顺序排列的建议:
- 重排:内容顺序调整(把最相关的经历提前)。
- 结构:合并或拆分区块。
- 间距 / 字号:调格式参数。
- 精简内容:删减文字。
- 扩页:放宽页数限制。
顺序不能颠倒:先让你调间距、调不好再让你删内容,等于白改一轮;反过来先说「精简内容」,你又可能删掉本来放得下的经历。
自动一页
内容溢出时会出现「自动一页」按钮。它逐档试、够放下就停,而不是一步把字号缩到最小:按「页边距 → 区块间距 → 行高 → 字号」共十几档逐次尝试,每试一档只是往预览里注入一段 CSS 再量一次(没有网络往返)。
- 字号有绝对下限:不低于 11px(约 8pt)。按绝对像素算而不是按比例——同一个系数在小字号档上会缩得更狠,只盯比例会让小字号档一路缩到 10px 以下。
- 收到底仍放不下时,会如实说明「只能精简内容或增加页数」,绝不假装成功。
- 方案的目的是按简历的版式覆盖:结果只写在当前这份简历上,不会去改具名版式——后者会让所有引用它的简历一起变。
- 预览、导出 HTML、服务端 PDF 三处走同一个解析函数,避免出现“预览收紧了、导出的 PDF 没变”这种下载之后才发现的不一致。
分页控制
分页规则在制作台的「排版参数」页签里设:板块级的「从新页开始」在「版面」组,条目级断页在「本份简历结构」里选中条目再设;已经设过的断页会在「分页」组顶部汇总,可以一次清除。断页只在精确预览与导出时真正生效。
- 从新页开始:板块与条目都能设,标题是否跟随、条目允不允许被劈开、长链接要不要自动断行,各有独立开关。
- 页面概览与分页报告:点「获取分页报告」后,服务端按真实 PDF 重排一遍,回来告诉你实际几页、末页占了多少、有没有溢出,以及第一处溢出的内容落在哪一条(见 第 9 节的「版面参数」)。内容或版式一改,报告就作废,重新获取才有新数。
- 导出前核对:导出前的检查与预览读同一份分页快照,不会一边说「刚好一页」、另一边导出两页。
专业视图
- 预览工具条:预览可切「整页 / 适宽 / 100%」,带页导航、辅助线与灰度校样;命令面板与工作区预设把常用排版动作收在一处,适合反复微调时用。
- 照片裁剪:只改取景,原图仍然完整保留,随时能恢复原图;这组参数随这份简历保存(见 第 3 节的「简历照片」)。
12. 预览、导出与脱敏
预览
在简历中心点「预览 / 导出」打开预览。要点:
- A4 版式实时渲染,支持按钮缩放与滚轮缩放,放大后可滚动查看。
- 内容超出所选页数时不再直接裁掉看不见,而是向右并排展开成第 2、3… 张 A4,每页边界画虚线并标注「第 N 页 / 共 M 页(近似)」。各列共用同一个缩放系数,所以第 2 页的字号、边距与第 1 页天然一致。
- 屏幕上始终标注这是「按 A4 高度切分的近似分页」,真实分页以浏览器打印或下载 PDF 为准。浏览器不向 JS 暴露打印页数,应用内算不出真实打印页数,所以只能如实说明「打印是权威、屏幕是近似」。
- 多页只是展示,不会改你存的页数设置,也不影响导出。
- 「查看大图」:按原始尺寸在弹窗里看(外面的预览为了塞进列表会缩小),分页虚线与当前页数设置一致; 弹窗里点某一栏同样能进入“只改这一处”,也可以直接转去导出。
- 精确预览:切到「精确」后按服务端真实排版出分页,和导出 PDF 是同一套结果;草稿模式更快、精确模式更准,两者都不改你存的页数设置。
- 导出页数与预览一致:导出弹窗默认使用你当前设定的页数,不再出现“预览里是两页、导出来是一页”。 需要说明的是,屏幕上的分页是按 A4 高度的近似,真实分页以浏览器打印或下载的 PDF 为准——两者在刚好压线时可能差一行。
七种导出格式
| 格式 | 用途 | 说明 |
|---|---|---|
| HTML | 看版式 / 二次编辑 | 与服务端渲染的 A4 成品是同一份,含内联样式 |
| 直接投递 | 可直接下载:服务端用系统中文字体生成,不依赖浏览器打印 | |
| Word | 对方要求 docx 时 | 复用同一套版式口径,不引入第二套排版引擎 |
| Markdown | 留档 / 进笔记 | 结构化纯文本 |
| 纯文本 | 填在线表单 | 把内容粘进招聘网站的输入框时最实用 |
| JSON | 备份 / 迁移 | 无损结构,可用于再导入 |
| 图片(PNG) | 必须传图片的网申平台 | 由同一份 PDF 逐页转出(300dpi);单页直接下载,多页打成一个 zip。要过机器筛选(ATS)时仍用 PDF |
另有浏览器打印 / 另存为 PDF 入口,入口处有悬停提示:打印分页以浏览器为准,可能与屏幕上的近似分页略有不同。
导出形式:交付包 / 单独文件
选好格式后还要选导出形式:交付包把所选格式打成一个 zip(含清单与可选的归档原件);单独文件按所选格式逐个下载。只想要一份 PDF 发给对方时用单独文件;要留档、要连同原件一起交付时用交付包。
批量导出
简历中心多选后可以「批量导出」,按同一套导出参数把所选简历打成一个 zip。默认参数在「设置 → 外观与交互 → 批量操作 → 批量导出简历」里调;点批量导出时弹出的卡片只作用于这一批,不会改掉默认值。
「最大篇幅」对六种格式生效(JSON 除外)
以前这个上限只约束 PDF,Word / HTML / Markdown / 纯文本 / 图片会把全部内容导出来(图片又是从 PDF 转的,所以同样跟着这个上限走)。现在唯一出口会先按 PDF 版式真渲染一次,超限时按整块(要点 / 条目 / 板块)裁掉尾部再渲染,Word 最多收敛 3 轮。被裁过时响应带 X-Resume-Truncated,并尽量指出从哪个板块开始没导出;PDF 按页裁,所以只报「少了几页」而不报板块。选「不限」时不会被说成「已按上限裁剪」——内部那份 10 页渲染保护不是你的篇幅承诺。
JSON 是数据交付物:不受篇幅约束,也不加水印,导出的是完整结构。
导出前会自动预检:发现有超页或未补完的占位符时先问你一句;选「先调整」就整批停手,不会静默把超出的内容裁掉再下载。
Word 导出的三处保真
- 页头分隔线:页头最后一段会画下边框,粗细与颜色取模板参数;「柔和强调」页头不叠加。
- 技能标签:按 PDF 同一套形状落成 run 级底色与同色边框,并保持 PDF 的流式排列(不强行一行一个)。
- 项目符号:从
·改为•,不再显得比正文小一号。
圆角、标签网格与逐边内边距是 OOXML 表达不了的,这三处没有硬凑——Word 里看到的是同口径的近似,不是另一套排版引擎。
自定义水印
可以给导出加上一段水印文字(例如「草稿·请勿外传」)。实现方式随格式区分:HTML 用 CSS 覆盖层、PDF 用 pypdf 叠加、Word 写页眉。纯文本与 JSON 没有版面概念,请求加水印时会返回明确错误,而不是静默忽略。
一键隐私脱敏
勾选脱敏后,可逐项选择遮罩范围:姓名、电话、邮箱、公司、学校、项目名、产品名、GitHub 与个人主页(共 9 项)。默认遮罩姓名、电话、邮箱、公司、GitHub 与个人主页——可直接识别身份的部分默认全部关掉。脱敏后导出的内容始终基于脱敏结果,不会出现“脱敏只脱了一半、另一半还是原文”的情况。
导出被拦下时怎么办
如果正文里还有【待补】【待确认】之类标记,导出会被拦下并指出具体位置。两种处理方式:回去补完这些占位符,或在弹窗里选择「仍要导出草稿」。后者是给“先发给朋友看看”这种场景留的口子。
交付存档:简历删了,交付记录还在
每条投递记录都会保存当初的交付快照。简历详情里的每条投递记录带「下载存档」入口:
- 导出快照:按存档内容与当时的实际请求参数重放导出——即使原简历已经删除,也能重新拿到那份 PDF / HTML / Word;
- 投递 / 进度快照:直接下载冻结的内容 JSON,作为“当时投出去的是什么”的证据。
如实说明:重放的字节与当初下载的文件可能不同(HTML 每次渲染会换 CSP nonce)。界面在这种情况下会明确标注「这是按存档重新生成的版本」,并给出原始产物的 SHA-256 指纹供核对,不会把它冒充成“原件”。
14. 自动采集
入口在「投递台 → 自动采集」。采集负责把岗位批量收进库里,但不会直接写进岗位广场。
三步流程
- 填条件:关键词(最多 10 个)与城市至少填一项,另有单批上限、岗位间隔与随机抖动;还可以叠加站点自己的筛选条件。
- 采集:在后台线程里跑,切到别的页面不打断,回来照样看进度;可以暂停 / 继续 / 停止。批次的状态卡就摆在「自动采集」页签内(筛选账目与「本次采集结果」之间),采集进行中还有一条动态提示——实时计数、进度条与当前页码。
- 挑选导入:结果先落在「本次采集结果」里,勾选后再点「导入选中的岗位」才进岗位广场;也可以直接「导入并加入投递队列」,导入与入队一步完成。「本次采集结果」每页 20 条分页展示。
页面顶部常驻一条流程说明:采集 → 挑选导入 → 投递队列 → 投递记录。任务完成的文案也是「已暂存 N 个岗位,请在下方勾选…」,而不是含糊的「已完成」。
「按招聘网站的条件筛」
这一组筛选(求职类型 / 薪资待遇 / 工作经验 / 学历要求 / 公司行业 / 公司规模 / 融资阶段)是站点自己的筛选参数,网站在搜索时会先替你筛一轮,比采回来再按本地字段筛更准,也少翻很多页。它与「我的期望薪资 / 我的经验 / 我的学历」语义不同,可以同时用。标题行的「测试是否生效」按钮可以在真实招聘网站页面上逐项检查你当前选的条件现在能不能选到,并逐项给出「已生效 / 未生效 / 不限」的结论(浏览器未启动时会先提示你启动)。
选项清单读自站点,不写死。写死的一份在站点改编码之后会静默筛错——你以为按「本科」筛了,实际发出去的是另一个编码。清单有三条来源并按可信度降级:你的登录会话(页面筛选栏,最准)→ 全网通用清单(免登录接口)→ 内置快照(离线兜底,只覆盖 6 个短清单)。界面上会如实标注当前用的是哪一份。
「求职类型」必须读登录态:实测这个标签的选项因人而异——登录后能看到「不限 / 全职 / 兼职 / 实习」,未登录时只能拿到「不限 / 全职 / 兼职」。写死一份就等于替所有用户决定了他们能选什么。
采集开始前会拿当次读到的清单逐项校验编码,核对不过的不发给站点,并如实计入「未能生效」单独提示——旧编码在站点看来同样“合法”,发出去会静默筛错,那比不筛更糟。
采集记录
每次采集都有记录:按时间倒序列出条件与结果(已暂存 / 重复 / 失败原因),展开就能看那一次采到了哪些岗位,也可以在那里直接挑着导入。采集是个「跑完就看不见过程」的动作,没有这份记录,第二天就不知道上次按什么关键词、哪个城市采的。
采集条件历史
保存条件后会记一份快照(去重、上限 20),下次从「历史条件」下拉一键回填,也可清空。
保存本次抓到的站点原文
「开始采集」旁有一个默认不勾选的复选框「保存本次抓到的站点原文(用于排查解析问题)」。勾选后本次采集会把搜索与详情两个接口的响应原文存到 backend/data/captures/<站点>/。三条底线:
- 默认关闭、每次采集显式勾选——绝不默默记录。
- 不落任何凭据:URL 只保留 path,丢掉 query 与 fragment(query 里可能有站点内部参数甚至令牌),也不记录请求头、Cookie 与请求体。
- 只写进
backend/data/captures/:该目录不进仓库、不进备份、也不跟着数据集切换,绝不写进投递浏览器的登录态目录。
限额为一个采集最多 30 份、单份最大 2 MB,超限会记日志说明已停止保存,而不是静默丢弃。
15. 自动投递台
投递台驱动你本机的浏览器完成投递。它是最需要把边界说清楚的一个模块,下面按操作顺序讲。
投递专用浏览器
- 顶部标明当前对接的招聘网站(目前仅支持一个站点,后续会陆续增加)。
- 可以选自动 / Chrome / Edge / 自定义路径,并使用独立窗口运行。
- 显示调试端口与运行状态;可以「打开招聘网站」、启动或关闭浏览器、刷新状态。
- 登录由你自己做:应用不读取也不保存你的招聘网站账号密码,投递浏览器用的是独立的用户数据目录。
判断浏览器“是否在运行”的依据是调试端口能不能通,而不是应用是否持有进程句柄——哪怕窗口好端端开着、端口答得好好的,句柄也可能早就失效。另外「归谁」是一个独立事实:如果不是本次运行拉起的浏览器,应用不会按 PID 去猜进程(免得误关你自己的浏览器),「关闭浏览器」会返回 409 并提示你直接关掉那个窗口。
队列页的四步说明
队列页顶部常驻四步流程,这条说明源于用户反馈:进来后不知道下一步做什么:
- 岗位从哪来:岗位广场 → 岗位详情 → 加入投递台;自动采集导入也是同一个入口;岗位广场的选择模式还支持勾选多个岗位批量加入投递队列,一步送进队列、不再逐条弹窗。
- 在这里核对什么:准入结论;不确定的先做匹配度分析。
- 需要时怎么改:点岗位名看详情 / 编辑,换简历、改招呼语。
- 什么时候才真的投出去:勾选后点「开始投递」;在那之前不会打开任何招聘网站。不勾选=按顺序投整个队列。
准入闸门:只接纳来源在招聘网站内的岗位
判据是「岗位的来源或投递链接能否归属到已注册的站点」,在入队与开始投递两处都拦一次:
- 不满足的岗位不会写进队列,并返回明确说明(当前支持哪些站点、请到对应网站手动投递)。
- 手动录入但贴了招聘网站投递链接的岗位照常允许——这比“必须用采集”更贴合实际用法。
- 队列里若有来源不支持的条目(只可能是闸门上线前的历史数据),在建批次之前一次性拦下并点名是哪几个岗位、怎么处理(移出队列),不会留下一批注定失败的条目。
- 失败分类里有专门的
site_unsupported(「岗位来源不支持自动投递」)。万一真漏到执行层,记录里写的是真实原因,而不是含糊的「未知失败」。 - 岗位详情的「加入投递台」对这类岗位直接禁用并把原因写在页面上,还给出出路:把投递链接改成该岗位在招聘网站上的地址即可自动投递。
开始投递与过程控制
- 一次「开始投递」=一个批次。批次在后台线程执行,切页面不打断。
- 逐岗位显示进度与当前步骤(打开页面 / 填表 / 招呼语 / 上传简历 / 提交 / 校验)。
- 支持暂停 / 继续 / 停止,以及连续失败熔断(避免在一串注定失败的岗位上耗时间)。
- 本会话里见过某批次进行中、随后进入终态时,会弹应用内通知(成功 / 失败 / 停止各有文案与统计),并尽力发一条系统桌面通知——仅在已授予通知权限时,绝不主动弹权限框。点通知跳回投递台。
- 按「同公司只投一个岗位」这类规则被跳过的条目会写明为什么跳过。
投递记录
投递记录按批次分组展示:组头显示批次号、时间、状态与该批次自己的统计(成功 / 失败 / 跳过),点击展开看组内每条记录。筛选(关键词 / 结果)作用在记录上、分页按批次计,没有命中记录的批次整体不出现。
每条失败记录都带:失败分类、失败详情、页面 URL 与标题、批次号、第几次尝试。失败分类取值如下:
| 分类 | 含义 | 通常怎么处理 |
|---|---|---|
login_required | 需要登录 | 到投递浏览器里重新登录 |
captcha_required | 需要验证码或安全验证 | 在浏览器里人工处理一次 |
selector_invalid | 页面结构变化 / 选择器失效 | 站点改版,需要等适配更新 |
greeting_missing | 招呼语缺失 | 给该岗位补一条招呼语 |
network_timeout | 网络超时 | 稍后重试 |
file_upload_failed | 简历上传失败 | 检查简历文件与格式 |
site_unsupported | 岗位来源不支持自动投递 | 移出队列,或把投递链接改成站内地址 |
unknown | 未知失败 | 看页面 URL 与详情判断 |
队列的编辑操作
- 可以改招呼语与所用简历;逐条操作收敛到行末的「更多操作」菜单(编辑 / 移出队列)。队列按导入时间倒序展示——刚导入的排在最上面,不再提供手动上移 / 下移。
- 顶部可按状态(待投递 / 已投递 / 已跳过)与准入结论筛选;筛选只影响列表显示,准入告警与「开始投递」的范围仍按全部数据判断。准入结论来自岗位的匹配度分析(见第 6 节):没做过分析的岗位会标「未分析」,要投它得先确认一次。
- 支持批量管理:每页表头全选之外,还有跨页的「全选队列」(勾选当前筛选结果里全部可投岗位)与「移出所选」批量移出——逐条容错,完成后给出成功 / 失败账目;计数条随时显示队列总数、筛选数与已选数。
- 队列每页 10 条,超过一页自动出现分页器(形态与岗位广场一致)。
- 来源不支持的条目在「岗位」列标红,勾选框禁用,队列顶部给出一次性说明与两种处理方式。
- 后端拒收时弹提示而不给「仍然加入」按钮——这一类确认也没用。
16. 网申填表
有些公司不走招聘平台,而是自建一套网申系统(腾讯校招、字节校招那类):姓名、证件、教育经历一页页填下来,换一家公司又要从头来一遍。侧栏「网申填表」(在「投递台」之后)就是把这一步自动化。
定位与边界:只填不交
这几条是刻意的,不是还没做:
- 只往文本类控件里写值。下拉、单选、复选、日期控件,以及点开才是弹层的自定义选择器(含学校、专业、意向城市这类「可搜索下拉」——看着像输入框,其实必须点开列表选一个才算数),一律不自动填,会如实列进「不会自动填」并写明「需要你自己点选」——不假装。理由:这些框的值是你的选择,不是资料里的一行字;程序往只读展示框里写值,常常是「看着填上了、交上去还是空的」。
- 密码与验证码永不填。密码框连读都不读,验证码标为「需你手动填」。
- 只填不交,不代点提交。填完就结束,提交必须你自己点——整个界面上没有「提交」按钮。
- 不覆盖你已经填过的内容(除非你自己在预览里勾上它);不替你上传简历附件;紧急联系人等「别人的信息」会明确列出来让你自己填;认不出的框如实说认不出,不硬猜一个值。
- 同意条款、「无实习经历」这类声明与表态项,不由程序落笔,AI 那条路同样不例外。
专用浏览器
- 网申用独立的专用浏览器窗口,与投递台的窗口和登录态彼此隔离;可以在启动按钮旁输入目标网址直接新开页面,网址记录可选择或删除。
- 登录由你自己做:应用不读也不存招聘网站账号密码;手动关闭浏览器后点「刷新状态」检查。
- 页头「浏览器设置」与「投递台 → 投递设置」是同一份浏览器类型配置(自动 / Chrome / Edge / 自定义路径),在这里改了对投递台也生效,反之亦然。指定某一个就只找那一个,没装会直接提示,不会静默换一个。
- 页头三个按钮各管一件事:启动 / 关闭浏览器只管进程起停;浏览器设置只改配置;刷新状态只是立刻重查一次。任何一个在跑的时候,另外几个是禁用的。
批量流程:读取 → 逐条核对 → 填充
- 读取当前表单:程序读当前标签页上的输入框,只读不写;读取的表单有 15 分钟时效,过期会如实提示重新读取。
- 逐条核对:表格里逐条列出「哪个字段 → 填到页面上的哪个框 → 填什么值」。值可以直接改;不想填的取消勾选;标「需确认」的说明有另一个控件也沾边;标「冲突」的说明页面已有值,默认不勾。日期写进「YYYY-MM-DD」这类文本框时按页面的写法转换,缺的部分不编。
- 填充到页面:回到浏览器逐项核对。结果给出成功率(成功填写数 / 页面可读取表单框总数),同时展示实际识别并尝试填写的数量。
这一页读到的东西和当前填写进度不会因为你去补资料而丢:临时切走、刷新标签页都会继续刚才的状态;普通离开与关掉受控浏览器也不结束会话,只有点页头的「结束本次填写」才会停止并清理。
智能逐项填表:点哪个填哪个
除了整页读一遍,还有一种更贴近手动填表的方式:开启「智能逐项填表」后回到浏览器窗口,点到哪个文本、邮箱或多行输入框,框旁就冒出一张提示卡,写着这个框该填什么、值是什么,点「填入」才真的写进去。启动浏览器或打开目标页面时会随首个页面自动开启。点到下拉、日期控件时面板会直接告诉你「需要你自己点选」;程序认不出来时点「换个资料…」,从你的全部资料里自己挑一条。「记住这条」把当前字段与值存进网申资料(见下一节)。
认不出来时让 AI 帮一把
字段匹配是一套通用规则,不针对任何一家公司写死,遇到「导师姓名」「研究方向」这类栏目会认不出来。开启「未识别字段智能辅助」后,这些框会交给你配置的模型认一次:只发页面文字与字段名清单,不发资料值;模型只回一个字段名、不参与取值,值全部在本地决定,所以它造不出一个不存在的值。AI 认出的行标「AI 建议」并默认不勾选。模型挂了不影响使用;每次最多处理 40 个未识别控件,超出的会留在「没认出来」里,如实告知。
放宽模式(默认关闭)
「只填不点」的边界保持为默认。在网申填表页顶部或「设置 → 助手与 AI 行为」两处开关显式开启后,点选类控件(自定义下拉 / 弹层选择器、原生下拉、事实类单选 / 复选)若能匹配到资料值,程序才尝试代点:
- 严格选项解析 + 回读验证:选项按精确 → 别名 → 包含的口径解析(纯数字不猜),点选后回读比对,一致才算填上,失败如实报「代选失败:+原因」;依赖下拉按 DOM 顺序写入(父级先于城市)。
- 同意 / 声明类绝不静默代勾:批量预览里以「需你确认」行出现(默认不勾、淡警示底色,你勾选后才代点),实时面板给出「帮我勾选:{字段名}」按钮,点按即视为你本人确认。
- 日期选择器与文件上传在任何情况下仍不代做。
- 开关保存在本地设置中,开启前两处界面都有风险提示:存在选错可能,填完请核对。
填表时学到的
有些栏目你只在填某家公司时才想得起来(「招聘信息来源」「内推码」)。填完一次表,如果这一轮填进去的字段里有简历通里本来没有的,会弹汇总提示问你要不要记住、下次自动填;「智能逐项填表」模式下每个框旁也有「记住这条」,当场就能记。记住的内容按通用 / 场景 / 本次三档管理(旧数据的「场景 / 本次」标记读取时自动归一为通用);AI 认出来的会单独标「AI 认的」让你多一分怀疑;清单外的栏目存成自定义字段。它只写「网申资料」,碰不到「我的资料」——简历资料要回「我的资料」自己改。
填充记录
页面底部的「填充记录」每次填充留一笔:时间、页面地址与标题、每个框认成什么字段、最终填了什么值、成功 / 待确认 / 失败各几项,点开看逐条明细与页面快照。「填充到页面」每次落一条;「智能逐项填表」一个会话汇总成一条。记录多了以后每页 10 条分页展示。可单条删除,删掉进回收站、可恢复。⚠️ 记录里含真实值(证件号、手机号、亲属信息),只存本机,不进分享包、不进简历导出,助手也读不到。填充时用到的值大多来自第 17 节的「网申资料」——「记住这条」学到的字段也都落在那里。
脱敏诊断导出
页头的「导出诊断」会下载一份脱敏 JSON:应用版本、请求编号、控件数量、填充结果与前端错误等排障信息;不包含简历值、表单实际值、密码、Cookie 或 API Key。遇到问题时请把这份诊断文件与问题截图一起提供。
17. 网申资料
在「我的资料」页面切换到「网申资料」标签。网申表单问的东西比简历多得多,而且很多是简历上从不出现的——学号、培养方式、专业排名与总人数、档案所在地与报到证抬头、紧急联系人、父母工作单位、入党时间、身高视力、可到岗时间、招聘信息来源、内推码……这些放进简历资料会污染简历,所以它们存在另一处。
- 与简历资料分开存:国家 / 地区、籍贯、证件、出生日期、手机区号、期望薪资、意向行业、导师、研究方向、家庭信息等字段已单独一区管理;QQ 号与微信号、四六级分数等属于简历资料的字段不在这里重复一份。
- 生成简历不读这里:这一区只给「网申填表」用;求职助手也读不到,只存本机,不进分享包、不进简历导出。
- 分组管理:学籍与档案、语言与证书、家庭与紧急联系人、党团信息、身体情况、意向与到岗、其他补充;查看态只显示你填过的项,空的整组不出现。
- 填表时学到的落点:网申填表「记住这条」学到的字段与自定义字段都存在这一区,带来源标记,可改名、可清空删除。
编辑与保存和简历资料是同一套:点「编辑资料」切到「网申资料」标签填写,点「保存全部资料」时两块资料一起提交。也可以在卡片底部输入字段名新增自定义字段,之后能在「换个资料…」里搜到。
这一页做过一轮编辑流畅度治理:重复区块(教育 / 实习等)的每张记录卡独立缓存,编辑某一条时同组其余记录不再整卡重渲;「搜索字段名或内容」带防抖,且对重复区块也生效——在组名 / 字段标签 / 已填内容里匹配,没有匹配的组整组隐藏,且只在已填的内容里找,搜一个字段名不会把所有空记录都带出来;「只看已填写」开关同样作用于重复区块,打开后整组没填过的记录不再渲染。
18. 求职进度
侧栏在「网申填表」之后。「投递台」记录的是动作(这个岗位投出去了、失败了),「求职进度」记录的是结果(对方走到哪一步了)。一家公司一个岗位一条记录。
状态与前进规则
状态走「已投递 → 筛选中 → 测评/笔试 → 面试 → Offer」,另有「已结束」(含拒信)与「待确认」两个不参与推进的状态。两条硬规则在界面与接口里共用同一份实现:
- 状态只能前进,拒信除外:乱序粘贴三个月前的「申请已收到」不会把已经在面试的进度打回去。
- 普通自动回执只能算「已投递」:不能从「感谢投递」推断出面试或 Offer。识别不出来就是「待确认」,由你自己判断。这两条是“漏斗只有一个口径”的保证。
录入与更新
- 自动记录:投递台投成功的岗位会自动记一条「已投递」(用条目上的快照字段,岗位被删掉也记得住)。
- 手动添加:直接填公司、岗位、状态、投递日期、下一步与备注。
- 从通知导入:把邮件、短信、站内通知粘进来,也支持截图与 pdf/docx。识别结果先预览再确认——面板上每条写明「会新增 / 会更新 / 没变化」和原因。识别接口只算不写,点确认才落库,且预览与执行用的是同一份合并计划。
- 合并按「公司 + 岗位」:同一组合只有一条记录。
列表与导出
- 顶部五张统计卡是总数、进行中、本月投递、Offer 与已结束;卡片下方是五阶段漏斗(已投递 / 筛选中 / 测评/笔试 / 面试 / Offer),每一级都可点选筛选。搜索框按公司、岗位、备注或下一步查找。
- 每条显示投递日期、状态更新日期、来源(投递台自动记录 / 手动添加 / 识别导入)与依据(例如「9/19 收到一面反馈邮件」)。
- 导出 CSV / JSON:CSV 带 BOM,Excel 打开不乱码。
19. 日历提醒
提醒不只是「求职进度」页里的一个面板——首页也会展示近期提醒。
类型与紧急度
- 类型:面试、测评截止、HR 回复、其他。
- 紧急度分色:已逾期 / 24 小时内 / 3 天内 / 更远,四档一眼看出哪件最急。
- 绑定对象:可选关联求职进度、岗位或简历,三者都选填(点进去能看到绑定对象与备注)。
列表与月历
两种视图,偏好会被记住。月历里点任意一天就弹出那一天的完整安排:标题、类型、状态、时间与备注;没有安排时也会明确说「这一天没有安排」。明细内建在组件里,所以首页与进度页的行为不会漂移。
打开应用时弹出提醒
「设置 → 更新与帮助」里有「打开应用时弹出提醒」开关(默认开)。关掉之后启动不再弹近期提醒,需要自己进页面看。
20. 内推管理
记录通过人脉拿到的推荐机会,字段包括:内推人姓名、联系方式、与你的关系、对方职位、渠道(同事 / 朋友 / 校友 / 其他)、内推码与备注图片(内推海报截图之类)。
- 列表按状态分色:已联系 / 已提交 / 已关闭 / 无效,一眼区分哪些还在跟进。
- 状态可以推进到「已投递」「已关闭」;点卡片看详情,联系方式、内推码与备注大图都在抽屉里。
- 顶部统计内推转化率:口径由关联的求职进度派生——只有走到面试及以上才算转化。写入侧不接受手填 converted,避免“自己声明转化成功”这种不可信的数字。
21. 求职统计
侧栏「求职统计」,按「概览 + 四个主题」汇总。趋势图的统计区间可选近 1 / 3 / 6 个月 / 1 年。
概览与四个主题区块
| 区块 | 看什么 |
|---|---|
| 概览指标 | 有效投递数、进面试数、Offer 率,以及五阶段漏斗。 |
| 转化与卡点 | 进行中的条数、超过 7 天没有更新的条数、没有下一步的条数。这个指标刻意不叫「面试卡住」——因为「最后更新时间」会被任何一次编辑刷新,它证明不了“面试官一直没联系”。 |
| 时间与节奏 | 月度趋势、周内投递分布、最近 7 / 30 天新增、待办提醒四档紧急度。 |
| 渠道与去向 | 内推转化与内推状态分布、投递最多的公司(按公司归并)、记录来源。 |
| 简历与健康度 | 简历份数、带一致性提醒与带【待补】的份数、待确认主张数、投递与简历的关联覆盖率。 |
诚实口径:没有数据的图不画零
这是这一页最值得说的一条设计:
- 有记录没填投递日期时,页面会单独提示「有 N 条未填、未计入」,而不是让它们消失。
- 当一张图的输入全空时,渲染明确空态,不画一排零轴——一张全零的趋势图会被读成「这几个月真的一份都没投」。
- 刻意不提供的指标会写明原因,而不是给一个编的数字:平均「投递 → 面试」天数、各阶段流失率、面试通过率(因为库里只有当前状态 + 一个状态日期,没有状态历史表,算不出来);按行业分布(全库无此字段);按岗位类型或每份简历看转化(录入界面上没有关联入口,属结构性为空)。后者的关联覆盖率会显示出来,让这个缺口可见。
22. 模拟面试
「模拟面试」页有四个页签:模拟面试、题库、面经、面试复盘(后两个见下一节)。这里讲面试本身。
开始一场面试
- 关联岗位与关联简历都是必选:两个都选好才能开始,缺任一项接口会返回 422。面试官只会看到你选定的这两份材料,其它资料不会进入面试。
- 材料来源二选一:岗位材料与简历材料都可以「从记录选一条」,也可以直接「导入文件」(图片 / PDF / TXT / Word / Markdown)。导入的只是这一场面试用的材料文本,不会写进你的岗位或简历库。
- 类型:技术面 / 项目深挖 / 行为面(STAR)/ HR 面 / 综合面 / 案例分析 / 英语面试 / 压力面。默认是综合面——技术面只是八种之一,把它当默认等于让非技术岗每次先改一次。
- 难度:初级 / 中级 / 高级。
- 面试官风格:严谨专业 / 温和引导 / 持续追问 / 压力质询。
- 轮数:3–12 轮,默认 6 轮;也可以选「自动(AI 判断收尾)」。
- 计时器:面试进行中会记录用时,结束后一并出现在详情里。
- 面试官人设与考察重点:可留空,留空则按面试类型通用考察。
- 面试官形象「Jane」:「投-简-历」家族的中间一员,浅蓝光泽球猫造型(金丝圆镜 + 深蓝领结),在「面试官设定」卡头自我介绍;四种面试官风格各有默认表情,等待下一问时会切到扶镜思考的表情。
逐轮作答
面试官先提问,你作答,面试官会点评上一答并追问,然后问下一轮。每条面试官消息都带着「Jane」的头像。每轮都显示当前进度(第几轮 / 共几轮)。中途可以结束。
答完最后一题不会直接收盘。轮数用尽时,面试官会先针对最后一答给一句点评和收尾话(「回去等通知」这类),落成一条面试官消息,之后才出现决策卡:继续追问,或结束并生成报告。追问区的问答不计入最终报告;收尾那次调用失败时不写空消息,界面用本地兜底文案补一句。
结束后的报告
走完全部轮数或手动结束后,生成一份报告:
- 总分(0–100);
- 维度评分:每个维度带一句评语,例如「专业能力 80:活动策划与转化分析的链路讲得完整,会员分层是加分项」;
- 优势与改进建议列表;
- 总结一段。
报告生成失败时不会给一份空壳,而是标明失败原因,界面按「无报告」处理。面试记录可以一键存进资料箱,方便日后复盘。
23. 个性化题库与面试复盘
个性化题库
按关联岗位与资料生成三类题目:基础 / 项目深挖 / 反问 HR。每道题都带:
- 考察意图(这道题在验什么);
- 一句话回答提示(回答的落脚点);
- 可选的详细参考答案:点单题的「生成参考答案」,得到正文 + 要点 + 一句可套用的话术。
生成完成会自动写入历史记录,不用手点保存。之后从历史打开时,交互与刚生成时完全一致——参考答案能点、能补生成,新生成的结果会回写到同一条历史。旧版纯文本历史仍可查看并提示「仅可查看」,不会崩。
每道题都可以先写自己的答案;写完后让 AI 按这道题的考察意图打分、解析并给出修改建议。评分只针对你写的这段内容,不替你补事实,也不能替代你的判断。
面经(面试经验)
沉淀面试经验:公司、岗位、轮次类型、难度、面试日期、来源(自己 / 同行 / 公开)、题目清单、复盘正文与标签。可按公司、岗位、标签检索。点卡片看详情:正文与完整问题清单在抽屉里。
面试复盘
把真实面试里遇到的问题录进来,得到:
- 答题框架:把几个问题归到同一个考点上讲清回答顺序;
- 要点:回答里必须出现的内容;
- 可能的追问;
- 常见误区:哪些说法会让你被追着打;
- 反向优化简历:把面试暴露的短板与高频追问,转成具体的简历改写建议(只产出建议列表,不直接改你的正文)。
复盘结果同样生成即自动存历史,可回看、可删除(删除进回收站)。
24. 面试深挖
入口在「事实台账」页的「开始深挖」按钮。它按台账里已确认的条目逐条做压力测试,回答的是:这条主张我到底讲不讲得清、哪里还站不住。
三条刻意的设计
- 提问前先锁定评分契约。每道题在生成时就把「要验证什么、必须听到哪些证据、什么情况该追问、什么情况可以结束」写进库里,之后不因回答得流利而放宽。这是防“事后改标准”的唯一办法,也是它与“给个分数”最根本的区别。
- 用证据状态代替分数。判定只有五种:已验证 / 部分验证 / 未验证 / 存在矛盾 / 未覆盖。界面与接口都不出现任何总分。
- 不做推断。模型只能依据你真实说过的内容给状态;说「这次算过了」却列不出任何证据时,一律不判成「已验证」。
逐轮追问怎么决定
追问类型按缺口选,而不是机械遍历:背景 / 职责 / 结构 / 实现 / 决策 / 替代方案 / 失败与排查 / 指标口径 / 代价 / 复盘。答得清楚就换下一条主张,答不清楚就沿缺口继续追问(有追问深度上限)。
两种反馈模式
- 真实模拟(默认):每题后不念判定,只在结束时统一复盘。念了会让人按判分标准答题,而不像真面试。
- 训练模式:每题后立刻给一段简短反馈,适合第一次练。
判定本身在两种模式下都会如实记录。
复盘与复练
- 结束时给出「该去补什么」的清单,行动项落到三选一:补事实 / 补知识 / 降表述。
- 复练队列只收「部分验证 / 未验证 / 存在矛盾」的主张。
- 复练不重复原题——换角度出变体题、反事实题、故障题、证据题或压缩表达题。把上次的答案背一遍不算会了。
- 求职助手可以读深挖记录帮你复盘(
list_drill_sessions/get_drill_report),但开不了新的深挖:标准必须先按主张锁定,且需要你自己逐轮作答。
25. 求职助手
用「设置」里配置的模型做流式问答,会话历史保存在本地。
点进来默认是一段新对话:不会自动打开你上次的会话,也不会先建一条空记录—— 只有你发出第一条消息时才创建对话。历史会话都在左侧列表里,点一下就切过去; 「问助手」这类入口带着问题跳过来时,问题只预填、不自动发送。
上下文由你决定
- 关联岗位 / 简历:勾选后把这部分内容作为上下文带进回答。
- 默认读取脱敏个人资料:助手会自动加载当前数据集里的个人资料,但发送给模型前会去掉姓名、电话、邮箱与照片;岗位与简历仍可按需关联,不再需要你手动开一个开关。
- 附件:可以上传文本或图片,一并参与回答。
- 联网搜索:按需开启,来源、抓取正文条数等在「设置」里可调;多个来源会并发查询后合并去重。
- 思考强度:可选档位;开启后回复下方会出现默认折叠的「思考过程」面板,流式生成过程中就能展开看,历史消息里也能回看。没有思考内容时整块不渲染。
- 来源可点击:开启联网后正文里的
[来源N]编号可以点击跳到原文。编号是全局稳定的(跨自动预搜与所有工具搜索共用一个计数器,并持久化进消息),所以模型当时看到的第 N 条就是你点到的第 N 条。映射缺失或编号越界时退化成纯文本——宁可不可点,也不跳错。
回答带本地时间感知
助手每次回答前都会拿到你的本地时间与星期,能自然地按时段给建议——例如深夜 / 凌晨提醒你早点休息,不会生硬重复;主界面与悬浮卡的新对话问候同样分时段:深夜打开会多一句「改完这一份就早点休息吧」。
它能查什么、能改什么
助手现在有 71 个工具(默认下发 67 个,放宽模式另加 4 个)。读工具覆盖:岗位、简历、事实台账、资料箱、知识库、提醒、内推、面经、题库历史、复盘历史、深挖记录、求职统计看板、分享包列表、AI 对比选岗记录(批次时间、岗位与逐条结论——返回里不含任何分数、百分比或按分数派生的名次)、投递记录(按批次查看,含失败分类与可操作诊断——「上次为什么投失败」它终于答得上来了)、文件副本清单(只读元数据——哪些文件存进了应用、什么类型、多大,不返回文件内容),以及网申填表的填充记录 / 历史网址、投递台的队列状态。写工具的几类是:增改知识库、新增提醒、把提醒标记为已完成 / 已忽略、代为收藏 / 取消收藏简历并写备注(正文与版式不受影响)、新增面经、新增内推(状态默认已联系,完整编辑仍在投递台页)、查询 / 新建 / 修改求职进度记录,以及在模板工作台里新建或修改版式、列出版式清单。删除只由助手说明入口并引导你自行操作——它不提供删除工具。
助手的能力地图条目与功能同步维护:网申填表条目写清了「只填不点」与放宽模式的例外与边界,数据集条目与备份行为的实际措辞一致——地图上写的边界就是真实边界。它对简历的收藏 / 备注、投递记录、版式清单与提醒标记等改动,都会在「助手做了什么」卡里显示中文名称。
它的行为准则写在系统提示最前面:不知道就说不知道;只在明确要求时才写数据;涉及用户数据必须用工具查证后再答;绝不编造。
它不代为发起采集或投递。这两步会访问外部站点、也代表你对某家公司做出了动作,因此必须在页面上由你点击;助手只负责如实汇报采集到的结论与队列现状。
它没有任何删除能力。这一条是产品边界,不是能力缺失——让一个会误解指令的模型掌握删除权限,代价远大于收益。它也不能替你确认台账条目,也不能生成完整 HTML 样式模板(模型长篇写 HTML 容易出错,且保存前会做安全清洗,用户可能拿到“看起来生成了、其实不对”的结果)。
助手的放宽模式(默认关闭)
「设置 → 助手与 AI 行为」页签有一个默认关闭的放宽模式开关,开启前界面会明确告知解锁范围:开启后助手可读取完整资料(姓名、电话、邮箱等身份字段)、网申填表的真实填写值与历史对话,这些内容会随提问发送给你配置的大模型服务商;关闭时一切照旧——脱敏视图、四个敏感工具不下发。无论哪种模式,API 密钥等凭据与全局配置、简历照片的图片内容都不会发送给模型,助手也永远没有删除类工具。
投投悬浮球:任意页面的助手入口
「设置 → 助手与 AI 行为」里的投投悬浮球卡片控制全局助手入口,默认开启。打开后任意页面都会保留一颗浅蓝悬浮球:单击打开求职助手、双击打开投递剪贴板(悬停会有操作提示),静置后贴边收起并露出「探头张望」的姿态,支持吸附到浏览器四条边。悬浮球的层级整体提到弹层之上——页面弹出任何弹窗 / 抽屉时它仍然可点可用;双击打开的剪贴板卡片出现在球旁而不是屏幕角落;在「我的资料」编辑表单未保存时,球上方会浮出「保存资料 / 取消」按钮,不用再滚回顶部找保存。
投投剪贴板:双击悬浮球
双击投投悬浮球打开投投剪贴板,单击仍然是打开求职助手(悬停会有操作提示)。它解决的问题是「有一段内容一天要粘十遍」:把常贴的资料存成片段,需要时点一下就复制。
点「新增片段」新建;名称可以留空,留空时自动取内容前 20 字。片段能随时编辑、删除,点「复制」按保存的原文粘贴。上限是最多 50 条、名称最多 60 字、内容最多 4000 字——到顶时按钮会直接说明「片段已达上限(50 条)」或「已达 4000 字上限」,不会静默拒绝。
这些片段只存在本机浏览器(localStorage),不上传、不进数据集备份,也不参与简历生成与网申填表。
会话管理
- 支持重命名、置顶、收藏、复制分享链接、在新对话中继续、移动到分组、归档与删除(删除进回收站)。
- 导出为 Markdown,或一键存进资料箱。
- 消息带发送时间、可引用追问、可单条删除或多选批量删除。
- 首次进入有内置引导对话,帮你理解它能做什么。
26. 工作台:技能
「工作台 → 技能」用来把反复交代的偏好固定下来。一个技能由两部分组成:
- 提示词:约束助手的作答风格与角色,例如「你是严格的面试官,优先追问数字口径」。
- 知识文件(可选):随技能携带的参考内容,助手按需读取,不会一直占用上下文。限制是单文件 ≤ 200000 字符、合计 ≤ 60000 字符、最多 50 个文件。
新建、导入与启用
- 新建技能:填名称、描述、提示词,可以加知识文件。
- 导入:支持
.md单文件或.zip技能包(也可以把文件直接拖进对应区域)。 - 启用:列表里显示每个技能带几个知识文件、是启用还是停用。
- 在助手页勾选开关:同一时间启用哪些技能由你在对话页决定。
27. 模板工作台:版式
「工作台 → 版式」管的是版式:一组可叠加在任意模板上的排版参数。它不决定简历长什么样——那是模板的事;模板在制作台里选。
| 模板 | 版式 | |
|---|---|---|
| 管什么 | 简历长什么样:字体、结构、标题与色条 | 一组排版参数:强调色、正文颜色、辅助文字颜色、分隔线颜色、字号系数(0.35–1.16)、行高(1.2–2.2)、页边距(0–26mm)、区块间距(0.6–2.2) |
| 怎么来 | 内置 6 套随包提供,不能新建 | 内置 4 套,或用「自制版式」新建 |
| 用在哪 | 制作台左栏「模板」→「选择简历模板」 | 制作台左栏「版式」,或在本页管理 |
内置版式与自制版式
页面顶部是只读的内置版式标签行:标准 / 紧凑 / 舒展 / 单倍行距。它们永远可用,不会被改名或删除。
- 自制版式:「自制版式」新建一份,填名称与参数后「保存版式」;行内可编辑或删除,也能「找助手改这个模板」。
- 在哪选:自制版式与内置版式一起出现在制作台左栏的「版式」下拉里;选「跟随模板」则用模板自带的参数。
- 只改参数,不改内容:换版式不会动你写的字,也不会改变板块顺序。
- 自制模板已下线(2026-11):不再支持写 HTML、导入 HTML 或从内置复制一份再改;旧简历里已经用上的自制模板仍按原样渲染,只是不能再新建。
选择简历模板(在制作台)
制作台左栏的「模板」打开「选择简历模板」:6 套内置模板各渲染一份真实预览,可切小 / 标准 / 大字号对比,点「用这个模板」即应用。预览内容固定是内置示例——它回答的是「这个模板长什么样」,不是「你的内容长什么样」;要看自己的内容,右栏一直是实时预览。
- 模板与版式可以分开换:换模板不会丢掉你调好的版式参数,除非你主动选「采用模板默认」。
试用与对比:并排看两套模板
拿不准哪套模板更适合这份内容时,用模板一览上的「试用与对比」:选两套模板并排显示,正文与排版参数完全一致,差别只在模板本身。单张模板卡片上另有「试用模板」,只试这一套。
「预览内容」可选示例内容或我的内容。示例只回答「这个模板长什么样」,不测你的篇幅;选「我的内容」才按当前内容真实排版并测量页数,给出「按当前设置约需 N 页(上限 M 页)」,超出上限时明确提示导出会截断到上限页。还没保存过的简历测不出页数,会如实说明而不是给一个估的数。
「排版覆盖」二选一:保留当前排版覆盖——行距、颜色这类你手动调过的参数继续生效;或者采用模板默认。后者不是微调,是把整份排版参数清零(字号、行距、颜色、页边距与局部排版覆盖),所以点之前会先确认「采用模板默认会清空全部排版参数」,保存前还能撤销一次。
试用本身是只读的:退出试用不改动原来的模板与参数,只有点「用这个模板」采纳之后才写入,并留下一条历史。
让求职助手帮你做版式
工作台 → 版式有「找求职助手制作」入口(自制版式行还有「找助手改这个模板」)。跳转时会在助手页预填提问——只预填、不自动发送,你可以改完再发。助手只能新建或修改版式,不能改模板。
28. 资料箱与知识库
两个模块界面相近,分工不同:资料箱放还没成体系的零散材料,知识库放已经整理成文、愿意反复看的内容。
| 资料箱 | 知识库 | |
|---|---|---|
| 放什么 | 证书、作品、链接、笔记、实习材料、校园材料 | 面经、简历技巧、求职策略、面试问答、公司信息、行业知识 |
| 字段 | 标题、分类、正文、URL、附件、备注 | 标题、分类、标签、Markdown 正文 |
| 典型用法 | 「这张证书扫描件放哪了」 | 「这条经验我想反复看」 |
文件副本库
资料箱新增了「我的文件」页签:所有存进简历通的文件——资料箱附件、简历照片、岗位备注图、备选岗位截图、助手消息附件——都会自动留一份副本,集中在这里查看。图片与 PDF 可直接预览,其它类型可一键调用系统程序打开。副本统一保存在应用数据目录的 user_files/ 文件夹、按内容指纹去重(同一份内容只落一次盘);启动与切换数据集时后台幂等回填,随数据集切换 / 迁移自动重建(第 31 节的数据清单里也登记了这一目录)。求职助手也能查询副本清单(只读元数据,不返回文件内容)。
共同的操作
- 搜索:标题、正文或备注都能搜到。
- 分类与标签筛选。
- 点卡片看详情:右侧抽屉里显示正文全文、备注与附件清单/正文;抽屉里带「编辑」等后续动作。卡片用
role="button"而不是<button>(卡片里还有编辑/删除按钮,按钮套按钮是无效 HTML),点击时会跳过内层可交互元素——否则点「删除」会顺带打开详情。键盘 Enter / 空格同样可打开。 - 删除进回收站,可恢复。
- 助手可检索:助手能读取资料箱与知识库,也能增改知识库(新建与更新),但不能删除。
29. 回收站
22 类内容删除后都不会真的消失,而是先进回收站:岗位、备选岗位、简历记录、投递记录(求职进度与投递明细各算一类,界面同名)、事实台账、资料箱材料、助手会话、面经、内推、提醒、分享包、题库历史、复盘历史、知识库、网申填充记录、表达资产、术语表、资料方案(组)、自建板块、自定义字段与资料条目。
怎么用
- 22 类内容混排在一张表里,带类型标签与删除时间——你要找的往往是“前几天删掉的那条”,只有标题没有时间,就只能逐条点开确认。
- 可按类型筛选,并显示每类的条数。
- 恢复一键就行(安全操作,不做二次确认);彻底删除与清空都要二次确认,确认文案把后果说白:「将被永久删除,无法恢复」。
- 删除成功的提示是「已移入回收站,可在『回收站』里恢复」——若写成「已删除」,读者会以为内容已经消失,而它其实还在回收站里。
升级应用不会把你以前的数据“送进回收站”。给六张表各加一列 deleted_at 时,旧记录的新列必须是 NULL——若默认成时间戳,升级后用户所有历史数据会一次性全部出现在回收站里,看起来就像“数据全被删了”。这一条有专门的测试钉住。
30. 全局搜索
全局搜索的入口是 Ctrl / ⌘ + K(任何页面都可唤起;页头不再放放大镜,首页另有一张搜索卡),打开的是右上角浮层,覆盖 8 类内容:岗位、简历、内推、提醒、面经、事实台账、资料箱、我的资料条目。输入关键词回车即可。被隐藏或标记为私密的资料字段不会出现在结果里。
它的价值在于「不用先想这东西在哪个模块」:你记得住的往往不是标题,而是备注里或正文里的那一句话,所以只搜标题的搜索框基本等于没有。
31. 数据、备份与隐私
数据存在哪
下面这些路径在便携包 / 源码形态下位于项目目录的 backend/data/;Windows 桌面安装版统一在 %APPDATA%\ResumeForge\data(应用内显示的相对路径与这里一致)。
- 主数据库:
backend/data/resume_forge.db(SQLite),保存岗位、资料、照片、简历、台账、会话、提醒、内推等全部内容。 - 多份数据集:
backend/data/datasets/,每份数据集各占一个数据库文件。 - 投递浏览器登录态:
backend/data/browser-profile/(独立目录,应用不读取其中内容)。 - 采集原文(仅在勾选时):
backend/data/captures/。 - 文件副本库:
backend/data/user_files/,资料箱附件、照片等存入内容的镜像副本(按内容指纹去重)。 - 自动备份:
backend/data/auto-backups/(按间隔自动快照,默认保留最近 5 份,可在设置里调整;被轮转掉的旧快照先进.trash,不会直接消失)。 - 备份:
backend/data/backups/(部分修复脚本写库前会自动整体复制一份)。
导出文件的保存位置
「设置 → 数据与导出」里有一张「生成内容保存位置」卡片(只支持点选):点「选择文件夹」在本机弹出系统原生的选择对话框,选完自动保存。默认留空 = 只保存到浏览器的默认下载目录;设置后,导出简历会在下载的同时落盘一份到指定文件夹。目录不存在或不可写时,保存设置当场就会以中文说明原因。
数据集:多份数据与备份
- 新建空白数据集:从零开始一份。
- 导出:导出当前预览到的那一份。
- 导出全部数据集:列表里不止一份时出现,把当前这份加上其余每一份装进同一个包。
- 导入备份为新数据集:导入后列表里会多出一份,点「切换」把应用切过去,页面会自动重新加载。恢复出来的数据集用全新标识——沿用包里的 id 会覆盖本机早已存在的那一份,不可逆。
格式号随内容变化。当前导出的是格式 4(数据集集合);勾选带上全局模型配置是 5;再带上全局字体等资产是 6。当前应用最高读到 6,旧版本读到比自己高的格式会明确拒收(「请先升级应用再导入」),而不是安静地只恢复一部分——放行就等于让用户以为恢复成功了。
导入是逐份恢复:每份数据集单独校验、单独写入,失败的那份记入结果并单独列出,其余照常导入;只有全部子包都失败时才整体报错(此时尚未写盘)。看到「1 份失败」时,其余几份确实已经导入成功。
包内路径不可信:清单里的 file 只认 datasets/<合法 id>.db 这一种形状,指向主库成员或带 .. 的一律拒收。
哪些内容会离开本机
| 动作 | 会不会出网 | 发出去什么 |
|---|---|---|
| AI 生成简历 / 需求解读 / 匹配分析(五类结论) | 会 | 岗位 JD、资料中相关字段、台账里「已确认」的条目 |
| 写作增强四件套 / 质量检查中需模型的部分 | 会 | 你要变换的那段文本与必要的背景 |
| 求职助手对话 | 会(开启联网搜索时另加搜索请求) | 你的提问 + 你选择关联的上下文 |
| 模拟面试 / 题库 / 复盘 / 面试深挖 | 会 | 岗位与资料的相关部分、你的作答 |
| 自动采集 / 自动投递 | 会 | 招聘网站的搜索与投递请求(你本机发起的) |
| 本机资料管理 / 岗位管理 / 手写简历 / 版式渲染 / 导出 | 不会 | — |
| 照片 | 不会 | 照片不发送给模型;导出时才会写进文件 |
补充两条边界:文档识别时文档文字在本机提取,原始文件不上传、不入库;导出数据集时默认包含大模型 API Key——开关是「备份中包含全局模型配置与 API Key(所有已保存记录)」,默认勾选;取消勾选后 Key 不会随包带走。勾选时 Key 按本机存储形态随包带走,Windows 上是 DPAPI 加密形态(绑定当前用户与这台电脑,换电脑恢复解不开时按未配置处理),不会被解密成明文。默认只监听回环地址(127.0.0.1),不对外提供访问。
外发预览与模型用量
位置在设置 →「AI 模型」页的「外发与用量」。这两张卡片回答两个问题:这一次到底发出去了什么,以及一共花掉多少。
外发前预览把这一次要发的东西先列出来:目标服务、资料类别、附件类型、已排除字段、会不会抓取网页正文,以及将要发送的正文本身(带字数)。正文过长时这里只显示前一部分,但发出去的是完整内容。预览只在本次打开期间保留,不写入本地存储,也不写日志;检测到疑似密钥内容时会先要求你移除(「请先移除密钥再发送」),确认之后才真正外发。
模型用量只统计调用次数与 token,不保存提示词或正文——它是一本账,不是调用日志。可以按任务(简历生成、简历修订、岗位解读、求职助手……)、按模型、按数据集分别看;每条明细带耗时、重试次数与结束原因(正常结束 / 达到长度上限 / 用户取消 / 调用失败 / 预算耗尽 / 工具调用)。两条口径要记住:token 取不到就显示未知,不写成 0;没配置单价就不估算费用,而不是按 0 元算。费用估算只用来感知成本,实际账单以服务商为准(见第 2 节的「用量与费用估算」)。
32. 升级与回滚
在设置里检查更新(Windows)
Windows 上可以在「设置」里检查新版本:有更新时显示新版本号,可以查看下载进度,也可以选后台下载(下载期间照常使用应用)。下载完成后点「重启并安装」,更新器会原地覆盖程序文件并自动重启。
整个更新过程会保留程序文件与你的数据目录(data/、.env、runtime/),并在覆盖程序文件之前先做一份完整整包快照(数据库 + 附件 + 字体 + 全局模型配置,校验可恢复后才继续)。普通的版本更新不会让岗位、简历、对话和设置丢掉。macOS 目前走手动流程:下载新版压缩包后,用项目目录里的 update.command 替换程序文件。
从 1.x 升到 2.0 是有意为之的例外。2.0 以全新资料库为起点:首次启动会把旧库整包归档到 backend/data/legacy-archive/<时间戳>/(含库文件、数据集与一份 ARCHIVE-README.txt),校验归档可读后才移走旧库并新建空库。旧数据没有被删除,但不会自动搬进 2.0,新库里从空白开始。需要旧数据时请用 1.0.2 打开归档包。
从 1.x 到 2.0:整包归档 + 全新库
-
先做一次 1.x 备份
在 1.0.2 里「设置 → 数据 → 导出全部数据集」,把备份包与
legacy-archive/一起留好。2.0 不导入 1.x 的备份包,它需要 1.0.2 打开。 -
启动 2.0
启动闸门读到旧的库形态后自动归档、校验、建空库并迁移。任何一步失败都会中止启动,原库原样保留(不移动、不建库),不会出现“升级到一半数据没了”。
-
要回退时
用 1.0.2 打开归档目录里的库文件,或从第 1 步的备份包恢复。2.0 自己导出的备份包可以正常导入 2.0,但会被 1.0.2 以“来自更新版本”拒收——这是方向正确的一次拒绝。
用更新脚本更新
Windows 在项目目录下运行 update.cmd、macOS 运行 update.command:它会拉取新版本并只替换程序文件,data/、.env、runtime/、虚拟环境与前端依赖目录全部保留。2.0 之后的结构变化由启动时的基线迁移处理;1.x 导出的备份包 2.0 不导入,需要在 1.0.2 里打开。macOS 建议先双击 stop.command 停掉服务再更新。
用 Git 更新
git pull
# 依赖有变化时
cd backend && .venv\Scripts\python.exe -m pip install -r requirements.txt
cd frontend && npm install
回滚要留意
- 回滚程序文件不会自动回滚数据库结构。如果新版本跑过迁移、往库里加了表或列,退回旧版本后这些表列仍在——通常无害(旧版本不认),但不会自动消失。
- 反过来的情况更要小心:新格式的备份包在旧版本里会被明确拒收,而不是只恢复一部分。看到「请先升级应用再导入」,就说明包里带了旧版本读不懂的内容。
- 升级前把「导出全部数据集」做一次,是最省事的保险。
卸载
运行 uninstall.cmd。默认保留数据(data/ 与 .env),需要一并删除时按提示确认。
33. 常见问题排查
不会用 GitHub、下载慢、不知道下哪个文件
把链接或压缩包交给 AI 就行:把你看到的仓库链接、或者已经下好的 zip,发给任意一个 AI 助手(ChatGPT、DeepSeek、豆包、Claude 等都行),让它一步一步教你怎么下载、怎么解压、双击哪个文件开始用。
不用自己研究 Release 页面里哪个才是安装包——直接问它「这里哪个是我要下载的」也可以。三步上手里也有同一段说明。
macOS 提示「无法打开,因为 Apple 无法检查它是否包含恶意软件」
这是系统的下载隔离机制,不是程序有问题。在 Finder 里右键点 start.command → 选「打开」,再在弹窗里点一次「打开」即可,只需做一次;或者在终端里进入项目目录执行一次 xattr -dr com.apple.quarantine .。完整说明见 第 1 节。
macOS 上双击 start.command 完全没反应
某些解压工具会把可执行位丢掉。在「终端」里进入项目目录后执行 bash start.command,效果与双击完全相同。
点「检查更新」报 GitHub 返回了 HTTP 403
403 通常不是仓库的问题,而是 GitHub 对匿名接口调用的限流(每个 IP 每小时 60 次),
或者你所在的网络里有人拦了 api.github.com——两种情况下,从应用里都看不出区别。
v0.12.0 起这条路有了兜底:主接口失败时会自动改用备用方式读取最新版本号(请求发布页的跳转地址, 不经过 API 域名),所以大多数情况下你仍会看到「已是最新版本」或「检测到新版本」, 而不是一句错误。备用方式拿不到更新说明与安装包地址,因此这种情况会提示你到 Releases 页面手动下载。
如果两条路都失败,信息里会分别说明两边的原因,并提示稍后再点一次(限流通常是按小时恢复的)。
双击 start.cmd 后一直打不开页面
看启动器窗口最后几行提示。常见原因:首次安装的依赖还没装完(首次通常几分钟);端口被占用(换 -BackendPort 8010);网络被拦导致依赖装不上(提示里会给国内镜像命令)。手动访问 http://127.0.0.1:8005/api/health,能看到 {"status":"ok"} 说明后端正常,问题在前端。
提示 Python 版本不支持
Python 3.14 暂不支持。用一键启动器的话它会自动准备一个 3.12,无需你手动处理;手动启动时请用 3.11–3.13(推荐 3.12)建虚拟环境。
自定义模型连接失败
按顺序检查:Base URL 是否与协议匹配(Claude 原生协议要用 https://api.anthropic.com,走 OpenAI 兼容层则带 /v1);模型名是否在「获取可用模型」的列表里;API Key 是否有效;代理是否拦截。设置变更后记得点「测试连接」,界面会回显服务端返回的原始错误,比“失败”两个字有用得多。
提示「当前模型不支持图片输入」
你选用的模型不具备多模态能力。换成支持图片的模型,或把截图里的文字手动敲进文本框——后者用本地规则也能解析出部分字段。
上传图片提示「内容与扩展名不符」
文件本身既不是图片、扩展名也不像图片,应用拒绝了这次识别请求。确认文件是否损坏,或改用正确的文件。
上传的文档没有被识别出内容
多半是扫描版 PDF(整页都是图片,没有文字层)。这种情况本机提取不到文字,请改为贴图识别,或先在别处做一次 OCR。
识别后的字段不准确
识别是“草稿”不是“结果”。日期、数字、公司全称这几类字段请逐条核对,尤其是从长图或复杂排版里识别的。
AI 功能提示未配置或输出中断
未配置:去「设置 → AI 模型」填配置并测试连接。输出中断:多数是网络或服务商的限流,可以重试;生成任务支持取消后重来,不会留下半成品简历。
生成简历时关掉弹窗,任务会中断吗
没有。生成是后台任务,关掉弹窗会继续跑,完成后弹通知并打开预览。想确认进度可以看「简历中心」里该条目下的生成任务状态。
导出被拦下,说正文里有【待补】标记
这是设计而非故障。回去补完占位符,或在弹窗里选「仍要导出草稿」。标记只有这四种写法会被拦:【待补…】【待确认】【待补充】【待核实】——正文里正常出现的“待补充说明”之类不会被误伤。
浏览器打印的页数和屏幕上不一样
屏幕上的多页是按 A4 高度切分的近似分页,浏览器打印是权威结果。浏览器不向 JS 暴露真实打印页数,应用内算不出来,所以只能如实说明这个差别。要完全一致,用「导出 PDF」(服务端生成)而不是浏览器打印。
自动采集没采到东西
看「采集记录」里那一次的失败原因。常见:关键词太窄或城市选错;站点筛选条件核验未通过(界面上会单独提示「未能生效」);需要登录(去投递浏览器里登录一次)。采集结果也会进「本次采集结果」,别忘了去那里勾选导入。
自动投递一直失败
看投递记录里每条的失败分类。需要登录 / 验证码的,去投递浏览器里人工处理一次;选择器失效说明站点改版,需要等适配更新;来源不支持的,把投递链接改成该岗位在招聘网站上的地址。
「关闭浏览器」点了但窗口还开着
那个浏览器不是本次运行拉起的,应用只会关自己持有的句柄,绝不按 PID 猜进程(免得误关你自己的浏览器)。直接关掉那个窗口即可。
打开后数据像是空的
多半是不小心切到了另一份数据集。「设置 → 数据与导出」里标着「当前」的那一份才是正在使用的。切回去即可。
求职统计里的图是空的
图上是空态说明而不是零轴,这是诚实口径:没有可画的数据时不画一张全是 0 的图。看页面上的提示,它一般会说明是哪几个字段没填(最常见是投递日期)。
助手回答里有些地方说"不知道"
这是它的行为准则要求的结果:不知道就说不知道,而不是编一个。如果你觉得它该知道,检查一下相关内容是否已经录进系统(换一种问法、或明确让它去查某个模块试试)。
34. 界面细节与快捷键
键盘
| 按键 | 作用 |
|---|---|
| Ctrl + V | 在识别区粘贴截图 |
| Enter / 空格 | 在列表卡片上打开详情抽屉(可点击卡片有焦点描边) |
| 右键 | 投递队列行的操作菜单(编辑 / 移出队列) |
到处都一样的几处细节
- 日期字段都是日历点选(投递日期、发布日期、核实日期、内推提交日期等),不用手敲格式。
- 列表与卡片点一下就能看详情:内推、资料箱、面经、提醒、知识库、投递队列、投递记录统一用同一种抽屉,排版与关闭方式一致。
- 含义不自明的标签都有悬停说明(美化档位、来源标记、状态标签等)。
- 滚动条统一样式:只调外观、不动尺寸语义——滚动条仍按需出现,不会因为样式而消失(那会让「这里能不能滚」变得无法判断)。
- 应用内通知:批次完成、保存成功等会以通知形式给出,并说明下一步去哪。
- 侧栏顺序即真实使用顺序:首页 → 岗位广场 → 简历中心 → 投递台 → 网申填表 → 求职进度 → 模拟面试 → 求职助手 → 设置。不加分组标题——侧栏只有 200px 宽,加标题会把菜单挤成两屏。侧栏左下角只有「使用指南」;GitHub 仓库入口在页头右上角,与「退出」并排,点它直接打开项目仓库。
- 左侧导航可以手动收起,把宽度让给正文,收起状态会被记住;界面支持中英文切换(设置 → 外观与交互 → 语言),英文界面下枚举值与后端下发的标签也走同一套翻译。
- 弹窗一个皮肤:全站弹窗垂直居中、统一圆角 / 阴影 / 内距,长内容改为弹窗内部滚动,底部不再抵住屏幕下缘。
- 加载动效两套组件:块状内容用骨架屏、局部用统一的加载块,全站一个观感。
- 输入框不再显示「0/4000」计数:达到上限时以一行红字提示「已达 N 字上限」,平时界面更干净。
批量选择与批量删除
要一次清掉一串条目时,不必逐条点。简历中心、岗位广场、备选岗位、助手会话与消息、历史面试、深挖历史、历史题库、日历提醒、网申填充记录、回收站这些列表,条目右键菜单里都有「批量选择」;进入勾选模式后选好多条,再统一二次确认删除。助手消息也一样:右键任意一条消息就能进批量选择,勾好后点「删除所选」。
删除统一进回收站,都能恢复——所以二次确认问的是「这几条要不要移走」,而不是「要不要永久抹掉」。回收站的右键菜单还多两项:恢复与彻底删除,后者才是不可逆的那一个(见 29 节)。
勾选只是一个临时状态,点「退出选择」就回到普通列表;列表本身的行内操作与平时完全一样。
开发与排错相关
- 本地
npm run dev时按住 Alt + Shift 点击页面元素,会自动在 VS Code 里定位到对应源码行(仅开发环境生效)。 - 截图与动图都是脚本从真实运行的实例采集的,脚本在官网仓库的
tools/下:seed_demo_full.py(造演示数据)、capture_shots.py(采集)、build_images.py(生成部署图片)。
还没解决?
文档没覆盖到的问题,欢迎到 GitHub 提 Issue。仓库里还有更偏技术的文档:架构设计、提示词清单、升级与数据安全说明。