简历结构架构师(resume-structure-architect)
Adapted from reactive-resume/reactive-resume by reactive-resume (MIT),docs/guides/json-resume-schema.mdx 与 packages/schema/src/resume/(JSON Resume 开放字段模型,reactive-resume 是其领先开源实现,主张"隐私优先、可移植、免费")。本版剥离其应用 / 模板 / 渲染专有概念,重写为任何 Agent 平台通用的中文简历结构纪律,并附一个纯标准库自检脚本 scripts/resume_lint.py(零依赖、无需密钥)。
何时使用
- 帮用户从零写一份简历,或把零散经历整理成结构化简历数据;
- 审阅 / 重构一份已有简历,补齐缺失板块、剔除 ATS 不友好写法;
- 生成可供程序消费的简历 JSON(字段命名统一、可被解析器读取)。
跳过:纯视觉排版、模板美术设计、配色与字体——那是渲染层的事,不在本技能范围内。
核心模型:两段 + 十二板块
一份简历由 基础信息(basics) + 概述(summary) + 板块(sections) 组成。板块是带显示设置与条目列表的字典,标准类型为:
| 板块 | 内容 | 关键字段 |
|---|---|---|
basics |
姓名、头衔 headline、邮箱、电话、地点、网站、自定义字段 | name(必填)、headline、email、phone、location、url |
summary |
一句话到一段的专业概述(HTML / 纯文本) | content |
profiles |
社交 / 主页链接 | network、url、username |
experience |
工作履历 | company、position、location、period/dates、website、description |
education |
教育背景 | institution、studyType、area、score、date/dates |
projects |
项目 | name、description、url、date/dates |
skills |
技能 | name、level、keywords |
languages |
语言 | language、fluency |
interests |
兴趣 | name、keywords |
awards |
奖项 | title、awarder、date/date |
certifications |
证书 | name、issuer、date/date |
publications |
发表 | name、publisher、date/date |
volunteer |
志愿 | organization、position、date/dates |
references |
推荐人 | name、reference |
> dated 条目用 dates 对象(start / end / present)表达;period 文本仍导出但应由 dates 派生,避免两处不一致。
排序规则(ATS 友好)
ATS 自上而下解析,最相关的内容应最靠前:
1. basics → summary 永远在最前(定位与关键词入口)。
2. 主体板块顺序按"与目标岗位的相关度"降序:通常 experience 优先于 education(资深者),应届生可把 education 提前。
3. 每条目内部按时间倒序(最近最先),present: true 显式标注在职。
4. skills / languages 放中后段;interests / references 放末尾。
5. 自定义板块(customSections)只在标准板块装不下时才加,且命名要机器可读。
字段纪律
- 姓名必填且真实:
basics.name缺失 = 致命错误(自检脚本会报)。 - 日期双写要一致:优先维护
dates,period由其派生,不要手改两处。 - 描述写结果不写职责:
description用动词开头 + 量化结果,避免"负责……"式罗列。 - 技能带 level 与 keywords:
skills[].level用通用档位(e.g. 入门 / 熟练 / 精通),keywords补同义词以命中解析器。 - 链接用裸 URL:
url/website给完整可点地址,不要"见附件"。
隐私优先原则(reactive-resume 主张)
- 默认不给出生日期、身份证号、家庭住址、婚姻状况等解析器不需要也不该要的字段。
- 照片非必须;若岗位不要求,省略
picture以避免偏见与解析噪声。 - 数据留在本地 / 用户掌控,不向第三方投递简历内容。
常见坑
| 坑 | 后果 | 修正 |
|---|---|---|
| 表格 / 文本框 / 分栏排版 | ATS 读成乱序碎片 | 单栏线性结构 + 标准字段 |
| 只写职责不写结果 | 无差异化 | 动词 + 量化 |
| 日期两处不一致 | 可信度受损 | 维护 dates,派生 period |
| 自定义板块命名随意 | 无法归类 | 用标准类型或机器可读名 |
| 塞敏感隐私字段 | 偏见 / 泄露 | 仅留岗位必需 |
自检脚本(可选)
scripts/resume_lint.py 按上述字段模型校验简历 JSON:必填项、已知板块类型、条目字段完整性、推荐板块是否缺失。
python scripts/resume_lint.py resume.json # 文本报告
python scripts/resume_lint.py resume.json --json # JSON 报告
退出码:0=干净,1=有警告,2=有错误。详见脚本 --help。
输出格式
产出简历时,优先给出结构化 JSON(字段命名遵循上表),再附一段人读摘要;不要先给排版稿。结构化数据可被 resume_lint.py 自检、可被任何渲染器消费。