首页
/ career-ops 的候选人侧写作启发式:从风险图到六秒清晰度门控的简历与申请写作规范

career-ops 的候选人侧写作启发式:从风险图到六秒清晰度门控的简历与申请写作规范

2026-09-06 13:51:28作者:曹令琨Iris

在 career-ops 这套开源 AI 求职工作流中,modes/heuristics/recruiter-side.md 是所有"候选人面向文档"(CV 摘要、项目要点、求职信、申请表答案、LinkedIn 消息、招聘官话术、面试准备)共享的写作启发式核心:它要求生成任何面向招聘者的内容前,先建立一张招聘官视角的"风险图",再用"六秒清晰度门控"和"商业价值要点公式"组织内容,最后用"ATS 现实检查"守住可解析性底线。读完本文,你将掌握这套启发式在 pdfapplyinterview-prep 等模式中的实际加载路径与调用时机,并能把它移植到你自己的简历写作流程中。

一、文件定位:非路由模式的共享启发式

在 career-ops 的 modes/ 目录中,绝大多数文件都是"一个文件一个模式"(如 pdf.mdapply.md),由 AI 编码 CLI 读取后执行。而 modes/heuristics/ 子目录是例外——它存放的是被其他模式加载的共享写作启发式,本身不是可路由模式。这一点可以从源码结构中得到确认:modes/README.md 的子目录表中明确写道:

heuristics/ — Shared candidate-facing writing heuristics loaded by other modes — recruiter-side.md governs PDF summaries, bullets, cover letters, form answers, and outreach

modes/pdf/hm-audit.md 也用一个类比说明了它的加载方式:heuristics/recruiter-side.md 是通过加载它的模式(如 pdf)被"间接到达"的,而不是有独立模式名。它没有出现在路由表中,没有独立的模式名——这是设计意图,而非遗漏。

在数据契约层面,test-all.mjs 的系统文件清单中把 modes/heuristics/recruiter-side.md 列为必须存在的系统文件之一(第 1676 行),与 modes/pdf.mdmodes/scan.md 等核心模式并列,意味着它是系统完整性校验的一部分——缺失会导致 test-all.mjs 的 data contract 校验失败。

适用范围与边界

文档开篇即划定适用边界,这是整套启发式最重要的前提:

  • 适用:所有候选人面向的产出——PDF 摘要、要点(bullets)、求职信、表单答案、LinkedIn 消息、招聘官话术、面试准备;
  • 不适用:内部评估报告(career-ops 的 A–H 评估块、评分与分析),除非某个模式显式要求分析。

这个边界与 modes/_writing.md 的"Professional Writing & ATS Compatibility"一节互相印证:该节同样声明规则只作用于"最终进入候选人面向文档的全部生成文本",并直接指引用户去读 modes/heuristics/recruiter-side.md 获取风险映射、六秒清晰度、商业价值要点与 ATS 现实检查的完整规则。modes/ja/_shared.md(日文模式共享上下文)也镜像了同样的指引,说明该启发式是跨语言模式共享的单一事实来源。

二、招聘官侧风险图(Recruiter-Side Risk Map)

核心机制

在生成任何 CV、求职信、表单答案、招聘官话术或面试准备之前,先建立一张内部风险图,其结构是一个三列表格:

潜在疑虑(Potential doubt) CV/报告中的证据(Evidence) 候选人侧的修复方式(Candidate-facing fix)
他们能用这套技术栈吗? 匹配的工具、系统、项目 在真实语境中放入精确的技术栈
他们够资深吗? 所有权、范围、权衡、带人 以资深行为打头,而非仅凭年限
领域相关吗? 相似用户、工作流、规模、约束 把相邻证明翻译成 JD 的语言
有物流阻塞吗? 地点、薪资、工作许可、可入职时间 仅在表单/招聘官问到时才回答
申请是通用的吗? 薄弱或宽泛的要点 围绕该岗位的具体问题重写

文档对此有三条硬性约束:

  1. 用图来降低审阅风险,而非展示图本身——"除非模式输出显式要求分析,否则不要打印它"。风险图是内部工作产物;
  2. 绝不编造证据来闭合疑虑。当 CV 中确实没有对应证据时,风险图只是暴露问题的工具,而不是要求 Agent 硬编出"证据";
  3. 修复动作必须与具体文档部分挂钩(pdf 模式 Step 9 要求明确"which document section should address each doubt")。

在各模式中的实际调用

风险图是 career-ops 多条流水线之间的共享推理结构,仓库中可以看到至少四处加载点:

  • modes/pdf.md Step 9:生成定制 CV 前,"Build an internal recruiter-side risk map from the JD using modes/heuristics/recruiter-side.md: likely doubts, matching evidence, and which document section should address each doubt"。随后 Step 12 要求"按 JD 相关性和按风险图重排经历要点:最强匹配证据放最前"。也就是说,风险图不只是检查表,它直接驱动了 CV 内容的排序;
  • modes/apply.md Step 7:为申请表每个问题生成答案时,用风险图"识别该问题想解决什么疑虑(动机、技术栈匹配、物流、薪资、工作许可、可入职时间、资深度),并直接回答那个疑虑"。这把风险图从"文档维度"推广到了"逐题维度"——每道表单题背后都对应招聘官的一个疑虑;
  • modes/interview-prep.md 输入 6:面试准备的输入之一是"评估/PDF/申请流程中已有的招聘官侧风险图",并说明要"使用 modes/heuristics/recruiter-side.md 中的风险类别来确认面试流程必须解决的风险"。其 Step 4 的 hiring-manager 受众包进一步要求"Risk map closure——确保评估中最可能的疑虑用具体证据而非热情来回答";
  • 日文模式 modes/ja/oubo.md:本地化的 apply 模式同样在第 6 步引用该文件,说明风险图规则随模式翻译一并继承。

从源码结构看,这个设计形成了一个贯穿"评估 → CV → 申请 → 面试"的风险一致性链:同一条疑虑(例如"领域是否相关")在 CV 中被翻译为 JD 语言的要点、在申请表中被逐题回答、在面试准备中成为必须闭合的证明点,避免候选人在不同材料中给出互相矛盾的"修复方式"。

三、六秒清晰度门控(Six-Second Clarity Gate)

规则本体

对每一份 CV/PDF 和求职信,页面顶部三分之一必须让目标岗位的匹配度"不可能被错过",具体包含五个要素:

  1. 目标岗位/原型(target role/archetype);
  2. 最强匹配的技术栈或领域;
  3. 一个生产环境或业务结果(one production or business outcome);
  4. 地点/远程匹配度——仅当对该文档合适时;
  5. 可用的作品集/案例研究链接(如相关)。

判定标准是反证式的:"如果一个招聘官必须从散落的要点中推断匹配度,就重写摘要和第一段经历要点。"——即门控不通过的唯一信号是"需要推断",通过的标准是"不需要推断"。

在 pdf 模式中的落地位置

modes/pdf.md 把该门控作为定制流程中的两道独立工序:

  • Step 9:先建风险图(上文已述);
  • Step 15:定制完成后执行"Apply the six-second clarity gate: top third must make target role, strongest fit, and proof obvious"。

它与 pdf 模式的"Section order (optimized '6-second recruiter scan')"设计相互呼应:该模式规定的版面顺序(大字号头部 → 3–4 行关键词密集摘要 → 核心能力网格 → 工作经历 → 项目 → 教育/认证 → 技能)本身就是为"六秒扫描"服务的排版——门控管"内容够不够直白",版面顺序管"直白内容出现在第几秒"。

与 Markdown 加粗语法的协同

modes/pdf.md 的 "Markdown bold" 一节给出了一个具体的协同点:在 JSON 渲染载荷的 bullets 中用 **…** 包裹量化结果,"typically the quantified result a recruiter should catch in the six-second scan",例如:

"bullets": ["Cut p99 latency from 840 ms to **120 ms** across 14 services"]

modes/latex.md 对 LaTeX 侧的加粗也用了同样的表述("the quantified result a recruiter should catch in the six-second scan")。同时两份文档都强调一条与风险图同源的原则:加粗只重排注意力,不增加声明——加粗文本与其余要点适用同一套"禁止编造"规则,且"加粗每句等于没加粗"。可以推断,"六秒清晰度"在 career-ops 中不仅是一条写作规则,还是一条贯穿 HTML 与 LaTeX 两条渲染管线的排版语义。

四、商业价值要点公式(Business-Value Bullets)

优选句式

文档给出的核心公式是:

Action + system/scope + tool/approach + outcome + proof

即每个要点由五段构成:动作 + 系统/范围 + 工具/方法 + 结果 + 证据。在此之上给出四种可复用模板:

  • Resolved [problem] in [system], improving [business/system effect].
  • Built [capability] with [tools], enabling [user/team outcome].
  • Migrated [old] to [new], reducing [risk/cost/latency/debt].
  • Improved [metric] from [before] to [after] by [technical action].

注意第四条模板的隐含要求:必须有 before/after 两个数字,且技术动作要能解释这个数字变化——这与风险图中"最强匹配证据"的诉求一致。

弱开头黑名单

当更强的所有权表述成立时,避免以下弱开头:

  • "helped"(帮助)
  • "assisted"(协助)
  • "responsible for"(负责)
  • "worked on"(参与了)
  • "participated in"(参加了)

该黑名单与 modes/_writing.md 的"避免陈词滥调"列表形成两层防线:_writing.md 管词汇层面的 AI 味("leveraged"、"spearheaded"、"passionate about" 等),recruiter-side.md 管句式层面的所有权弱化。两者的关系在 modes/_writing.md 中有明确说明:若存在用户层的 voice-dna.md,其禁用词表是更完整的权威版本并优先适用;_writing.md 内置列表只是没有该文件时的兜底。

五、ATS 现实检查(ATS Reality Check)

规则清单

文档的立场一句话概括:为可解析性和人工审阅优化,而不是为"ATS 技巧"优化(Optimize for parseability and human review, not "ATS hacks")。具体六条:

  1. 精确的 JD 关键词只出现在真实语境中(exact JD keywords only in truthful context);
  2. 无隐藏文本;
  3. 无关键词堆砌;
  4. 无白字(white-font)技巧;
  5. 无破坏解析的装饰性版面;
  6. 不写用户事实来源中不存在的技能或指标。

第 6 条是全部条款中最强的一条,它与整个仓库的"事实门"(fact gate)机制对齐:modes/pdf.md Step 19 规定 PDF 渲染前必须通过 node verify-cv-facts.mjs {html-path} 这一硬门控,"若失败,停止并修正生成的 HTML——删除编造的指标,或把已验证证据补进 cv.mdarticle-digest.mdconfig/cv-facts.json"。ATS 现实检查是"内容层"的诚实约束,verify-cv-facts.mjs 是"执行层"的硬校验。

源码印证:verify-ats.mjs 的确定性结构检查

仓库提供了一个与这套规则直接对应的确定性工具 verify-ats.mjs。它的文件头注释自我定位为 verify-cv-facts.mjs 的"孪生":后者守护 CV"声称了什么",前者守护"ATS 能否解析它"——无 LLM、无网络、无写入,读取一份 CV HTML,输出 0–100 结构分、字母等级和具体可修复问题列表。其权重表把"ATS 现实检查"翻译成了可审计的打分维度:

const WEIGHTS = {
  text: 15,        // 存在真实可选文本(非图片/栅格化)
  sections: 20,    // 标准、可识别的章节标题
  contact: 15,     // 正文中可达的邮箱(+电话)
  layout: 20,      // 单栏,无布局表格/多栏 CSS
  images: 10,      // 无烘焙进图片的 CV 文本
  fonts: 10,       // 标准、可嵌入字体
  charset: 5,      // 声明 UTF-8
  hidden: 5,       // 无隐藏文本/关键词堆砌
};

其中 hidden: 5 权重直接对应"无隐藏文本/无关键词堆砌"条款,layout: 20 对应"无破坏解析的装饰性版面"。用法与退出码语义如下:

node verify-ats.mjs output/cv-{candidate}-{company}.html
node verify-ats.mjs <cv.html> --keywords "python,kubernetes,rag"
node verify-ats.mjs <cv.html> --min-score 80 --json

退出码 0 表示结构分不低于 --min-score(默认 70)且无 critical 问题;关键词覆盖率只报告、从不改变结构分(advisory)。modes/pdf.md 明确区分了它的角色:"deterministic, read-only, and advisory——报告 0–100 分与具体问题,但从不阻断生成(不像 Step 18 的 verify-cv-facts.mjs 事实门)"。另外 modes/ats.md 是与之配套的模式文档,提供了完整的使用说明。

从源码结构看,verify-ats.mjsATS_SAFE_FONTS 白名单还内置了模板随附的 CJK/阿拉伯文回退字体(如 Noto Sans CJK、PingFang SC),确保"真实的多语言 CV 永不被惩罚"——这与 career-ops 多语言 CV 模板(如 templates/cv-template.zh-minimal.html)的设计目标一致。

六、四块内容的协作关系与整体调用链

把文档的四块内容放回 career-ops 的流水线中,可以整理出一条完整的调用链:

JD 输入
  └─ Step 9:  建风险图(五类疑虑 × 证据 × 修复方式)   ← recruiter-side.md
       └─ 要点重写: 商业价值公式 + 弱开头黑名单          ← recruiter-side.md
            └─ 关键词注入: 仅真实语境(NEVER invent)     ← recruiter-side.md
                 └─ Step 15: 六秒清晰度门控(顶部 1/3)    ← recruiter-side.md
                      └─ Step 19: verify-cv-facts.mjs 事实门(硬阻断)
                           └─ verify-ats.mjs 结构检查(advisory,0–100)
                                └─ generate-pdf.mjs 渲染(含 Unicode 归一化)

几点值得注意的分工:

  • 风险图决定"写什么、放哪里":它是唯一与 JD 深度耦合的构件,负责把 JD 的隐性疑虑显式化;
  • 六秒门控决定"是否合格":它是一个反证式验收标准,不合格就回退重写摘要与首段要点;
  • 商业价值公式决定"怎么写":它约束每个要点的句法结构;
  • ATS 现实检查决定"怎么活":它守住解析性与诚实性的底线,由 verify-cv-facts.mjs(硬门)与 verify-ats.mjs(咨询分)两道代码关卡执行。

modes/pdf.md 的 "Recruiter Review Gates" 一节可以视为这套启发式的验收口径摘要:"摘要应回答'这个人瞄准什么岗位,为什么是这一家';首屏应呈现 1–2 个映射到 JD 最高风险要求的证明点;要点强调结果、系统、用户或业务影响,而非任务清单;地点、工作许可、薪资、可入职时间等物流信息只在市场和画像合适时才进 CV,否则放到表单答案或招聘官话术里"——这与风险图中"物流阻塞只在被问到时回答"一列完全对应。

七、可复用的要点

如果你要把这套启发式移植到自己的 AI 求职工作流,仓库给出的最小可复制单元是:

  1. 风险图表格:五个标准疑虑类别(技术栈、资深度、领域、物流、通用感)×(证据、修复方式),生成任何面向招聘者的材料前先在内部建立,默认不打印;
  2. 五要素门控:顶部三分之一必须自含目标岗位、最强匹配栈、一个生产/业务结果、(酌情)地点匹配、(酌情)作品集链接;"需要推断即重写"是唯一的判定逻辑;
  3. 要点公式Action + system/scope + tool/approach + outcome + proof,配合弱开头黑名单(helped / assisted / responsible for / worked on / participated in);
  4. ATS 六条禁令:关键词仅在真实语境、无隐藏文本、无堆砌、无白字、无破坏性版面、无事实来源之外的技能与指标;
  5. 两道可执行关卡:硬性事实门(生成即阻断)+ 确定性结构分(只报告不阻断),二者职责分离——前者管"没编造",后者管"能解析"。

需要说明的适用前提:这套启发式定义于 Markdown 提示文件层,由 career-ops 的 AI 编码 CLI(Claude Code、Codex、OpenCode 等)在执行 pdfapplyinterview-prepcover 等模式时读取生效;它本身不包含可独立运行的代码,其"代码化"程度体现在 verify-ats.mjsverify-cv-facts.mjs 两道校验脚本,以及 test-all.mjs 对该文件存在性的契约校验上。所有路径均相对于仓库根目录,可在当前仓库中直接查证。

登录后查看全文
热门项目推荐
相关项目推荐