ARTICLE DETAIL

资讯详情

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

career-ops `_brief.template.md` 深度解析:为 Triage 首筛设计约 2K Token 的紧凑画像简报

career-ops `_brief.template.md` 深度解析:为 Triage 首筛设计约 2K Token 的紧凑画像简报 career-ops_brief.template.md深度解析为 Triage 首筛设计约 2K Token 的紧凑画像简报【免费下载链接】career-opsOpen-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)项目地址: https://gitcode.com/GitHub_Trending/ca/career-ops本文围绕 career-ops 仓库中的模板文件modes/_brief.template.md展开讲清它在两轮评估two-pass triage体系中的角色它是一份被自动复制为modes/_brief.md的紧凑候选人画像让 triage 首筛 Agent 只需一次约 1.5–2K token 的读取就能替代cv.md _shared.md _profile.md profile.yml oferta.md数万个 token 的完整上下文完成每个岗位的 go/no-go 预判。读完本文你将理解模板中每个字段如何被modes/triage.md的消费逻辑逐一对应使用、triage_threshold等配置项的默认值与生效位置以及doctor.mjs如何自动拷贝模板并检测未个性化状态。1. 为什么需要一份紧凑简报两轮评估的 token 经济学career-ops 的完整评估A–G 报告需要读取整套评估上下文cv.md、config/profile.yml、modes/_shared.md、modes/_profile.md、modes/oferta.md。按 modes/triage.md 的说明这costs tens of thousands of tokens而 triage 首筛只需要回答一个问题这个岗位值不值得做完整评估为此项目设计了 modes/_brief.template.md文件头注释明确了三点定位归属层它是 USER LAYER 文件——复制为modes/_brief.md后never auto-updated bynode update-system.mjsDATA_CONTRACT.md 的数据契约也将其列为用户层Your compact profile brief (~1.5–2K tokens) read by the two-pass triage first pass模板本体则属于系统层可随版本更新。创建方式doctor.mjs首次运行时自动从模板拷贝用户只需填充占位符。写作纪律KEEP IT SHORT. Every line here is read once per role during a batch triage.——简报中的每一行都会在批量首筛中被逐岗位读取一次所以只保留能改变 go/no-go 决策的信息原型archetypes、薪酬底线comp floor、地点政策location policy、硬性淘汰项hard disqualifiers和最强证明点proof points深度叙事、谈判脚本、STAR 故事留在_profile.md/cv.md中。这正是信息按消费路径分层的设计triage 首筛读小文件完整评估才读全量上下文。config/profile.example.yml 的注释称在混合批量的批次上这条 gate cuts total tokens by roughly half。2. 模板的九个字段每一节对应 triage 的一步消费模板共 89 行结构固定、全部为占位符用户复制到modes/_brief.md后填充。以下逐节说明其设计意图以及 modes/triage.md 如何消费它。2.1 Identity一行身份一行写完级别、领域、年限、地点/时区、工作许可约束。模板给出的示例是 Senior Backend Engineer — 10 yrs. Remote (ET). US citizen, no sponsorship.。这行给 triage 提供全局锚点尤其工作许可约束常是硬淘汰项的来源见 2.6。2.2 Target Archetypes目标原型表这是简报中权重最高的部分。模板提供一张三列表格#ArchetypeWhat they buy (your proof)1{Archetype name}{the capability/experience that makes you a fit}2{Archetype name}{...}3{Archetype name}{...}并给定了评分语义直接命中 4–5 分邻近头衔 3 分不匹配 1–2 分。modes/triage.md 的 Archetype fit (weight 30%) 维度直接复用这套语义。模板还有一段可选注释可列出analogue原型——技能相同但头衔不同的岗位——List them so triage recognizes them as valid targets instead of scoring them as misses防止同技能异头衔的岗位被误判为不匹配。2.3 Proof Points可量化的证明点要求写最强、可量化的成就格式为{Accomplishment — metric, scope, impact}。triage 的 CV match estimate (weight 15%) 维度就是拿这些证明点与 JD 要求做映射计数Triage checks how many map to a JD——强重叠 4–5部分 3无匹配 1–2。注意模板刻意要求exact metrics因为首筛不做深度阅读只能靠数字做模式匹配。2.4 Comp Strategy薪酬策略与硬底线模板要求一张双行表目标薪酬 达成条件例如低强度高远程对应一个档位、可接受高强度对应更高档位然后给出一条硬底线Hard floor: {$X}. Below that, FAIL regardless of other signals.。这对应 triage 的 Comp (weight 25%) 维度优先用 JD 公布的薪酬区间没有就按头衔/公司/地点估算判断是否越过简报中的门槛。低于底线即 FAIL regardless of other signals 这条让薪酬成为一个独立否决器而非可被其他维度补偿的软项。2.5 Location Scoring地点维度评分标尺模板给出了一套默认分档允许用户改写为自己的政策Fully remote / async-first →5.0Light hybrid (flexible, few days/month) →4.0–5.0Regular hybrid or on-site, local (no move) →{your score / comp condition}On-site requiring relocation →{your score / comp condition}High travel (25%) →deduct 0.5–1.0中间两档特意留成占位符因为混合办公/异地重定位的容忍度因人而异且往往与薪酬条件挂钩no move 但接受降薪这类个性化政策无法由模板代答。triage 的 Location (weight 25%) 维度就是Score per the Location Scoring rules in_brief.md并要求显式标记高差旅/重定位风险。2.6 Hard DQ Criteria硬性淘汰项立即 FAIL 3.0模板要求列出你无法弥补的硬缺口并强调be specific so triage can pattern-match them——首筛没有推理预算条目必须具体到可做字符串/语义模式匹配。模板内置四个典型示例不持有的执照/保密资质、主技能不在你领域内的纯动手岗位、JD 明示薪酬上限低于你的底线、差旅超出你该岗位类型可接受上限。消费侧 modes/triage.md 的步骤 2 就是Hard DQ check (takes 30 seconds)扫一遍 JD 文本任何一条命中即知得分 ≤ 2.5记录 DQ 原因并跳过打分直接进入步骤 4。2.7 Quick Scoring Guide判定分档表模板内嵌的分档表与 modes/triage.md 的判定表保持一致且都锚定同一个配置键ScoreVerdictWhat it means≥ threshold (default 3.5)PASS过线——强原型 薪酬 地点缺口可弥补3.0 – (threshold − 0.1)MARGINAL边缘——以一行展示给用户 3.0FAIL未过线——被过滤这里有一个值得注意的细节分档边界用threshold − 0.1来表达 MARGINAL 带的上沿依赖 0.1 的打分粒度——triage.md 中全局分Round to nearest 0.1 — matching theX.X/5scores the tracker and reports already carry, and the 0.1 granularity the MARGINAL band below depends on。也就是说打分精度不是随意选的而是判定分档表能成立的前提。2.8 Soft Red Flags软性减分项每项 −0.5可叠加模板要求列出不构成淘汰但拉低分数的信号示例包括JD 列为 required 而你自认缺口的证书、需要改写叙事才能包装的交付模式或领域、你更愿意回避的公司阶段/规模。triage 端对应规则是Apply the Soft Red Flags from_brief.mdat −0.5 each且Hard DQs override to ≤2.5——软性减分只在下调总分时有效硬淘汰直接封顶 2.5。2.9 Priority Override List优先覆盖清单无条件 PASS模板最后一节允许列出无论如何都要被呈现的公司——具体兴趣、内推关系等格式{Company name — reason}。triage.md 明确规定If the company is on the Priority Override List inmodes/_brief.md, return PASS regardless of score. Check the company name before returning a verdict. 这给了用户一个绕过纯分数逻辑的显式后门且检查发生在返回判定之前。3. triage 如何把简报变成一行机器可读判定理解模板各字段的价值需要看消费端的完整流程。modes/triage.md 定义了 triage Agent 的行为约束只读一份文件。步骤 0 即Read ONLYmodes/_brief.md. Do NOT read: cv.md / config/profile.yml / modes/_shared.md / modes/_profile.md / modes/oferta.md。并且明确了失败回退modes/_brief.mdis a user-layer file created frommodes/_brief.template.md(auto-copied bydoctor.mjson first run). If it does not exist or has not been filled in, triage cannot run — fall back to full evaluation.四维度加权打分。简报字段与打分维度的对应关系是维度权重消费简报中的哪一节Archetype fit30%Target Archetypes含 analogue 原型Comp25%Comp Strategy硬底线Location25%Location ScoringCV match estimate15%Proof PointsRed flags调整项−0.5/项Soft Red FlagsHard DQ 直接封顶 ≤2.5全局分公式为(archetype × 0.30) (comp × 0.25) (location × 0.25) (cv_match × 0.15) red_flag_adjustment四舍五入到 0.1。triage.md 还注明这些是默认权重——if_brief.mddefines its own dimension weights, use those即简报拥有覆盖默认权重的能力。输出契约。triage 只返回一行、总输出上限 500 token、不写任何文件、不生成 cover letterTRIAGE: {PASS|MARGINAL|FAIL|SKIP} | {Company} | {Role} | {Score}/5 | {reason ≤ 25 words}TRIAGE:前缀、判定词和三个单元格machine-readable and stay exactly as written above whatever the output language — the caller parses them只有{reason}是人读文本按language.output输出缺省en。triage_threshold由调用方注入triage 自身永远不读config/profile.yml——这与模板第 2.7 节caller injects the resolved value的说法一致。triage.md 还给出四条完整示例PASS 4.3/5、FAIL 2.0/5 硬淘汰、MARGINAL 3.4/5、SKIP 0/5可直接作为解析与测试的参照。JD 获取规则也值得一并了解因为它决定 SKIP 判定的边界PDF URL 直接用 Read 工具读WebFetch 无法提取 PDF 文本会把活帖误判 SKIPlocal:前缀读本地文件其余先 WebFetch失败且会话中有 Playwright 时重试一次——因为 Workday 等 SPA 招聘页 WebFetch 读不到most of that gap turned out to be exactly this, not actually-dead postings。拿不到 JD 才返回TRIAGE: SKIP | ... | 0/5 | Posting inaccessible or expired。4. 配置项triage_threshold与triage_min_urls模板 2.7 节引用的阈值键定义在 config/profile.example.yml 的 Two-pass triage gate 注释块中# pipeline: # triage_threshold: 3.5 # triage_min_urls: 5triage_threshold进入完整评估的最低 triage 分满分 5。3.0 到阈值之间的角色为 MARGINAL 并展示给用户低于 3.0 被静默过滤。键缺省时默认3.5。triage_min_urls存活 URL 少于该数量的批次跳过 triage 直接进完整评估——triage overhead isnt worth it on a handful of roles。默认5。这两个键由/career-ops pipeline路径读取。由于 triage Agent 不读 profile.yml调用方pipeline/batch 编排层负责把解析后的值注入 triage 的提示这正是模板分档表写成≥ threshold (default 3.5)而非写死 3.5 的原因。5. 生命周期源码佐证doctor.mjs 的自动拷贝与未个性化检测模板注释声称doctor.mjs auto-copies it on first rundoctor.mjs 的源码可以印证。冷启动自动拷贝。onboardingState()内置一份单一事实来源的冷启动清单doctor.mjsconst templates [ { target: modes/_profile.md, template: modes/_profile.template.md }, { target: modes/_custom.md, template: modes/_custom.template.md }, { target: modes/_brief.md, template: modes/_brief.template.md }, { target: voice-dna.md, template: voice-dna.template.md }, ];目标文件不存在而模板存在时执行copyFileSync并把结果记入--json输出的autoCopied字段拷贝失败如只读文件系统的 CI 环境会静默跳过交由后续的 missing/prereq 检查呈现。文件存在 ≠ 已填好的检测。由于 doctor 总会自动拷贝_brief.md存在性检查永远通过所以 doctor.mjs 对内容本身做了二次校验PERSONALIZATION_FILES把modes/_brief.md与modes/_profile.md并列为两个必须个性化的文件其中_brief.md的 impact 描述正是模板要防的失败模式——triage reads literal {placeholders} instead of your archetypestriage 首筛读到的是字面量{placeholders}而非你的原型、薪酬底线和硬淘汰项。检测逻辑是目标文件与模板完全相同 → 报告still identical to the shipped template否则提取模板自带的占位符集合templatePlaceholders用\{[^{}\n]{2,60}\}匹配凡目标文件中仍残留的即计为未填充报告still has N unfilled placeholder(s) (e.g. ...)。比较基准刻意取模板自己的占位符集合而非任意花括号串——源码注释解释了原因避免把用户合法写入的花括号内容代码片段、JSON 示例误报。检测结果作为unpersonalized警告而非硬门禁career-ops 开箱即用但 AGENTS.md 要求 Agent 在带着非空unpersonalized跑scan/pipeline/batch之前必须告知用户这一影响。该行为有专门测试覆盖tests/doctor-unfilled-templates.test.mjs 分别验证了与模板相同、残留占位符、已填写则不误报三种_brief.md状态。6. 填写实践要点来自模板自身的纪律条款把模板的注释约束汇总为可操作的填写准则宁短勿长目标 1.5–2K token每一行都会被逐岗位复读一次批量场景下是乘数成本。只写改变 go/no-go 决策的信息原型、comp floor、地点政策、硬淘汰项、最强证明点这五类深度叙事、谈判脚本、STAR 故事一律留在_profile.md/cv.md。硬淘汰项要具体写成可模式匹配的短语如requires active PMP license而不是不匹配的技能这类模糊描述因为 triage 的步骤 2 只有 30 秒预算。薪酬底线独立成句Below that, FAIL regardless of other signals——这条让 Comp 维度拥有否决权其他维度的高分不能弥补。地点分档留白要填hybrid 与 relocation 两档是占位符必须写成自己的分数或薪酬条件否则 triage 的 Location 维度无规则可套。优先覆盖清单放真名公司名要能被精确匹配Check the company name before returning a verdict。填完跑一次 doctornode doctor.mjs或node doctor.mjs --json会报告unpersonalized中的残留占位符确认_brief.md已无{...}模板残留后再跑批量流程。7. 小结一份模板如何撑起首筛体系modes/_brief.template.md 表面上是一份约 90 行的占位符表格实质上是 career-ops 两轮评估的成本控制点它的每个字段都精确对应 modes/triage.md 的一个打分维度或否决规则它的分档表与 config/profile.example.yml 的pipeline.triage_threshold默认 3.5联动它的生命周期由 doctor.mjs 的自动拷贝与未个性化检测兜底而 DATA_CONTRACT.md 保证了用户填好的modes/_brief.md永远不会被update-system.mjs覆盖。理解这份模板的最佳方式不是把它当作表单而是当作 triage Agent 的工作记忆接口——写得越短、越具体、越可模式匹配首筛的 token 效率与判定质量就越高。关键路径索引模板 modes/_brief.template.md · 消费方 modes/triage.md · 配置示例 config/profile.example.yml · 自动拷贝与检测 doctor.mjs · 数据契约 DATA_CONTRACT.md · 行为测试 tests/doctor-unfilled-templates.test.mjs【免费下载链接】career-opsOpen-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)项目地址: https://gitcode.com/GitHub_Trending/ca/career-ops创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表