Word Docx Formatting Repair Helper
帮助知识工作者自动化处理Word文档格式、查找替换与样式调整任务。
根据个人偏好与技能匹配度,双重评分职位信息,智能推荐最优行动方案,适用于任何市场、语言和职业领域。
openclaw skills install @bwancoding/jd-triage命令、参数、文件名以原文为准
职位评估基于两个相互独立的维度,不会合并为单一数值:
一个你想要但无法胜任的职位是“挑战目标”,而非“直接放弃”。一个你有能力但不感兴趣的职位是“备选方案”,而非“立即申请”。将两者合并为单一星级评分会破坏这种区分——而这正是决策的核心。
~/.openclaw/workspace/jd_criteria.md。~/.openclaw/workspace/jd_history.md。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。
提取以下信息:职位标题、公司名称、工作职责、必须具备的要求、优先考虑的要求(必须分开处理,这是胜任力评估的关键)、薪资范围、工作地点、远程政策、强度信号、汇报关系、团队规模。
若输入仅有标题但缺少职责或要求,立即停止并要求提供完整职位信息。不得对仅有标题的文本进行评估。
不满足条件将触发 ❌ OUT 并终止评估 — 但红线项除外,其影响按权重计算(见下文)。
comp_floor — 比较时需同类型:职位的薪资基数(基本工资 / 总收入 / 小时薪)与用户设定的最低标准必须在同一货币和周期内。若基数或货币不同,仅当用户提供了汇率时才进行转换;否则标记为 未知 并提出疑问。若职位未提及薪资,标记为未知并继续 — 绝不因缺失薪资而自动拒绝。locations / remote_ok — 职位地点必须在用户允许范围内,或职位支持远程办公且符合用户的 remote_ok 设置。intensity_tier — 职位隐含的工作强度等级不得超过用户设定的上限。强度信号模式参见 references/intensity-signals.md,按语言区分。若职位未提供任何信号,假设为用户自身强度等级(不扣分),并予以说明。red_lines — 采用语义匹配,而非字符串比对。红线定义为 {模式, 理由};使用“理由”判断不同语言或措辞是否实质相同。匹配位置决定权重:| 匹配的责任所在位置 | 判定 |
|---|---|
| 出现在标题中,或前1–2条职责中,或明显占角色30%以上 | ❌ OUT — 核心项 |
| 仅出现在末尾职责条目中,表述为“支持”“协助”“协作”等 | ⚠️ 条件性 — 正常评分,标记并提出疑问 |
| 仅出现在要求或优先项中,未在职责部分出现 | 作为开放问题记录,不设门槛 |
必须引用匹配的具体短语及其位置(如“第6条,表述为‘支持’”)。仅关键词不构成引用 — 用户需要上下文来判断。
语义匹配双向生效:不能误判无关内容。例如,“增长”作为红线,不等于“成长型思维”这类价值观描述。说明匹配依据,让用户可纠正。
每个维度按 references/scoring.md 评分(1–5分),权重来自 axis_weights(默认值也在其中)。
| 维度 | 评分依据 | 默认权重 |
|---|---|---|
| 职位匹配度 | target_title_keywords、职位的职级与职责范围 | 25% |
| 领域匹配度 | target_domains — 公司实际业务领域 | 20% |
| 组织匹配度 | org_traits — 用户自定义的组织特质及其权重 | 15% |
| 氛围匹配度 | vibe_anchors_positive / _negative,每个带 why 说明 | 25% |
| 薪资匹配度 | comp_floor 与 profile.current_comp | 15% |
严禁虚报分数。 若职位信息不足导致某维度无法评分,输出 (信息不足),并从加权平均中剔除该维度,其余权重重新归一化。用3星占位符是虚构数据,会悄悄改变结论。
氛围匹配必须引用。 每次评分必须至少引用一个锚点,并附上触发它的职位原文,且基于锚点的 why 进行推理 — 不得依赖模型对公司的已有认知。锚点可以是局部或小范围特征;若模型不了解该公司,why 是唯一有效依据。禁止仅凭形容词判断(如“感觉很企业化”)。
若 skills 为空(快速启动后的正常状态),在评分前仅询问一次:
“为了判断你是否有资格获得该职位,我需要了解你的技能:你现在能被面试考察的有哪些?正在学习的是什么?”
将答案保存,此后不再重复询问。
将职位的必须具备要求与 skills 和 profile 对比:
skills.mastered 得 1.0,部分匹配 skills.learning 得 0.5,否则得 0。profile.years_of_experience 与职位要求的最低年限相差不超过一年即视为满足。- 很可能 ≥75%
- 可能 40–74%
- 挑战性 <40%
不得虚构职位未声明的要求。 不得跨市场映射职级(如L5、P7、主管不可直接等价)——只统计职位明文列出的要求。
如实报告技能缺口:既不夸大(“你基本上已经具备”),也不过度悲观。缺口是事实+面试中通常如何考察,而非否决理由。skills.learning 中的内容是真实部分信用 —— 应明确说明。
按顺序执行,首个触发规则即生效,后续规则不再检查。
在应用此规则前,先判断未知项是否真会影响结论。若未知项已在决定性方向上被约束,则为 开放问题,非条件性:例如,职位标注“€95,000 基本工资”而用户底线为“€90,000 总收入”,则薪资无法评分,但门禁已判定(仅基本工资无法低于底线)。应说明并继续进入矩阵。仅当未知项的解决确实会改变结论时,才使用 CONDITIONAL。
吸引力层级由加权平均决定 — 从高到低匹配,首个匹配即生效,因此即使平均分较高但有轴得分≤2,也不会晋级:
特殊规则:氛围得分 ≤ 2★ 会将吸引力上限定为“弱”,无论平均分如何。氛围是人们最容易自我安慰却事后后悔的维度。
| 很可能 | 可能 | 挑战性 | |
|---|---|---|---|
| 强 | 🔥 立即申请 | 🔥 立即申请 | 🎯 挑战性申请 |
| 好 | ✅ 申请 | ✅ 申请 | 🎯 挑战性申请 |
| 弱 | 🗄️ 备选 | 🗄️ 备选 | ❌ 放弃 |
| 差 | ❌ 放弃 | ❌ 放弃 | ❌ 放弃 |
胜任力为 未知 → 查看 可能 列,结果标记为临时状态(✅ 申请(临时)),并在“开放问题”中首先列出实际要求的疑问。绝不能无声降维为单一判断。
吸引力因信息不足无法评分(三个及以上维度信息不足,参见 references/scoring.md)→ 判定为 ⚠️ 条件性,写作 吸引力:(信息不足无法评分)。无需报告层级,也不查矩阵;缺失内容放入“开放问题”。
将评估结果追加至 ~/.openclaw/workspace/jd_history.md — 格式与ID规则见 references/history.md。若文件不存在则创建。
评估未完成前,不得退出。 输出最后一行必须确认写入成功:已记录:JD-YYYYMMDD-NNN。若写入失败,必须明确告知 — 绝不沉默失败。
两层输出,两条规则。防止第二层泄露到第一层。
屏幕显示 — 使用用户当前语言。 模板中所有内容均为标签,非字面表达:章节标题、维度名称、层级本身均翻译为对话语言。保持结构一致:行序、星号图标、箭头、表情符号、<k>/<n> 数值等。中文用户看到的评估全文为中文;唯一例外是来自职位原文的引文,它们是证据,永不翻译。
**在 jd_history.md 中 — 始终为英文。** 存储的 Action 字段必须精确使用此处的层级标识符,大小写一致,因为 history 和 compare 会解析它:
Apply now · Apply · Stretch apply · Backup · Skip · OUT · CONDITIONAL
不得用文字替代层级:条件性评估应存储 CONDITIONAL,而非 确认后再申请。屏幕上看到的内容可能与这两个字符串都不一致 — 但它是那个层级,在用户语言中。
若复用现有标准,应在结论行上方单独一行写出:使用来自 <日期> 的标准,不可置于结论行下方或内部 — 与其他屏幕内容一同翻译。
<emoji> <层级> 吸引力: <层级> 胜任力: <层级>
想要吗
职位匹配度 ★★★★☆
领域匹配度 ★★★★★
组织匹配度 ★★★☆☆
氛围匹配度 ★★☆☆☆ 锚点 "<名称>" — "<职位原文>"
薪资匹配度 ★★★★☆
→ 加权平均 <n.n>/5
能拿到吗
满足 <k>/<n> 项必须具备要求
✅ <已满足> ⚠️ <部分满足 — 正在学习> ❌ <存在缺口>
<一句话:最终判断>
开放问题
- <仅真实未知项;无则省略此节>
已记录:JD-YYYYMMDD-NNNCONDITIONAL — 结构相同,但一句话必须明确表达条件:*“若 <X> 确认成立则符合;若 <X> 被认定为核心则拒绝。”* 行动始终为“确认后再申请”,决定性问题放在“开放问题”首位。
OUT — 简洁形式,但绝不空手而归:
❌ OUT
触发原因: <门槛或红线,附位置与原文>
<一句话:原因>
仍可考虑
- <值得记住的匹配维度 — 无则省略>
已记录:JD-YYYYMMDD-NNN“仍可考虑”部分用于确保拒绝也积累信号,便于未来参考。
(信息不足),并从平均中剔除 — 不得用3星代替。why 推理,而非名气。** 模型从未听说过的锚点,其效力应与知名锚点相同。jd_history.md 中的存储值,以及从职位原文中提取的引文。jd_criteria.md,就按实际内容解析。若字段格式错误,引用该行并提问 — 不得静默覆盖。references/analysis-commands.md 中的阈值,说明情况并停止。/jd-triage 及其子命令。已收录 1 个 Skill