Back to skills
SKILL.md
Jd Triage
ASecurity**把本文件整份交给你的 agent 即可**——不依赖任何特定 agent 产品,不需要注册命令、不需要放在特定目录、不需要装任何东西。`SKILL.md` 只是一个文件名约定,不是某一家的格式。连同一份 JD 原文一起贴给它,就能开始。 > ⚠️ **这一版是骨架**:给的是规则与标定方法,**不是一套调好的参数**。文中所有 `〔…〕` 都是**留空的参数**,需要你自己标定(方法见第三步)。完整定级模板排在 v0.3。 ---
- 76 stars
- 0 votes
- 0 copies
- 0 views
- Added September 27, 2026
Security analysis
100/100Pro scans all 4 files and shows the line behind each finding
npx -y skills add gilgameshcc/ai-native-jobhunt --skill jd-triage --agent claude-codeAre you the author of Jd Triage?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/gilgameshcc-jd-triage)# SKILL · JD 结构化与定级(v0.1.2 骨架)
**把本文件整份交给你的 agent 即可**——不依赖任何特定 agent 产品,不需要注册命令、不需要放在特定目录、不需要装任何东西。`SKILL.md` 只是一个文件名约定,不是某一家的格式。连同一份 JD 原文一起贴给它,就能开始。
> ⚠️ **这一版是骨架**:给的是规则与标定方法,**不是一套调好的参数**。文中所有 `〔…〕` 都是**留空的参数**,需要你自己标定(方法见第三步)。完整定级模板排在 v0.3。
---
## 交付约定:易用性与完成度优先
Agent 负责整理并完成本次可做部分,交付可直接人工 review 的成品,不止给建议或空表。先读用户工作区的 `policies/`;用户可配置的执行偏好和参数集中在这里维护,已有求职条件仍以 `positioning.md` 为准。明确要求的调整直接写回并在 `policies/changes.md` 记录旧值、新值、理由与影响;Agent 建议标待确认。
用户已指定路径就直接创建本次所需目录;未指定时一次询问存放位置,同时继续整理材料。不得要求用户先手工建文件夹,不得把个人材料写进公开仓库。具体岗位建立或复用 `applications/日期-公司-岗位/README.md`,索引实际成品,初始化只补缺失文件;原始材料和历史审阅保留,策略、申请索引及衍生产物可按本次授权更新并记录变更。结束前写 `reviews/日期-任务.md`:成品路径、结论依据、采用策略、待确认项及影响、实际检查和下一步;重新读取文件核对后给可点击路径。缺材料时先完成不依赖它的部分并标部分完成;无文件写入能力须明确未落盘。可审阅不等于获准发送,外部动作仍按既有授权和模块边界。
交付前交叉核对报告、申请索引、台账和审阅卡:结论与下一步必须一致,已判不投的岗位只说明排除依据及证据或本人条件改变后可重评,不沿用继续推进的话术。内容重排后修正上下文指代;检查数量只填写工具实际统计值,未统计就列检查对象,不手写估数。发现历史审阅错误时另写勘误,保留原记录。
完整规则与模板见 [本地交付约定](../../../docs/delivery.md);只拿到本 SKILL 时按以上约定建立最小 Markdown 文件即可,不要求先跑其它模块。
## 开跑前
### 要什么
| | 要什么 | 缺了会退化成什么 |
|---|---|---|
| **必需** | **JD 原文** | 只有名称/链接/转述时先按下文主动补齐流程检索原文;未取得前可整理探索线索,但不把转述当JD原句,不伪造抽取表 |
| **必需** | **你的必要条件与硬性排除条件(按实际有的提供,不凑数量)** | 缺了**不猜、也不用默认值**。会先要你写这两组,因为没有它们,所有岗位都会被判成"较匹配"(见「不对劲的时候」第 1 条) |
| 可选 | [`positioning.md`](../../00-workspace/templates/positioning.md)(定位文件,空模板在 `00-workspace`) | 没有就从上一行的口述里现场整理一份最小版本,并存回去,下次直接用 |
| 可选 | 加分条件 | 没有就只判"是否满足必要条件 + 是否触排除条件",**级别会收敛成三级**(强匹配与较匹配分不开),并明确告诉你少了哪一层。⭐ **写了加分条件、但它的上沿还没校准时也走这一档**——首轮的每个人都在这个状态里,见第二步「首轮」一节 |
| 可选 | ⭐ `branches.md`(活跃探路分支) | **一律按主线阈值判,探路岗位会被判成"不投"。** 这是缺省的保守行为,不是 bug。但必须明说一句:"我没看到任何活跃探路分支——**你如果在试新方向,需要手工告诉我**" |
| 可选 | `ledger.md`(台账,已跑过的岗位与对方回应) | 没有就跳过第三步的阈值反推,阈值停在 `纯占位待校准`,并在每次定级结论末尾标注这一点 |
### ⭐ 最小可接受形态
**一份JD或可检索的公司/岗位线索,加上你已有的目标条件。** 原文和条件缺失时先补齐;只得到线索不等于已完成定级。
散着贴进来就行 —— 微信里复制的一段、招聘页面上整片选中的文字、你自己口述的三句"我不接受什么",**都算**。整理成结构化表是 agent 的工作,不是你的。
#### ⭐ 补齐原文和条件后,你会拿到 X,但拿不到 Y
| ✅ X:你会拿到 | ❌ Y:你拿不到 |
|---|---|
| 一张结构化抽取表 + 一个级别 + **能追回到条件编号的理由** | **分开的「强匹配」与「较匹配」**——没有加分条件表(或有表但上沿还没校准),级别收敛成三级 |
| 一份「原文未提及」清单,逐条升级成面试必问项 | **任何一个标着 `实践校准` 的阈值**。全部停在 `纯占位待校准`——标定要的是你**已经做过**的判断,一份新 JD 里没有 |
| 一条可复核的「不投」理由(指得到具体编号) | **"我这条排除条件是不是定错了"的答案**——那要第三步的三类反推样本,每类 〔2-3〕 条(`默认建议值`) |
**一句话**:只有线索足够启动补查;取得JD原文和必要条件后才够**定级**,仍不够**标定阈值**。定级是"用现有标尺量一次",标定是"检查标尺本身准不准"——后者要的是一批你已经做过的判断,不是一份新的 JD。所以第一次跑完不要问"我的阈值定得对不对":在这个输入量下,那个问题没有答案,**任何看起来像答案的东西都是编的**。
### ⛔ 四条禁止(对 agent)
1. **不许报错退出。** 上游文件不存在是常态,不是异常。区分公开可查和用户私有缺口:前者主动查,后者集中问,已有材料继续分析
2. **不许静默自己编。** 没写汇报线就是没写——填"原文未提及"并进"待确认",**不要推一个像是那么回事的答案填进去**
3. **不许一次只问一个问题挤牙膏。** 要什么一次列全,让人一次补齐
4. **不许把该自己解决的整理工作推给用户。** 用户散着贴来的材料由你整理成结构化表;"请先把 JD 整理成表格再给我"是被禁止的回答
---
## 主动补齐信息(进入分析前及遇到关键缺口时)
先读已有材料与定位,不重复问已经给过的事实。把缺口按“会不会改变本次判断”排序,优先处理关键项,不能以一张信息不足清单结束服务。
1. **公开可查的,agent直接查。** 公司官网、产品说明、官方招聘原文及公开公告优先;记录具体URL、材料日期和检索日期。只有公司/职位名或链接时,先尝试找到对应JD;同名不清楚再问,不自行挑一家。补查所得放在独立来源段,不改写原JD的“原文未提及”。
2. **用户才知道的,主动集中问。** 例如希望做什么、不可接受的条件、当前面试阶段、已收到的沟通。可用一句:“我先核实官网与岗位内容;还需要你补充最影响判断的这几项:……”。问题按实际缺口生成,不为填满固定数量追问,不要求用户重排材料。
3. **边问边做独立工作。** 等用户时整理公开事实、列条件性分析和最值得验证的问题;没有回答就保持未知,不把沉默当确认,不以猜测生成硬条件。
4. **查不到时给具体交接。** 写已查入口、失败/冲突和仍需谁回答;网络不可用时明确未查,允许用户提供页面文本。需要岗位内部信息可准备给招聘方的问题,但不代发消息。连续补查没有新增证据时停止泛搜,说明哪条信息才能改变结论。
5. **补齐后重算。** 更新受新证据影响的条件、来源与结论;新事实推翻旧判断要注明原因。无关键缺口就直接分析,不额外设问卷。
本流程主动寻找分析所需材料;新公司机会探索由方向模块承接,不以“必须先提供完整JD”阻断检索。无法找到原文时可做公司层初步分析,但不能虚构JD抽取结果或宣称已完成岗位定级。
## 第一步 · 抽取(不做评价,只做客观抽取)
用 [`templates/jd-抽取模板.md`](templates/jd-抽取模板.md) 的空表逐栏填。**填之前先接受这条纪律**:
> **抽取阶段不下任何判断,原文措辞原样保留。**
>
> 为什么这条不能松:抽取时就顺手评价(把"负责数据平台的日常维护与迭代"写成"看起来是接手已有系统"),会**把 JD 里的原始信号洗掉**。后面的定级于是不是在评价 JD,而是在评价**一份已经被你评价过的材料**——错误从此不可见,因为原文已经不在表里了。
三条执行细则:
- **原文措辞保留。** 不同义替换、不精简、不"翻译成人话"。你觉得含糊的地方,正是要保留的地方——含糊本身是信号
- **薪资原样抄。** 不折算、不换算周期、不取区间中点、不补"大概"。以图片形式给出的薪资,抄下你看到的原样文本,并标注它来自图片
- **原文没写的,写"原文未提及"。** 它会自动进入"待确认"清单,成为面试必问项(交给 [`interview-strategic-assessment`](../interview-strategic-assessment/README.md)),**而不是被一个推测填掉**
### ⭐ `核心职责` 这一栏比薪资更重要
薪资谈得动,**做的事换不动**。这一栏的抽取规则是:**摘出原文里能支撑下面两组区分的句子**——
| 区分 | 原文里往哪看 |
|---|---|
| **从 0 搭体系 vs 接手已有系统** | 前者常出现"搭建 / 建立 / 从无到有 / 定义流程 / 组建";后者常出现"维护 / 迭代 / 优化现有 / 承接 / 保障稳定"。**看动词,不看名词** |
| **对内提效 vs 对外产品** | 前者常出现"内部效率 / 支持业务团队 / 降本 / 提效 / 赋能";后者常出现"面向客户 / 商业化 / 付费用户 / 对外交付 / 营收" |
**但抽取阶段只贴句子,不下结论。** 表里这一栏写的是"原文原句 + 它指向哪一组",不是"这是一个从 0 搭体系的岗位"。**两组都判不出时写"原文未提及",进待确认**——这本身就是一个强信号:一份说不清自己要人干什么的 JD,往往对应一个还没想清楚的岗位。
### ⭐ 「这条是怎么进来的」不是可有可无的登记项
抽取表里有一栏问「**这条 JD 是怎么进来的**」(搜索命中 / 平台推荐 / 对方主动推来 / 中间人转介 / 其他)。定级用不到它,所以它看起来最像可以省掉的那一栏。**恰恰相反**:
- **它是下游判断"你的搜索词在不在漂移"唯一的输入。** 反复出现、却不在你关键词列表里的那些岗位形态,只能从这一栏认出来
- **漏填 = 这条在后面的方向复盘里等于不存在**,不是权重低,是不进样本
- **它事后补不回来。** 一周后你不会记得某条是自己搜的还是被推来的,而这两者指向完全相反的解读(前者反映你的关键词,后者反映别人眼里的你)
执行要求:`搜索命中` 的**连搜索词一起记**;`对方主动推来` 的同时在 `ledger.md` 的「反向吸引」栏打标记;真想不起来就写 `其他` + 你记得的那半句。**⛔ 不许猜一个具体来源填进去**——猜出来的来路会污染的正是这一栏唯一的用途。
---
## 第二步 · 定级(四级,排除条件短路)
用 [`templates/定级规则模板.md`](templates/定级规则模板.md)。判定**必须按这个顺序**,顺序本身就是纪律:
```
① 硬性排除条件 → 命中任一条 → 判「不投」,短路,不再往下算
② 必要条件 → ⭐ 三态,不是两态:
├─ 满足 → 继续往下
├─ 原文明确不满足 → 看是否落在活跃探路分支里
│ ├─ 是 → 走该分支的更宽阈值 → 可判「探路」
│ └─ 否 → 判「不投」
└─ 原文未提及 → 降一档 + 挂待确认 + 升级为面试必问项
⛔ 不据此判「不投」
③ 加分条件 → 在必要条件全满足的前提下,决定「强匹配」还是「较匹配」
```
### ⭐ 硬性排除条件不可被匹配度换
薪资、汇报线、权限这类是**不可交易的**,不是"权重特别高的加分项"。
- ❌ 不许写"排除条件命中一条扣 N 分"——只要它出现在同一个加权式子里,就总会被别的项换掉
- ❌ 不许出现"虽然薪资不达标,但匹配度很高,建议投一下试试"这种结论。**这句话就是这条纪律要防的那个错误本身**
- ✅ 正确形态是**短路**:命中 → 判「不投」→ 停止计算 → 理由里写清命中的是哪一条编号
> 这与 [`05-offer`](../../05-offer/README.md) 的 gate 是**同一条纪律**:那边是"加分项再多也换不掉一条必要条件",这边是"匹配度再高也换不掉一条硬性排除条件"。**这条纪律在几个模块里都出现过,犯的是同一类错**——把不可交易的条件当成了可以加权的项。所以你在多个模块里看到同一句警告,不是重复,是同一条纪律的不同落点。
### ⭐ 「原文未提及」是第三态,不是「未满足」
**JD 不写关键信息是常态,不是例外。** 汇报线、权限、办公方式,多数 JD 都不写。所以必要条件这一侧有三态:
| 态 | 它是什么 | 怎么处理 |
|---|---|---|
| **满足** | 抽取表里有原文能**证实** | 正常往下走 |
| **未满足** | 抽取表里有原文能**证伪** | 除非落在活跃探路分支内,否则判「不投」 |
| ⭐ **原文未提及** | 抽取表这一栏是空的 —— **它是一个待确认项,不是一个判定** | **降一档 + 挂进待确认 + 升级为面试必问项。⛔ 不据此判「不投」** |
「降一档」的意思:强匹配 → 较匹配;较匹配 → 保留,但标注"关键项未确认"。**它压低优先级,不关门。**
⭐ **三级收敛期怎么降**(〔B 上沿〕仍为 `纯占位待校准` 时 —— 见下面「⭐ 首轮」一节,**首轮的每个人都在这个状态里**):这时只有「匹配」一档,**降无可降**。口径写死:**保留「匹配」,标注"关键项未确认",并在批内相对排序里排到同等命中数的岗位之后。**
⛔ **不许因为"降不动"就把三态压回两态判「不投」** —— 那正好是这一节要防的那个错误,只是换了个入口进来。
**为什么必要条件这一侧要这么处理**,理由与排除条件那一侧同源(那边的说法是「推测项不能单独触发不可逆动作」):
- **「不投」不产生任何反馈**——不投递、不接触、没有回应,于是这条判断永远没有机会被证明是错的。它是**不可逆**的
- **一份 JD 没写某件事,最常见的原因只是这份 JD 写得糙**,不是招聘方在这件事上真的不满足你的条件。用"对方没写"去触发一个不可逆的动作,等于把**对方的写作质量**当成了你的判据
⛔ 不许出现这种结论:~~"JD 没提汇报线,按最坏情况算,判不投。"~~
✅ 正确形态:"**N2 待确认**——「汇报线」栏为 `原文未提及`;级别由强匹配降为较匹配,已列入面试必问。"
⚠️ **反过来也不许:不许把「原文未提及」当成「满足」放过去。** 那会让定级结论看起来很完整,实际建立在一批没人检验过的默认假设上。**三态就是三态,往哪边压成两态都是错的。**
### 四个级别
| 级别 | 判据 | 你该做什么 |
|---|---|---|
| **强匹配** | 无排除命中 + 必要条件全满足 + 加分条件命中数 ≥ 〔上沿阈值·纯占位待校准〕 | 优先投,值得为它单独定制材料 |
| **较匹配** | 无排除命中 + 必要条件全满足 + 加分条件命中数落在〔中段·纯占位待校准〕 | 投,用通用版本即可 |
| **探路** | 无排除命中 + 有必要条件未满足**但落在活跃探路分支内** + 满足该分支的更宽阈值 | 投,但计入该分支的配额,且到分支截止日一起复盘 |
| **不投** | 命中任一硬性排除条件(**最高优先级,无条件**);或**任一必要条件被原文明确证伪**且不落在任何活跃探路分支内。⛔ **「原文未提及」不算未满足**,见上一节 | 不投。**但要把理由写进定级结果文件,并在台账里留一行**——"不投"也是数据 |
> ⛔ 这里**没有"缺口上限"参数** —— 一旦允许"缺几条还能过",必要条件就变成了加权项,正是本模块上一节要防的那件事(硬性排除条件不可被匹配度换)。分支豁免哪几条必要条件,写在 `branches.md` 里,是**显式豁免**,不是缺口预算。
### ⭐ 首轮:加分条件表非空,但它的上沿还没校准
「开跑前」写的是**加分条件表为空**时收敛成三级。还有一种状态它没覆盖,而**首轮的每个人都在这个状态里**:加分条件写了几条,但〔B 上沿〕和〔B 中段〕都还是 `纯占位待校准`——**一个没有数值的上沿,分不开「强匹配」和「较匹配」**。
这一档这样处理:
1. **同样收敛成三级**(强 / 较合并成一档,就叫「匹配」)。⛔ **不许随手编一个上沿把它们劈开**
2. **但要给出相对排序**:这一批内部按加分条件命中数从多到少排出来,并明说一句"这是**这一批内部的相对排序,不是绝对档位**——换一批 JD,同一个岗位的位置会变"
3. 每条结论末尾标注:〔B 上沿〕仍为 `纯占位待校准`,因此强 / 较两档尚未分开
**它什么时候自动解开**:等你按第三步反推出〔B 上沿〕、把它的来源等级从 `纯占位待校准` 改成 `实践校准`(或至少 `默认建议值`)那一刻,四级自动恢复。触发条件是**样本量**,不是时间——第三步的三类样本每类攒够 〔2-3〕 条(`默认建议值`)就可以反推;少于这个量级,反推出来的上沿只是把一两条个例写成了规则。
⛔ **不许为了"能出四级"先编一个上沿。** 编出来的档位会立刻开始影响你投哪些岗,而它没有任何依据;更糟的是它长得和一个真阈值一模一样,三个月后你不会记得它是编的。这正是 §来源标注三挡要如实标的原因。
### 定级理由必须能被追回去
一条合格的定级结论长这样:
> **青栈网络 / 数据平台负责人 → 不投**
> 命中排除条件 **X2**(薪资下沿低于你写的下沿)→ 短路,未继续计算匹配度。
> 补充(不参与判定):必要条件 N1 N3 满足,N2 待确认(原文未提及汇报线)。
一条**不合格**的结论长这样:
> ~~综合看比较匹配,建议可以投一下。~~
区别不在语气,在**可追性**:前者能指回具体条件编号,后者指不回任何东西,所以既无法复核,也无法用来校准阈值。**每条定级理由都必须指向至少一个条件编号;指不到,就写"指不到",然后回到第一步看抽取表哪一栏是空的。**
### ⭐ 定级结果写到哪(⛔ 不要就地发明一个文件名)
一批 JD 定完级,产出**一份文件**:
```
triage/<日期>-定级结果.md
```
- 日期 = **这批 JD 的批次日期**,与 `jobs/<日期>-一批说明.md` 对齐,两份文件肉眼就能配上对
- 位置与命名的权威定义在 [`00-workspace` 的工作区骨架](../../00-workspace/templates/工作区骨架.md)
- **没有工作区、只是单跑一次的**:把同样的内容原样输出给用户,并告诉他"将来建工作区时,这份东西放 `triage/`"。⛔ 不许现场发明一个文件名,也不许把它塞进 JD 原文那份文件里
**一条都不许少的三样东西**:
1. **每条岗位的级别**(强匹配 / 较匹配 / 探路 / 不投;三级收敛期就写「匹配」并注明原因)
2. **理由,且能追回到具体条件编号**(`X1` / `N2` / `B1`…)。指不到编号就写"指不到",不许用"综合看还行"顶上
3. **待确认项**:所有 `原文未提及` 与 `我推测的`,逐条写清"要证实它该问谁 / 查什么",并标出它把级别压低了几档
**四个位置各管一件事,别互相塞**:
| 位置 | 装什么 | ⛔ 不装什么 |
|---|---|---|
| `jobs/<日期>-一批说明.md` | JD **原文**与抽取表 | 任何级别与判断——判断进 `triage/` |
| `triage/<日期>-定级结果.md` | 级别 + 可追编号的理由 + 待确认项 | JD 原文的改写版(原文只在 `jobs/`,这里引用原句即可) |
| `ledger.md` 的「级别」栏 | **一个字母**(S/A/B 之类),用来分层看回复率 | 理由——**一个字母装不下"能追到条件编号的理由"**,那是 `triage/` 的活 |
| `assessments/<公司>.md` | **面试前**的疑点与红旗绿旗判据 | 投前定级——读者和时机都不同(那边服务"要不要去",这边服务"要不要投") |
> ⚠️ **判成「不投」的那些也要写进这份文件,并在 `ledger.md` 里留一行。** 「不投」是本模块产出最多、也最容易蒸发的一类结论;它不落地,第三步的阈值校准就永远缺掉最重要的那一类样本。
---
## 第三步 · ⭐ 怎么定你自己的阈值
**仓库不给数字。** 下面是标定方法,完整表格在 [`templates/定级规则模板.md`](templates/定级规则模板.md)。
### 从哪几条已投过的岗位反推
不要凭空想一个阈值,**从你已经做过的判断里反推**。取三类样本,每类几条即可:
| 样本类型 | 它告诉你什么 |
|---|---|
| ① 投了、且对方有回应的 | 你的**实际命中区**在哪 |
| ② 投了、但事后后悔的 | 你**漏写了哪条排除条件**——后悔的那个理由,就是那条排除条件的原文 |
| ③ ⭐ 犹豫很久、最后没投、但一直惦记的 | **最有价值的一类。** 它标出的是你真实的下沿,而不是你以为的下沿。你写下的排除条件往往比你真实的底线更严——这类样本是唯一能发现这件事的入口 |
方法:把这几条岗位按第一步抽取成表,然后问"**要让我当时的判断成立,阈值得设在哪**"。反推出来的阈值标 `实践校准`;凭感觉定的标 `默认建议值`;没定的保持 `纯占位待校准`。
### 先松后紧,不是先紧后松
**默认先松。** 理由是不对称的:
- **先紧的代价不可回收**——被判「不投」的岗位不产生任何反馈(不投递、不接触、没有回应),于是阈值再也校不动了。这是一个**自我封闭的错误**:越紧,越看不见自己错在哪
- **先松的代价可回收**——无非是多读几份 JD、多写几条"不投"的理由。这些恰好是下一轮校准的样本
**唯一的例外:排除条件反过来,一开始就要写死、写紧。** 松的是匹配度那一侧,不是排除那一侧。把这两侧搞反是最常见的误用——结果是"什么都投得出去,但底线也守不住"。
### 多久回头校一次
**按新增样本量触发,不按时间。** 时间到了但样本没增加,校准只是在重新解释同一批数据。
三个**强制**校准时机(不等样本量):
1. 连续多条「强匹配」零回应 —— 要么是抽取错了,要么是阈值标在了一个和市场无关的位置
2. 一条探路分支**开启或关闭**时 —— 分支的更宽阈值和主线阈值必须一起看,否则会漂移成两套互不相干的标准
3. 你的**必要条件本身变了** —— 这时旧阈值全部作废,回到 `纯占位待校准`,不要拿旧数字硬套新条件
---
## 来源标注
每条结论都要能一眼看出它是哪来的。**三挡,不要第四挡**:
| 标注 | 什么时候用 | 例 |
|---|---|---|
| `你给的` | 用户提供的事实与偏好 | 必要条件 / 排除条件 / 阈值 / 你对某条职责的解读 |
| `公开可查` | JD 原文里的字段、公司公开信息 | 岗位名称、城市、薪资原文、招聘方公开介绍 |
| `我推测的` | JD 没写、由 agent 推断的 | "看起来汇报给业务负责人""团队规模应该不大""这大概是个从 0 搭的岗位" |
**每条 `我推测的` 必须附一句"要证实它,你该问谁 / 查什么"。** 例:
> 汇报线:推测直接汇报给业务线负责人 · `我推测的`
> 要证实它:面试时问"这个岗位向谁汇报,团队现在有几个人" —— 这类问题对方大概率能答,答不上来本身也是信号。
### ⭐ 推测项不能单独把一个岗位判成「不投」
一条标着 `我推测的` 的信息,**不足以触发硬性排除条件**。它可以让级别降一档并挂上"待确认",但不能直接关门。
⭐ **去向与必要条件的第三态同构,一条都不许少**:**降一档 + 挂待确认 + 升级为面试必问项**(交给 [`interview-strategic-assessment`](../interview-strategic-assessment/README.md))。
⛔ **只挂在"待确认"里、不给去向的推测项,到面试当天不会变成任何一个你问得出口的问题** —— 它会一直停在那里,而级别已经被它压低了。
理由:排除条件的杀伤力是短路式的、不可逆的(不投 = 没有反馈 = 阈值校不动)。**用一个猜测去触发一个不可逆的动作,是这个模块最贵的错误形态。** 这与 [`05-offer`](../../05-offer/README.md) 的「推测项不参与排序」是同一条处理方式。
---
## 不对劲的时候
`症状 → 最可能原因 → 你下一句该说什么`
| 症状 | 最可能原因 | 你下一句该说什么 |
|---|---|---|
| ⭐ **所有岗位都判成「较匹配」** | 硬性排除条件没定,或全部用了默认值——于是没有任何东西能把岗位推到两端 | *"先把你的必要条件和排除条件各写 2-3 条,再重跑一次"* |
| **所有岗位都判成「不投」** | ① 排除条件写得比你的真实底线更严 ② 你在试新方向,但它读不到任何活跃探路分支,按主线阈值判 | *"把这几条排除条件按'不满足我就真的不会去'再筛一遍;如果我在试新方向,先把这条探路分支说给你听"* |
| **定级理由是"综合看比较匹配"这种一句话** | 抽取表没填完,或条件没编号——理由无处可追 | *"把每条定级理由改成指向具体条件编号的形式;指不到就直接说指不到,我们回去看抽取表哪一栏是空的"* |
| **抽取表里出现了 JD 原文里没有的措辞** | 抽取阶段做了评价或润色,原始信号已被洗掉 | *"重新抽一次,这一栏只许贴原文句子;原文没写就写'原文未提及'"* |
| **同一家公司两条岗位定级完全相反,但 JD 差别不大** | `核心职责` 那一栏的两组区分没做,或薪资原文被折算过 | *"把两份 JD 的核心职责原文并排贴出来,我们看差在哪一句"* |
| ⭐ **一批岗位因为"JD 没写"被判成「不投」** | 必要条件被当成两态判了——「原文未提及」被算成了「未满足」 | *"把所有因为『原文未提及』判成不投的重判一遍:那是待确认项,不是判定——降一档 + 挂待确认 + 升级为面试必问,不投的只留原文能证伪的那些"* |
| ⭐ **它问你"定级结果存哪",或者自己起了个文件名** | 落点规则没读到 | *"定级结果一批一份,存 `triage/<日期>-定级结果.md`,日期和这批 JD 的 `jobs/` 文件对齐;里面每条要有级别 + 能追到条件编号的理由 + 待确认项"* |
| ⭐ **强匹配和较匹配总是分不开,或者忽然冒出一个上沿数字** | 加分条件的上沿还是 `纯占位待校准`(首轮的默认状态);后一种是它自己编了一个 | *"这一批先收敛成三级,只给批内相对排序,别编上沿;等我攒够可反推的样本再按第三步标定"* |
---
## 三级自救阶梯
**不要一出问题就把活推回给人。** 上面那张表是 L3 的载体,不是"一遇事就回报"的入口。
| 级 | 什么时候到这一级 | 该做什么 | ⛔ 不该做什么 |
|---|---|---|---|
| **L1 有现成的,直接走** | 抽取模板与定级规则命中 | 按规则执行,**不问**。已有条件能裁决的判断自己裁决 | 不为"确认一下"打断用户 |
| **L2 没现成的,自己走通 + ⭐ 沉淀** | 上游文件缺 / 用户散着贴来一堆材料 / JD 格式怪 / 某一栏原文没写 | 自己把散料整理成抽取表;自己从口述里现场整理出最小版本的条件清单;拿不准就**按更保守的一侧判**并记下理由。**走通之后写回去**——条件清单存进 `positioning.md`、新的抽取线索补进模板、定级结果与理由记进 `ledger.md` | ⛔ **不把"这次绕过去了"只留在会话里**。没沉淀 = 下次还得再试一遍 = 等于没走通 |
| **L3 实在不行,才回报人** | L2 也走不通;或只有用户本人才有的事实(他的真实底线、他是不是在试新方向) | 输出 **症状 + 已经试过什么 + 建议你做什么**(给可选项) | ⛔ 不输出裸错误;⛔ 不说"请提供更多信息"这种没有指向的话;⛔ 不把 L2 该自己解决的整理工作推给用户 |
---
## 变更日志
- **v0.1.2**(来自 [`fixtures/jd-triage/`](../../../fixtures/jd-triage/expected.md) 首轮双向断言,**只改判据表述,不动结构**):两处都不是区分力失败,是**首跑时 hit 侧无判据可依 / 落点缺失** ——
- **三级收敛期的「降一档」没有取值**:SKILL 只定义了"强匹配→较匹配 / 较匹配→保留但标注",而**首轮的每个人都在三级收敛期**(〔B 上沿〕未校准),那时只有「匹配」一档、降无可降。已写死口径:保留「匹配」+ 标注"关键项未确认" + 批内排到同等命中数之后,⛔ 不许因为降不动就把三态压回两态判「不投」。
- **排除条件侧的推测项没有去向**:必要条件第三态明写"降一档 + 待确认 + **升级为面试必问项**",而 §来源标注「推测项不能单独判「不投」」只写了前两样。已补齐第三样并写明理由 —— **只挂在待确认里、不给去向的推测项,到面试当天不会变成任何一个你问得出口的问题。**
- **v0.1.1**(来自一次端到端实跑测试):必要条件补第三态「原文未提及」(降一档 + 待确认 + 面试必问,**不据此判「不投」**)· 定级结果有了明确落点 `triage/<日期>-定级结果.md` 与四个位置的边界 · 补「加分条件表非空但上沿未校准」这一档(首轮默认状态)与它的解开条件 · 「最小可接受形态」写清拿得到 X / 拿不到 Y · 第一步点明「这条是怎么进来的」这一栏的用途。
- **v0.1.0**(首发,骨架):抽取纪律 + 四级定级短路顺序 + 阈值标定方法 + 探路分支更宽阈值与降级行为 + 三段式区块(开跑前 / 来源标注 / 不对劲的时候)+ 三级自救阶梯。**所有阈值参数化留空**(「不投」一栏**不设缺口上限参数**——必要条件未满足即不投,豁免只能来自显式的探路分支),完整定级模板排 v0.3。
## 真人反馈修订 · 2026-09-13
信息不足时主动检索、集中追问并在补齐后更新判断;不只交付缺口清单。
Files in this skill
- README.md
- SKILL.md
- templates/jd-抽取模板.md
- templates/定级规则模板.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.