JD - Triage

根据个人偏好与技能匹配度,双重评分职位信息,智能推荐最优行动方案,适用于任何市场、语言和职业领域。

已扫描
适合谁
求职者、跳槽者、职业规划者
不适合谁
无需评估JD的用户、不想保存个人职业标准的用户
国内可用性
国内友好。面向国内用户较友好。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @bwancoding/jd-triage

Skill 说明

命令、参数、文件名以原文为准


jd-triage · v1.1.1

职位评估基于两个相互独立的维度,不会合并为单一数值:

  • 吸引力 — 你是否真的想申请?基于用户存储的标准,从五个加权维度进行评分。
  • 胜任力 — 你是否有资格获得该职位?对比职位要求中的“必须具备”项与你的技能储备。

一个你想要但无法胜任的职位是“挑战目标”,而非“直接放弃”。一个你有能力但不感兴趣的职位是“备选方案”,而非“立即申请”。将两者合并为单一星级评分会破坏这种区分——而这正是决策的核心。

职责

  1. 初始化并维护 用户标准配置文件 ~/.openclaw/workspace/jd_criteria.md
  2. 评估 职位描述 → 双维度判断 + 一项具体行动建议。
  3. 记录 每次评估结果至 ~/.openclaw/workspace/jd_history.md
  4. 分析与规划 基于历史数据积累(详见 references/analysis-commands.md)。

语言处理

默认使用英文输出。 若用户以其他语言输入,后续对话将全程使用该语言。

表面语言
所有交互输出 — 包括初始化问答、评估结论、表格及结论层级显示用户当前语言(默认为英文)
jd_criteria.md 字段键名、jd_history.md 结构标签、结论层级名称 在存储中始终为英文 — 便于 grep 搜索,跨语言切换时保持稳定
存储的自由文本内容(如公司名称、摘要、红线理由、职位原文引用)用户写入时的语言

绝不自动翻译已存储内容。 在列出或比较不同语言的条目时,结构标签以当前语言显示,自由文本内容原样保留。从职位描述中提取的引文即使周围输出已翻译,也保留原始语言——被翻译的引文不再是有效证据。

状态机

每次调用时读取 ~/.openclaw/workspace/jd_criteria.md 并分支处理:

状态条件动作
S1:缺失文件不存在快速启动(5个问题)→ 继续执行请求命令
S2:模式缺失文件存在,schema_version < 3尽可能静默迁移,仅对无法推断的字段提问(参见 references/bootstrap.md § Migration
S3:新鲜配置完整,last_updated ≤ 30天前直接执行。输出一行提示:“使用来自 <日期> 的标准”
S4:过期配置完整,last_updated > 30天前仅问一次:“最近有变化吗?包括公司、地点、红线、正在学习的内容?(y/n)”<br>选择 n → 仅更新时间戳。<br>选择 y → 用户指定需更新的字段,逐项修补
S5:显式更新执行“update criteria” / /jd-triage update / /jd-triage reset完整重新初始化,当前值预填充

criteria_version 在 S1 / S2 / S5 写入时递增。S4 中“无变化”仅更新 last_updated

若调用包含职位描述,则在标准确定后继续执行评估流程。否则直接执行请求命令并结束。

命令列表

输入动作
粘贴的职位描述,或 /jd-triage评估
/jd-triage update \reset
/jd-triage quickstart强制执行5题快速启动
/jd-triage learn从示例职位描述中推导标准(参见 references/bootstrap.md § Derive from examples
/jd-triage history显示最近10条记录,每条占一行
/jd-triage compare <id1> [<id2>]并列对比表格
/jd-triage analyze分析历史数据中的市场信号 → 参见 references/analysis-commands.md
/jd-triage plan为目标岗位生成技能差距计划 → 参见 references/analysis-commands.md

通过公司名称引用过往职位时,通过 jd_history.md 进行 grep 查找以获取 ID。

评估流程

1. 解析

提取以下信息:职位标题、公司名称、工作职责、必须具备的要求优先考虑的要求(必须分开处理,这是胜任力评估的关键)、薪资范围、工作地点、远程政策、强度信号、汇报关系、团队规模。

若输入仅有标题但缺少职责或要求,立即停止并要求提供完整职位信息。不得对仅有标题的文本进行评估。

2. 硬性门槛

不满足条件将触发 ❌ OUT 并终止评估 — 但红线项除外,其影响按权重计算(见下文)。

  • comp_floor — 比较时需同类型:职位的薪资基数(基本工资 / 总收入 / 小时薪)与用户设定的最低标准必须在同一货币和周期内。若基数或货币不同,仅当用户提供了汇率时才进行转换;否则标记为 未知 并提出疑问。若职位未提及薪资,标记为未知并继续 — 绝不因缺失薪资而自动拒绝
  • locations / remote_ok — 职位地点必须在用户允许范围内,或职位支持远程办公且符合用户的 remote_ok 设置。
  • intensity_tier — 职位隐含的工作强度等级不得超过用户设定的上限。强度信号模式参见 references/intensity-signals.md,按语言区分。若职位未提供任何信号,假设为用户自身强度等级(不扣分),并予以说明。
  • red_lines — 采用语义匹配,而非字符串比对。红线定义为 {模式, 理由};使用“理由”判断不同语言或措辞是否实质相同。匹配位置决定权重:
匹配的责任所在位置判定
出现在标题中,或前1–2条职责中,或明显占角色30%以上❌ OUT — 核心项
仅出现在末尾职责条目中,表述为“支持”“协助”“协作”等⚠️ 条件性 — 正常评分,标记并提出疑问
仅出现在要求或优先项中,未在职责部分出现作为开放问题记录,不设门槛

必须引用匹配的具体短语及其位置(如“第6条,表述为‘支持’”)。仅关键词不构成引用 — 用户需要上下文来判断。

语义匹配双向生效:不能误判无关内容。例如,“增长”作为红线,不等于“成长型思维”这类价值观描述。说明匹配依据,让用户可纠正。

3. 吸引力 — 5个加权维度

每个维度按 references/scoring.md 评分(1–5分),权重来自 axis_weights(默认值也在其中)。

维度评分依据默认权重
职位匹配度target_title_keywords、职位的职级与职责范围25%
领域匹配度target_domains — 公司实际业务领域20%
组织匹配度org_traits — 用户自定义的组织特质及其权重15%
氛围匹配度vibe_anchors_positive / _negative,每个带 why 说明25%
薪资匹配度comp_floorprofile.current_comp15%

严禁虚报分数。 若职位信息不足导致某维度无法评分,输出 (信息不足),并从加权平均中剔除该维度,其余权重重新归一化。用3星占位符是虚构数据,会悄悄改变结论。

氛围匹配必须引用。 每次评分必须至少引用一个锚点,并附上触发它的职位原文,且基于锚点的 why 进行推理 — 不得依赖模型对公司的已有认知。锚点可以是局部或小范围特征;若模型不了解该公司,why 是唯一有效依据。禁止仅凭形容词判断(如“感觉很企业化”)。

4. 胜任力 — 你能否获得?

skills 为空(快速启动后的正常状态),在评分前仅询问一次

“为了判断你是否有资格获得该职位,我需要了解你的技能:你现在能被面试考察的有哪些?正在学习的是什么?”

将答案保存,此后不再重复询问。

将职位的必须具备要求与 skillsprofile 对比:

  • 每项要求:完全匹配 skills.mastered1.0,部分匹配 skills.learning0.5,否则得 0
  • 工作经验年限视为一项要求;只要 profile.years_of_experience 与职位要求的最低年限相差不超过一年即视为满足。
  • 优先/加分项不计入分母,单独报告。
  • 通过率 → 层级划分:

- 很可能 ≥75%

- 可能 40–74%

- 挑战性 <40%

  • 若职位列出的“必须具备”项少于3项 → 未知;不得猜测,提出疑问。

不得虚构职位未声明的要求。 不得跨市场映射职级(如L5、P7、主管不可直接等价)——只统计职位明文列出的要求。

如实报告技能缺口:既不夸大(“你基本上已经具备”),也不过度悲观。缺口是事实+面试中通常如何考察,而非否决理由。skills.learning 中的内容是真实部分信用 —— 应明确说明。

5. 决策

按顺序执行,首个触发规则即生效,后续规则不再检查

  1. 硬性门槛失败 → ❌ OUT
  2. 红线出现在非核心职责,或存在可能改变结论的未知项(薪资、地点、职责范围)→ ⚠️ 条件性

在应用此规则前,先判断未知项是否真会影响结论。若未知项已在决定性方向上被约束,则为 开放问题,非条件性:例如,职位标注“€95,000 基本工资”而用户底线为“€90,000 总收入”,则薪资无法评分,但门禁已判定(仅基本工资无法低于底线)。应说明并继续进入矩阵。仅当未知项的解决确实会改变结论时,才使用 CONDITIONAL

  1. 否则 → 查看决策矩阵

吸引力层级由加权平均决定 — 从高到低匹配,首个匹配即生效,因此即使平均分较高但有轴得分≤2,也不会晋级:

  • — ≥ 4.0 且无任何轴 ≤ 2
  • — ≥ 3.2 且无轴得分为1
  • — ≥ 2.4
  • — < 2.4

特殊规则:氛围得分 ≤ 2★ 会将吸引力上限定为“弱”,无论平均分如何。氛围是人们最容易自我安慰却事后后悔的维度。

很可能可能挑战性
🔥 立即申请🔥 立即申请🎯 挑战性申请
✅ 申请✅ 申请🎯 挑战性申请
🗄️ 备选🗄️ 备选❌ 放弃
❌ 放弃❌ 放弃❌ 放弃

胜任力为 未知 → 查看 可能 列,结果标记为临时状态(✅ 申请(临时)),并在“开放问题”中首先列出实际要求的疑问。绝不能无声降维为单一判断。

吸引力因信息不足无法评分(三个及以上维度信息不足,参见 references/scoring.md)→ 判定为 ⚠️ 条件性,写作 吸引力:(信息不足无法评分)。无需报告层级,也不查矩阵;缺失内容放入“开放问题”。

6. 记录

将评估结果追加至 ~/.openclaw/workspace/jd_history.md — 格式与ID规则见 references/history.md。若文件不存在则创建。

评估未完成前,不得退出。 输出最后一行必须确认写入成功:已记录:JD-YYYYMMDD-NNN。若写入失败,必须明确告知 — 绝不沉默失败

7. 输出格式

两层输出,两条规则。防止第二层泄露到第一层。

屏幕显示 — 使用用户当前语言。 模板中所有内容均为标签,非字面表达:章节标题、维度名称、层级本身均翻译为对话语言。保持结构一致:行序、星号图标、箭头、表情符号、<k>/<n> 数值等。中文用户看到的评估全文为中文;唯一例外是来自职位原文的引文,它们是证据,永不翻译。

**在 jd_history.md 中 — 始终为英文。** 存储的 Action 字段必须精确使用此处的层级标识符,大小写一致,因为 historycompare 会解析它:

Apply now · Apply · Stretch apply · Backup · Skip · OUT · CONDITIONAL

不得用文字替代层级:条件性评估应存储 CONDITIONAL,而非 确认后再申请。屏幕上看到的内容可能与这两个字符串都不一致 — 但它是那个层级,在用户语言中。

若复用现有标准,应在结论行上方单独一行写出:使用来自 <日期> 的标准,不可置于结论行下方或内部 — 与其他屏幕内容一同翻译。

<emoji> <层级>          吸引力: <层级>   胜任力: <层级>

想要吗
  职位匹配度     ★★★★☆
  领域匹配度     ★★★★★
  组织匹配度     ★★★☆☆
  氛围匹配度     ★★☆☆☆   锚点 "<名称>" — "<职位原文>"
  薪资匹配度     ★★★★☆
  → 加权平均 <n.n>/5

能拿到吗
  满足 <k>/<n> 项必须具备要求
  ✅ <已满足>            ⚠️ <部分满足 — 正在学习>            ❌ <存在缺口>

<一句话:最终判断>

开放问题
- <仅真实未知项;无则省略此节>

已记录:JD-YYYYMMDD-NNN

CONDITIONAL — 结构相同,但一句话必须明确表达条件:*“若 <X> 确认成立则符合;若 <X> 被认定为核心则拒绝。”* 行动始终为“确认后再申请”,决定性问题放在“开放问题”首位。

OUT — 简洁形式,但绝不空手而归:

❌ OUT
触发原因: <门槛或红线,附位置与原文>
<一句话:原因>

仍可考虑
- <值得记住的匹配维度 — 无则省略>

已记录:JD-YYYYMMDD-NNN

“仍可考虑”部分用于确保拒绝也积累信号,便于未来参考。

行为约束

  • OUT 即 OUT。 即使用户对该职位已有情感投入,也不得软化结论。
  • 严禁虚报分数。 信息不足即标为 (信息不足),并从平均中剔除 — 不得用3星代替。
  • 绝不从训练数据预填。 所有标准值仅来自用户。不得推断薪资水平、城市等级、公司声誉或公司“通常是什么样子”。
  • **基于用户的 why 推理,而非名气。** 模型从未听说过的锚点,其效力应与知名锚点相同。
  • 红线是加权的,非字面意义,且为语义匹配,非字符串比对。
  • 输出模板是结构,非脚本。 其英文内容代表用户语言中的对应项:标题、维度名、层级本身均翻译。仅两处不翻译:jd_history.md 中的存储值,以及从职位原文中提取的引文。
  • 保持两个维度分离。 永远不将吸引力与胜任力平均;“难以获得”不应降低吸引力评分,反之亦然。
  • 开放问题为输出,非内部状态。 可能改变结论的未知项必须以可直接发送给招聘方的问题形式写出。
  • 一次仅处理一个职位。 多个粘贴的职位应分别评估,之后可选比较。
  • 不提供空洞鼓励。 不说“祝你好运”“希望对你有帮助”。
  • 信任手动编辑。 若用户修改了 jd_criteria.md,就按实际内容解析。若字段格式错误,引用该行并提问 — 不得静默覆盖。
  • 分析与规划需真实数据。 若低于 references/analysis-commands.md 中的阈值,说明情况并停止。

检测触发条件

  • 粘贴内容呈现职位特征:标题类行 + 职责或要求。长度不是唯一判断标准 — 不得声称任意长文本都是职位。
  • /jd-triage 及其子命令。
  • “我该申请吗”、“这岗位值得投吗”、“评估这个JD”、“接下来该学什么”、“我投过的岗位有什么规律”
B
@bwancoding

已收录 1 个 Skill

相关推荐