Back to skills
SKILL.md
05 Offer
ASecurity> **把本文件整份交给你的 agent 即可。** 不依赖任何特定 agent 产品,不需要注册斜杠命令、不需要放进特定目录、不需要装任何东西——`SKILL.md` 只是一个文件名约定,不是某一家的格式。把这份文件粘给它,说一句「按这个帮我排一下手上的 offer」就能开始。 **这份文件是写给 agent 的执行剧本。** 你(使用者)只需要读「开跑前」「一、最小路径」和「不对劲的时候」三节——其余章节(写死的五条纪律、可选维度池、完整输出格式等)是 agent 执行时要查的细则,你不需要现在通读。 > ⭐ **如果你是人,而且想自己想清楚而不是要一个排序** —— 去读 [`透镜库.md`](透镜库.md)(八个角度,纸上就能做完)。⛔ 那份不出结论,本份才出。 > 下面是标题原文,找的时候直接 Ctrl+F / Cmd+F 搜标题文字即可跳转。 | 小节 | 在讲什么 | 你(人类)现在要读吗 | |---|---|---| | 开跑前 | 要什么输入、缺了怎么退化 | ✅ 读 | | 一、最小路径(四步跑完…) | 四步跑完拿到一版排序 | ✅ 读——这是本文件的主体...
- 76 stars
- 0 votes
- 0 copies
- 0 views
- Added September 27, 2026
Security analysis
100/100Pro scans all 3 files and shows the line behind each finding
npx -y skills add gilgameshcc/ai-native-jobhunt --skill 05-offer --agent claude-codeAre you the author of 05 Offer?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/gilgameshcc-05-offer)# SKILL · Offer 排序与翻转点
> **把本文件整份交给你的 agent 即可。** 不依赖任何特定 agent 产品,不需要注册斜杠命令、不需要放进特定目录、不需要装任何东西——`SKILL.md` 只是一个文件名约定,不是某一家的格式。把这份文件粘给它,说一句「按这个帮我排一下手上的 offer」就能开始。
**这份文件是写给 agent 的执行剧本。** 你(使用者)只需要读「开跑前」「一、最小路径」和「不对劲的时候」三节——其余章节(写死的五条纪律、可选维度池、完整输出格式等)是 agent 执行时要查的细则,你不需要现在通读。
> ⭐ **如果你是人,而且想自己想清楚而不是要一个排序** —— 去读 [`透镜库.md`](透镜库.md)(八个角度,纸上就能做完)。⛔ 那份不出结论,本份才出。
### 全文索引(九个顶级小节,一时找不到内容时先看这里)
> 下面是标题原文,找的时候直接 Ctrl+F / Cmd+F 搜标题文字即可跳转。
| 小节 | 在讲什么 | 你(人类)现在要读吗 |
|---|---|---|
| 开跑前 | 要什么输入、缺了怎么退化 | ✅ 读 |
| 一、最小路径(四步跑完…) | 四步跑完拿到一版排序 | ✅ 读——这是本文件的主体 |
| 二、写死的五条纪律(agent 不许改) | agent 不许碰的判断规则 | ⛔ agent 查,人不用通读 |
| 三、交给现场检索的部分(websearch) | 哪些数据要联网查 | ⛔ agent 查 |
| 四、可选维度池(不是必填清单) | 除四维外还能加什么维度 | ⛔ 深潜才需要 |
| 五、输出格式(六件事,缺一不可) | 最终产出物的完整规格 | ⛔ agent 查,产出物本身已经是「一页纸」呈现,你看那份就够 |
| 来源标注 | 三套标签体系的完整定义 | ⛔ agent 查(精简版已提前放在「开跑前」末尾) |
| 不对劲的时候 | 跑歪了怎么排查 | ✅ 出问题时读 |
| 三级自救阶梯 | agent 卡住时怎么自己找路 | ⛔ agent 查 |
---
## 交付约定:易用性与完成度优先
Agent 负责整理并完成本次可做部分,交付可直接人工 review 的成品,不止给建议或空表。先读用户工作区的 `policies/`;用户可配置的执行偏好和参数集中在这里维护,已有求职条件仍以 `positioning.md` 为准。明确要求的调整直接写回并在 `policies/changes.md` 记录旧值、新值、理由与影响;Agent 建议标待确认。
用户已指定路径就直接创建本次所需目录;未指定时一次询问存放位置,同时继续整理材料。不得要求用户先手工建文件夹,不得把个人材料写进公开仓库。具体岗位建立或复用 `applications/日期-公司-岗位/README.md`,索引实际成品,初始化只补缺失文件;原始材料和历史审阅保留,策略、申请索引及衍生产物可按本次授权更新并记录变更。结束前写 `reviews/日期-任务.md`:成品路径、结论依据、采用策略、待确认项及影响、实际检查和下一步;重新读取文件核对后给可点击路径。缺材料时先完成不依赖它的部分并标部分完成;无文件写入能力须明确未落盘。可审阅不等于获准发送,外部动作仍按既有授权和模块边界。
交付前交叉核对报告、申请索引、台账和审阅卡:结论与下一步必须一致,已判不投的岗位只说明排除依据及证据或本人条件改变后可重评,不沿用继续推进的话术。内容重排后修正上下文指代;检查数量只填写工具实际统计值,未统计就列检查对象,不手写估数。发现历史审阅错误时另写勘误,保留原记录。
完整规则与模板见 [本地交付约定](../../docs/delivery.md);只拿到本 SKILL 时按以上约定建立最小 Markdown 文件即可,不要求先跑其它模块。
## 开跑前
### 要什么 / 缺了退化成什么
| 输入 | 必需? | 缺了会退化成什么 |
|---|---|---|
| 每个 offer 的**薪资结构**(固定与浮动怎么拆、几薪、有没有期权,**不需要具体金额**,相对量就够) | ✅ 必需 | 缺这个不能跑。但它可以是相对的:「B 的固定部分比 A 高一点、浮动比 A 少一半」就足够 |
| 每个 offer 的**通勤时间**(单程,门到门) | ✅ 必需 | 缺这个不能算真实时薪——而真实时薪是最小路径唯一要算的东西 |
| 你的**必要条件**(不满足就不去,写 2-3 条) | ⚠️ 强烈建议 | 没有就没有 gate。agent 会先要你写,写不出来说明你还没决定在找什么 |
| 每周典型工作时长 / 加班常态 / 有没有值班待命 | 可选 | 缺了按「与你现在相当」计入,并标 `我推测的`,且列进翻转点。⚠️ **「你现在」本身也缺时**(刚毕业 / 空窗 / 现职体感说不清),退到 `周工时默认` = 每周约四十五小时,标 `纯占位待校准`,并**必须**列进翻转点做三点采样 |
| 面试复盘(`interviews/<company>-<date>.md`) | 可选 | 「发展空间」这一维只能标 `我推测的`,因而**不参与排序**,只列进「要证实它你该问谁」 |
| 面试前评估(`assessments/<company>.md`) | 可选 | 「下行风险」退化成公开渠道现查 + 答复前必问项 |
| 你现在这份工作的同样几项 | ⚠️ 强烈建议 | 缺了「留在原地」这一列会变成空的——**而没有它就没有机会成本,也就没有翻转点** |
| ⭐ **上游文件在工作区的哪个位置**(`positioning.md` / `assessments/` / `interviews/` 分别在哪个目录;没有就明说没有) | ⚠️ 强烈建议 | ⛔ **不问这一条,最典型的后果是第 1 步从零重问必要条件**,而 `positioning.md` 里已经写着了——**一条真·事前条件被当场重问一遍,时点就变成今天,被降级成 `事后重构`**。见第 1 步 |
| ⭐ **你这台机器能不能联网检索** | ⚠️ 强烈建议 | **不能联网时「三、交给现场检索的部分」整节不可用**(租金水平 / 通勤时长 / 社保政策 / 业务线存活史全部拿不到)→ 这些格一律标 `我推测的` 并按单元格退出排序,**整批升级为「答复前必问项」**,并在「口径与假设」写一行「本次无联网检索」。⛔ 不许假装查过 |
| ⭐ **答复截止日**(对方要你几号之前给答复) | ✅ 必需 | ⛔ **拿不到就明写「截止日未知」,不许默认成「还有时间」。** 它是**多处判据的输入**:「要不要为还在流程中的那家拖延答复」的第 1 条判据要拿它当比较对象(没有它 → 那一条记 `判不出来`);「必问项问不到而答复截止已到」整节要靠它才触发(没有它 → **「来不及问」这件事在文件里彻底不可见**)。⚠️ 它以前不在这张表里,于是两处判据都在引用一个从来没被要过的输入。⭐ **它有三档,⛔ 不是两档**:`已知(_月_日)` / `未知` / ⭐ **`结构上不存在`** —— 见下面那一小节 |
| ⭐ **这些材料是什么时候写的 / 这些事发生在什么时候** | ✅ 必需 | ⛔ **只标检索日期不算。** 缺了「材料日期」,「**当时可不可知**」和「**现在是否属实**」会被混成一件事 —— 实跑里三个案例都撞上这个,其中一个直接踩雷:**最关键的那条公开信息公示于当事人的决策时点之后**。见下面「材料日期 vs 检索日期」 |
| ⭐ **你的决策时点是哪一天**(⭐ **三种,⛔ 不是两种**:**A · 正在做决定** = 今天 / **B · 回溯 · 复盘** = 当时那一天、那件事已经结束 / ⭐ **C · 决策在过去做出、但至今仍在继续** = 当初那一天,而那个决定今天还在过着、今天仍然动得了) | ✅ 必需 | ⚠️ **本模块默认时点是「正在做决定」,但它不是唯一形态。** 不问出来并写进「口径与假设」,「公示晚于决策时点的信息不能用来评价当时的判断」这条纪律就**没有判据可用**。⭐ **它同时是一页纸第 ③ 块选哪种措辞的判据**(A → 「这几天该做什么」;B → 「这一次已经定了的,和下一次要提前做的」;⭐ C → 「当初定的那件事,和今天还能动的那部分」)—— 见输出格式第 1 件 |
| ⭐ **你本人在不在场**(能不能随时回答追问) | ✅ 必需 | 不在场(只有一份材料、没人可问)→ 走「⭐ 用户不在场」那一支:gate 的必要条件**从材料里认定**,整张 gate 表标 `未经确认`。⛔ **不许因为"没人可问"就跳过 gate** —— 那会退回 `无 gate` 恒触发的死循环 |
### ⛔⭐ 答复截止日的第三档:`结构上不存在`(⛔ 旧版只有"已知"和"未知"两档)
⚠️ **旧版把"没有截止日"整个塞进了 `未知`,⛔ 而两者完全不是一件事**:`未知` 说的是「**有一个截止日,我还没问到**」;⭐ **`结构上不存在` 说的是「根本没有一个在等你答复的对方」** —— 典型是「你想好了随时说」,或者本次决策的形态就是「还要不要待下去」(**零个 offer + 有在职工作**那一支)。
- ⭐ **判据字面**:**有没有一个具体的对方,在等你在某一天之前给一个答复?** ⛔ **没有 → `结构上不存在`**;有、只是没问到 → `未知`
- ⭐ **⛔ 它不是"缺输入",它本身就是病灶** —— **没有截止日,决策会被无限推迟;而推迟不是"还没决定",⭐ 推迟就是选了默认选项**(多数情况下是「留在原地」)。⚠️ **默认选项会替你做决定,而且做完不会通知你。**
- ⭐ **处理写死:自己设一个。** 写进「口径与假设」的答复截止那一格,并注明 **`这是你自己设的,不是对方给的`**
- ⭐ **并照着说一句(⛔ 不许省)**:**「这件事没有人在等你答复,所以不会有任何时刻逼你决定 —— 也就是说,你不定,就是定了『不动』。我把 ×× 定成本次的截止日,⛔ 这不是对方给的。」**
- ⭐ **下游照常用它**:以答复截止日为输入的那几处判据(`未成 offer` 的判据 1 · 「必问项问不到而答复截止已到」),⭐ **拿你自己设的这个日期当比较对象**,⛔ 不再记 `判不出来`
- ⛔ **不许拿它去解除任何标记** —— 自己设的截止日到了,同样 ⛔ **不是解除四种标记的理由**(同「答复截止到了不算解除理由」)
### ⭐ 最小可接受形态
> **三组数据:两个 offer + 你现在这份工作,每组只要「薪资结构 + 通勤时间」,就可以起步。**
⚠️ **是三组,不是两组。** 「留在原地」是写死的第 0 列(见第 0 件事),它缺了就没有机会成本、没有指数基准、也就没有翻转点——所以**第一次问用户要数据时就要一次问三组**,不要问完两个 offer 才想起来还有第三列。
**万一「留在原地」这一组真的拿不到**(比如用户目前没有在职工作):把指数基准换成**两个 offer 里薪资结构更简单的那一列** = 100,并在「口径与假设」一节**显式声明**:*本次无「留在原地」列,因此无法计算机会成本,排序只在给定的 offer 之间成立*。⛔ 不许静默地把它当成不存在。
其余的 agent 自己现查、自己整理、自己标来源;实在拿不到的,写成「答复前你要问清的三条」,不猜。
### ⚠️ 另外三种常见形态(⛔ 都不许静默跳过)
#### ① 只有一个 offer,且当前没有在职工作 —— 连基准列都没有
- ⭐ **基准列 = 那个 offer 自己 = 100**,并在「口径与假设」明写:**本次指数不承载任何比较含义,只是一个记账口径**
- ⛔ **机会成本算不出来,就说算不出来。** ⛔ 不许拿"市场上一般的岗位""上一份已经结束的工作"或任何想象中的基准去补 —— 那是编的
- ⭐ **但本模块不因此失效,只是结论形态变了**:只剩一列时,⭐ **gate 才是全部价值所在** —— 它问的不是"哪个更好",而是「**这个到底过不过得了你自己写下的线**」,一个**二值判定**
- gate 照跑,四种标记(`gate 未通过` / `有条件满足(待闭合)` / `gate 待定` / `无 gate`)照带
- 真实时薪照算,但它只用来**和你自己写下的底线比**,⛔ 不与任何虚构基准比
- 翻转点照写;「第 1 名最弱的一维」改写成「**这个 offer 最弱的一维**」,⭐ 五种合格答案照旧(含「本次没有第 1 名」与「你在乎的那几维上没有短板」两种)
- ⭐ **结论形态写死**:从"排序"改成 **接 / 不接 / 先补一条信息再定**,并照着说一句:**「本次没有可比对象,所以这不是一个排序结论,是一个 gate 结论。」**
#### ② 手上一个 offer,另一家还在流程中 —— ⭐ 这很可能是最常见的形态之一
⚠️ 「还在面、尚未成为 offer 的机会」旧版**完全没覆盖**:它进不进表?以什么身份进?写死如下。
- ⭐ **它进表,但不参与排序**:单独一列,带 **`未成 offer`** 标记
- **为什么必须进表**:⭐ **「等不等它」本身就是今晚要决策的事。** 把它留在表外,用户拿到的排序会假装这个选择不存在
- **为什么不参与排序**:它没有任何可落纸的条款,取值最多到 `我推测的`。⛔ **不许给它名次,哪怕是最后一名** —— 那等于给一个还不存在的东西发名次
- **那一列填什么**:只填**已经发生的事实**(走到第几轮、对方说的下一步时间、岗位描述里写了什么),逐格标来源。⛔ 不许按"如果拿到,条件大概会是什么样"去填
- ⭐ **「要不要为它拖延答复」的判据 —— ⛔ 每条有三种取值,不是两种**:⭐ **`成立` / `不成立` / `判不出来`**
1. **时间上够得着** —— 对方给得出的下一步时间点,够得上你手上这个 offer 的答复截止。⭐ **这一条要问出来,⛔ 不许推测**:「你们大概什么时候能给结果?」是一句可以直接问出口的话
- ⭐ **没有提问对象时**(离线 / 材料型输入 / 手上根本没有对方的联系人)→ ⛔ **不许推测,也 ⛔ 不许因此判 `不成立`** → 记 **`判不出来`**
- ⚠️ **判据 1 还依赖「答复截止日」当比较对象**(见「开跑前」输入表)—— **截止日未知时同样记 `判不出来`**,⛔ 不许默认成"还有时间"
2. **它有可能改变决定** —— ⭐ 判法写死:**把它假想成"已经拿到、且条件与你手上第 1 名相当",看决定会不会变**。⛔ 连"条件相当"都改变不了决定的(典型:它在某条必要条件上已经明确不满足),不值得为它拖
- ⭐ **手上没有第 1 名时,锚点写死怎么换**(⚠️ 这一条旧版预设"存在第 1 名",而四种标记随时会让**一列都排不了第一**):**四种标记导致没有一列能合法排第一 → 锚点换成「排在最前面的那一列」**;**手上只有一个 offer → 锚点就是它**;⛔ **手上一个 offer 都没有 → 记 `判不出来`**(没有任何可比对象,这一条问不出答案)
3. **拖延的代价可承受** —— 把"延一天要付什么"写下来(要不要回去谈、影不影响入职时间)。⭐ 「再要一天」多数公司给得起,而**要不要得到本身就是一个信号**(与「必问项问不到而答复截止已到」同一条)
- ⭐ **三种收场写死(⛔ 旧版只有前两种)**:
- **三条全 `成立`** → `等`
- ⭐ **任一条 `不成立`** → `不等`(⛔ 与旧版一致)
- ⭐ **一条都不 `不成立`,但有 `判不出来`** → ⭐ 收场是 **`判不出来`**,⛔ **不是 `不等`,也不是 `等`**。写死三个动作:**① 照"没有它"的样子先出一版排序**(⛔ 不停下)· **② 把那条 `判不出来` 的判据写成「答复前必问项」的第 1 条**(判据 1 → 「你们大概什么时候能给结果?」;判据 2 → 「我手上到底有没有一个能拿第一的选项?」先回去解决那个)· **③ 明写代价让用户自己签字**(照「必问项问不到而答复截止已到」那四条)
- ⛔ **不许把 `判不出来` 当成 `不成立`。** 那等于"我没人可问"直接判它不值得等 —— ⚠️ **而"没人可问"说的是你的处境,不是那家公司的**
- ⛔ **不接受"万一它更好呢"作为拖延理由** —— 那是一个**没有临界取值**的假设,而本模块对假设的要求就是写出临界取值(见输出格式第 4 件)
- ⭐ 判 `不等` 或 `判不出来` 时都在表下写一行「**为什么**」,⛔ 不许静默把这一列删掉
- ⭐ **它什么时候升级成正式一列**:**拿到录用通知之后**(口头的按 `你给的(口头说的)` 后缀处理)。那时去掉 `未成 offer` 标记,重跑一次
#### ⛔ 「连流程都没开始」的机会:不进表
⚠️ **`未成 offer` 只覆盖「还在流程中」,⛔ 不覆盖「连流程都没开始」** —— 一个还没投、只是在考虑的方向,旧版没有位置,于是它要么被硬塞成一列,要么整个消失。
- ⭐ **判据是纯字面的:有没有一件已经发生的事**(投了 / 约了 / 面了 / 对方说过下一步时间)。**一件都没有 → ⛔ 不进表**
- **理由**:`未成 offer` 那一列的填表判据本来就是「**只填已经发生的事实**」—— 而这里**一件都填不出**。硬塞进去只会得到一整列 `我推测的`,⛔ 那不是信息,是占位
- ⭐ **它的正确去处是「这几天该做什么」里的一条动作**(例:「今天投 ××,问一句他们的流程要几周」),⛔ 不是表里的一列
- ⛔ **也不许拿它去凑第二列** —— 见下面「零个 offer + 有在职工作」那一支
#### ③ ⭐ 零个 offer,但有在职工作 —— ⛔ 这一形态旧版完全没覆盖
⚠️ **旧版覆盖了"一个 offer 无在职"和"一个 offer 另一家在面",缺的正是这第三种。** 后果很硬:**六件必需产出里有三件失去了对象**(③ 排序结论 · ④ 翻转点 · ⑤ 第 1 名最弱的一维),⛔ **而模板对这三件都写着「不许留空」** —— 于是执行者要么留白违规,要么硬编一个不存在的名次。
- ⭐ **这不是"没得跑",是一次单列体检**:表里只有第 0 列「留在原地」,⭐ **gate 照跑** —— 它问的是「**你现在这份工作,过不过得了你自己写下的线**」,一个**二值判定**(与形态 ① 同构,只是那一列不是 offer)
- ⭐ **指数基准仍是「留在原地」= 100**,并照着写一句:**本次指数不承载任何比较含义,只是一个记账口径**
- ⭐ **三件失去对象的产出,各给一个写死的替代形态**(⛔ 不许留空,⛔ 也不许硬编一个不存在的名次):
| 六件里的 | ⭐ 零个 offer 时写什么 |
|---|---|
| **③ 排序结论 + 每一名与下一名差在哪一维** | ⭐ 改成「留在原地」这一列的 **gate 结论**:**过 / 不过 / 哪一条还没判出来**。⛔ 不出名次(只有一列,没有"下一名"),并照着说一句:**「本次只有一列,所以这不是一个排序结论,是一个 gate 结论。」**(与形态 ① 同一句) |
| **④ 翻转点** | ⭐ 改成「**什么变了,你就该开始看外面**」:每条照旧写全五段,只是最后一段从"排序会怎么翻"改成 —— ⭐ **取到这个值时「留在原地」就不再过 gate**。⛔ **不许因为"没有排序可翻"就写"无翻转点"完事** —— 翻的对象换了,**临界取值照样存在** |
| **⑤ 第 1 名最弱的一维** | ⭐ 改写成「**留在原地最弱的一维**」,三段照写,⭐ 五种合格答案照旧(含「本次没有第 1 名」与「你在乎的那几维上没有短板」两种)(与形态 ① 的改写同构) |
- ⭐ **① 一页纸、② 横向对照表、⑥ 决策分离结论三件不变**,只是表里只有一列;⭐ **一页纸的第一句形状改成**:**「你现在这份工作过得了 / 过不了你自己写下的线,缺的那一件是 ××。」**
- ⛔ **不许把「还在考虑但没投的方向」补进来凑第二列**(见上一小节)—— 那一列填不出任何已经发生的事实
### ⭐ 一致性自查(⛔ 在开始算之前跑一次)
⚠️ **实跑撞到的形态**:材料里一处事件日期**晚于答复截止日** —— 用户自己写岔了、记错了,或者两处来源打架。⛔ **框架里没有任何位置处理"材料自己前后对不上"**,于是执行者只能去借「两套都跑 + 显式声明」那个模式,⚠️ **而那个模式是为「外部事实不确定」设计的,⛔ 不覆盖「材料自我矛盾」**。
⚠️ **这一条与「材料日期 vs 检索日期」是并列的两条纪律,⛔ 不许混成一条**:
| 纪律 | 它管的是 |
|---|---|
| **材料日期 vs 检索日期**(见第三节) | ⭐ **材料与外部世界的关系** —— 这件事公示于什么时候、当时可不可知 |
| ⭐ **一致性自查(本节)** | ⭐ **材料与它自己的关系** —— 同一份材料里两处对不上 |
- ⭐ **检查什么(三项,⛔ 一项都不许省;逐项在「口径与假设」里写「无冲突」或写冲突原文)**:
1. ⭐ **日期先后**:事件日 vs 答复截止日 vs 材料日 —— 有没有哪一组的先后关系说不通(典型:某件事的日期**晚于答复截止日**,却被当成决策依据)
2. ⭐ **同一件事在两处的取值是否一致**:同一条条款 / 同一个工时 / 同一条必要条件,在两处写的不是一个值
3. ⭐ **相对量的基准是不是同一个**:「高一成」「少一半」这类说法,两处是不是拿**同一列**当基准(⛔ 基准不同的两个相对量不可比,同「同一份表里所有列必须用同一种通勤口径」)
- ⛔ **发现冲突时的三条禁止**:⛔ **不许自己挑一个用** · ⛔ **不许静默取平均** · ⛔ **不许因为"看起来是笔误"就替用户改掉**
- ⭐ **用户在场 → 把冲突原样念回去**(⛔ 不许改写成你自己的话):**「你这里写 ××,那里写 ×× —— 哪个对?」** 拿到答复再往下算
- ⭐ **用户不在场时(材料型输入,没人可问)→ 两种读法都跑**:
- **两种读法指向同一结论** → ⭐ **正常输出**,并附一句:**「这一处你的材料前后对不上(这里写 ××,那里写 ××),但两种读法的结论相同。」**
- ⭐ **两种读法指向不同结论** → ⭐ **这就是本次最该先解决的事**:写进输出**最前面**(一页纸第一段;人话译法见输出格式第 1 件的译法表),⛔ 不许埋在下面某一节里
- ⚠️ **它借的不是「两套都跑」那个模式的理由,只是它的形状**:那个模式处理的是**外部事实不确定**(`事后重构` 的必要条件 / 被覆盖的误差带 / 换一种通勤方式),这里处理的是**材料自我矛盾**。⛔ 两者的声明句不许混用
- ⛔ **自查跑没跑过要留痕**:「口径与假设」里那三行**空着 = 没跑过**。⛔ 不许因为"本次没冲突"就把它整块删掉 —— **删掉之后,「跑过且无冲突」和「根本没查」在文件里长得一模一样**(同「①② 的对照表不许整块删掉」)
### ⛔ 四条禁止(这一节是对 agent 说的)
1. **不许报错退出。** 输入缺、格式乱、只有半句话,都不是停下的理由。缺什么就明确说「你至少给我 X」,然后用手上有的先跑一版
2. **不许静默自己编。** 任何你没被告知、也没查到的取值,一律标 `我推测的`,并且**不参与排序**。⛔ 不许把推测混进表里当事实
3. **不许一次只问一个问题挤牙膏。** 需要补的东西一次问完(最多两轮)。先用已有信息出一版带「待确认」的排序,再让用户一次补齐
4. **不许把该你自己做的整理工作推给用户。** 用户散着贴来的 offer 条款、聊天记录截图转述、语音转文字,**你负责整理成表**。⛔ 不许说「请先按模板填好再给我」
### ⭐ 提前预告:本模块有三套独立的标签体系,别混用(完整定义见「来源标注」节)
⚠️ **下一步(第1步·过gate)第一张表就要用到其中一套,所以提前放在这里,不等到全文后段才说。**
| 体系 | 枚举 | 贴在什么上 |
|---|---|---|
| **来源标注** | `你给的` / `公开可查` / `我推测的` | **对照表里的每一格取值**(gate 表也算) |
| **参数来源等级** | `实践校准` / `默认建议值` / `纯占位待校准` | **「口径与假设」里的每个参数** |
| **证据等级** | `合同白纸黑字` / `面试口头` / `公开记录` / `自己估算` / `未验证` | **翻转点里的每条假设** |
三套**互不换算、互不覆盖**——一个取值可以同时挂三套里的各一个标签。这里只给你先认个脸熟,完整判据(比如 `我推测的` 具体怎么处理、`未验证` 什么时候用)见后面「来源标注」节。
---
## 一、最小路径(四步跑完 + 一版带待确认标记的排序)
**先跑完这四步,再考虑要不要往下深潜。**
> ⭐ **最小路径的承诺是一条产出边界,不是一个分钟数。**
>
> > **最小路径 = 四步跑完 + 一版带待确认标记的排序。**
>
> 展开就是:**第 0 列 + 二值 gate(满足 / 不满足)+ 一维真实时薪 + 一句排序 + 六样必需产出(允许带待确认标记)。** 这些跑完就算跑完了。
>
> ⚠️ **上一版承诺"10 分钟",那是错的,本版撤掉。** 撤掉的理由不是"实测更久",而是**文件自己就把它证否了**:上一版给四步各写了分步预算,**相加正好把 10 分钟占满** —— 也就是说它在被写下来的那一刻就已经零余量,任何一处对照被触发都必破。**一个自己算出来就已经占满的分钟数,是在承诺一件文件自己证否的事。** 所以本版**一律不给最小路径写分钟预算**。
>
> ### ⛔ 下面这些一律不在最小路径里,全部划入深潜
>
> | 划入深潜的 | 最小路径里怎么处理(⛔ 不许当场跑,也 ⛔ 不许静默省掉) |
> |---|---|
> | 必要条件是 `事后重构` → 含它 / 不含它两套排序 | 该条标 `事后重构`,该列在这条上标 **`gate 待定`** 挂起到深潜(冷启动场景例外,见第 1 步) |
> | 「有条件满足」这一档与它的闭合性判据 | **最小路径的 gate 只判满足 / 不满足两档。** 判不出这两档的(包括本该判「有条件满足」的),一律标 **`gate 待定`** 挂起 |
> | 换一种通勤方式会改变 gate 判定 → 两种都跑 | 按**更慢的那一种**判(保守缺省,见第 1 步),并标 **`gate 待定`** 挂起 |
> | 三点采样与交互项 | 参数按默认值先算一版,并在「口径与假设」写一行「**本次未做三点采样,这是初版排序**」 |
> | 误差带的**跨维裁决** | 最小路径只有一维,没有"下一维"可换,所以不做跨维裁决。⚠️ **但误差带本身仍必须在「口径与假设」里报出本次取值 + 声明轮次** —— 它是"这一维分不分得出来"的判据,最小路径照样要用 |
>
> ### 为什么选这条修法(把对照移进深潜),而不是"保留对照、承认最小路径不是一件快事"
>
> 两条路都能修掉"承诺与实际不符"。选前者,是因为**后者等于把一批已知会被触发的重活,留在"最快见效的那条路"上** —— 而这条路的用户特征恰恰是「**今晚就得答复、第一次用这个模块**」。**把重活留在那里,实际结果不是他跑完,是他跳过。** 移进深潜之后,这些情形在最小路径里**不是消失,是变成一个可见的 `gate 待定` 标记 + 一句"这一条要往下深潜才能定"** —— 用户知道自己欠了什么,而不是拿到一版看起来已经跑完了的排序。
>
> ⛔ **反过来也成立:进了深潜,触发了就得跑。** 跑不完就明说"这几套对照我没跑,结论的把握程度因此下降",**不要静默省掉**。深潜要花多久取决于你手上有几条待确认的假设 —— **深潜没有时间承诺,也不该有**:给一个"深潜也只要二十分钟"的数字,等于逼着执行者跳过对照。
### 第 0 件事:把「留在原地」加成一列(写死,不许省)
**「留在原地」不是「不做决定」,它是第三个候选项**,和别的 offer 一样有真实时薪、有发展空间、有下行风险。用户不主动提,你也要加上;用户说「我肯定要走」,你仍然加上——**它是机会成本的基准,删掉它整个排序就没有参照系。**
### 第 1 步 · 过 gate
> ⭐ **先看这里,再往下读**:本步骤按"你的情况分支"组织,不要求从头顺序读完——多数小节前面已经标好触发条件(工作区有没有 `positioning.md` / 用户在不在场 / 输入是材料还是当面写下的),**只读命中你实际情况的那几条**。⭐ **唯一被明确划给"深潜"、最小路径可以直接跳过的是本步骤末尾「有条件满足」的闭合性判据**——最小路径只判「满足 / 不满足」两档,遇到疑似"有条件满足"的情况,标 `gate 待定` 挂起即可,不用现在判定。
#### ⭐ 第一个动作不是"让用户写",是"先看工作区有没有 `positioning.md`"
⛔ **不许一上来就从零重问必要条件。** 先看工作区里有没有 `positioning.md`(求职方向定位的产出物):
- **有** → **直接读它**,把里面的条件原样接过来
- ⭐ **写下时点按那个文件里记的写下日期判**,⛔ **不按"他今天跟你说的时间"判**。**一条用户几周前手写下来的真·事前条件,被你当场重问一遍,时点就变成今天,进而被降级成 `事后重构`** —— 那不是在核验,那是在**当场把一条真事前条件毁掉**
- ⛔ 文件里没记写下日期时,也不许默认按今天算:按「说不清」处理(→ **按事前算**,见下面的保守缺省)
- **没有** → 才要用户现在写下 **2-3 条必要条件**(不满足就不去)。写不出来就给他这三个提示:*上一份工作最后让你决定离开的是什么?* / *哪一条你答应了自己再也不将就?* / *哪一条如果三年后回头看会觉得当初不该让步?*
#### ⭐ gate 的输入通道有三条,⛔ 不是两条(按顺序试,前一条不成立才试下一条)
⚠️ **这是上一轮 gate 从没跑起来的根因,而它此前被误判成"回溯场景的固有限制"。** 旧版只有两条通道 —— ① `positioning.md`、② 让用户当场写 —— ⭐ **两条都要求"用户在场"**。于是**任何离线 / 转述型 / 材料型输入,最多只能走到 `无 gate`**:⚠️ **它对所有材料型输入给同一个结论,因而与一条坏掉的规则无法区分。** 补第三条:
| # | 通道 | 判据 | 条件的写下时点按什么算 |
|---|---|---|---|
| **通道 1** | **`positioning.md`** | 工作区里有这个文件 | ⭐ **按文件里记的日期**(见上一小节) |
| **通道 2** | **用户当场写下** | 用户在场,且写得出 | 今天 → 冷启动分支(必然 `事后重构`) |
| ⭐ **通道 3** | ⭐ **从用户已有的书面材料里认定** | 见下面的字面词表 | ⭐ **按那份材料的日期**,⛔ 不按今天 |
##### ⭐ 通道 3 的提取判据:**看那句话里有没有排他性措辞,⛔ 不看"你觉得他在意什么"**
⚠️ **判据必须是字面的,⛔ 不能靠 agent 体会。** 用户在自述 / 聊天记录转述 / 已有书面材料里出现下面这类措辞的那一句,**可以提取为候选必要条件**:
> **A · 禁止型**(书面/正式表述里最常见)
> 「我不可能……」· 「这个不行」· 「必须要……」· 「一定要……」· 「没有 ×× 我就不去」· 「再也不……」· 「绝对不……」· 「受不了……」· 「底线是……」
>
> ⭐ **B · 排序型 / 拒绝型口语**(2026-08-31 补 —— **这一组才是人说话时最常见的形态**)
> 「**不是 ××,是 ××**」(把某维**踢出**比较,同时点名真正的那一维)· 「**×× 无所谓,先保 ××**」· 「**×× 我认了,但 ×× 不行**」· 「**××(一旦发生)我就 ××**」(把两件事绑成连锁)· 「**和我现在的处境不是一回事**」(宣告某个参照系不适用)· 「**再多 ×× 也换不了 ××**」· 「**我可以 ××,但前提是 ××**」
>
> ⚠️ **为什么必须补 B 组**:一次回归实测里,材料中**语义上最强的四句排他性表达,一句都没命中 A 组** —— A 组更像**书面誓言**,而真人在语音自述/聊天记录里说的是 B 组这种**排序型口语**。
> ⭐ **后果很具体**:通道 3 零命中 → gate 表全空 → 触发 `无 gate` → 而「上位出口」的前置是"存在一条硬约束",于是**它结构性地够不着,一次都触发不了**。
> ⛔ **两条规则串联,靠前那条太窄,靠后那条就永远是死的。**
⛔ **词表之外的句子不许提取。** 「我比较喜欢 A」「我觉得 B 那边更有意思」这类是**偏好**,它的去处是**加分条件表**,⛔ 不是 gate。
##### ⛔⭐ 自我说服自查(⛔ 通道 3 提取之后、进 gate 表之前跑一次,⛔ 一次都不许省)
⚠️ **这是补 B 组词表带来的副作用,必须一起补掉。** 补 B 组是为了让通道 3 能命中真人口语 —— ⭐ **而真人最常用「不是 A,是 B」「××无所谓先保××」这种句式的时刻,恰恰是在说服自己**。于是提取出来的"底线"**很可能就是他那段自述的结论**。⭐ **等于拿一个人的结论去检验他的结论。** ⚠️ 实跑里有一份材料的最后一句正是「你说我是不是在给自己找理由」—— ⛔ **框架结构性地答不了。**
⭐ **判据必须字面,⛔ 不许靠 agent 体会"他是不是在自我说服"。** 数两样:
**第一样 · 数每条候选条件"照顾"的是哪一列**
- ⭐ 对每一条候选条件,先**逐列判一次「满足 / 不满足」**
- ⭐ **只有一列判满足** → 记它**指向那一列**;**判满足的不止一列,或一列都不满足** → 记 `不指向任何一列`,⛔ 不参与下面的计数
- ⭐ **分别指向不同列** → 正常走,⛔ 不标记
- ⭐ **全部指向同一列** → 进第二样
**第二样 · 那一列是不是他自述里字面倾向的那个**
- ⭐ **判据同样字面**:材料里有没有一句**字面指向那一列**的倾向表达 —— 「我想去 ××」·「我更倾向 ××」·「我基本上定了 ××」·「你说我是不是在给自己找理由」这类
- ⛔ **没有这样一句 → 不标记**(⛔ 不许靠"感觉他倾向那边"补上)
- ⭐ **两样都成立 → 那几条候选条件整组标 `可能是自我说服`**
##### ⛔ 标了 `可能是自我说服` 之后怎么办(⛔ 不是作废,是降级 + 说破)
- ⛔ **不许单独触发上位出口** —— ⚠️ **哪怕用户不在场也不许**(下面那条"用户不在场可以触发上位出口"的例外,⛔ 对标了本标记的条件不适用)
- ⭐ **必须原话回读,并且问一句写死的话**(⛔ 不许改写成你自己的话):
> **「你说的『××』『××』『××』三条都指向同一个选择。这可能是你真的有这三条底线,也可能是你已经想好了要去哪一家,正在给这个决定找理由。—— 哪一种?」**
- ⭐ **用户回答"是我的底线"** → 标记去掉,按 `待你确认` 的正常路径走(确认了就转正常必要条件)
- ⭐ **用户回答"我是在找理由"** → 这几条**移到加分条件表**,⛔ 不许留在 gate 里;⭐ 并照着说一句:**「那这一次真正要定的不是『去哪一家』,是『你到底想不想去那一家』—— 这件事我算不出来。」**
- ⭐ **用户不在场(没人可问)** → **结论照出**(⛔ 不许因此停下),⭐ **但必须带一句写死的声明,⛔ 不许省**:
> **「⚠️ 我认定的这几条底线全部指向同一个选项。我没法判断这是你的底线,还是你已经做了决定之后给它找的理由 —— 这一点只有你自己知道。」**
- ⭐ **同时把它写进翻转点**,临界取值就是「**这几条到底是底线,还是找出来的理由**」(二值)
> **为什么这样是对的**:本模块对付"不可验证的用户自述"一贯的解法就是 —— ⭐ **不替他裁决,而是把结论对它的依赖显式暴露出来**(事后重构两套都跑 / 误差带覆盖两套都跑 / 通勤方式两套都跑,都是这个形状)。
> **这里同样**:⛔ **框架答不了"你是不是在给自己找理由",但它可以把这个问题原样递回去,而不是假装自己没看见。**
##### ⭐ 提取出来的必须回读确认,确认前标 `待你确认`
⚠️ **这里有一个真实的两难,⛔ 两头都不能选**:**提取并直接当成必要条件 = agent 替用户立法**;**不提取 = 明明有信息却判「一条都没有」**。⭐ **`待你确认` 就是这两者之间的那一档** —— 它让条件**进表并起作用**(因而不再是 `无 gate`),同时**明写它不是用户亲口立的法**(因而 agent 没有替他立法)。
- ⭐ **候选条件照进 gate 表,那一格标 `待你确认`**,并回读一句:**「你说过『××』—— 我把它当成一条必要条件,对吗?」**
- **用户确认** → 转成正常必要条件,⭐ **写下时点按那份材料的日期判**(与 `positioning.md` 同一条规则)
- **用户否认** → 从 gate 表移走,改进加分条件表。⛔ 不许留在 gate 里
- **用户没回答 / 用户不在场** → ⭐ **保持 `待你确认`**,走下一小节
- ⛔ **`待你确认` 的条件判出「不满足」时,缺省 ⛔ 不许直接判出局** —— 改判 **`gate 待定`**(留在排序里、不能排第一)。⚠️ 理由与「推测在 gate 上不能踢人」同源:**一条用户没确认过的底线,不该由 agent 拿去踢掉一个选项**
- ⭐ **⛔ 但这条缺省有一个例外,判据是「那一格的取值有多硬」** —— ⚠️ **判「不满足」靠的若是用户本人原话那种硬格,它就可以踢人**(全文见下面两小节)。⭐ **`待你确认` 标的是「这条底线是不是他的」,⛔ 它没有标「这一列在这条上到底成不成立」**
- ⭐ **反方向 ⛔ 没有例外**:`待你确认` 的条件判出「满足」**一律 ⛔ 不发通行证** —— 同样是 `gate 待定`。⭐ **踢掉一个选项,和抬高一个选项,需要的把握不一样**(见下面「方向不对称」)
##### ⛔⭐ 例外:`待你确认` **可以**踢人 —— 判据是「**那一格的取值有多硬**」,⛔ **不是「用户在不在场」**
**先说这条为什么必须有** —— 不加它就会出现这个死循环:
> 上位出口要求「**已确认的**不可闭合必要条件判为不满足」;
> 而通道 3 提取的条件**一律 `待你确认`**、确认前**不能踢人**;
> ⇒ **材料型 / 回溯型输入永远出不了强结论。**
⚠️ **这与本文自己诊断过的那条同型**:**两条规则串联,靠前那条太窄(或太紧),靠后那条就永远是死的**。修了词表让通道 3 能命中,如果这里不放行,**上位出口仍然一次都触发不了**。
⚠️ **这一节上一版的判据挑错了维度:它写的是「用户在不在场」。** 一句话说破:
> ⭐ **拿"他没确认这是他的底线",去挡住"他自己说了这件事不成立" —— 挡错了对象。**
**掰开说** —— ⭐ **一条 gate 判定有两个部分,它们的不确定性完全不同**:
| | 是什么 | 确定吗 |
|---|---|---|
| **条件** | 「我要 ××」 | ⚠️ 是**我从你材料里认定的**,**你没确认过** |
| ⭐ **那一列在这条上的取值** | 「这一列**没有** ××」 | ⭐ **可能非常硬** —— 有时就是**用户本人白纸黑字说的** |
⭐ **`待你确认` 标的是左边那栏。** ⛔ **而旧规则拿它否掉了整行,连右边那个硬事实一起否掉了。**
⚠️ **实跑里的两个形状**(⛔ 不写公司名 / 人名):
- 一个人自己说「我到三十岁手里得有能拿出来给外人看的东西」,而另一列**他自己说**「那边**没有**能拿出来看的东西」—— ⭐ **后半句是他自己说的,不是 agent 猜的**
- 一个人自己说某条路「外面**对不上**」—— ⭐ 同样是**他本人的判断**,不是 agent 的外推
**例外的适用条件(⭐ 四条同时成立,纯字面)**:
1. ⭐ **那一列在这条条件上判「不满足」,其依据是 `你给的` 的硬格**(**用户本人原话**)—— ⛔ 不是 `我推测的`、⛔ 不是外推、⛔ 不是空格
2. ⭐ **那个依据指向的是这一列自身** —— ⛔ 不是「我觉得这个行业不行」这种笼统判断
3. 那条 `待你确认` 的条件来自通道 3,且**原话在材料里逐字可引**;它是**不可闭合**类(没写闭合上限 → 按不可闭合,见前文)
4. ⭐ **它没有被标 `可能是自我说服`**(见上一小节)—— ⚠️ **标了就不许走这条例外**:那几条候选条件全部指向同一列,而那一列正是他自述里倾向的那个,⛔ **拿它去发一张出局判决,等于用他的结论去检验他的结论**
⭐ **⛔「用户在不在场」不再是适用条件。** 用户在场时**同样适用** —— ⭐ 他在场只意味着你**应该顺便问一句**,⛔ **不意味着在他回答之前你什么都不能说**。
##### ⛔⭐ 方向不对称:这个放行**只对"不满足"一个方向有效**(⛔ 别漏,也别当成笔误)
| 判成 | 能不能 |
|---|---|
| ⭐ **不满足** | ✅ **可以踢出去** —— 因为**踢它的那个事实是硬的** |
| **满足** | ⛔ **仍然不发通行证** —— 一个**没被确认过的条件**,凭什么给谁发通行证?那一格照旧 `gate 待定`、不能排第一 |
> ⭐ **踢掉一个选项,和抬高一个选项,需要的把握不一样。**
> ⛔ 前者只要**这一条上它确实不行**;后者要**这条底线确实是你的底线** —— **而后面这件事,只有你能确认。**
**成立时怎么做**:
- ✅ **允许它触发上位出口**,出结论、出名次
- ⭐ **但结论必须带一句写死的声明**,⛔ 不许省:
> **「这个先后建立在一条我从你自己的话里认定、但你还没确认过的底线上 —— 原话是『××』。如果这条不算你的底线,整个先后可能翻过来。」**
- ⭐ **同时把它写进翻转点**,临界取值就是「**这条底线算不算数**」(二值)
- ⭐ **用户在场时额外加一个动作**:把回读那句话(「你说过『××』—— 我把它当成一条必要条件,对吗?」)写进「这几天该做什么」的第一条 —— ⛔ **但不因此推迟出结论**
> **为什么这样是对的**:本文对付"不可验证的用户自述"一贯的解法就是 —— ⭐ **不替他裁决,而是把结论对它的依赖显式暴露出来**(事后重构两套都跑 / 误差带覆盖两套都跑 / 通勤方式两套都跑,都是这个形状)。
> **这里同样**:不是"替他立法",是「**按你自己说过的话往下走一步,并且告诉你这一步踩在哪句话上**」。
> ⛔ **而"什么都不敢说"并不比它更安全** —— 它只是把不确定性留给了用户,同时不给他任何可动的东西。
##### ⭐ 用户不在场(只有材料,没人可问)—— ⛔ 它和「冷启动」不是同一件事
⚠️ **框架此前把这两件事混为一谈,全文没有一处区分它们,于是只有前者有处理。** 写死区分:
| | 用户在不在场 | 条件从哪来 | 降级路径 |
|---|---|---|---|
| **冷启动** | ⭐ **在场**,只是第一次用,条件是现写的 | 通道 2 | 全部标 `事后重构` → **只跑两套**(含全部 / 一条都不含)→ gate 只起暴露作用 |
| ⭐ **用户不在场** | ⛔ **不在场**(回溯 / 复盘 / 手上只有一份材料) | ⭐ **只能走通道 3** | 候选条件**照提取、照进表**,整张 gate 表带表级标记 **`未经确认`**,并**写在输出最前面** |
- ⛔ **不许因为"用户不在场"就跳过 gate。** 跳过就回到 `无 gate` 恒触发那个死循环 —— ⭐ **补上通道 3 之后,`无 gate` 才可能真的有区分力**(在真的一句排他性措辞都没有的材料上才触发)
- ⭐ **表级标记 `未经确认` 的执行动作**:这句话**必须出现在一页纸的第一段**,人话版照着说 —— **「下面这几条底线,是我从你写下的材料里挑出来的,你还没确认过。如果有一条不是你的意思,顺序可能就变了。」**(⚠️ 这句话里不含任何禁用词,⛔ 不受一页纸禁用词表阻挡)
- ⭐ **`未经确认` 解除的只有 `无 gate` 这一个标记** —— 因为 gate 表不再是空的。⛔ 它**不解除**任何别的限制:各列仍按各自 gate 结果带 `gate 未通过` / `gate 待定`
- ⭐ **解除方式**:用户本人确认(哪怕只确认一条)→ 那一条去掉 `待你确认`,按写下时点正常判定
⚠️ **`positioning.md` 有三类字段,本模块的 gate 只有两类,第三类必须有一个接收位**:
| `positioning.md` 里的 | 在本模块落到哪 |
|---|---|
| **必要条件** | gate 的 N1-N3,走下面全套判定(满足 / 不满足 / 有条件满足) |
| **加分条件** | 加分条件表 —— 不构成出局,**也不构成通行证** |
| ⭐ **硬性排除条件** | **也进 gate,但它的语义是「短路」**:⭐ **命中即出局,⛔ 没有「有条件满足」这一档,⛔ 不许降档、不许用代价换、不许摊销** |
⭐ **硬性排除与必要条件的区别就在这一点**:必要条件里有一部分是**可闭合**的(付得起代价就能消除),而**硬性排除永远不可闭合** —— 它写下来的时候就已经说明"这件事发生了我就不去",不是"这件事发生了我要花多少钱去补"。⛔ 把硬性排除塞进「有条件满足」那条通道,等于把 gate 上最硬的一条变成最软的一条。
#### ⭐ 冷启动场景:第一次用本模块的人,他的必要条件**必然**是"事后重构"
**判据是纯字面的**:工作区里**没有** `positioning.md`、也没有任何更早的书面记录,而 offer 已经在手上 —— 这种情况下那几条必要条件**必然**是刚刚在这次对话里写出来的,也就是**必然是事后重构**。
- ⛔ **不要逐条去问"这条是收到 offer 之前写下的吗"**。答案结构性地已知(一个诚实的用户只会答"不是"),问了只是浪费一轮,还会让他以为自己答错了什么
- ⛔ **更不要把 2-3 条各跑一套"含它 / 不含它"** —— 那是**二的 n 次方套对照**,工作量翻倍而约束力一点没换来(结论照样交回用户裁决)。⭐ **一次性按"全部条件都是事后重构"处理,只跑两套:含全部条件的一套 / 一条都不含的一套**
- ⭐ **然后一次性说明这意味着什么**(照着说,别改):**「你这几条是刚写的,所以这一次 gate 只能起暴露作用,起不到约束作用 —— 它能告诉你『你的结论有多依赖你刚写下的这几条』,但它挡不住你。」**
- ⭐ **紧接着给出正面价值**(这一句同样别省):**「这一次 gate 的作用是把你的底线写下来;下一次它才开始约束你。」** 并指向**入职前存档**(`offers.md` 末尾,见输出格式可选的第 7 件)—— ⭐ **现在存进去,下次它就是事前的了**
- ⭐ **这一支留在最小路径里,⛔ 不划入深潜。** 理由有两条:① 它只有**两套**(含全部 / 不含全部),不是二的 n 次方套,成本可控;② **如果把它当成一般的 `事后重构` 挂起成 `gate 待定`,冷启动场景下每一条都会待定 → 永远没有一列能排第一** —— 那不是暴露问题,那是把模块瘫痪掉
> ⚠️ **这一小节为什么必须写在这里**:本模块的 README 把它推为"全仓最独立、可冷启动直接开跑"的模块 —— 于是**最被推荐的用法,恰好是 gate 最弱的用法**。不说破这一点,用户会以为自己刚过了一道 gate,而实际上他刚给自己发了一张通行证。
#### ⚠️ 先问一句:这几条是什么时候写下的(**只适用于接续场景**)
> ⚠️ **本小节只适用于接续场景** —— 有 `positioning.md`,或有更早的书面 / 口头记录。**冷启动场景见上一小节:答案已知,⛔ 不必逐条问。**
必要条件的全部约束力来自**它写在你看到这些 offer 之前**。所以第一步是问:*这几条,是你在收到 offer 之前就写下的吗?*
| 回答 | 怎么处理 |
|---|---|
| **是**(有更早的笔记 / 更早跟人说过) | 正常必要条件,走下面的 gate |
| **不是,是现在才想的** | ⚠️ 标注 `事后重构`,**仍然进 gate**,但必须**两套都跑 + 显式声明差异**(见下) |
| **说不清 / 记不清**(「大概那会儿就有这个想法」) | ⭐ **按事前算**(保守缺省)。⛔ 不许当成「不是」 |
⭐ **「说不清」为什么缺省偏向事前**:本节自己的论证是「门槛可以被当场裁剪,**gate 的全部约束力就是这么消失的**」。既然这一格的取值无人可验证,**缺省就必须偏向保留约束**——否则「记不清了」会变成一句零成本的万能解除键。
#### ⛔ 事后重构的必要条件:不降级,改成「两套都跑」
⚠️ **旧版的做法(降级为加分条件、⛔ 不构成出局判定)是错的,别再那么做。**
那条规则的激励方向是反的。它假设用户想让事后条件**算数**,所以「降级」是惩罚。但真实场景常常相反:**用户心里已经想去 A,而 A 违反了他一条不可闭合的底线**——他不需要裁剪任何条件,只要在被问的时候答一句「不是,是现在才想的」,那条底线就被降级、gate 就空了,A 合规进入排序并拿第一。**降级正是他要的结果。** 而这一格**无人可验证,且说谎方向单一有利**。
改成这样:
1. 事后写下的必要条件标注 `事后重构`,**仍然进 gate**,照常做满足 / 不满足 / 有条件满足判定
2. **同时跑两套排序**:**含**这条的 / **不含**这条的
3. 两套结论**相同** → 正常输出,并附一句「**这个结论不依赖那条你事后才想起来的条件**」
4. 两套结论**不同** → ⭐ **必须显式声明**:「**你的结论取决于一条你事后才想起来的条件 —— 它是 X。在往下走之前,先决定这条到底算不算你的底线。**」⛔ 不许自己替用户裁决,⛔ 不许静默按其中一套输出
> **为什么是这条设计**:**一个无法验证的输入,不该被用来自动放行或自动拦截;它该被用来暴露「结论有多依赖它」。** 这与本模块的翻转点是同一条设计——你无法验证一个假设,但你可以把结论对它的依赖显式摆出来,交给用户裁决。
⭐ 顺手让用户**现在就为下一次写一版**(存进 `offers.md` 末尾的入职前存档),下次它就是事前的了。
#### 然后逐列判定,只有三种结果
| 判定 | 怎么处理 |
|---|---|
| **满足** | 进排序 |
| **不满足** | ⛔ **直接出局,不进排序。** 在表下写一行「为什么出局」,就完了 |
| **有条件满足** | 只在**可闭合**的必要条件上成立,见下。写清楚是什么条件、要做什么才能闭合、闭合要付什么代价(代价进「生活成本」)。**闭合不了就按「不满足」处理**。⛔ 进排序后带 `有条件满足(待闭合)` 标记且**不能排第一**,见下 |
⭐ **最小路径只判前两种(满足 / 不满足)。** 第三种「有条件满足」及其闭合性判据**属于深潜** —— 最小路径里遇到本该判这一档的,标 `gate 待定` 挂起(见第一节)。
⛔ **来自 `positioning.md` 的硬性排除条件不走这张表**:它的语义是**短路** —— **命中即出局**,⛔ 没有「有条件满足」这一档,也不许降档。
#### ⛔ Gate 判定格也要标来源,且 `我推测的` 两个方向都不生效
横向对照表每一格都强制写成「取值 + 来源标注」,`我推测的` ⛔ 不参与排序。**gate 表以前没有这一列——这是个洞:**「A 满足 N1」这一格可以整格是你自己推测的,而且**不可见**;而**这一格决定的是谁出局,权重比排序表里任何一格都大**。
所以 gate 表每一格同样写成「**判定 + 来源标注**」(`你给的` / `公开可查` / `我推测的`),并写死两条:
- ⛔ **gate 判定格标 `我推测的` 时,不许据此判出局。** 必须先把它升级成「答复前必问项」里的一个具体问句;拿到答复之前,该列在这条必要条件上**按未判定处理**——留在排序里并标 `gate 待定`,⛔ 不许静默按满足或按不满足处理
- ⛔ **反方向同样不生效**:也不许据一个 `我推测的` 格判「满足」而发一张通行证。**推测在 gate 上既不能踢人,也不能放人**
- ⭐ **「不能放人」的执行动作,和「不能踢人」一样写死**(旧版只给了「不能踢人」的执行动作 —— 留在排序里、标 `gate 待定`;**「不能放人」一个执行动作都没有**,于是它只是一句话):
> ⭐ **带 `gate 待定` 标记的那一列,不能排第一。**
- **与「不能踢人」严格对称**:不能踢人 = **留在排序里**;不能放人 = **不能拿第一**
- ⛔ **因此 `gate 待定` 与 `gate 未通过` / `有条件满足(待闭合)` / `无 gate`(见下一小节)并列 —— 四种标记全部不能排第一**,⛔ 没有哪一种是例外
- **为什么必须补这一条**:不补就会出现一个明显反常的不对称 —— **必要条件状态"未知"的那一列能赢,而必要条件"已知违反"的那一列(典型是「留在原地」)反而不能赢。** 于是"没问到"比"问到了并且没通过"更有利,而两者之间的差别只是**有没有人去问过**。⛔ 一个奖励"少问一句"的 gate,方向是反的
- ⭐ **解除方式与另外两个标记同构**:那一格从 `我推测的` 升级成 `你给的` 或 `公开可查`(= 答复拿到了)之后,标记去掉、限制解除。⛔ **答复截止到了不算解除理由**(见「必问项问不到,而答复截止已经到了」)
#### ⛔ 第四种标记:gate 表整个为空 → `无 gate`
⚠️ **上面三种标记管的都是「某一格没判出来」,而实跑里最常见的一种是「一条必要条件都没有」** —— 用户当场给不出,工作区里也没有 `positioning.md`,于是 **gate 表整张为空**。
⭐ **反常就在这里**:**「整个没有 gate」比「某一格没问到」还宽松,而它旧版连一个标记都没有** —— 于是**最松的那一种情形反而畅通无阻**,三种标记拦住的全是比它更严的情况。⛔ 这和「奖励少问一句的 gate」是同一个方向错误,只是更彻底:**这一次连问都没有问。**
- **判据是纯字面的**:N1-N3 **一条都没填**。⛔ 它不是"填了但判不出来"(那是 `gate 待定`),也不是"填了且不满足"(那是 `gate 未通过`)
- ⛔ **但先把三条输入通道都走完再判 `无 gate`**(见上面「gate 的输入通道有三条」)。⚠️ **旧版只有两条通道,两条都要求用户在场,于是所有材料型输入都恒落到这里** —— ⭐ **一个对所有此类输入给同一结论的标记,和一条坏掉的规则无法区分**。⭐ **通道 3 走过、一句排他性措辞都没找到,才算真的 `无 gate`**
- ⭐ **本次所有列一律带 `无 gate` 标记,因而所有列都不能排第一** —— **与另外三种同构**:`gate 未通过` / `有条件满足(待闭合)` / `gate 待定` / `无 gate`,⛔ **四种全部不能排第一,没有例外**
- ⭐ **正确输出就是那条已经定义好的强结论**(排序照出、标记照带,然后照着说):**「没有一列能合法排第一 —— 你一条必要条件都还没写下来。现在该做的不是答复,是先把你的必要条件写下来。」**
- ⭐ **解除方式:用户写下至少一条必要条件 —— 哪怕只有一条。** 写下之后标记去掉,那一条按正常 gate 判定走(冷启动场景则转入下一小节)
- **为什么一条也算**:⭐ **一条写下来的底线,比零条强得多。这个标记的作用不是逼他写全,是不让「没写」变成默认放行。** 若把解除门槛定成"写满 2-3 条",写不出第二条的人会被卡在这里 —— 而他们正是最需要先写下第一条的那批人
- ⛔ 写下来的必须是**一条可判定的条件**(能对每一列答"满足 / 不满足")。「钱多事少离家近」不算 —— 这不是在抬高门槛,是那句话根本没法进 gate 表
- ⛔ **不许因为"用户就是给不出"而静默跳过 gate 直接排序。** 跳过之后,「**过了 gate**」和「**根本没有 gate**」在文件里长得一模一样 —— 这正是本模块每一条留痕规则要挡的东西
> ⚠️ **与冷启动例外的关系,别合并**:冷启动那一小节处理的是「**条件是事后写的**」(**有条件**,只是写下时点晚于 offer);本条处理的是「**一条都没有**」。⭐ 两者是**先后关系,不是同一件事**:先用 `无 gate` 逼出至少一条,那一条写下来之后才轮到冷启动分支(一次性按"全部事后重构"处理、只跑两套)。⛔ 不许拿冷启动那句「gate 只起暴露作用」当成"所以空着也行" —— **暴露作用的前提是有东西可暴露。**
##### ⛔ `无 gate` 与「分不出来」出口同时触发时的优先级(写死,⛔ 不许现场挑)
⚠️ **这两个出口会同时成立,而它们要求相反**:`无 gate` 的强结论要求**排序照出、名次照排**;「分不出来」是**唯一允许不出排序**的出口。⛔ **旧版没有裁决句,于是执行者只能自己挑一个** —— 而两条路给用户的下一步动作完全不同。
> ⭐ **裁决:`无 gate` 优先。两者同时成立时,⛔ 不走「分不出来」出口。**
**理由**:`无 gate` 管的是「**你还没告诉我你的底线**」= **输入缺失**;「分不出来」管的是「**证据不足以分开这几列**」= **证据不足**。⭐ **输入缺失优先** —— **连判据都还没有的时候,谈不上"分不分得出来"**。而且「分不出来」出口的第 1 条要求是"先重排一次",⚠️ **重排出来的名次在 `无 gate` 下一列都不能合法排第一** —— 也就是说,就算把那三条要求全跑完,用户拿到的下一步动作**仍然是"先写下一条你自己的底线"**。**先做那件事,那三条才有意义。**
**执行动作写死(三条)**:
1. ⭐ **第一句照 `无 gate` 的形状**:「**没有一列能合法排第一 —— 你一条必要条件都还没写下来。现在该做的不是答复,是先把你的必要条件写下来(哪怕只有一条)。**」
2. ⭐ **「分不出来」那三条要求不作废,降级成第二段照写**:「我还缺这三条:××、××、××」+「补齐后怎么裁决」。⛔ 不许因为 `无 gate` 优先就把它整块删掉 —— **两件事都缺,用户两件都得知道**
3. ⭐ **名次那一栏**:排得出来的照排;⛔ **"两条同时成立"不是省掉这一节的理由**。此时这一节写成两条并列的原因,⛔ **两条都要写**:**① 你一条必要条件都还没写下来(所以就算排出来,也没有一列能合法排第一)· ② 参与排序的这几维在这几列上分不出来(缺的三条信息见下)**
- ⛔ **不许只写第 ②** —— 只写 ② 会让用户跑去补那三条信息,补完回来发现**照样没有一列能排第一**,⚠️ 而 ① 那件事他**今天就能做,且不用问任何人**
- ⭐ **解除后重判**:用户写下至少一条必要条件 → `无 gate` 解除 → **这时才回头看「分不出来」还成不成立**;仍成立才走那个出口
#### ⛔ 「有条件满足」的闭合性判据(不写上限的一律按不可闭合)
**必要条件分两类,写下的时候就要分好:**
| 类 | 长什么样 | 「有条件满足」能不能用 |
|---|---|---|
| **可闭合** | 违反之后存在一个**你付得起代价就能消除它**的动作(搬家、换通勤方式、改作息) | ✅ 能用,**但必须在写下这条时就写明闭合上限** |
| **不可闭合** | 违反之后没有任何你单方面能做的动作能消除它(岗位没有产出归属、现金依赖期权兜底、汇报线不对) | ⛔ 不能用,只有满足 / 不满足两档 |
⭐ **可闭合的那条,写下时必须带闭合上限**,例:「通勤单程 ≤ 一小时;**搬家我接受,但只接受同城,且只接受一次**」。上限写清楚,「有条件满足」才有边界。
⛔ **没写闭合上限的,一律按不可闭合处理**——即只有满足 / 不满足两档,不许判「有条件满足」。
**为什么这条必须硬**:「有条件满足 → 代价进生活成本 → 合规重入排序」是 gate 唯一的逃逸通道,而且它完全写在规则里。一笔按摊销年限摊平的一次性代价,**吃不掉一个选项在现金上的优势**——于是那个本该被 gate 挡住的选项,会带着一笔小小的扣减重新拿到第一名。**上限是这条通道上唯一的闸门。**
##### ⛔ 但上限只挡「动作的范围」,挡不住「剩余劣势的量级」——补三条
⚠️ **上面那句「没写上限一律按不可闭合」是本文件最好的一条规则**(判据是纯字面的:模板那一格是不是空的),**不要动它**。但它只约束了**动作的范围**(同城、一次),没有约束**剩余劣势的量级**——而它自己给的理由(「一笔摊平的一次性代价吃不掉现金优势」)**恰恰是量级问题**。所以用户按 ⭐ 推荐把上限写全(「同城、一次」)之后,同一条通道会原样复现:搬家闭合 → 一次性代价按摊销年限摊平 → 去吃真实时薪的大幅优势 → 该选项照样拿第一。
补三条,都可机械执行:
**① ⛔ 真实时薪的分母,用「闭合前」的通勤。写死。**
- 理由:**闭合尚未发生。** 而且用闭合后的通勤会让「违反了你的必要条件」这件事**反过来变成优势**(分母缩水 → 时薪上升),这个方向明显是错的
- ⭐ 允许在**翻转点**里附一句「若你真的搬了,它的真实时薪会变成 X」——那是**假设**,⛔ 不作为排序输入
- 生活成本那一维照旧收闭合的**代价**(搬家 / 租房一次性支出按摊销年限摊)
- ⚠️ **「代价照收 + 收益不给」看起来像扣两次,这是故意的**:代价(搬家支出)**真的会发生**,收益(通勤变短)**还没发生**——两者在时点上不对称。**给一个还没发生的动作预支好处,等于让「违反了你的必要条件」反过来变成优势。** 闭合真的完成之后(新租约已签),标记去掉、分母换成闭合后的通勤,那时两边就同步了
**② ⛔ 带 `有条件满足(待闭合)` 标记,且不能排第一。**
- 除非闭合动作**已经完成**(例:新租约已经签了、已经搬完),才去掉标记与限制
- 理由:**这条通道进来的选项,它的第一名建立在一个还没发生的动作上**
- ⭐ 这是与「留在原地」的**对称补齐**:模块对基准列早就写了「gate 未通过时带标记且不能排第一」,而从「有条件满足」通道进来的那一列过去**无标记、无限制、可以裸奔拿第一**
- ⚠️ **四条「不能排第一」加起来(`gate 未通过` / `有条件满足(待闭合)` / `gate 待定` / `无 gate`),可能出现「没有一列能合法排第一」。** 这**不是**死锁,也**不是**「分不出来」出口——**它本身就是一条强结论**:⭐ 照常输出完整排序(名次照排、标记照带),然后明写一句「**没有一列能合法排第一:××(gate 未通过)· ××(闭合动作还没发生)· ××(gate 待定,××这一条还没问到)。所以今晚该做的不是答复,是先把 ×× 问出来 / 先把 ×× 落实 / 先回去谈条件。**」⛔ 不许为了让表好看就悄悄摘掉某一列的标记
- ⭐ **`gate 待定` 那一支的典型收场**(实跑里最常出现的一种):**「没有一列能合法排第一 —— 今晚该做的不是答复,是先把『这个岗一周有几成时间在写代码』这条还没问到的必要条件问出来。」** 它把"没问到"从一个**悄悄让某一列拿第一的空白**,变成一个**具体的下一步动作**
**③ ⛔ 通勤口径要定义死**——它**同时**是 gate 判据和真实时薪分母输入,只说「单程、门到门」不够。borderline 样本(地铁 65 分钟 / 开车 48 分钟)可以在 gate 门口就绕过去。
- **缺省口径:工作日早高峰 · 你实际会用的那种通勤方式 · 单程门到门**(分母里再换算成往返)
- 标来源等级:自己估的是 `自己估算`,查地图查的是 `公开可查`,**必须附查询日期与查询时段**
- ⛔ **同一份对照表里所有列必须用同一种口径。口径不同的两列不可比**,不许放进同一次排序
- ⚠️ **「你实际会用的那种通勤方式」仍然是一句无人可验证的自述**,和「这条是不是事前写的」是同一类。所以配同一条解法:**当换一种通勤方式会改变任何一格 gate 判定时**(典型:地铁 65 分钟不满足 / 开车 48 分钟满足),⛔ 不许自己挑一种,**两种都跑,并显式声明**:「**按地铁算它过不了 N1,按开车算它过得了 —— 这个结论取决于你到底会怎么通勤,先定这个。**」两种都不改变 gate 判定时,按用户说的那种走,不必对照
- ⛔ **但「两种都跑」只补齐了一半,还缺一条保守缺省 —— 补上。** ⚠️ **这里有个不对称**:事前 / 事后那一格拿到的是**两样**(两套都跑 **+**「说不清 → 按事前算」的保守缺省),而通勤方式旧版**只拿到「两套都跑」,没有保守缺省** —— 于是用户一句「我会开车,比地铁快」就能把一列从出局变成第一。所以:
- ⭐ **换一种通勤方式会改变任何一格 gate 判定时,缺省按更慢的那一种算**(先落到"过不了"那一侧),两套照跑、差异照声明
- ⭐ **要按更快的那一种算,必须给出行为化理由** —— 「**我现在这份工作就是开车通勤**」/「**小区已经有固定车位,公司那边也有**」这类**已经发生的事实**
- ⛔ **不接受可能性陈述**:「我也可以开车」「我打算买车」「实在不行就打车」—— 这些说的是**将来可以怎样**,不是**现在就是怎样**。判据与「有条件满足」的分母写死用闭合前通勤是同一条:**一个还没发生的动作,不能预支它的好处**
⛔ **不许用加分条件换必要条件。** 「它发展空间最好,所以通勤远一点也认了」——如果通勤是你写下的必要条件,这句话就是在改自己刚定的规则。**必要条件的全部价值就在于决策当下不许改。** 加分条件再多也换不掉一条必要条件。
> ⚠️ 这条纪律在几个模块里都出现过(`03-company-analysis` 的「硬性排除不可被匹配度换」、这里的 gate、以及工作区的 `positioning.md` 三类条件),**犯的是同一类错:把不可交易的条件塞进了同一个加权式子**。
⭐ **「留在原地」也要过 gate,但它出局的方式不同**:它是基准列,删掉它整个排序就失去参照系。所以——**必要条件不满足时,它仍然留在表里做基准,但在排序里带「gate 未通过」标记,且不能排第一**。这本身就是一条独立且很强的结论:**现状已经不满足用户自己写下的必要条件**,说明「不动」这个选项也在流血,只是流得慢。
### 第 2 步 · 只算真实时薪
```
真实时薪 = 税后年现金总包 ÷ 真实年工时
```
**分子**(税后年现金总包):
- 固定部分(按薪数展开)+ 浮动部分 × **历史兑现率**
- ⛔ **浮动按历史兑现率打折,不按承诺值。** 拿不到历史兑现率时:**算三遍**——按承诺值、按 `浮动兑现率默认` 、按 0,看排序会不会因此翻。**会翻,它就是一个翻转点,并且要算出临界取值**(见输出格式第 4 件);不会翻,就写进「查了也不会翻」那张表
- ⚠️ 三点采样**不是浮动兑现率的专属义务**,见「参数与来源等级」——凡来源等级是 `默认建议值` 或 `纯占位待校准` 的参数,一律要采
- ⛔ **期权 / 限制性股票不进这个分子。** 它们不是现金,进「下行风险」那一维(问的是「现金部分是否依赖期权兜底」)
- 相对量就够:把其中一列设为基准,其余写成「比基准高约一成」这种说法。**你不需要知道任何具体金额就能排出序**
- ⚠️ **什么时候相对量不够、必须问具体数字**:分子口径是**税后**,而税后依赖税率与累进——相对量在这一点上会失真。判据是**保序**:
- **两列差得开**(打折后差幅明显大于真实时薪这一维的估算误差带)→ 相对量够,继续用相对量
- **两列接近**,或**结构差异大**(几薪不同 / 固定与浮动的拆分差很多 / 一次性签字费占比高 / 跨社保缴纳地)→ ⛔ 相对量可能不保序,**必须问到具体数字再算税后**,否则这一维只能标 `我推测的` 并退出排序
- ⭐ 拿到具体数字**只用来算,不写进 `offers.md`**——落到文件里的仍然是指数
- ⚠️ **这条与「你不需要知道任何具体金额就能排出序」在真·难分样本上互斥,裁决如下**:那句话是**最小可接受形态的承诺**(拿相对量就能起步、能出一版排序),不是「任何样本都不必给金额」的保证。**当且仅当两列在真实时薪上分不出来、而这一维又是当前的决胜维**时,才触发升级——此时按顺序做:**① 先照常出一版排序**(这一维标 `我推测的` 并按单元格退出排序,看**别的维度**能不能分出来);**② 别的维度也分不出来时**,才把「具体数字」写成「答复前必问项」里的**一个具体问句**(例:「税前月薪具体是多少?几薪?社保按哪个城市的基数缴?」),并按「分不出来」出口的三条要求收场。⛔ **不许一上来就要金额**,⛔ 也不许因为拿不到金额就沉默不出排序
- ⭐ **⛔ 分子不许默认按"全年拿满"算 —— 先看前置声明「雇佣形式」**:**合同制 / 计件 / 无薪假**这类形态下,**年现金总包 = 单位报酬 × ⭐ 可计费周数**,⛔ **不许按全年五十二周算**。⚠️ 这是"名义报酬看起来很高"最隐蔽的一个来源,而它**不在分母里,在分子里** —— 它改的是"一年拿多少钱",不是"一年付多少时间"
- 可计费周数拿不到时退到 `可计费周数默认`(`纯占位待校准`),因而**必须做三点采样**
- ⭐ **有带薪假的正式雇佣形态下这一条恒不触发**(可计费周数 = 全年),⛔ 但那时也要在前置声明里把「雇佣形式」填出来,不许空着
**分母**(真实年工时):
```
正常工时 + 加班 + 通勤(往返,按工作日计) + 出差(在途全额 + 驻场超出常规工时的部分)
+ 跨时区错位(按工作日计) + 值班待命 × 待命折算系数
```
- ⭐ **通勤必须计入分母,且往返全额计入,不打折。** 这是写死的。**「名义薪资高但真实时薪更低」最常见的来源就是通勤被排除在分母外**——它是你为这份工作实际支付的时间,无论你在路上做什么
- ⭐ **出差必须计入分母,与通勤同性质** —— 它同样是**你为这份工作实际支付的时间**。⛔ **不因为"公司报销差旅"就不计入:报销的是钱,不是时间**
- **口径写死**:**在途时间全额计入**(同通勤,不打折);**驻场 / 现场支持期间,只计入超出你常规工时的那部分**(常规那部分已经在「正常工时 + 加班」里,⛔ 不许重复计)
- ⭐ **岗位描述里出现「私有化交付 / 现场支持 / 驻场 / 去客户现场」时,⛔ 不许按 0 计** —— **岗位描述本身就是证据**。拿不到具体频次时按「与你现在相当」计入并标 `我推测的`,且**必须列进翻转点**
- 「你现在」也说不清时(没有在职工作 / 现职不出差而新岗位要出差)→ 退到 `出差强度默认`,标 `纯占位待校准`,因而**必须做三点采样**
- ⭐ **全 remote / 住处未定时,通勤这一格怎么填(⛔ 写死,别编)**:
- ⭐ **判据字面:这份工作要不要求你到某个固定地点上班?**(= 前置声明「前 2」)。**不要求(全 remote)→ ⭐ 通勤按 0 计入分母**,并在「口径与假设」写一行「**本列全 remote,通勤按 0**」。⛔ 不许因为"通勤是写死必算的"就编一个通勤时间出来
- ⚠️ **通勤口径预设了「住处已定」,而住处常常没定** —— ⭐ **住处取决于租金,租金又取决于住处,两格互为输入,这是一个循环**。⛔ **不许自己替用户设一个住处再算通勤**(那是拿一个编出来的前提去撑两维)
- ⭐ **解法写死**:**住处提到前置声明「前 3」里先定下来**;⛔ **定不下来 → 通勤与租金两格一起标 `我推测的`**,⛔ 不许只标一格
- ⭐ **跨时区错位必须计入分母,与通勤 / 出差同性质** —— 它同样是**你为这份工作实际支付、而名义报酬里看不见的时间**
- **口径写死**:为配合对方工作时段而付出的、**落在你正常作息之外**的时间(早会 / 深夜同步 / 因异步等待造成的返工),**按工作日计入**
- ⭐ **岗位描述或前置声明里出现"与××地团队协作 / 需要配合××时区"时,⛔ 不许按 0 计** —— **岗位描述本身就是证据**(与"驻场 / 现场支持"同一条)。拿不到具体量时按「与你现在相当」计入并标 `我推测的`,且**必须列进翻转点**
- ⚠️ **同时区时这一项为 0**,⛔ 但前置声明「前 4」照样要填出来,不许空着
- 值班待命按 `待命折算系数` 折算计入(待命不是全工作,但也不是自由时间)
**输出**:把三列的真实时薪做成一个**指数**——挑一列(通常是「留在原地」)定为 100,其余写成相对它的数。**这是指数不是钱**,它让你不必写下任何真实金额就能比较。
### 第 3 步 · 写一句「我最不确定的是什么」
一句话,用户自己说。这句话就是翻转点声明的种子。
如果用户说不上来,给他挑:*浮动到底发不发得出来?* / *加班到底多不多?* / *这个岗位三年后还值不值钱?* / *我搬不搬得动?*
#### ⭐ 然后你(agent)也写一句 —— 但**不要问"我哪里可能判错"**
一次回溯测试里,框架在 8 个案例上都写了"我最可能错在哪",结果:**被真值证伪 3 次,0 次预警到真正会翻盘的那一处**。
它每次挑的都是**方法论洁癖式的风险**("我的分层口径对不对""这几条观察独不独立"),而真值里三次的决定性信号,**全部落在框架自己主动排除掉的格里**。
⭐ **所以问法要换成这一句**:
> **如果三个月后结果跟我说的相反,最可能是哪一条我判定为「不重要 / 不可判 / 不能问」的东西,其实是决定性的?**
**为什么这个问法更准**:你已经想过的地方,你已经在想了;**真正会翻盘的,是你判定"这条不用想"然后就真的不再想的那一条**。
所以要**从排除项里挑**,不是从保留项里挑:
- 哪一格被标成了 `我推测的` 因而**退出了排序**?
- 哪一维因为"取值都差不多"被**删掉**了?
- 哪个问题因为"对方不会答"被**降级**了?
- 哪条信息因为"事后补不回来"被**判为不可判**?
⛔ **写完不要去补它** —— 这一句的用途是**留痕**,让三个月后的你能回来看当时排除掉了什么。真要补,它就该出现在必问项里,而不是这里。
### 第 4 步 · 出排序
#### ⛔ 上位出口:有一列被硬约束判出局时,⭐ **必须出结论**(⛔ 优先于本模块其余任何一条"不出结论"的规则)
⚠️ **本模块当前最严重的失败模式不是"判错",是"拒绝判"。** 一批实跑里六个案例、**四种完全不同的真值类型**,全部输出**同一形状**:「不排名次 + 数据不够,不该下结论」。⭐ **真值核对下来,其中四例当时就是可判的** —— 有一例的真值原话是「**几乎不需要推理,只需要不自我说服**」:四条决定性信号全是对方主动说出口的。
**根因是三条互锁的机械判据**(在跨国 / 材料型 / 回溯型输入上几乎必然同时成立,⛔ **任一成立就出不了名次**):`无 gate` + 「整维退出」+ `未成 offer` 不参与排序。⭐ **这三条各自都在修**(见第 1 步的输入通道与优先级、「作用粒度」的新判据),⭐ **但它们还需要一条上位出口把"敢判"兜住**:
> ⭐ **只要有一列被一条二值硬约束判到出局值,就必须出结论** —— 哪怕结论是「**只剩两列,而这两列分不出来**」。
> ⛔ **不许因为别的维整维退出,就把整个结论压成"数据不够"。**
- ⭐ **什么算"二值硬约束"(判据字面)**:**取到某个值就直接出局、⛔ 没有「有条件满足」这一档**的那类 —— `positioning.md` 的**硬性排除条件** · 已确认的**不可闭合必要条件**判为「不满足」 · 用户写下的、能对每一列答"满足 / 不满足"的那种条件
- ⭐ **执行动作写死,三步**:
1. ⭐ **先把出局那一列的出局结论照常出**:「**××出局,因为它在××这条上不满足**」—— ⭐ **这一句本身就是一个结论**,⛔ 不许因为别的维数据不全就不说
2. **剩下的列照常比**:分得出来就出名次;分不出来就照「分不出来」出口的三条要求收场 —— ⭐ **但收场语必须先说第 1 步那句**
3. ⭐ **最后照着说一句**(⛔ 前提是被判出局的确实只有那一列):**「××这一列已经出局了,剩下的比不比都不改变这一条。」**
- ⛔ **不许把"某一列出局"和"其余维数据不全"合并成一句"数据不够"** —— ⚠️ **前者是结论,后者是缺口;混在一起,用户拿到的是零个结论**
- ⭐ **这条上位规则同时管住维度池的挑选判据**:⚠️ 「取值不同才留」会把**取值相同的二值维**删掉,⛔ **而一个"一旦取到某值就让某列直接出局"的二值维,即使本次取值相同也不许删** —— 它的价值不在区分度,在**出局判定**。删掉它,本该出局的那一列会带着完整名次留在表里
- ⭐ **它与 `无 gate` 不冲突**:一条已经判出局的硬约束**本身就是一条写下来的底线** —— ⭐ **它成立时 gate 表就不是空的,`无 gate` 自然不成立**
- ⭐ **验收标准一句话**:**一个"有一列被硬约束判出局、其余维数据不全"的案例,必须能出结论。** ⛔ 再输出一次「数据不够」就是没修好
给这六样,缺一不可:
1. **排序**(含「留在原地」的名次)。⛔ 带标记的列照带:`gate 未通过`(留在原地)/ `有条件满足(待闭合)` / `gate 待定` / `无 gate`(整张 gate 表为空时**每一列都带**)——⭐ **四种全部不能排第一**(见第 1 步,⛔ 没有例外)
2. **每一名与下一名差在哪个维度** —— ⛔ 必须指名道姓说出是哪一维。⭐ **比较口径写死:差幅必须严格大于这一维误差带的绝对值,才算"分得出来"**(例:误差带 ±5,两列差 5 指数点 → **分不出来**;差 6 才算分得出来)。分不出来就明说「这一维分不出来」,换下一维说。误差带取值见「参数与来源等级」,且必须在「口径与假设」里报出来
- ⛔ **说"这一维分不出来"之前,必须先过一遍第三档判据**:**这一维上有没有一条 `你给的` 或 `公开可查` 的事实,能确定谁优于谁(哪怕说不出优多少)?** ⭐ **有 → 它是 `方向确定 · 量级不明`,属于"分得出来",⛔ 不许换下一维,也 ⛔ 不许拿它算差幅或判决胜维**(判据全文与措辞见第二节「⭐ 第三档:`方向确定 · 量级不明`」)
- ⭐ **最小路径只有一维,没有"下一维"可换 —— 给它一个专门的出口**:唯一那一维分不出来时,⛔ **不许走「分不出来」出口**(那个出口的第一个必要条件是"**先只用 `你给的` / `公开可查` 的那几维重排一次**",而最小路径根本没有"那几维",走过去只会卡死)。正确动作是 ⭐ **直接进深潜、加第二维**(按「取值不同才留」挑一维),并跟用户说一句「**真实时薪这一维分不出来,我加一维再排 —— 这一步开始就不是最小路径了。**」
- ⭐ **加维有停止条件,写死(⛔ 不许无限加下去)**:**每次只加一维**,加完立刻判它分不分得出来;**最多加到第三维**(连真实时薪在内一共三维)。到第三维仍然分不出来 → **停**
- **为什么是三**:基础维度池只有四维(加上「既得资产」那一维也才五维),到第三维还分不出来,说明**缺的不是维度,是数据** —— 再加下去只会把 `我推测的` 的格越加越多,而推测不参与排序,**加了等于没加**
- ⭐ **停下来之后输出什么**:走「分不出来」出口(三条要求全部照跑),并 ⛔ **必须点名缺的是哪几类数据**,不许只说"信息不足"。逐维写清它为什么没分出来,⭐ **有四类(⛔ 旧版只有三类,漏的正是最常见的第 ④ 类)**:
- ① **整维退出,且真的拿不到**(⭐ **这一维一格硬的都没有**,见「作用粒度」那节)→ **这一类才是"缺数据"**,缺的就是这一维的取值,逐条写成必问项
- ①b ⭐ **保留但可比列 ≤ 1**(这一维还有硬格,只是凑不出一对)→ ⛔ **不算"缺数据到整维没用"**,走「硬证据留档」,⭐ 并把"补哪一格就重新可比"写成必问项
- ② **差幅不过误差带** → **不缺数据**,是这两列在这一维上真的差不多
- ②b ⭐ **`方向确定 · 量级不明`(⛔ 新增,⛔ 不许并进 ②)** —— 这一维上有一条 `你给的` / `公开可查` 的事实能确定谁优于谁,只是**量级不知道** → ⭐ **这一维已经分得出来了**,⛔ **它根本不该出现在这张"为什么没分出来"的清单上**。⚠️ **② 的下一步是"别再管这一维",②b 的下一步是"把量级问出来"** —— ⛔ 收进同一句话,就把一个**已经拿到的结论**当成"两列差不多"扔掉了
- ③ **两维方向相反** → **不缺数据,缺的是一次取舍** → ⛔ 不进这里,走下面那个专门出口
- ④ ⭐ **可问而未问(⛔ 新增,⛔ 不许并进 ①)** —— 用户自己明说"我没问",或那一格存在一个具体的提问对象。⚠️ **实测里大量缺失属于这一类,而它被整体归进 ①「缺数据」** —— ⭐ **两者的下一步动作完全不同**:
| | 这件事的性质 | 下一步 |
|---|---|---|
| ① 真缺数据 | **拿不到** | 写成必问项,但要说清它可能问不到 |
| ④ ⭐ **可问而未问** | ⭐ **发一封邮件 / 问一句就有** | ⭐ **今天就能做完** |
- ⭐ **判据是纯字面的,一眼分**:**这一格有没有一个具体的提问对象(有名有姓的联系人 / recruiter / 某位面试官),且问题写得成一句过去式问句?** **有 → ④**;**没有**(无人可问 / 对方已明确拒答 / 落在「检索的边界」禁掉的那类)**→ ①**
- ⭐ **④ 的专属措辞写死(⛔ 不许与 ① 用同一句收场)**:**「××这一格不是拿不到 —— 是还没问。今天给 ×× 发一句:『××?』,回信就能填上。」** ⭐ **必须具体到"问谁 + 原话说什么"**
- ⚠️ **为什么必须分开**:⭐ **把这两种收进同一句话,会把"今天就能做完的事"说成"补不齐"** —— 而这正是本模块自己点名要避免的失败模式(同「两维方向相反不许走『分不出来』出口」)
- ⚠️ **三维全是 ② 时,结论不是"分不出来",而是一条强结论**(照着说):**「这几个选项在你选的这几维上确实没有实质差别 —— 差别在你还没写进表里的地方,或者它们对你真的一样。」** ⭐ 此时该做的是**回去加一条必要条件或加分条件**,⛔ 不是再加一维
- ⭐ **两维都分得出来、但方向相反 —— 这是一个独立的出口,⛔ 不许走「分不出来」出口**:
- **触发判据(两条同时成立,都能一眼判)**:① 这两维**各自都分得出来**(差幅严格大于该维误差带;定性维跨两档;⭐ **`方向确定 · 量级不明` 也算"分得出来"**,见下一条);② **方向相反** —— 同一列在一维领先、在另一维落后
- ⭐ **⛔ 「分得出来」包含第三档 —— 这是一处硬断裂,补上**:⚠️ 触发判据字面写着"差幅严格大于误差带 / 定性维跨两档",⛔ **而 `方向确定 · 量级不明` 明写这两样都没有** —— 于是「**一维是第三档、另一维与它方向相反**」这种很常见的组合,**两个出口都够不着**(那一档又被写死"算分得出来",所以也进不了「分不出来」)。写死:
- ⭐ **第三档算"分得出来"的一种**(第二节开头就是这么定义的)→ ⭐ **一维是第三档、另一维分得出来且方向相反 → 照样触发本出口**
- ⭐ **两维都是第三档时同样走本出口**(两边都只有方向、都没有量级),⛔ 不许改判成「分不出来」
- ⭐ **走进来之后有一处不同,⛔ 不许省**:取舍问句照问、原话照记,⛔ **但不许说"差多少"**。问法照着说:**「『××』这一条上 A 比 B 好是确定的,但好多少我不知道;『××』那一条上 B 比 A 好,差多少我算得出来。这两件事只能保一件,你保哪一件?」**
- ⭐ **⛔ 触发不止在维之间 —— 同一维内部的两个子项方向相反,同样触发(⛔ 旧版只有维级,这是一处没有判据的自由裁量缺口)**:
- ⚠️ **实测撞到的形态**:发展空间那一维里,**两个子项各自都有硬格、方向正好相反**。⭐ **执行者自行把它拆成了两维处理 —— 而这一步框架里没写。** 换一个执行者走「整维取中 → 分不出来」,**同样不违规,得到的是相反的产出**。⭐ **同一份材料、同样合规、两个相反结论,差别只在执行者当时怎么裁 —— 这正是本模块最反对的形态。**
- ⭐ **触发判据(字面)**:**同一维内部,有两个子项各自都有硬格**(`你给的` / `公开可查`)**,且方向相反**(同一列在一个子项上领先、在另一个子项上落后)→ ⭐ **与跨维方向冲突同样处理**:走取舍出口,把那句取舍的**原话**记下来当这一次的权重
- ⛔ **不许"整维取中"** —— ⚠️ **取中会把两个都硬的相反信号抹成一个"分不出来",信息全丢**
- ⛔ **也不许执行者自行把它拆成两维** —— 那是**没有判据的自由裁量**,正是上面那段说的病
- ⭐ **取舍问句落在子项自己的说法上,⛔ 不许拿维名去问**:**「『××』和『××』这两件事只能保一件,你保哪一件?」**(例:「半年内能不能打出一件明确属于我的产出」↔「出错时我担不担责、有没有拒绝权」)
- ⭐ **记下来的取舍写在同一格里**(「本次取舍」),⭐ **并注明它是子项级的**(哪一维的哪两个子项)—— ⛔ 只写维名会让下一轮读的人以为是跨维冲突
- ⛔ **不许塞进「分不出来」出口。** 那个出口是给**证据不足**设计的:它的三条要求(先只用 `你给的` / `公开可查` 重排一次 → 点名三条缺失信息 → 说明补齐后怎么裁决)**全部预设"缺数据"**。⚠️ 而这里**数据是够的**。两种情形若用同一套措辞收场,用户拿到的下一步动作会完全错 —— **他会跑去补一堆补齐了也不会改变结论的信息**
- ⛔ **也不许给这两维配权重再加起来**(纪律 3:不出综合分、没有维度权重)
- ⭐ **产生方式:排序不由框架产生,由你回答一个问题产生**(照着问):**「『××』和『××』这两件事只能保一件,你保哪一件?」** —— 把他的回答**按原话写下来**,⭐ **它就是你这次的权重,且只对这一次有效**
- ⭐ **与加权求和的区别**:这是**一次显式的、被记录下来的取舍**,不是一组藏在公式里的系数。所以它 ⭐ **必须出现在输出里**(`offers.md` 排序结论一节 + 入职前存档),标 `你给的`。⛔ 不许只留在对话里 —— **要让他三个月后回头能看见自己当时选的是什么**
- ⛔ **只对这一次有效**:不许把它沉淀成跨样本的权重表或默认维度序(那就是权重)。L2 沉淀写进 `offers.md` 时写成「**本次取舍:××(第 _ 轮,用户原话)**」,⛔ 不写成「本人一贯更看重××」
- ⭐ **用户不回答("你帮我定")→ 不出名次**,把问题原样退回去并说清为什么:**「这一次不是我算不出来,是这两维方向相反、而本模块不做加权求和 —— 这个取舍只有你能做。」** ⛔ 不许替他选,⛔ 也不许因此改判成「分不出来」
- **三维及以上同时冲突时**:⛔ 不许一次让用户对多维排序(那等于让他现场给一组权重)。⭐ **一次只问第 1↔2 名争的那一对**,定完再看下一对还冲不冲突
3. **翻转点**:**有就写,每条带临界取值和证据等级;一条都没有就明写「本次结论无翻转点,因为……」** ——「无翻转点」是一条强结论,不是缺一节
4. **第 1 名最弱的一维**:弱在哪、要跌到什么程度它才会掉出第一。⭐ **「跌到任何程度都不会,因为决胜维是另一维」是合格答案**,见输出格式第 5 件
5. **一句决策分离结论**:对「公司成不成」的判断 vs 对「我要不要去」的判断,分别是什么
6. ⭐ **一页纸** —— 把上面五样**收**成一页,放在 `offers.md` 的**最前面**。⛔ **最小路径也不许省**:这一件恰恰是为「**今晚就得答复、而且不是技术背景**」的人加的,⚠️ **而那正是最小路径的用户特征**。⭐ **它在文件里排第一,在你的工作顺序里排最后** —— 它是从上面五样收出来的,⛔ 不是另写一份,⛔ 更不是"简化版结论"。四件必需内容、禁用词表与人话译法见输出格式第 1 件
⭐ **最小路径收尾还要再带一句(照着说,⛔ 不许省)—— 但有两种措辞,⛔ 别照抄错那一种**:
⚠️ **旧版只给了一种措辞**,而它假设"补采样有意义"。⛔ **照抄到不成立的场合上,会把用户推去补一件补齐了也不改变结论的事** —— 与「两维方向相反不许走『分不出来』出口」是同一类错。
- ⭐ **判据是纯字面的,一眼判**:**本次落在后两档的那两个参数,有没有出现在任何一维的算法里、而那一维又参与了排序?**
- ⭐ **出现了 → 照说这一句**:**「你这次跳过了参数采样,这意味着这个排序对『浮动兑现率 / 周工时』这两个假设有多敏感是未知的 —— 如果你想在答复前只多花三分钟,就补这一项。」**
- ⭐ **没出现 → ⛔ 不许照抄上面那句,改说这一句**(典型:唯一参与排序的那一维根本不用这两个参数;或它们所在的那一维已经整维退出):**「你这次跳过了参数采样 —— 但本次的名次不由那两个参数决定(××那一维根本没进排序),所以补采样不会改变这个顺序。真要动这个结论,缺的是 ××。」**
- ⚠️ **为什么要单独说出口**:三点采样与交互项被划进深潜,而 ⭐ **最需要它的,恰恰是最不可能跑深潜的人**(今晚就得答复、第一次用本模块)。⛔ 划进深潜之后一句不提,等于让这批人拿到一版**看起来已经跑完**的排序
- ⛔ **这不是把三点采样移回最小路径。** 移回去是重蹈上一版的覆辙 —— 把已知会被触发的重活留在最快的那条路上,实际结果不是他跑完,是他跳过
- ⭐ **补的是哪一项,写死**:只把**落在后两档的那两个参数各取更保守的一端**,重算一次真实时薪,看名次翻不翻。翻了 → 它就是一条翻转点(补上临界取值);不翻 → 写进「查了也不会翻」
- ⚠️ **"三分钟"是给这一项的邀约措辞,⛔ 不是最小路径或深潜的时间承诺**(本模块不给路径写分钟数,见第一节)。用户问"深潜要多久",答案照旧是**取决于你手上有几个参数落在后两档**
⭐ **另外,下面三种情况要额外跑一套并对照**(都是「有人说了一句无人可验证的话,框架就照做」的地方):**① 有 `事后重构` 的必要条件** → 含它 / 不含它各跑一套排序;**② 用户覆盖了任何一维的误差带** → 按他给的 / 按默认各跑一套排序;**③ 换一种通勤方式会改变 gate 判定** → 两种都跑。**两套不同就必须显式声明**,⛔ 不许静默挑一套输出。
⛔ **①② 的对照表不许整块删掉**(模板第三节):不适用时**留着并写一行「本次无 `事后重构` 的必要条件」/「本次无人覆盖误差带」**。理由与「闭合上限那一格空着按不可闭合处理」同源——**判据必须是「这一格是不是空的」这种纯字面谓词。整块删掉之后,「跑过两套且一致」和「根本没跑第二套」在文件里长得一模一样。**
⛔ **绝不许输出「两个都不错,看你自己」。** 见「不对劲的时候」第 1 条。
---
## 二、写死的五条纪律(agent 不许改)
最小路径已经用上了全部五条。往下深潜时,**这五条仍然一个字不改**:
| # | 纪律 | ⛔ 违反的样子 |
|---|---|---|
| **1** | **Gate:必要条件 vs 加分条件,不可换。** 不满足直接出局,不进排序 | 把必要条件当成一个权重很高的维度,让它被别的维度补偿掉 |
| **2** | **真实时薪口径**:通勤计入分母;浮动按历史兑现率打折不按承诺值;期权不进现金分子 | 直接拿名义总包比大小;把通勤算成「生活方式选择」不算成本 |
| **3** | **出排序,不出综合分** | 给出 0-100 分、五星评级、红绿灯、加权总分 |
| **4** | **翻转点声明** + 每条假设的证据等级 | 给一个结论就走,不说这个结论建立在什么上、错多少会变 |
| **5** | **每条结论标来源**(`你给的` / `公开可查` / `我推测的`),推测项**不参与排序** | 把查不到的东西补成一个看起来合理的取值,混进表里 |
> **这五条是本模块与市面上任何一个 offer 记分板的全部差异。** 别的都可以按情况调;这五条一动,它就变回记分板了。
### ⭐ 前置声明:既不是维度、也不是参数的那一类(⛔ 它以前在框架里没有容器)
⚠️ **框架原本只有「维度」和「参数」两种东西,而有一类输入两种都不是。** 典型是**雇佣形式**(正式雇佣 / 合同制 / 计件 / 派遣):它自己**不是一维**(不参与排序、不比高下),也**不是一个参数**(不是算式里的一个数),⭐ **但它决定了别的维度怎么算** —— 有没有带薪假决定分子按几周算;要不要坐班决定通勤那一格填不填;住处定不定得下来决定租金与通勤两格能不能标硬。
⛔ **没有容器时,它只会散在正文的一句话里,而下游每一维各自解释一遍** —— 于是同一个前提在不同维度上被读成不同意思。现在给它一栏,⭐ **放在「口径与假设」的最前面,⛔ 先填它,再填参数表**。
| # | 前置声明 | 本次取值 | 来源标注 | ⭐ 它改变了哪几维的算法 |
|---|---|---|---|---|
| 前 1 | **雇佣形式**(正式雇佣 / 合同制 / 计件 / 派遣 / 未定) | | `你给的` / `公开可查` / `我推测的` | 分子(可计费周数)· 下行风险(保证期与试用期条款) |
| 前 2 | **要不要到固定地点上班**(坐班 / 混合 / 全 remote / 未定) | | | 分母(通勤是否按 0)· 生活成本(租金按哪个城市取) |
| 前 3 | **住处**(已定:__ / 未定) | | | 分母(通勤)· 生活成本(租金) |
| 前 4 | **跨时区**(同时区 / 差 _ 小时 / 未定) | | | 分母(跨时区错位) |
| 前 _ | ⭐ 本次自己加的前置声明 | | | ⛔ **必须写清它改了哪几维,不写不许用** |
- ⭐ **判据一句话,能一眼判**:**一个输入如果"它取什么值会改变另一维怎么算",它就是前置声明** —— ⛔ 不是维度,也 ⛔ 不是参数
- ⛔ **前置声明标 `我推测的` 时,它影响的那几维一律按单元格退出。** ⚠️ 理由:**一个推测的前提能同时污染好几维,比一个推测的取值更贵**
- ⭐ **逐列填**:不同列可以取不同值(A 坐班、B 全 remote 是完全正常的),⛔ 但**每一列自己的前置声明必须与那一列各维的算法一致**
- ⚠️ ⭐ **前 3「住处」与通勤 / 租金是一个循环**:住处取决于租金,租金又取决于住处。⭐ **解法就是把住处提到前置声明里先定死**;⛔ **定不下来时,通勤与租金两格必须一起标 `我推测的`** —— ⛔ 不许只标一格(只标一格会让另一格看起来是硬的)
### 参数与来源等级
本模块不写死任何阈值。**用到的参数只有下面这几个,每个都要在输出里标出来源等级:**
| 参数 | 默认 | 来源等级 | 说明 |
|---|---|---|---|
| `浮动兑现率默认` | 拿不到历史数据时按七折 | `默认建议值` | 同时按承诺值与按 0 各算一遍,看排序翻不翻 |
| `待命折算系数` | 待命小时按四分之一计入工时 | `纯占位待校准` | 没有任何实证支撑,**用户跑过一轮后应按自己实际体感改掉** |
| `一次性成本摊销年限` | 一年 | `默认建议值` | 搬家 / 租房 / 押金这类一次性支出摊几年 |
| `周工时默认` | 每周约四十五小时 | `纯占位待校准` | 仅在**用户连「现在」的工时都说不清**时兜底,见「开跑前」表 |
| `出差强度默认` | 每月约两天在途,无长期驻场 | `纯占位待校准` | 仅在**连「现在」的出差强度都说不清**时兜底。⛔ 岗位描述里写了驻场 / 现场支持的,**不许按 0 计** |
| ⭐ `跨时区错位默认` | 每工作日约一小时落在正常作息之外 | `纯占位待校准` | 仅在前置声明「前 4」为跨时区、而具体量说不清时兜底。⛔ 同时区时为 0;⛔ 岗位描述里写了"配合××时区"的**不许按 0 计** |
| ⭐ `可计费周数默认` | 全年约四十五周 | `纯占位待校准` | ⭐ **只在前置声明「前 1」不是正式雇佣时才用**(合同制 / 计件 / 无薪假)。⛔ 正式雇佣形态下不用它,分子按全年算 |
| ⭐ **agent 自己引入的参数** | **没有默认值** | ⭐ **必须标,多半是 `纯占位待校准`** | 见下面「⛔ agent 自加的参数」一节。⛔ 不进「口径与假设」表的,不许拿来排序 |
| `通勤计入方式` | 往返全额,不打折 | **写死,不是参数** | 见纪律 2 |
| `通勤口径` | 工作日早高峰 · 你实际会用的那种通勤方式 · 单程门到门(分母里换算成往返) | **缺省写死**;实际取值标 `自己估算` 或 `公开可查`(附查询日期与时段) | ⛔ **同一份对照表里所有列必须用同一口径**,口径不同的两列不可比。它同时是 gate 判据和分母输入,不定义死就能在 gate 门口被绕过 |
| `有条件满足的分母口径` | **用闭合前的通勤** | **写死,不是参数** | 闭合尚未发生;用闭合后会让「违反必要条件」反过来变成优势 |
| 维度权重 | **没有** | — | 本模块不做加权求和,所以没有权重可设。如果你一定要给维度排「先看哪个」,那是阅读顺序不是权重,标 `纯占位待校准` |
**参数来源等级只有三档**:`实践校准`(用户自己跑过一轮后按实际体感改过的取值——**只有它是有依据的**)/ `默认建议值`(本模块给的、有大致常识支撑的起手值)/ `纯占位待校准`(**没有任何实证支撑,纯粹是为了让算式跑起来**)。
⛔ **凡是你在输出里用到的数字,都要标它是这三档里的哪一档,或标 `你给的`。** 一个没标来源的数字和一个编的数字无法区分。
#### ⛔ agent 自己引入的参数:有方向声明义务,也必须有来源等级
⚠️ 上面那张「更保守 / 更激进」的表给 agent 自加的参数写了**方向声明**义务,却**没给它来源等级栏** —— 于是实跑里出现过:**执行者临时编了一个折算系数,而它决定了唯一参与排序那一维的判定**。一个**没进口径表、没标等级、没被采样**的数字,独自决定了整个结论。
- ⭐ **凡是你自己引入的参数**(任何"我按 ×× 折算""我把 A 换算成 B 的比率"),**必须与本模块自带参数同等对待**:⭐ **进「口径与假设」那张表**,⛔ 不许只出现在正文的一句话里
- ⭐ **必须标来源等级,判据一句话**:**用户没给过、本模块没写过、公开渠道也查不到 → 它就是 `纯占位待校准`。** ⛔ 不许因为"这个折算很常识"就标 `默认建议值` —— **`默认建议值` 只属于本模块参数表里写着的那几个**,⛔ 自己加的进不了这一档
- ⭐ **于是它自动落进三点采样义务**(后两档必采);⚠️ 并且它一入表,**本次落在后两档的参数就至少有两个 → 交互项被触发**(见下)
- ⚠️ **方向声明不能替代来源等级**,两件事:**方向管采样怎么采,等级管要不要采**。⛔ 只写了方向就直接用,等于跳过了采样义务
#### ⛔ 三点采样义务:不是浮动兑现率的专属
> **凡是来源等级为 `默认建议值` 或 `纯占位待校准` 的参数,一律做三点采样**(本模块默认值 / 一个明显更保守的取值 / 一个明显更激进的取值),并把结果写进翻转点或「查了也不会翻」。`实践校准` 和 `你给的` 不必采。
>
> ⚠️ **这一整套(含下面的交互项)属于深潜,不在最小路径里** —— 最小路径按默认值先算一版,并在「口径与假设」写一行「本次未做三点采样,这是初版排序」。见第一节。
>
> ⚠️ **最容易被漏掉的是 `周工时默认`**:「开跑前」那张表自己写着"用户连『现在』的工时都说不清,就退到它",而它标 `纯占位待校准`。⭐ **一旦退到它,本次就至少有两个参数落在后两档**(它 + `浮动兑现率默认`)—— **交互项因此被触发**。⛔ 不许因为"用户没主动提工时"就当它不存在。
>
> ⛔ **唯一的例外:估算误差带不做三点采样**(理由见下面「估算误差带」一节)。三点采样的对象是**算式里的参数**,不是**判断算式结果算不算变化的那把尺子**。
**为什么扩到全部而不只是兑现率**:
- `一次性成本摊销年限` 从一年改成三年,实测**排序不翻,但决胜维从「生活成本」换成了「发展空间」**——名次没动,**给用户的整套理由却全换了**。只盯着「排序翻不翻」会漏掉这一类
- `待命折算系数` 自己标着「没有任何实证支撑」,却在旧版里没有任何采样义务——**一个承认自己是编的数字,比一个可能不准的数字更需要被采样**
⭐ 采样结果有两种合格形态,缺一不可:**① 名次变了 → 写进翻转点**;**② 名次没变但决胜维或理由变了 → 也要写一行**「按 X 算名次不变,但第 1↔2 的差会从『某维』换成『某维』」。
##### ⛔ 「更保守 / 更激进」的方向,逐参数写死(不许现场解释)
「保守」对多数参数**双向可读**(摊销年限的「保守」是摊 1 年还是摊 5 年?),解释权一旦留在现场,采样就等于没做。**本模块统一按「对该 offer 的吸引力更不利 = 保守」定义**,逐条写死:
| 参数 | 更保守(= 对该 offer 更不利) | 更激进 |
|---|---|---|
| `浮动兑现率默认` | **按 0** | 按承诺值全额 |
| `待命折算系数` | **按二分之一**(待命更像工作 → 分母更大 → 时薪更低) | 按 0(待命不算工时) |
| `一次性成本摊销年限` | **摊 1 年**(当年全额吃掉,年化代价最大) | 摊 5 年 |
| `周工时默认` | **每周约五十五小时** | 每周约四十小时 |
| `出差强度默认` | **每月约一周在途,或有长期驻场** | 不出差 |
| ⭐ `跨时区错位默认` | **每工作日约两小时落在正常作息之外** | 不错位 |
| ⭐ `可计费周数默认` | **全年约四十周**(可计费的周数更少 → 分子更小 → 时薪更低) | 全年约五十周 |
| agent 自己引入的参数 | 采样前**先写一句**「这个参数往哪个方向动会让这一列更不利」,再据此定两端 | — |
##### ⛔ 至少跑一次「两个参数同时取保守值」(交互项)
单参数逐个变动会漏掉**交互项**:「浮动按 0」单独不翻、「摊销按 1 年」单独也不翻,两者**同时**成立时可能翻掉名次。
- ⭐ **只要有两个及以上参数落在 `默认建议值` / `纯占位待校准` 两档,就额外跑一次「它们同时取保守值」**,结果按上面两种合格形态之一写出来
- ⛔ 不必穷举所有组合(那会把深潜撑爆)。**同时取保守值这一次是下限,不是上限**——发现它翻了,再往回定位是哪一对在起作用
- ⚠️ **交互项不是走形式。** 实跑里出现过这样的样本:**单参数逐个采样一个都不翻,只有交互项翻**(同时取保守值时,某一列跌到低于「留在原地」)。⛔ 见到"单参数都没翻"就跳过交互项,正好漏掉唯一会翻的那一次
#### ⛔ 估算误差带:每一维一个默认值,且必须先声明后排序
**「差幅小于这一维的估算误差带就换下一维说」这条规则,只有在误差带是事先定好的时候才成立。** 实测过:同一份数据,误差带取 ±1 指数点时决胜维是「真实时薪」,取 ±5 时决胜维变成「生活成本」——**同一份数据两套解释链**。所以误差带不能等看到结果再挑。
| 维度 | 默认误差带 | 来源等级 | 说明 |
|---|---|---|---|
| **① 真实时薪(指数,基准列 = 100)** | **±5 指数点** | `默认建议值` | ⭐ **这一维必须报误差带**,它是最小路径里唯一必算的一维。工时与加班多半是自己估算的,±5 是给这部分估算留的余量 |
| **② 发展空间** | 定性三档(强 / 中 / 弱),**相邻一档视为分不出来** | `纯占位待校准` | 没有可比的数值刻度,所以误差带只能定成「差一档不算差」 |
| **③ 生活成本(折成年化可支配的指数)** | **±3 指数点** | `纯占位待校准` | 租金取的是公开挂牌中位数量级,个体实际落点可以差很多 |
| **④ 下行风险** | 定性三档,**相邻一档视为分不出来** | `纯占位待校准` | 同 ② |
| agent 自己加的维度 | **默认按「定性三档,相邻一档分不出来」处理** | `纯占位待校准` | 想用更细的刻度,先说清刻度是怎么来的 |
规则:
- ⭐ **在开始排序之前**把这张表里本次实际采用的取值写进 `offers.md` 的「口径与假设」一节,**连同来源等级一起报出来**。⛔ 不许排完序再回头调误差带
- ⭐ **比较口径写死,只有一种读法**:**差幅必须严格大于该维误差带的绝对值,才算"分得出来"。** ⛔ 不许读成"两列各带 ±N、区间重叠即分不出来"(那等于把门槛悄悄放大一倍),⛔ 更不许现场在两种读法之间挑。**两种读法在同一份数据上会给出不同答案**(典型:两列差 5 指数点、误差带 ±5 —— 按写死这条是"分不出来",按重叠读法也是"分不出来",但两列差 8 时两种读法就分家了),所以必须钉死一种
- 定性三档的那几维照旧:**相邻一档视为分不出来,跨两档才算分得出来**
- ⛔ 误差带**只用来判断「这一维分不分得出来」**,不用来加宽或收窄结论的措辞,也不许拿它当置信区间写成「95% 区间」这类东西——它是一个约定,不是统计量
#### ⛔⭐ 跨越一年以上的比较:看的是斜率,⛔ 不是相邻两次的差
⚠️ **误差带那条「相邻一档视为分不出来」在多年尺度上会系统性抹掉缓慢下滑** —— ⭐ **三年滑三档,每年看都是相邻一档**:每一次比较都判"分不出来",于是三年下来的那三档在输出里**一点痕迹都不剩**。⭐ **多年尺度要的是斜率,而框架里没有斜率。**
> ⭐ **判据写死,纯字面**:**比较跨越一年以上时,看的是「这几年是往哪个方向走的」,⛔ 不是「今年和去年差几档」。**
- ⭐ **触发判据(字面)**:这一维上**最早那次观察与最近那次观察之间跨了一年以上**(按各自的材料日期算)。⛔ 跨不到一年 → 不触发,照旧按误差带逐次比
- ⭐ **趋势的判据(字面)**:**同一维上连续两次观察同向** —— 连着两次都在往下,或连着两次都在往上,⛔ **中间没有一次反向** → 记为一条**趋势**
- ⚠️ **两次同向就够,⛔ 不要求三次**:多年尺度上多数人手里只有两三个时点;门槛定到三次,这条规则在真实材料上**恒不触发** —— ⭐ **和一条坏掉的规则无法区分**
- ⭐ **每次观察必须带它的时点**(材料日期,见第三节)。⛔ **没有时点的观察进不了趋势判定**,也 ⛔ 不许按"大概那几年"补一个
- ⭐ **趋势本身就是一条可以参与排序的事实**,按 `方向确定 · 量级不明` 那一档处理(见上一小节):✅ **可以用它定先后**;⛔ **不能拿它算差幅**、⛔ **不能拿它判决胜维**(每一步都落在误差带以内,所以它没有量级)
- ⛔ **不许把三次观察各自跟误差带比一遍、然后说"三次都分不出来"** —— ⚠️ **那是把一条趋势拆成三次分不出来**,正是这一小节要挡的东西
- ⭐ **措辞写死**:**「这一维上,从 ×× 到 ×× 是一路在往下走的(××→××→××);每一步都小到分不出来,但方向连着没变过。」** ⛔ 不许简化成「这一维分不出来」,⛔ 也不许写成「跌了三档」(那是在给一条没有量级的事实编一个量级)
- ⭐ **它是第三档里唯一能写进翻转点的一种,⛔ 别推广到别处**:第三档一般 ⛔ **不进翻转点**(没有可落在刻度上的取值,见上一小节);⭐ **而趋势有一个二值的临界取值 —— 「连续两次观察反向」**,与 `待你确认` 那条二值翻转点同型。⛔ 不许给它编一个刻度上的数
#### ⭐ 第三档:`方向确定 · 量级不明`(⛔ 旧版只有"分得出来" / "分不出来"两档)
⚠️ **实跑撞到的形态**:某一维上有一条**方向明确的硬差异**(A 比 B 好,这一点是确定的),⛔ **但材料里零金额、零刻度,量级判不出来**。旧版两档里它只能落进「这一维分不出来」—— ⭐ **于是它和"两列真的差不多"在输出里长得一模一样**。
⛔ **而这两者的下一步动作正好相反**:
| 这一维的真实状态 | 它是什么 | 下一步 |
|---|---|---|
| **两列真的差不多** | 差幅不过误差带 | ⭐ **换下一维,别再管这一维了** |
| ⭐ **`方向确定 · 量级不明`** | ⭐ **这一维已经有结论了**,缺的只是"差多少" | ⭐ **把量级问出来**;⚠️ **而它若是本次的决胜位置,方向本身可能已经够用了** |
⚠️ **把两种性质不同的东西收进同一句话,正是本模块自己点名反对的失败模式**(同「④ 可问而未问 ⛔ 不许并进 ① 真缺数据」、同「两维方向相反 ⛔ 不许走『分不出来』出口」)。
- ⭐ **判据写死,纯字面,一眼判**:
> **这一维上有没有一条 `你给的` 或 `公开可查` 的事实,能确定 A 优于 B(哪怕说不出优多少)?**
> **有 → `方向确定 · 量级不明`。⛔ 没有 → 才是「这一维分不出来」。**
- ⛔ **`我推测的` 撑不起这一档**(连同 `你给的(原话记不清)` 与上游标 `未验证` 的那些 —— 它们在排序里按 `我推测的` 处理):**靠推测得出的"方向"不是方向,是猜**
- ⛔ **也不许拿"我算了一下大概是 A 高"去凑** —— 那是一个**算得出差幅**的比较,它要么分得出来、要么分不出来,⛔ 不进这一档
- ⭐ **它算「分得出来」的一种,⛔ 不许当成「分不出来」扔掉**,⛔ 也不许因为它"没有数"就整维退出
- ⭐ **它能做什么 / ⛔ 不能做什么(写死)**:
- ✅ **排序时可以用它定先后** —— 「A 在这一维上优于 B」本身就是一条可用的先后关系
- ⛔ **不能用它算差幅**(没有量级就没有差幅),⭐ **因此 ⛔ 不能用来判"是不是决胜维"** —— 判决胜维要拿差幅去和误差带比,⚠️ **而这一档两样都没有**
- ⛔ **不能拿它去写翻转点** —— 翻转点必须带临界取值,而这一档没有可落在刻度上的取值。⭐ 它的正确去处是必问项(见下一条)。⚠️ **唯一的例外是「跨越一年以上的趋势」**(见上一小节):那一种有一个二值临界取值("连续两次观察反向"),⛔ 别把这个例外推广到第三档的其余情形
- ✅ ⭐ **它能触发「两维方向相反」出口** —— ⚠️ 那个出口的触发判据字面要求"差幅严格大于误差带 / 定性维跨两档",⛔ **而这一档两样都没有**,于是「一维是第三档、另一维与它方向相反」以前**两个出口都够不着**。⭐ **写死:这一档算"分得出来"的一种,因而照样触发方向冲突出口**(全文见第 4 步那一节)
- ⭐ **输出措辞写死(⛔ 不许简化)**:**「这一维 A 优于 B 是确定的,但优多少不知道。」**
- ⛔ 不许简化成「A 更好」—— **丢掉了"多少不知道"**,读起来像一个已经量化过的结论
- ⛔ 更不许写成「这一维分不出来」—— **丢掉了已经拿到的那个结论**,用户会以为该换下一维
- ⭐ **必问项里必须配一句能问出量级的具体问法**(⛔ 不许只写「再确认一下这一维」):问法要落在**这一维自己的刻度**上。例:真实时薪那一维 → 「这两边在这一条上,差的是几成,还是成倍?」;定性三档的那几维 → 「这两家在这一条上是差一档还是差两档?各举一件具体发生过的事。」
- ⭐ **名次完全由这一档定出来时,"差在哪一维"那一栏怎么写(⛔ 别留空,⛔ 更别硬编一个决胜维)**:照着写 —— **「本次第 1↔2 的先后,是由『××这一维上 A 优于 B 是确定的』定出来的;⛔ 这一维没有量级,所以本次没有决胜维。」** ⭐ 并把上一条那句问法写成必问项 —— **量级问出来之后,才谈得上决胜维。**
#### ⛔ 用户覆盖误差带:三条硬约束(这是本节唯一的口子,必须收住)
「用户给了自己的取值 → 标 `你给的`,优先于默认」这一句以前是**无下限、无论证义务、无时点约束**的。实测:在一组**薪资结构完全同构**的样本上(同薪数、都无浮动、同社保缴纳地,所以「结构差异大 → 必须问具体数字」那条旁路不会触发),top2 真实时薪差 1.4 指数点——
- **±5(默认)→ 决胜维 = 生活成本 → A 第 1**
- **±1(用户声明)→ 决胜维 = 真实时薪 → B 第 1**
**换掉的不只是决胜维,是名次。** 而「⛔ 不许排完序再回头调」拦不住它:多轮对话里用户看完排序再说一句「我觉得误差带该按 ±1」,触发的是「用户取值优先于默认」,**两条规则直接对撞**。所以补三条:
**① ⛔ 收窄要给理由,且理由要对得上具体哪一项估算**
- 用户收窄误差带时,**必须同时说明凭什么收窄**,并指明它对应**哪一项估算误差**。例:「我有考勤打卡数据,工时不是估的」→ 对应的是 ±5 里给「工时与加班自估」留的那部分余量
- ⛔ **给不出理由的,按默认值走**,并在「口径与假设」里写一行「用户要求收窄至 ±N,未给出对应的估算依据,本次仍按默认 ±M」
**② ⭐ 只要覆盖了任何一维的误差带,就同时按默认值再跑一遍**
- 两套名次**相同** → 正常输出
- 两套名次**不同** → ⭐ **必须显式声明**:「**按你给的误差带是这个顺序,按默认误差带是另一个顺序 —— 这个结论完全建立在你对自己数据精度的判断上。**」⛔ 不许只输出其中一套
- 名次相同但**决胜维**不同 → 也要写一行(同三点采样的第 ② 种合格形态)
**③ ⛔ 加时点留痕:这一格要写「声明于第几轮 / 是否修改过」**
- 模板的误差带表补这一列,`offers.md` 里照填。改过就写「第 1 轮 ±5 → 第 4 轮改为 ±1(看到排序之后)」
- **理由**:**一个从来没被观测到「先声明」过的先后约束,和一个没有这条约束的模块无法区分。** 「不许排完序再回头调」如果在机械层面无痕,它就只是一句话
#### ⛔ 裁决:误差带不做三点采样
「参数与来源等级」那张标签体系表曾把误差带划进「后两档必采」的范围,与本节「⛔ 不许排完序再回头调」直接冲突(采样 = 同时拿多个取值跑)。**裁决:误差带不采样。**
**理由**:**你需要误差带来判断采样结果算不算变化,再去采样误差带本身是循环的。** 误差带是那把尺子,不是被量的东西。它改用上面 ①②③ 三条约束(要理由 / 两套都跑 / 留痕)。
---
## 三、交给现场检索的部分(websearch)
**不做数据库,也不让用户手填几十个格子。** 下面这些你现场查,查到的标 `公开可查` 并附来源与查询日期:
| 查什么 | 用在哪一维 |
|---|---|
| 相关城市 / 区域的租金水平(公开挂牌的中位数量级即可) | 生活成本 |
| 两地之间的通勤时长(公开地图服务的通勤时段耗时) | **只进真实时薪的分母。** ⛔ 通勤的**时间**不再进生活成本——那是同一笔时间罚两次。生活成本只收通勤的**货币**部分(交通费) |
| 通勤的公开票价 / 里程油耗量级 | 生活成本(**只算钱,不算时间**) |
| 社保公积金缴纳基数与比例的公开政策 | 生活成本(折成年化可支配的差异) |
| 公司的**公开**融资轮次、公开新闻、这条业务线**公开可见的上线时间**(= 存活史) | 下行风险。⛔ **只用作「这条线开了多久」,不由「轮次 + 距今时间」反推还能撑多久。** 那个推算需要你拿不到的烧钱速率,算出来的数看起来精确,实际是编的——它和「⚠️ 检索的边界」里禁掉的「这家公司还能撑多久」是同一件事,只是绕了一道 |
| 行业 / 职级的公开薪资锚点 | 判断名义数字是否偏离常态,**不用来定阈值** |
### ⭐ 材料日期 vs 检索日期:⛔ 两件事,别只标一个
⚠️ **实跑里三个独立案例都撞上同一件事:只标了检索日期,没标材料日期** —— 于是「**当时可不可知**」和「**现在是否属实**」被混成一件事。其中一个直接踩雷:**最关键的那条公开信息,公示时间晚于当事人的决策时点** —— 它只能算"今天可核实的事",⛔ **不能用来评价他当时的判断**。⚠️ 那个案例是执行者自己发现并写破的,**而框架里没有任何一条规则要求他这么做**。现在写死:
- ⭐ **每一格 `公开可查` 要标两个日期,缺一个都不算标全**:**① 你查到它的日期**(检索日期)· ⭐ **② 这件事公示 / 发生的日期**(材料日期,⛔ 不许省)
- 材料日期本身查不到时,写「**材料日期不详**」,⛔ 不许拿检索日期顶替 —— 那等于把"今天查到的"说成"当时就有的"
- ⭐ **纪律写死**:**一条公开信息的公示时间晚于用户的决策时点时,它只能用于「今天该怎么办」,⛔ 不能用于「他当时判断得对不对」。** 拿一件当时根本不存在的信息去要求当时的人,是事后诸葛,也是本模块 README 点名反对的光环效应的另一种形态
- ⭐ **落表动作写死**:那一格**照填、照标来源**,⭐ **但在这一维的比较里按单元格退出**(与 `我推测的` 同待遇),并在表下写一行:「**这一格公示于决策时点之后,只用于往后怎么办,⛔ 不用于评价当时的判断。**」
- ⚠️ **判据是纯字面的**:**材料日期 > 决策时点** → 触发。⛔ 不靠"这条算不算当时该知道的"这种裁量
- ⚠️ **本模块默认的决策时点是「正在做决定」= 今天**,那种情形下这条纪律恒不触发(材料日期不可能晚于今天)—— ⭐ **它是给回溯 / 复盘场景准备的,而模块此前只预设了「正在做决定」这一种时点**
### ⛔ 查不到的,升级为「答复前必问项」,不猜
查不到就写成一条**具体的、能问出口的问题**,注明该问谁。这是 `03-company-analysis` 那条「查不到的信息升级为必问项而非放弃」的直接套用。
**问法一律改成过去式**——不问「这里加班多吗」,问「**你上周几点下班?上一次连续加班是哪个项目、持续多久?**」。承诺兑现度同理:「**这一条写进 offer letter 了吗?**」——**没落纸的按 0 计**。
### ⚠️ 检索的边界
⛔ **只查公开渠道可得的。** 不查、不推测、不要求用户去打听:现金流状况、内部财务、未公开的经营数据、这家公司还能撑多久。
**理由不是谨慎,是这类判据对用户没用**:候选人在面试阶段根本拿不到,拿到了也无从验证,而一个建立在拿不到的信息上的判断,看起来精确,实际上是编的。**凡是「公司好不好」的问题,全部改写成「这个岗位会发生什么」**——后者你问得到,且才是真正要决策的东西。
---
## 四、可选维度池(不是必填清单)
四个基础维度 + ⭐ 一维「**既得资产**」(⭐ **只在真的有既得资产时才留**,判据见下面那一小节)+ 若干 AI 时代维度,**全部可选**。挑选判据只有一条:
> ⭐ **这一维在这几个选项上取值不同吗?取值不同才留。**
三个选项上取值几乎一样的维度,写进表里只是让表更长,不会改变排序——删掉它。
> ⛔ **唯一的例外,写死**:⭐ **一个"一旦取到某值就让某列直接出局"的二值维,即使本次取值相同也不许删。** 它的价值**不在区分度,在出局判定** —— 删掉它,本该被判出局的那一列会带着完整名次留在表里。⚠️ **这条例外由第 4 步的「上位出口」管着**:有一列被硬约束判出局时,⭐ **必须出结论**,⛔ 不许因为别的维数据不全就压成"数据不够"。
### 基础四维
| 维度 | 怎么算 | 关键点 |
|---|---|---|
| **① 真实时薪** | 见第 2 步 | **唯一在最小路径里必算的一维** |
| **② 发展空间** | 三个子项,逐项标可答性,见下面的小表 | ⚠️ 这一维极易全部落到 `我推测的`,那就**不参与排序** |
| **③ 生活成本** | 租金 + **通勤的货币成本(交通费)** + **一次性搬家 / 租房成本按 `一次性成本摊销年限` 摊销** + 社保公积金差异 → 折成**年化可支配** | ⛔ **通勤的时间不进这里**——它已经全额计入了真实时薪的分母(纪律 2),再算一次就是同一笔时间罚两次。这里只收交通费。**一次性成本最容易被整个漏掉**:「要求月底前入职、得留出时间处理租房搬家」就是一笔真实的、会改变排序的成本 |
| **④ 下行风险** | 现金部分是否依赖期权兜底 / 这条业务线的**存活史**(开了多久、换过几任、上一任去哪了) / 试用期与保证期条款 / **最坏情况沉没的是时间还是钱**(⚠️ **这是未来时态**:问的是"接下来可能赔进去什么",⛔ **它不覆盖"已经投进去的那些"** —— 那一类见下一小节) | 与面试前评估直接接续:**公司大概率不成、但能拿到目标经验且下行可控,仍可能是好选择**;反过来也成立 |
#### ⭐ 已经投入的东西:⛔ 沉没成本与既得资产是两类,框架里以前一个格子都没有
⚠️ **旧版对"已经投入的东西"只有半格,而且方向是反的。** ④ 下行风险里那句「最坏情况沉没的是时间还是钱」是**未来时态**;唯一的跨期机制(`一次性成本摊销年限`)摊的是**将来要付的**。⭐ **于是框架在立场上是反沉没成本的,而它没有区分下面这两类** —— ⛔ **对第二类照搬「别被沉没成本绑架」,是在劝人放弃自己的东西。**
⚠️ **具体点说**:对一个已经排了多年队、已经积累了**可保留的既得资格**的人,「别被沉没成本绑架」是**有害建议** —— 那不是心理包袱,是**一笔换个雇主就要重来的真实资产**。
| | 判据(字面) | 怎么处理 |
|---|---|---|
| **沉没成本**(认知偏差) | 已经花掉的时间 / 精力 / 情感,**换个地方不会退给你,也带不走** | ⛔ **不进排序** —— 它已经花了,对"接下来去哪"没有信息 |
| ⭐ **既得资产**(真实资产) | 已经积累的东西,**离开会失去或需要重新积累**,且**它有明确的载体**(资格 / 年限 / 排期 / 归属期 / 认证 / 内部信用) | ✅ **进排序**,算在「留在原地」那一列的**收益侧** —— ⭐ **离开的代价里必须显式包含"重新积累它要多久"** |
⭐ **判据一句话,能一眼判**:**「如果我明天离开,这个东西是留下、还是清零重来?」** —— ⭐ **清零重来 = 既得资产(要算)**;**本来就带不走、也退不了 = 沉没成本(不算)**。
- ⭐ **既得资产以一维进表**(按本节唯一的挑选判据「取值不同才留」:多数样本上只有「留在原地」这一列有取值,其余列为空 —— **取值不同,所以留**)。⭐ **刻度写死 = 重新积累它需要多久**(⛔ 不换算成钱,那要一组你没有的汇率)
- ⛔ **没有明确载体就填不出取值**,那一格记 **`空`**(⛔ **不是 `我推测的`** —— 见「作用粒度」那节的三档)
- 误差带按定性维处理:**相邻一档视为分不出来**,标 `纯占位待校准`
- ⛔ **写死一条禁令:不许对既得资产说「别被沉没成本绑架」。** ⚠️ 那句话是对付**认知偏差**的;⛔ 用在**真实资产**上,它劝的是"放弃你自己的东西"
- ⭐ **判成沉没成本的那几项,⛔ 不许静默删掉** —— 表下写一行:「**这几项是已经花掉、也带不走的,所以没进排序:××、××。**」⚠️ 理由与本模块所有留痕规则同源:**删掉之后,「判过了、判成不算」和「根本没想过」在文件里长得一模一样。**
- ⚠️ **两类经常同时存在,⛔ 不许因为里面掺了情感成分就把整块判成沉没成本** —— ⭐ **逐项按上面那一问分开判**,分完各走各的
#### ② 发展空间的三个子项(逐项标可答性,⛔ 不写「都能在面试里验证」这种前置断言)
| 子项 | 问法(过去式 / 行为化) | 可答性 | 🔴 危险信号 / 🟢 好信号 |
|---|---|---|---|
| **6-12 个月能否打出明确、可验证的阶段性进展** | *如果我干满一年,什么东西能证明是我做成的?这个东西现在有人在做吗?* | **大概率能答** | 🔴 只说得出「帮忙 / 支持 / 参与」这类没有边界的活 · 🟢 说得出一件有明确交付物、且当前没人占着的事 |
| **授权范围与汇报线**(合并了原「你在闭环里的位置」) | *我的产出最后由谁签字?如果里面有个错误上了线,复盘会上是谁负责?* | **大概率能答** | 🔴 签字的人和担责的人不是同一批 · 🟢 这个岗位是某个明确范围的 owner,且有拒绝权 |
| **最近一次丢单是输给了谁,对方赢在哪一点**(替换原「市场是蓝海还是已白热化」) | *最近一次丢单,是输给了谁?对方赢在哪一点?* | **大概率能答** | 🔴 「我们没怎么丢过单」——要么没在真打,要么不打算跟你说真话 · 🟢 说得出具体竞对 + 具体原因(价格 / 交付周期 / 某个功能 / 关系) |
> ⭐ **「6-12 个月能否打出明确、可验证的进展」是三条里最强的单一判据。**
>
> ⚠️ **原来挂在这里、现在已经删掉或移走的三条,别再加回来**:
> - ❌ **「人才·产品·技术·商业化四条策略是否彼此吻合」——整条删除,没有候选人版本。** 候选人根本看不到商业化策略;「吻合」不可测,事后怎么讲都成立。**这正是本模块 README 自己点名反对的光环效应**:先知道结果,再倒推出一套「当初就很吻合 / 当初就不吻合」的解释
> - ❌ **「市场是蓝海还是已白热化」** ——市场饱和度是尽调项,候选人拿不到可靠取值,也给不出 🔴/🟢 判据。已换成上表第三行的行为化问题
> - ➡️ **「团队的 AI 使用程度」已从本维移走**,见下一小节——它不是发展空间
#### ⚠️ 这个岗位或团队的人离开后去了哪里(**问出来的,不是查出来的**)
> ⚠️ 这是一条**问出来**的信息。问未来直属上级即可:*这个岗位过去两年离开的人去了哪里?团队里有人内部转岗过吗,转去了哪?*
> ⛔ **不检索、不整理特定前任的个人档案。** 这是本仓库「不采集他人个人信息」那条边界,没有例外。
> ⚠️ 它有**系统性偏差**:去处好的可见、去处差的不可见,所以你拿到的答案**偏乐观**,不能当成硬证据。
> ⚠️ 实测中它**经常一条都问不到**。**问不到时整维标 `我推测的`、不参与排序**,⛔ 不要因为它「听起来最硬」就破例把它当成可以撑起排序的那一条。
#### ⚠️ 只记录、不排序:团队的 AI 使用方式
> ⚠️ 下面这几项是**可观察到的差异,不是对成长速度的判断**。「组织 AI 成熟度高 → 个人成长更快」这条因果**没有任何研究测过**——同一批人在 AI 重度 / 轻度环境下的技能增长差异,学习侧至今没有对照数据。所以:**只记录观察,不进排序,不写「所以你会成长更快」**。
>
> - 团队的 AI 使用程度与内部理解是否统一(问法:**同一个问题分别问两位面试官,看答案差多远**)
### AI 时代必问项(默认不是维度,拿到具体回答才升级)
⚠️ **这三条默认是「面试必问项」,不是维度。** 实测里它们在三类样本上取值全是推测——按本节唯一的挑选判据(「取值不同才留」),推测出来的「不同」不算不同,所以它们默认出池。
**只有当用户在面试里真的问了、并拿到了具体回答(→ `你给的`)时,才升级成一个维度加进表**:
- **经验溢价 × AI 暴露度**:*做满三年的人和刚入职三个月的人,日常具体做的事有什么不同?能举一个只有做满三年的人才做得了、而现在的 AI 明显做不了的具体任务吗?* —— 好答案举得出依赖上下文 / 关系 / 责任的具体任务;坏答案是「更熟练、更快、更知道流程」;**最坏是答不上来**
- **学徒通道是否还存在**:*团队里最近一个新人是怎么带出来的?以前给新人做的哪些活现在交给 AI 了?*
- **信号可迁移性**:*一年后我想向外部证明我在这里做成了什么,手上能拿得出的具体东西是什么?*
> ⚠️ 这几条的公开证据全部停在**职业层**,用到「某公司某岗位」是外推。**没拿到具体回答就一律标 `我推测的`,并留在「答复前必问项」里,不进表。**
### ⚠️ 自由发挥的边界
你可以自己加维度、自己组织对话节奏、自己决定深潜到哪一层。**唯一的边界是来源标注**:
> **你自己加的维度,它的取值必须能标成 `你给的` 或 `公开可查`。标不出来就只能是 `我推测的`,而 `我推测的` 不参与排序**——只列进「要证实它,你该问谁 / 查什么」。
**写死的五条负责区分度,来源标注负责不让自由发挥变成编造。**
---
## 五、输出格式(六件事,缺一不可)
写进 `offers.md`,**按下面这个顺序排** —— ⭐ **第 1 件在最前面**:
1. ⭐ **一页纸** —— **产出的第一部分,⛔ 不是附录。** 空模板见 [`templates/offer-matrix.md`](templates/offer-matrix.md) 最前面那一节。
⚠️ **为什么它被排到第一**:一次端到端实跑里,用户**反馈「看都看不懂」**。⛔ **问题不在准入门槛** —— 本模块在那一头是过关的(只要一个能读写本地文件的 agent、全是 markdown、不需要 git);问题在**产出本身**:几十 KB,里面是误差带 · 指数 · `纯占位待校准` · "我引入的折算" · 多层嵌套表 · 四种标记 · 三套标签体系。⭐ **「不需要装工具」和「他读得懂」是两件事**,而后者以前没有被任何一条规则保证过。
**这一页里必须有、且只有这四件事**:
1. ⭐ **顺序,以及第 1 名和第 2 名差在哪一件事** —— 一句话,用**他自己听得懂的说法**(例:「差的不是钱,是现在这份工作已经不满足你写下的那条『半年内要有一件明确属于我的产出』」)
2. ⭐ **哪个假设变了会翻** —— 一句话(「如果 ×× 变成 ××,顺序就变成 ××」)。⚠️ **一条都没有时照写**:「不管哪一条变,顺序都不变。」
3. ⭐ **这几天该做什么** —— **具体动作 + 找谁 + 原话说什么**。⛔ 不许写「再想想」「多了解一下」「谨慎评估」
- ⭐ **这一块有三种措辞(⛔ 旧版只有两种),⛔ 不许现场挑 —— 按「口径与假设」里那个决策时点字段自动选**:
- **A · 正在做决定(缺省)** → **保持现状**:标题就是「这几天该做什么」,逐条写动作
- ⭐ **B · 回溯 · 复盘(那件事已经结束)** → ⛔ **上面那句用不了**(事情已经发生了,没有"这几天")。标题改成「**这一次已经定了的,和下一次要提前做的**」,**分两段写**:
- **① 这一次已经定了的部分** —— 照实写,⛔ **这一段不出动作**(它已经不可改了)
- **② 下一次遇到同类处境时,提前做什么** —— ⛔ **每条的措辞必须落在"下次"**:「**下次在 ×× 之前,先 ××**」
- ⛔ **不许写成「你当时应该……」。理由**:**回溯的用途是让下一轮不再漏,不是让人后悔。**「你当时应该」这句话**产出零个可执行动作** —— 它读起来像一条建议,⚠️ **而没有任何人能执行它**(那个时点已经过去了)
- ⭐ **C · 决策在过去做出、但至今仍在继续(⛔ 新增,⛔ 不许拿 B 去凑)** —— 典型:当初定了留下 / 定了接,而那件事**今天还在过着**,而且**今天仍然动得了**。⚠️ **A 和 B 都不合身**:A 假设"决定还没做",B 写死"这一段不出动作 + 措辞落在下次" —— ⛔ **照抄 B,会把"今天就该发的那封邮件"用措辞推到「下次」**。标题改成「**当初定的那件事,和今天还能动的那部分**」,**同样分两段写**:
- **① 当初定的是什么、当时依据的是什么** —— 照实写,⛔ **这一段不出动作**(与 B 的第 ① 段同)
- ⭐ **② 今天还能动的那部分** —— ⛔ **每条的措辞必须落在"今天"**:「**今天就 ××**」。⛔ **不许写成"下次"**,⛔ 更不许写成「你当时应该……」
- ⭐ **「可问而未问」的那几格在 C 里落在第 ② 段**,措辞照 A:「**今天给 ×× 发一句:『××?』**」
- ⭐ **判据是纯字面的,一眼分**:那个字段填的是"正在做决定" → **A**;填了一个过去的日期,**且那件事已经结束、今天不可能再动** → **B**;⭐ 填了一个过去的日期,**但那个决定今天仍在继续、今天仍然做得了动作** → **C**。⛔ 字段空着不许猜,回去把它问出来(它是「开跑前」输入表里的必需项)
- ⭐ **B / C 分不清时缺省走 C**(保守缺省):⚠️ **判成 B 的代价是把一个今天能做的动作推到"下次",判成 C 的代价只是多写一条今天做不了的动作** —— ⛔ **两个方向的代价不对称,缺省必须偏向"今天还能动"**
- ⭐ **「可问而未问」的那几格排在这一栏最前面**(判据见第 4 步的四类诊断)—— 它们**今天就能做完**,人话版照着写:「**今天给 ×× 发一句:『××?』**」。⛔ 不许把它们和"拿不到的那些"混成一句「信息还不够」
- ⭐ **B(回溯)里它们的落点是第 ② 段**,措辞跟着换:「**下次在拿到录用通知的当天就发一句:『××?』**」
- ⛔ **三种措辞下都不变的**:每条仍然是**具体动作 + 找谁 + 原话说什么**
4. ⭐ **这一页的话是从哪儿来的** —— 三句人话,见下
⛔ **禁用词表(纯字面判据 —— 出现任何一个就是没收敛完,回去改说法,⛔ 不许现场论证"这个词他应该懂")**:`纯占位待校准` · `默认建议值` · `实践校准` · `误差带` · `gate`(连同 `gate 未通过` / `gate 待定` / `无 gate` / `有条件满足(待闭合)` / `未成 offer`)· `指数` · `折算系数` · `三点采样` · `交互项` · `临界取值` · `决胜维` · `翻转点` · `来源标注` · `证据等级` · `你给的` / `公开可查` / `我推测的` · `按单元格退出` / `整维退出` · `事后重构` · `L1` / `L2` / `L3` · ⭐ `待你确认` / `未经确认` · ⭐ `前置声明` · ⭐ `硬证据留档` · ⭐ `可比列` · ⭐ `可计费周数` · ⭐ `上位出口` · ⭐ `可问而未问` · ⭐ `方向确定 · 量级不明` · ⭐ `可能是自我说服` · ⭐ `(有利益方向)` · ⭐ `既得资产` · ⭐ `结构上不存在` · ⭐ `可比 · 算不出`。
⚠️ **它们不是不重要 —— 它们全都还在下面几节里,一个字没删。** ⭐ **这一页只换说法,⛔ 不换结论。**
⭐ **判据只跑在这一页的正文行上** —— 模板里 `>` 开头的填表说明不算(用户复制后会删掉它们)。
⛔ **一页纸是呈现层,不是简化版方法论** —— 三条硬约束:
- ⛔ **顺序必须与第 3 件(排序结论)逐字一致。** 名次不许不同,⛔ 不许因为"一页纸上说不清楚"就在这里改判
- ⛔ **不许出现总分 / 星级 / 红绿灯 / 匹配度百分比。** ⚠️ **这一件新增产出最可能的失败方式,就是被写成一个综合分** —— 那正是纪律 3 从第一版起就禁掉的东西,⛔ 不许用"要简洁"这个理由把它请回来
- ⛔ **不许把带标记的那几列悄悄摘掉标记。** 四种标记在这一页上**换说法、不换存在**,译法写死如下(⛔ 不许现场发挥):
| 下面几节里的写法 | 这一页上怎么说 |
|---|---|
| `gate 未通过` | **它不满足你自己写下的一条底线:××** |
| `有条件满足(待闭合)` | **它要等你先把 ×× 办成(例:新租约签下来),第一名才算数 —— 现在还没办** |
| `gate 待定` | **有一条你还没问出来:××。问出来之前它当不了第一** |
| `无 gate` | **你还没写下任何一条自己的底线,所以现在谁也当不了第一** |
| `未成 offer` | **这家还在面,还不是一个能选的东西 —— 它在表里,但不排名次** |
| ⭐ `待你确认`(单条底线) | **这一条是我从你写下的材料里挑出来的:「××」—— 你还没确认过,所以我没拿它踢掉谁,也没拿它放行谁** |
| ⭐ `未经确认`(整张 gate 表) | ⭐ **必须放在这一页的第一段**:**「下面这几条底线,是我从你写下的材料里挑出来的,你还没确认过。如果有一条不是你的意思,顺序可能就变了。」** |
| ⭐ 某一维是 `方向确定 · 量级不明` | **这一条上 ×× 比 ×× 好是确定的,但好多少我不知道 —— 所以我拿它排了先后,⛔ 没拿它算差距** |
| ⭐ 材料前后对不上、且两种读法结论不同 | ⭐ **必须放在这一页第一段**:**「你给我的材料里有一处前后对不上:这里写 ××,那里写 ××。这两种读法会得出不一样的结论 —— 所以今晚最该先解决的是这一件:到底哪个对?」** |
| ⭐ 一整列的钱都还没落纸,于是在表里按 0 记 | ⭐ **必须紧跟在那一列的名次后面**:**「这一家给的钱,我在表里按『还没有』算的 —— ⛔ 不是因为它给得少,是因为到现在一分都还没落到纸上。等他们把数字写进录用通知,我们回来重算,这一条很可能整个翻过来。」** |
| ⭐ 那几条底线被标了 `可能是自我说服`,**而用户不在场** | ⭐ **必须放在这一页第一段**:**「⚠️ 我认定的这几条底线全部指向同一个选项。我没法判断这是你的底线,还是你已经做了决定之后给它找的理由 —— 这一点只有你自己知道。」** |
| ⭐ 某一格标了 `(有利益方向)`,且找不到无利益方向的来源交叉 | **「这一条是从一个『你去了他就有好处』的人那里听来的 —— 可能完全是真的,但我没找到第二个不相干的人说同一件事,所以我没拿它排顺序。」** |
| ⭐ 「既得资产」那一维(离开会清零、要重新积累的东西) | **「你在现在这儿已经攒下的 ××,换个地方要从头再来一遍,大概要 ××。这一条我是算进去了的 —— ⛔ 它不是包袱,是你的东西。」** |
| ⭐ 答复截止是 `结构上不存在`(没有人在等你答复) | ⭐ **必须紧跟在第 ③ 块前面**:**「这件事没有人在等你答复,所以不会有任何时刻逼你决定 —— 也就是说,你不定,就是定了『不动』。我把 ×× 定成这一次的期限,⛔ 这不是别人给的。」** |
| ⭐ 某一维是 `可比 · 算不出`(有硬事实,但算式里有一格根本没问过) | **「这一条上我有一两件确实的事,但算不出一个数来比 —— 因为 ×× 这一格还完全空着。」** |
⭐ **「没有一列能合法排第一」时,这一页怎么写**(⚠️ 这是最要紧的一种;⛔ 不许因为"说不出结论"就把这一页省掉):
- **第一句的形状写死**:**「今晚先别答复 —— 不是这几个都不好,是你还缺一件东西:××。」**
- ⭐ **顺序照写、译成人话的标记照带**,每一列后面跟一句「它现在为什么当不了第一」
- ⭐ **「这几天该做什么」必须有,且第一条就是把那件缺的东西补上**(把那句话问出来 / 写下一条自己的底线 / 把租约落实)
- ⚠️ **写法上必须让他看出这不是「框架没算出来」**,照着说:**「这不是我算不出来。是能排第一的那个还差一件事没落地 —— 而那件事今天就能做。」** ⛔ 不许写成「信息不足,建议慎重考虑」
⭐ **来源怎么在这一页上保留(⛔ 不许在这一页上堆标签)**:下面几节里每一格都带 `你给的` / `公开可查` / `我推测的`,⚠️ **把这三个标签原样搬上来,这一页就废了**。改成**三行人话**,只保留「分得清」这件事:
- **排顺序用的那几条,是你自己告诉我的,或者 offer letter 上写着的**:××、××
- **××、×× 是我去公开渠道查的**(附查询日期)
- ⚠️ **下面这几条是我猜的,还没证实,也没参与排顺序**:××、×× —— **想证实就问:「××」**
⛔ **第三行不许省,也不许并进前两行。** 它是这一页上**唯一**能让他看出「哪些是我编的」的地方;省掉之后,一页纸和一份看起来很确定的结论长得一模一样。⭐ **一条都没有时照样写一行**(「这一页上没有我猜的东西」)—— 与本模块所有留痕规则同源:**判据必须是「这一行是不是空的」这种纯字面谓词。**
⭐ **验收标准(一句话)**:**不看下面任何一节,光看这一页,他就知道今晚该回什么、以及为什么。** 做不到就是没收敛完,回去砍。
2. **一张横向对照表** —— 每个选项一列,**「留在原地」也是一列**;⭐ **还在流程中的机会也占一列,带 `未成 offer` 标记(进表、⛔ 不进排序)**。每格是「取值 + 来源标注」,不是光秃秃一个值。**gate 表的每一格同样要标来源**(见第 1 步)。表前先写「口径与假设」一节,⭐ **顺序写死:前置声明栏在最前面,然后才是参数取值、来源等级、通勤口径、以及每一维的估算误差带(连同「声明于第几轮 / 是否修改过」)**。⭐ 另外四行也要写:**① 本次有没有联网检索**(没有 → §三 整节不可用,那些格全是 `我推测的`);**② 本次有没有做三点采样**(最小路径不做 → 明写「本次未做三点采样,这是初版排序」);⭐ **③ 本次的决策时点是哪一天**(⭐ **三档**:正在做决定 = 今天 / 回溯 · 复盘 = 当时那一天且那件事已结束 / ⭐ 决策在过去做出但至今仍在继续 —— ⛔ 不写它,「公示晚于决策时点的信息不能用来评价当时的判断」就没有判据可用,一页纸第 ③ 块也选不出措辞);⭐ **④ gate 表是不是 `未经确认`**(用户不在场、条件从材料里认定时必写);⭐ **⑤ 答复截止是哪一档**(已知 _月_日 / 未知 / ⭐ **`结构上不存在` → 自己设一个并注明「这是你自己设的」**);⭐ **⑥ 有没有候选条件被标 `可能是自我说服`**(有 → ⛔ 那几条不能单独触发上位出口,声明句必须上一页纸第一段)
3. **排序结论** + **每一名与下一名之间差在哪个维度** —— 指名道姓说是哪一维;差幅小于该维估算误差带时明说「这一维分不出来」,换下一维。⛔ **说这句之前先过一遍第三档判据**:⭐ **这一维上有一条 `你给的` / `公开可查` 的事实能确定谁优于谁(哪怕说不出优多少)→ 它是 `方向确定 · 量级不明`,属于"分得出来"**,照着写「**这一维 ×× 优于 ×× 是确定的,但优多少不知道**」,⛔ 不许简化成「×× 更好」,⛔ 更不许写成「这一维分不出来」;⛔ **不许拿它算差幅或判决胜维**,量级写成必问项(见第二节「⭐ 第三档」)。⭐ **两维方向相反时,用户那句取舍的原话必须写在这里**(「本次取舍:××,第 _ 轮,用户原话」)—— 它是这一次名次的唯一来源,⛔ 不许只留在对话里。⭐ **冲突发生在同一维内部的两个子项之间时同样写在这里**,⛔ **并注明它是子项级的**(哪一维的哪两个子项)—— ⛔ 只写维名,下一轮读的人会当成跨维冲突
- ⭐ **参与排序的维度为零时怎么写(⛔ 别留空,⛔ 更别自己编一种写法)** —— ⚠️ **这一件与第 4 件都以「名次已经存在」为前提**,而实跑里 **6/6 没有第 1 名**,四个执行者各编了一种写法。写死:
- ⭐ **先看第 4 步的「上位出口」**:有没有哪一列被二值硬约束判出局?**有** → ⭐ **先出那条出局结论**,这一件写成:**「××出局(因××这条不满足);剩下的 ×× 与 ×× 之间没有任何一维可比,所以不出名次。」** ⛔ 不许因为后半句就把前半句也吞掉
- **一列都没出局** → 照着写:**「本次参与排序的维度是零维 —— ⛔ 不是这几列一样好,是我手上没有任何一维能拿来比。」** ⭐ 紧跟一句缺口:**「要让它变成一维可比,最短的一条是 ××(必问项第 _ 条)。」**
- ⛔ **不许写成「两个都不错,看你自己」**,⛔ 也不许因为"没有名次"就把这一件整块删掉 —— ⚠️ **删掉之后,「比过了但分不开」和「根本没比」在文件里长得一模一样**
4. **翻转点声明** —— 每条写成:*哪个假设 → 现在按什么计入(证据等级)→ **临界取值**(这个假设取到什么值时排序正好翻)→ 变成什么样排序会怎么翻 → 要证实它你该问谁 / 查什么*
- ⭐ **「临界取值」这一列不许省。** 三点采样只能告诉用户「按 0 算会翻」,而临界取值告诉他**「兑现率低于约六成七就会翻」**——这是全文**唯一能直接变成一句谈判或提问话术的数字**。⭐ 拿到临界取值后,**必须把它写成「答复前必问项」里的一个具体问句**(例:「浮动过去两年实际发放的比例是多少?这个口径能写进 offer letter 吗?」——因为低于约六成七这个 offer 就不再站得住)
- ⭐ **也要写出「查了也不会翻」的那些**,那是在告诉用户哪些事不必再纠结
- ⚠️ **一条翻转点都没有时**:明写「**本次结论无翻转点,因为……**」。⛔ 不许为了凑数编一条。⭐ **但「因为」后面有两种,⛔ 旧版只给了一种模板,照抄会说反**:
- ⭐ **A · 证据太足型**(旧版那一种):第 1 名在参与排序的每一维上都领先超过该维误差带 → 措辞:**「本次结论无翻转点:第 1 名在参与排序的每一维上都领先得够开。不必再查了,去谈别的。」**
- ⭐ **B · 证据太少型(⛔ 缺席的正是这一种,补上)**:**参与排序的东西太少 / 太薄,以至于任何一个假设怎么变都动不了名次** —— 典型是只剩一维在比,或每一维都只有一两对可比。措辞写死:**「本次没有翻转点,⛔ 但这不是因为结论稳 —— 是因为参与排序的东西太少,少到没有什么可翻的。真要让这个顺序动起来,先补 ××、××(必问项第 _、_ 条)。」**
- ⭐ **判据是纯字面的,一眼分**:**参与排序的维度数 ≥ 2,且每一维的可比列数 = 总列数 → A;否则 → B。**
- ⚠️ **⛔ 不许用 A 的措辞收 B 的场**:**A 说的是"不必再查",B 说的恰恰是"必须再查"** —— ⭐ **两句话给用户的下一步动作正好相反**,说反一次就把一个"证据不足"的结论包装成了"结论很稳"
- **「无翻转点」是一条强结论**(A 型),它等于告诉用户「不必再查了,去谈别的」,价值不低于任何一条翻转点;⚠️ **而 B 型不是强结论,是一条警报**,⛔ 别把两者写成同一句
5. **第 1 名最弱的一维** —— 写成三段:*第 1 名在哪一维上最弱 → 弱在什么具体的地方 → 它要跌到什么程度,第 1 名才会掉出第一*
- ⚠️ **为什么这一件必须单独列出来**:框架里说出弱点只有两个通道——「相邻名次的差」和「翻转点」。而**一个明显好的选项恰恰两个通道都不触发**:它和第 2 名差得开(所以差异那节只会夸它),它的假设动一动也不会翻(所以进不了翻转点)。结果是**赢面越大的选项,弱点越沉默**。更糟的是第 2 步那句「不会翻就写进『查了也不会翻』」还会把这个最薄的环主动归类成「你不必想的事」
- ⚠️ 「最弱的一维」**不等于**「跟第 2 名差最少的一维」——也可能是它自己绝对水平最低、但恰好没人跟它比的那一维(典型:三列都很差的下行风险)
- ⛔ **「最弱」在异质刻度之间没有定义**(指数 ±5 和定性三档怎么比?)。挑选判据写死,按顺序用:⭐ **⓪ 先把用户本人明确降权 / 踢掉的那几维排除掉**(见下一条);**① 在剩下的维里优先选「证据最薄的那一维」**(`我推测的` 格最多、或整维退出排序的那一维)——因为一维越薄,第 1 名在这一维上的领先越可能是假的;**② 证据厚度打平时,选「绝对水平最低的那一维」**。⛔ 不许跨刻度换算成一个可比的数再挑,那等于偷偷造了一套权重
- ⭐ **⓪ 这一步为什么必须有(⛔ 旧版没有,实测挑出了一个"正确但无用"的答案)**:那一维**确实最弱**,⚠️ **而用户在开头就明说过他不关心它** —— ⭐ **一个他不在乎的维度上的短板,不是他的短板。**
- ⭐ **判据字面**:用户有没有说过一句**明确降权 / 踢掉这一维**的话(「××我无所谓」·「××我不看」·「××怎么样都行」)—— ⚠️ **这正是通道 3 的 B 组词表那一类句式**,⛔ **区别在于它是把某一维踢出比较,不是立一条底线**,所以它的去处是这里,⛔ **不是 gate**
- ⛔ **只排除"最弱一维"这一步,⛔ 不把那一维踢出排序**:它照样在表里、照样参与逐维比较(用户降的是**他自己的关注**,⛔ 不是这一维的取值)
- ⭐ **排除之后一维都不剩时,照着说(⛔ 不许退回去挑那个他不在乎的)**:**「你在乎的那几维上,我没找到明显的短板。」** ⭐ 并紧跟一句留痕:**「我没去说 ×× 那一维,因为你说过你不看它。」**
- ⭐ **第三段「它要跌到什么程度才会掉出第一」,允许并鼓励回答「跌到任何程度都不会」**。理由:名次不是综合分决出来的,是**逐维比较 + 决胜维**决出来的,而本模块写死**不出综合分、没有维度权重**(纪律 3)——**没有跨维权衡率,一个非决胜维的取值再怎么跌都不会改变名次**。所以诚实答案常常就是这一句。合格写法:「**它跌到任何程度都不会掉出第一,因为第 1↔2 的决胜维是『某维』,不是这一维。**」
- ⭐ **还有第三种合格答案,⛔ 别漏**:**「它不是会跌出第一,是可能整个出局。」** —— 当第 1 名自己带着 `gate 待定` 或 `有条件满足(待闭合)` 标记时(⚠️ 这两种标记本来就不能排第一,所以这一支出现在"标记刚被解除、或深潜里正准备解除"的场景),它面对的**不是名次下滑,是一个二值的存亡判定**:那条必要条件问出来若是"不满足",它**直接出局**,跟它在任何一维上跌多少都无关。合格写法:「**它最弱的地方不是某一维的取值,是它的 ×× 这一格还是 `gate 待定` / 闭合动作还没发生 —— 问出来若是"不满足",它不是掉到第 2,是直接不在表里。**」
- ⭐ **第四种合格答案:本次根本没有第 1 名(⛔ 别漏,三种旧答案全部预设存在第一名)** —— ⚠️ 两种触发情形:**① 四种标记导致没有一列能合法排第一**;**② 两维方向相反、而用户没做取舍 → 不出名次**。⛔ **不许因为"没有第 1 名"就把这一格留空** —— **弱点的沉默恰恰是这一格要挡的东西**。改写规则写死:
- **情形 ①(名次排出来了,只是没人能合法拿第一)** → 这一格改写成「**排在最前面那一列最弱的一维**」(⭐ 是"排在最前面",不是"第 1 名"),三段照写
- **情形 ②(连名次都没排出来)** → 改写成「**争第一的那两列各自最弱的一维**」,⭐ **两列各写一遍**,⛔ 不许只写其中一列(只写一列等于替用户做了那个取舍)
- ⭐ 合格写法:「**本次没有第 1 名(××、××、×× 三列都带着还没解决的标记)。排在最前面的是 ××,它最弱的一维是 ××,弱在 ××。**」
- ⭐ **第五种合格答案:他在乎的那几维上没有短板(⛔ 别漏 —— 前四种都预设"总有一维最弱")** —— ⚠️ **实测挑出过一个"正确但无用"的答案**:那一维确实最弱,⛔ **而用户开头就明说过他不关心它**。按上面的 ⓪ 步排除掉他明确降权 / 踢掉的那几维之后,若**一维都不剩**,⭐ **照着写**:「**你在乎的那几维上,我没找到明显的短板。**」+ 一句留痕:「**我没去说 ×× 那一维,因为你说过你不看它。**」⛔ **不许退回去挑那个他不在乎的维**
- ⛔ **明令禁止为了填满这一格而编一个跨维门槛**(例:「发展空间跌两档就会被真实时薪那一成半反超」)。**任何这样的门槛都等价于偷偷设了一组维度权重**——那正是纪律 3 禁掉的东西,不许从这条新增的必填产出里请回来
- ⭐ 当第 1 名最弱的那一维**恰好就是决胜维**时,才真的有一个门槛可写,此时**必须写成这一维自己刻度上的取值**(例:「真实时薪指数跌破 100 − 5 的误差带下沿」),⛔ 不许跨维表述
6. **一句决策分离结论** —— 对「**公司成不成**」的判断,和对「**我要不要去**」的判断,分别是什么。这两件事经常答案相反,混在一起答就等于在赌它而不是在选它
### ⚠️ 本模块有三套独立的标签体系,别混用
它们**互不换算、互不覆盖**,一个取值可以同时挂上三套里的各一个标签:
| 体系 | 枚举 | 贴在什么上 | 管什么 |
|---|---|---|---|
| **来源标注** | `你给的` / `公开可查` / `我推测的` | **对照表里的每一格取值** | **能不能参与排序**(`我推测的` ⛔ 不参与) |
| **参数来源等级** | `实践校准` / `默认建议值` / `纯占位待校准` | **「口径与假设」里的每个参数**(⛔ **误差带也标这个等级,但误差带不采样**——见「裁决:误差带不做三点采样」) | **要不要做三点采样**(后两档必采,**误差带除外**) |
| **证据等级** | `合同白纸黑字` / `面试口头` / `公开记录` / `自己估算` / ⭐ `未验证` | **翻转点里的每条假设** | **这条假设有多硬**(口头承诺按 0 计的判据) |
⚠️ **证据等级里的 `公开记录` 就是来源标注里的 `公开可查`,改名只为了让两套标签在文里一眼能分开**——看到 `公开记录` 你就知道在读翻转点,看到 `公开可查` 你就知道在读表格。
⭐ **证据等级新增的 `未验证` 档,专给"上游复盘里问过、但没问出结果"的那些假设。** 它比 `自己估算` **更值得优先写进必问项** —— 因为**已经有人试着问过一次并且没问到**,说明它要么难问,要么对方在回避。⛔ 但它在来源标注那一套里一律按 `我推测的`,**不参与排序**(见「来源标注」节)。
### 可选的第 7 件:入职前存档
让用户**在入职前**把「我当初是这么判断的、我赌的是这几条」记下来,存进 `offers.md` 末尾。⭐ **本次若做过「两维方向相反」的取舍,那句原话也存进来** —— 它是三个月后回头唯一能看见"当时保的是哪一件"的地方。
**这不是仪式感。** 半年后回头看,人会不自觉地从结果倒推出一套当初根本没想过的理由——存档是唯一能挡住这件事的东西,也是本模块坚持「不出综合分」这条纪律的技术性补救。
---
## 来源标注
⭐ **输出里的每一条结论、每一个取值,都要标成下面三种之一。**
| 标注 | 意思 | 能不能参与排序 |
|---|---|---|
| `你给的` | 用户直接告诉你的;或来自 offer letter;**或来自面试复盘里标 `证实` / `证伪` 的那些判据** —— ⛔ **标 `未验证` 的不算**,见下 | ✅ |
| `公开可查` | 你现场查到的,**必须附来源与查询日期** | ✅ |
| `我推测的` | 你按常识、按行业惯例、按「一般来说」补的 | ⛔ **不参与排序** |
**`我推测的` 的每一条,必须附一句「要证实它,你该问谁 / 查什么」**,写成一个能直接问出口的、过去式的问题。
### ⛔ 上游复盘里标 `未验证` 的判据,在本模块一律按 `我推测的` 处理
**上游的面试复盘用的是三态**(`证实` / `证伪` / `未验证`),且上游明写"三态不能压成两态"。而本模块的来源标注只有两个能落地的档:`你给的`(**测过了**)/ `我推测的`(**凭常识补的**)。⚠️ **`未验证` 是第三种 —— 测过了,但没测出来。两个档都不对。**
⛔ **旧版 `你给的` 的定义写着「或来自他的面试复盘」,按字面读,「某条判据:未验证」就是来自面试复盘 → 判 `你给的` → 参与排序。三态在本模块被压回了两态。** 所以写死:
- ⭐ **上游复盘里标 `未验证` 的判据,在本模块一律按 `我推测的` 处理** —— **按单元格退出排序**(见下一小节的粒度规则),并**必进「答复前必问项」**(写成一个能直接问出口的过去式问句 + 该问谁)
- ⭐ **`你给的` 只指复盘里标 `证实` / `证伪` 的那些。** ⚠️ `证伪` **也是** `你给的` —— 它是一个**测出来了、取值为负**的事实,照常参与排序。⛔ 不要因为它"结果不好"就把它和 `未验证` 归成一类
- ⚠️ **「未验证」不是"没问题",是"没测出来"。** 上游花力气把这一档和 `证伪` 分开,**就是为了不让它在这里被当成通过**。⛔ 见到 `未验证` 就当"应该没事",是本模块最容易犯、也最贵的一种错 —— **它多半正挂着一条必要条件**
- ⛔ **落到 gate 上尤其硬**:`未验证` 支撑的那一格,按 gate 的推测格规则走 —— **既不能踢人,也不能放人**:标 `gate 待定`、**留在排序里**、**不能排第一**(见第 1 步)
### ⭐ 落纸的 vs 口头的:`你给的` 内部还要再分一档
「⚠️ 口头承诺按 0 计,除非写进 offer letter」这条纪律,旧版**在横向对照表里没有任何落点** —— 表里只有一个 `你给的`,**一句口头承诺和一行合同条款长得一模一样**。补上:
- ⭐ **凡是 offer 条款类的取值**(浮动怎么算、几薪、签字费、期权、保证期、汇报线、产出归属),`你给的` 后面**必须再加一个后缀**:**`(写进 offer letter)`** 或 **`(口头说的)`**
- ⛔ **`(口头说的)` 的现金项,在真实时薪的分子里按 0 计**,并**必须**在「答复前必问项」里配一句「**这一条写进 offer letter 了吗?**」
- ⭐ **整列现金都是口头时,必须额外写一句解释这个 0**(2026-08-31 补):
> 按 0 计之后,那一列的数字**看起来像"这家不给钱"** —— 而实际含义是「**这家给的钱现在一分都还没落纸**」。**两者对用户的动作完全不同**:前者是"别去",后者是"让他写下来再谈"。
> ⛔ **不许只留一个 0 就往下走。** 必须紧跟一句:「这一列的现金按 0 计,**不是因为它低,是因为它还没落纸** —— 拿到书面之后回来重算,这一维很可能整个翻过来。」
> ⭐ **这句话在一页纸上也必须有对应说法**(2026-08-31 补):⚠️ **一页纸不许出现方法论词汇,而那个 0 如果不解释,用户在这一页上看到的就是"这家不给钱"** —— ⛔ **恰好是这条纪律要防的那个误读**。人话译法写死在输出格式第 1 件的译法表里(「这一家给的钱,我在表里按『还没有』算的……」),⛔ **不许现场发挥,也 ⛔ 不许因为"一页纸要简洁"就省掉它**。
- ⭐ **非现金项(汇报线 / 产出归属 / 职级 / 远程安排)落在 gate 格上时怎么办**(2026-08-31 补,由固件测出这一格此前没有正面规则):
- 判定**照常成立**,但那一格**带 `口头` 标记**
- ⛔ **必须**进「答复前必问项」,问法是:「**这一条能不能写进录用通知?**」
- ⭐ **对方明确说不能写进去 → 那一格转 `gate 待定`**(回到"不能排第一"那一档)
> **为什么不像现金项那样直接按 0**:非现金条款**大量**只存在于口头(汇报线极少写进录用通知),全按 0 会让每一列都过不了 gate,规则就废了。
> **为什么也不能就这么算满足**:本文「来源独立性」那节已经写着"只追溯到一个来源的判定(典型:一位面试官口头说的)**仍然只是口头的**" —— ⛔ **那句话此前只是提醒,没有任何执行动作。上面三条就是它的执行动作。**
> ⭐ **判据仍是字面的**:那一格有没有 `口头` 标记 · 必问项里有没有那一句 · 对方答没答"不能写"。
- ⭐ 它进翻转点时证据等级写 `面试口头`;**落纸的那些写 `合同白纸黑字`**
- ⚠️ 这**不是第四套标签**,是 `你给的` 内部的一个后缀。⛔ 不许拿它去改写来源标注的三档枚举
### ⭐ 「原话记不清」的处理口径:`你给的(原话记不清)`
⚠️ 三档来源标注里**没有它的位置**:它不是 `你给的`(那一档的前提是有一句**可复述、可追问**的具体说法),也不完全是 `我推测的`(那一档是 agent 凭常识补的,用户根本没听过)。⭐ **而它很常见** —— 「他好像说过团队最近不太加班」「大概提过转正后会调」。
口径写死:
- ⭐ **标成 `你给的(原话记不清)`** —— 仍在 `你给的` 内部(信息确实来自对方,不是编的),⛔ **但在排序里一律按 `我推测的` 处理**(按单元格退出,见下面的粒度规则)
- ⭐ **必进「答复前必问项」,但问法不同**:⛔ 不是去问一个新问题,而是 ⭐ **回去把那句话确认成一句可复述的话** —— 写成过去式问句:「**你上次说的××,具体是怎么说的?这一条能写进 offer letter 吗?**」
- ⭐ **与 `未验证` 的区别**:`未验证` 是**问了没问出来**;`(原话记不清)` 是**问出来了但没记住**。两者在排序上待遇相同,⭐ 但后者的**补救成本低得多** —— 多半翻一遍聊天记录 / 邮件 / offer letter 附件就能升级成 `你给的(口头说的)` 或 `你给的(写进 offer letter)`。**所以它在必问项里排最前面**
- ⛔ **落到 gate 上同 `我推测的`**:既不能踢人也不能放人 → 标 `gate 待定`、留在排序里、不能排第一
- ⚠️ 这同样**不是第四套标签**,是 `你给的` 的第三个后缀(与 `(写进 offer letter)` / `(口头说的)` 并列)。⛔ 不许拿它改写三档枚举
### ⛔⭐ 利益方向:说这话的人,会不会因为你选某一个而得好处
⚠️ **本模块对"这条信息准不准"已经有一整套**(落纸 / 口头 · 原话记不清 · 来源独立性 · 同源合并),⛔ **而它一个位置都没有留给"说这话的人希望你怎么选"**。⭐ **这两件事完全不同**:**一个中间人可以说一句完全属实的话,同时那句话之所以被挑出来说,是因为它有利于成交。**
- ⭐ **判据一句话,纯字面**:**这个人会不会因为你做出某一个特定选择而得到好处?**
- **会 → 是**:中间人 / 招聘方 / 猎头 / 拿推荐奖金的在职推荐人
- **不会 → 否**:已离职的人 / 与结果无关的第三方 / 公开登记与公告
- ⭐ **标法**:在原有来源标注后面加一个后缀 **`(有利益方向)`**(与 `(口头说的)` 同级,可叠加:`你给的(口头说的)(有利益方向)`)。⚠️ 这**不是第四套标签**,⛔ 不许拿它去改写来源标注的三档枚举
- ⭐ **标了之后怎么用(写死)**:
- ⛔ **不降低它的真实性** —— 他说的可能完全属实,⛔ 不许因为这个后缀就判它是假的
- ⭐ **但它 ⛔ 不能单独支撑一条"往那个方向走"的判断** —— **需要一个没有这个利益方向的来源交叉**
- ⭐ **找不到交叉来源 → 那一格从 `你给的` 降为 `我推测的`**(因而**不参与排序**,按单元格退出),并 ⛔ **必进「答复前必问项」**,问法写死:**「这件事我还能问谁核实?」** + 点名一个**没有利益方向**的对象
- ⭐ **落到 gate 上同 `我推测的`**:既不能踢人也不能放人 → 标 `gate 待定`、留在排序里、不能排第一
- ⚠️ **⛔ 别改坏 —— 这条只针对"指向一个选择"的判断。** ⭐ **判据仍是字面的:这句话有没有指向一个选择?**
- **指向一个选择**(「这家更适合你」「那边现在正是好时候」「你现在这份再待下去就晚了」)→ **标**
- ⛔ **不指向选择的客观事实不受影响**(面几轮、汇报给谁、几号出结果、岗位职责怎么写)→ **照常按原来的来源标注走**,⛔ 不许因为"是中间人说的"就整片降级
- ⭐ **它在翻转点里的证据等级**:与 `面试口头` 并列,⛔ **不许当成 `公开记录`**
### ⭐ 来源独立性:数的是互相独立的来源,不是条数
⭐ **这是 `06-positioning` 与 `03-company-analysis` 都写着、而本模块以前缺席的一条口径。** ⚠️ 本模块必须**自包含地判**(I1 要求单独可用),所以完整写在这里,不要求你先读那两个模块。
先分开记录**原始来源链**与**观察覆盖面**。不同职能环节可以增加覆盖面,但不自动增加独立来源数。来源独立也可能同时出错,不能用“能不能同时错”作二值检验。
1. 追溯每条事实最初由谁观察、何时记录、是否转述同一文件或统一话术。同一稿件的转载合并为一个来源链。
2. 检查共同错误原因:同一底稿、同一采集过程、互相引用或统一发布机制。HR 与业务负责人都复述公司宣讲稿,仍是一条来源链,即使覆盖不同职能。
3. 不同来源各自直接观察、没有发现共享底稿或转述链时,可以记为不同来源,并注明独立性判断依据与剩余不确定性;不宣称它们不可能同时错。
4. 无法判明来源关系时,不升级为独立印证;仍保留每条事实及其观察面,不因同源就把内容全部丢掉。一条直接且适用的书面证据也可能足以判定某项条件,来源数量不替代证据内容。
- 落到本模块的三处:
1. **gate 判定格**:只追溯到**一个**来源的判定(典型:一位面试官口头说的),它仍然只是 `你给的(口头说的)`。⛔ **不许因为"他说了三遍"或"三个子项都指向它"就当成更硬** —— 硬度看**落纸没落纸**,不看条数
2. **`公开可查`**:三条检索结果若**同源**(同一篇稿件 / 同一个库的三个页面),只算**一个** `公开可查`,⛔ 不许当成"互相印证"。⭐ 所以写来源时必须写到**能看出同不同源**的粒度(哪一家、哪一天、原始出处是谁)
3. **翻转点的证据等级**:`公开记录` 那一档同理 —— **同源的三条 = 一条**
- ⚠️ **为什么这一条在本模块尤其要紧**:「发展空间」和「下行风险」两维的取值,经常**全部来自同一场面试的同一个人**。⛔ 把它数成三条互相印证的观察,会让一个本该是 `我推测的` 的判断看起来像 `公开可查`,进而**混进排序**
- ⭐ **判不出同不同源时,⛔ 按同源处理**(保守缺省)—— 与「说不清 → 按事前算」同一个方向:**无人可验证的那一格,缺省必须偏向保留约束**
- ⛔⭐ **利益方向与来源独立性是两件事,⛔ 不许互相顶替**(见上一小节):⚠️ **三个都拿佣金的人说同一句话 —— 利益同向,来源是否独立仍需追溯**,⛔ **两头都要打折**:先按上面的来源链核查判它们算几个来源,**再看这几个来源是不是都带 `(有利益方向)`**。⭐ **全都带 → 就算它们真的算得上几个独立来源,它仍然 ⛔ 不能单独支撑一条"往那个方向走"的判断** —— 独立性核查的是共同错误原因,⛔ **它解决不了"会不会一起希望你选那一个"**
### ⚠️「`我推测的` 不参与排序」的作用粒度:**按单元格,不是按整维**
三个选项里两个是 `你给的`、一个是 `我推测的`,这一维怎么排?规则是:
- ⭐ **按单元格生效。** `我推测的` 那一格**不参与任何涉及它的两两比较**——即这一维上「它 vs 别人」的那几对比较全部跳过,**而其余各对照常比**(上例里 `你给的` 的那两列在这一维上仍然可以分出高下)
- ⛔ **不代表该选项在这一维必然更差。** 「查不到」是**信息缺失**,不是**取值低**。⛔ 不许把缺失格当成最差值参与排序,那等于在惩罚「老实承认查不到」
- ⛔ 反过来也不许当最好值,或按其余两列取中位数补上——那就是静默编造
- ⭐ **什么时候升级成整维退出:数「还有没有硬格」,⛔ 不数「有几列是推测」。** 见下面三步。
#### ⛔ 旧判据(`我推测的` 过半 → 整维退出)已作废,别再用
⚠️ **它的方向是对的**(用一条可机械执行的判据替换执行者裁量),⭐ **坏的是标定**:
- **三列表 = 2 列即过半**,而"任一关键子项是推测即整列计入"让**一列极易被判为推测** → 在真实稀疏材料上,**每一维都出局**。实跑里有执行者一路加满到第三维,仍然全部整维退出
- ⭐ **更根本的毛病**:⚠️ **它对「材料完整度」的敏感性,超过了对「证据硬度」的敏感性。** 实跑里出现过 —— 某一维里有一格是 **5 个互相独立、各自可证伪的来源**撑起来的,却被**同维另外两个空格**按机械判据一起带出局
⭐ **新判据只问一件事:这一维里还有没有硬的格。** 三步,每一步都能一眼数出来。
##### 第一步 · 每一格先定三档(⛔ 是三档,不是两档)
⚠️ **旧版把「这一格是推测」和「这一格是空的」同等对待,而它们的补法完全不同。**
| 这一格 | 判据(纯字面) | 它缺的是什么 / 怎么补 |
|---|---|---|
| ⭐ **硬** | 标了 `你给的`(含 `(写进 offer letter)` / `(口头说的)` 后缀)或 `公开可查`。⭐ **带 `(有利益方向)` 且是一条"指向某个选择"的判断时**:找得到无利益方向的来源交叉 → 算硬;⛔ **找不到 → 它已经被降为 `我推测的`,落"推测"档,不算硬** | 不用补 |
| **推测** | 标了 `我推测的`(含上游 `未验证`、含 `你给的(原话记不清)`)—— ⭐ **填了,但没有依据** | ⭐ 去**证实**:写成「要证实它你该问谁 / 查什么」 |
| ⭐ **空** | ⭐ **根本没问过 / 没填** —— ⛔ **它不是 `我推测的`** | ⭐ 去**问**:写成「这一格还没问过,问句是××、该问谁」 |
- ⛔ **不许把空格静默写成 `我推测的` 混过去** —— 那等于把"没问"包装成"问了但不确定",⚠️ 而这两件事的下一步动作**完全不同**:一个是去**证实一句已经有人说过的话**,另一个是去**问一句还没人说过的话**
- ⛔ **反过来也不许把推测格记成空格** —— 那会把一个已经编出来的值洗成"没填"
##### 第二步 · 每一列在这一维定档(⭐ 一列仍然只数一次)
| 这一列 | 判据 |
|---|---|
| ⭐ **可比** | 这一维的关键子项里 **至少有一格是硬的** |
| **不可比(推测)** | 一格硬的都没有,但至少填了一格推测 |
| **不可比(空白)** | 关键子项**全空** |
##### 第三步 · 整维判定:⭐ 数 `可比` 的列,⛔ 不数推测的列
| 这一维里 `可比` 的**列数** | 怎么处理 |
|---|---|
| ⭐ **0 列** | ⭐ **整维退出排序** —— 判据字面:**这一维里没有任何一格是 `你给的` 或 `公开可查`**。表下写明,并 ⛔ **逐列写进「要证实它你该问谁」**(⭐ **空格问"没问过"、推测格问"要证实",两种问法分开写**) |
| ⭐ **1 列** | ⭐ **这一维不退出,但本次产生不了任何比较对**(一列没有对手)。⛔ **不许因此当它不存在** → **必须走下面的「硬证据留档」** |
| ⭐ **≥ 2 列** | ⭐ **这一维保留,只用这几列比**,并明写「**这一维只有 _ 列可比:××、××**」;其余各列在这一维上**按单元格退出** |
⚠️ **总列数含「留在原地」那一列**(它是第 0 列,不是附加物)。⭐ **典型三列表**:1 列硬 → 保留但无比较对(走留档);2 列硬 → 保留,明写"只有 2 列可比";0 列硬 → 整维退出。
⭐ **整维退出时,⛔ 必须把它归到四类诊断里的哪一类**(① 真拿不到 / ④ **可问而未问** / ② 差幅不过误差带 / ③ 方向相反,见第 4 步「加维的停止条件」)—— ⚠️ **④ 是实测里最常见、也最常被误并进 ① 的那一类**:**它不是拿不到,是还没问**,⭐ 而它的下一步动作是"今天给 ×× 发一句话",⛔ 不是"这件事补不齐"。
##### ⛔⭐ 「有硬格」≠「算得出取值」(⛔ 两件事,别用同一个判据一起判)
⚠️ **实跑撞到的形态**:真实时薪那一维,**分子有硬格、分母三格全空** —— 按上面第二步,这一列判 `可比`("至少有一格是硬的"字面成立),⛔ **而那个比值根本算不出来**。⭐ **`可比` 判的是「这一列在这一维上还有没有可追溯的东西」,⛔ 它没有判「这一维的取值算不算得出来」。**
- ⭐ **对"由子项算出来的维"补第二问**(典型:真实时薪 = 分子 ÷ 分母;生活成本 = 几项相加):**这一维的算式里,每一个必需的输入是不是都有取值?** —— **硬格算有**;**有默认参数兜底的算有**(`周工时默认` 这类);⭐ **空格 = 没有**
- ⭐ **都有 → `可比 · 算得出`**:照常算、照常比、照常算差幅
- ⭐ **有必需输入是空的 → `可比 · 算不出`**:⛔ **不许用它算差幅**(算不出来的数没有差幅),⛔ 也 **不许因此把这一列整个当成空**(那些硬格是真的)—— ⭐ **它落回 `方向确定 · 量级不明`**:那几个硬格若能确定谁优于谁,**方向照用**;量级写成必问项
- ⛔ **不许拿默认参数把空格填满、再宣称"算出来了"** —— ⭐ **兜底参数只兜"问过了但说不清",⛔ 不兜"根本没问"**(同「空 ≠ 推测」那条:两者的补法一个是去证实、一个是去问)
- ⭐ **定性维(发展空间 / 下行风险 / 既得资产这类,没有算式)只问第一问**,⛔ 不必问第二问
- ⭐ **判据仍是纯字面的**:第一问数「这一列有没有硬格」,第二问数「算式里有没有必需输入是空格」。⛔ 两问都不靠"证据够不够"这种裁量
##### ⭐ 硬证据留档(⛔ 触发即必填)
⚠️ **实跑里那一维只有一格是硬的**(那一格追溯到五个互相独立、各自可证伪的来源),同维另外两格是**空的** —— 按旧判据整维出局。⭐ **执行者是靠别的章节手动把它捞回来的,而框架里没有任何一条规则要求他这么做。** 现在给它一个位置。
- ⭐ **触发判据(纯字面)**:这一维的 `可比` 列数 **≤ 1**,**且**这一维里**至少有一格是硬的**
- ⭐ **写三样**(写在「整维 / 单格退出的记录」正下方):
1. ⭐ **是哪一格、硬在哪** —— 按「来源独立性」数:这一格最终追溯到**几个人 / 几份文件**,⛔ 不数"我写了几条"
2. ⭐ **它单独说明了什么** —— ⛔ **只写这一列自己的事实**,⛔ 不许拿它去跟一个空格比出高下(**那就是把缺失当成取值**)
3. ⭐ **补哪一格,这一维就重新可比** —— 写成「答复前必问项」里的一个过去式问句 + 该问谁
- ⭐ **它可以进 gate、可以进翻转点、可以进「第 1 名最弱的一维」**,⛔ **只是不进这一维的排序比较**
- ⚠️ **gate 与排序维度是两套体系**:一维整维退出,⛔ **不影响挂在它上面那条必要条件的判定** —— 那一格若是硬的,**gate 照判**
- ⛔ **不许因为"这一维不参与排序"就把这一格整个丢掉。** 它往往是本次最硬的证据之一,丢掉它就是**让材料完整度盖过证据硬度** —— 那正是旧判据的病
- 无论是单格跳过、整维出局,还是"只有 _ 列可比",**都必须在输出里明写**。⛔ 静默跳过一格,和把它编一个值填进去,对用户来说是一样的不可见
> **为什么这条必须硬**:一份看起来结构完整、数字精确、条目齐全的评估报告,可以整段是编的——这是这类内容的**默认失败模式**,不是罕见意外。**排序只能建立在能追溯到来源的取值上**;推测项的正确去处是「答复前你要问清的三条」,不是表格里的一个数。
---
## 不对劲的时候
| 症状 | 最可能的原因 | 你下一句该说什么 |
|---|---|---|
| ⭐ **输出是「两个都不错,看你自己」,或排序里出现并列** | ① 参与排序的维度全被标成了 `我推测的` ② 或者选的维度在这几个选项上取值几乎相同——那些维度本来就不该进表 | 「把每个维度的取值来源列出来。只用 `你给的` 和 `公开可查` 的那几维重排一次。如果这样仍然分不出,就直接告诉我:**要拉开这两个的差距,我还缺哪三条信息**——一次说完。」 |
| **名义薪资高的那个排了第一,但你自己直觉不对** | 通勤没进分母,或浮动按承诺值算了 | 「把每天往返通勤时间放进真实年工时的分母重算。浮动部分按承诺值、按七折、按 0 各算一遍,告诉我排序在哪一档翻。」 |
| **它给了一个总分 / 五星 / 红绿灯** | 它退回了同类记分板的默认形态 | 「删掉分数。只给:排序、每一名与下一名差在哪个维度、翻转点。**一个数字会把我对这几个假设把握程度完全不同这件事抹平。**」 |
| **「留在原地」那一列是空的,或被标成「不适用」** | 它把「留在原地」理解成了「不做决定」 | 「把留在原地当成第三个 offer 填完整:它也有真实时薪、也有发展空间、也有下行风险。**没有它就没有机会成本,也就没有翻转点。**」 |
| ⭐ **某一维上明明知道谁比谁好,它却写「这一维分不出来」然后换了下一维** | ⛔ **可分性判定旧版只有两档** —— "方向确定但量级不明"没有档位,只能落进"分不出来",⚠️ **于是它和"两列真的差不多"长得一模一样,而两者的下一步动作正好相反** | 「⭐ **这一维上有没有一条我给你的、或者你查到的事实,能确定谁优于谁?** 有 → 它是 **`方向确定 · 量级不明`**,**算分得出来**,⛔ 别换下一维。照着写:『**这一维 ×× 优于 ×× 是确定的,但优多少不知道**』;⛔ 别拿它算差幅、⛔ 别拿它判决胜维,**把量级写成必问项里的一句具体问法**。」 |
| ⭐ **我材料里两处对不上(某件事的日期比答复截止还晚),它自己挑了一个用** | ⛔ **框架里原本没有"材料自我矛盾"的处理位** —— 它只好去借「两套都跑 + 显式声明」,⚠️ **而那个模式是为"外部事实不确定"设计的** | 「⛔ **别自己挑,也别取平均。** 先跑一遍**一致性自查**三项(日期先后 / 同一件事两处取值 / 相对量的基准)。我在场 → **把冲突原样念回给我**:『你这里写 ××,那里写 ×× —— 哪个对?』我不在场 → **两种读法都跑**:结论相同就正常输出并附一句;⭐ **结论不同 → 写进一页纸第一段,这就是今晚最该先解决的事**。」 |
| ⭐ **我是回头复盘(事情已经发生了),它却给我一栏「这几天该做什么」,还写「你当时应该……」** | ⛔ **一页纸第 ③ 块旧版只有一种措辞**,预设"你正在做决定";回溯场景没有对应写法,执行者只能自己定口径 | 「⭐ **本次决策时点是回溯 · 复盘 → 第 ③ 块换 B 措辞**:标题改成『**这一次已经定了的,和下一次要提前做的**』,分两段 —— **① 这一次已经定了的部分(不出动作)· ② 下一次遇到同类处境时,提前做什么**。⛔ **每条落在"下次",不许写「你当时应该」** —— **回溯的用途是让下一轮不再漏,不是让人后悔**,那句话产出零个可执行动作。」 |
| **它一次只问一个问题,问了十几轮还没开始算** | 它把「开跑前」的清单当成了逐项问答脚本 | 「别再逐条问了。用我已经给的信息先出一版排序,缺的写成『待确认』并标 `我推测的`。我看完一次补齐。」 |
| **必要条件明明不满足,那一列还在排序里拿了名次** | 它把必要条件当成了一个权重很高的维度 | 「必要条件不满足的直接移出排序,表下面写一行为什么出局就行。**加分条件再多也换不掉一条必要条件。**」 |
| **某个选项只违反一条必要条件,却被判「有条件满足」后又拿了第一** | ① 闭合上限没写,「有条件满足」变成了绕过 gate 的通道 ② 或者上限写了,但它只挡动作范围、挡不住剩余劣势的量级 | 「那条必要条件我写闭合上限了吗?没写就按**不可闭合**处理。写了也一样:**「有条件满足」进排序要带 `有条件满足(待闭合)` 标记且不能排第一**,除非闭合动作已经做完了。另外**真实时薪的分母请用闭合前的通勤**——闭合还没发生。」 |
| **它问「这几条必要条件是什么时候写的」,我答「现在才想的」,然后那条就不算数了** | 它还在用旧版的「降级为加分条件」 | 「事后写的**不降级、仍然进 gate**。请把**含这条**和**不含这条**两套排序都跑出来:一样就说一句『结论不依赖它』,不一样就明说**结论取决于哪一条**,让我自己决定它算不算我的底线。」 |
| **我说了一句「误差带按 ±1 吧」,排序就变了** | 覆盖误差带这个口子没有论证义务、也没有时点约束 | 「我凭什么收窄?说不出对应的估算依据就按默认走。就算说得出,也请**按默认误差带再跑一遍**:名次不同就明说『这个结论完全建立在我对自己数据精度的判断上』。另外把我是**第几轮**说的这句记在口径表里。」 |
| **第 1 名最弱的一维那一格,给了一个跨维度的门槛** | 那一格「⛔ 不许留空」,而诚实答案常常是「跌到任何程度都不会」,于是它编了一个 | 「本模块**没有维度权重**(纪律 3),所以跨维门槛等于偷偷设了一组权重。如果决胜维是另一维,就直接写『**跌到任何程度都不会掉出第一,因为决胜维是××**』——这是合格答案。」 |
| ⭐ **上游复盘里明明标着 `未验证`,它把这条当成了"没问题"** | 它按 `你给的` 的旧定义把「来自面试复盘」直接读成了 `你给的`,**三态被压回两态** | 「`未验证` 不是没问题,是**没测出来**。请按 `我推测的` 处理:**这一格退出排序**,并写进答复前必问项。如果它挂着一条必要条件,那一格标 `gate 待定`,**那一列不能排第一**。」 |
| ⭐ **两维方向相反,它却走了「分不出来」出口** | 那个出口是给**证据不足**用的,而这里两维都分得出来、只是方向相反 —— 两种情形被同一套措辞收场了 | 「这两维都分得出来,但方向相反,所以缺的不是数据,是一次取舍。**先告诉我:这两件事只能保一件,你保哪一件?** 我把你的原话写进表里当成这一次的权重 —— ⛔ 不许改成给两维配权重加起来。」 |
| ⭐ **我一条必要条件都没写,它却排出了第一名** | gate 表整张为空时旧版**没有任何标记**,于是最松的情形反而畅通无阻 | 「gate 表是空的 → **每一列都带 `无 gate`,所以没有一列能排第一**。现在该做的不是答复,是先让我写下必要条件 —— **哪怕只有一条**,写下来标记就解除。」 |
| ⭐ **另一家还在面,它却整个没提这件事**(或把它排进了名次) | 「尚未成为 offer 的机会」旧版没有身份,于是要么消失、要么被当成一个正常选项 | 「把它加成带 `未成 offer` 标记的一列:**进表但不参与排序,⛔ 不给名次**。然后按三条判据告诉我要不要为它拖延答复 —— 时间够不够得着 / 假想它拿到了会不会改变决定 / 拖一天的代价。」 |
| ⭐ **它用了一个自己编的折算系数,而那个系数决定了名次** | agent 自加参数只有方向声明义务、没有来源等级栏,于是它绕过了三点采样 | 「把那个系数写进『口径与假设』并标来源等级 —— 我没给过、模块没写过、也查不到,那它就是 `纯占位待校准`,**必须做三点采样**。而且它一入表就有两个参数落在后两档,**交互项也得跑一次**。」 |
| ⭐ **它从零重问我的必要条件,而 `positioning.md` 里已经写好了** | 它没有先看工作区,把「让用户写下 2-3 条」当成了第一个动作 | 「先读工作区里的 `positioning.md`,必要条件直接接过来。**写下时点按那个文件里记的日期判,不按我今天跟你说的时间判**——不然我几周前手写下来的事前条件,被你重问一遍就降成 `事后重构` 了。另外那里的**硬性排除条件**也要接:**命中即出局,没有『有条件满足』这一档**。」 |
| ⭐ ⛔ **不管我给什么,它每次都交同一句「不排名次 + 数据不够」** | ⚠️ **这是本模块当前最严重的失败模式:不是判错,是拒绝判。** 三条机械判据互锁(`无 gate` + 整维退出 + `未成 offer` 不参与排序),在跨国 / 材料型 / 回溯型输入上几乎必然同时成立,**任一成立就出不了名次** | 「⭐ **先跑「上位出口」**:有没有哪一列被一条二值硬约束判到出局值?**有就必须出结论** —— 哪怕结论只是『××出局,剩下两列分不出来』。⛔ **不许因为别的维数据不全,就把一条已经成立的出局结论压成"数据不够"。**」 |
| ⭐ **某一列明明违反了我一条不可闭合的底线,它却说"信息不足,不下结论"** | ⛔ **"某一列出局"和"其余维数据不全"被合并成了一句"数据不够"** —— ⚠️ **前者是结论,后者是缺口,混在一起我拿到的是零个结论** | 「⭐ 三步照走:**① 先把出局那句说出来**(『××出局,因为它在××这条上不满足』)· **② 剩下的列照常比** · **③ 收尾说一句『××已经出局了,剩下的比不比都不改变这一条』。**」 |
| ⭐ **它把「我还没问」和「这件事拿不到」写成了同一句话** | 「整维退出」的诊断只有三类(真缺数据 / 差幅不过误差带 / 方向相反),⛔ **缺第四类「可问而未问」** —— 它被整体归进"缺数据" | 「⭐ 判据一句话:**这一格有没有一个具体的提问对象,且问题写得成一句过去式问句?** 有 → 它是**可问而未问**,措辞换成:『**这一格不是拿不到 —— 是还没问。今天给 ×× 发一句:「××?」,回信就能填上。**』⛔ 别把今天就能做完的事说成补不齐。」 |
| **多个人复述同一份材料,被算成互相印证** | 把职能覆盖面误当独立来源数 | 「请追到每条事实的原始记录,检查共同底稿或转述链。不同职能只增加观察面,不自动增加独立来源;保留事实内容,不用来源条数替代判断。」 |
| ⭐ **本次没有第 1 名,它就把"差在哪一维"和"翻转点"两节整个空掉(或各编了一种写法)** | 这两件都以**名次已经存在**为前提,⛔ 而实跑里 6/6 没有第 1 名 | 「⭐ **差在哪一维**:有列被硬约束判出局 → 先出那条出局结论;一列都没出局 → 照着写『**本次参与排序的维度是零维 —— 不是这几列一样好,是我手上没有任何一维能拿来比**』+ 一句最短缺口。⭐ **翻转点**:改用『**证据太少所以还没有可翻的东西**』那一种措辞,⛔ 别用『领先得够开所以不必再查』。」 |
| ⭐ **每一维都被判「整维退出」,加到第三维还是全军覆没** | 旧判据是「`我推测的` 过半 → 整维退出」,而**三列表 2 列即过半**,且"任一子项推测即整列计入" —— ⚠️ **它对材料完整度的敏感性超过了对证据硬度的敏感性**:一格由五个互相独立来源撑着的取值,会被同维两个**空格**一起带出局 | 「⛔ 别用『推测过半』那条判据了。**先把每一格分成硬 / 推测 / 空三档**(空 ≠ 推测),再数**这一维里有几列至少有一格是硬的**:**0 列才整维退出;1 列走硬证据留档;≥2 列保留,只用这几列比并写明『这一维只有 _ 列可比』**。」 |
| ⭐ **某一维里明明有一格证据极硬(好几个互相独立的来源),却跟着整维一起出局了** | 那一格的邻居是**空格**,而旧判据把"空"和"推测"同等对待 —— ⛔ **框架里没有任何一条规则要求把它捞回来**,只能靠执行者手动 | 「那一维的可比列数是 1,⛔ 不是 0 —— **它不整维退出,走「硬证据留档」**:写清那一格追溯到几个人 / 几份文件、它单独说明了什么(⛔ 不许拿它跟空格比高下)、补哪一格就重新可比。**它照样能进 gate、进翻转点、进「最弱的一维」。**」 |
| ⭐ **我一条必要条件都没写,它同时又说"这几个分不出来",然后不知道该听哪个** | `无 gate` 要求排序照出,「分不出来」是唯一允许不出排序的出口 —— ⛔ **两者会同时触发、要求相反,而旧版没有裁决句** | 「⭐ **`无 gate` 优先** —— 它管的是**输入缺失**(你还没告诉我底线),那个出口管的是**证据不足**;**连判据都没有的时候,谈不上分不分得出来**。第一句照 `无 gate` 的形状说,**那三条缺失信息降级成第二段照写**,⛔ 两条原因都要写。」 |
| ⭐ **它说「先只用硬证据的那几维重排一次」,可我一维全硬的都没有** | 「分不出来」出口的第 1 个必要条件字面上无法满足 —— ⭐ **这与 v0.1.3 给最小路径补过的那个死结同型,深潜里一直没补** | 「⭐ **降到格**:每一维取它的可比列(至少有一格硬的那几列),**只在这几列之间比**,逐维写明『这一维只有 _ 列可比』。**只要有任何一对在任何一维上分得出来,就照常出排序。** 两层都跑完还分不开,才算满足那个条件。」 |
| ⭐ **它判「一条必要条件都没有」,可我明明在材料里写过「我不可能接受××」** | ⚠️ **gate 的输入通道只有两条**(`positioning.md` / 当场写),**两条都要求用户在场** —— 于是**所有材料型输入最多只能走到 `无 gate`** | 「⭐ 走**第三条通道**:从我已有的书面材料里认定。**判据是字面的** —— 那句话里有没有『我不可能』『必须要』『再也不』这类排他性措辞。提取出来的**标 `待你确认` 并回读给我确认**:⛔ 确认前既不能拿它踢人,也不能拿它放人。」 |
| ⭐ **我人不在场(只有一份材料),它就干脆没跑 gate** | ⛔ **"用户不在场"被当成了"跳过 gate 的理由"**,于是回到 `无 gate` 恒触发的死循环 —— ⚠️ **一个对所有材料型输入给同一结论的标记,和一条坏掉的规则无法区分** | 「候选条件**照提取、照进表**,整张 gate 表标 `未经确认`,**并把这句话放在一页纸第一段**:『下面这几条底线是我从你写下的材料里挑出来的,你还没确认过。』⭐ 它解除的只有 `无 gate` 这一个标记,别的限制照旧。」 |
| ⭐ **它拿一条公示于我做决定之后的公开信息,去说我当初判错了** | 只标了检索日期、**没标材料日期** —— 于是「当时可不可知」和「现在是否属实」被混成一件事 | 「每一格公开信息要标**两个**日期:**你查到它的日期** + **它公示 / 发生的日期**。⭐ **公示晚于我的决策时点的,只能用于『今天该怎么办』,⛔ 不能用于『我当时判断得对不对』** —— 那一格在比较里按单元格退出,表下写明。」 |
| ⭐ **这份工作全 remote,它硬编了一个通勤时间**(或:我住哪还没定,它替我定了) | 通勤口径预设「住处已定」,⚠️ **而住处取决于租金、租金又取决于住处 —— 两格互为输入** | 「⭐ 先填**前置声明**:要不要坐班 / 住处定没定。**全 remote → 通勤按 0 并写明**,⛔ 不许编。**住处未定 → 通勤与租金两格一起标 `我推测的`**,⛔ 不许只标一格(只标一格会让另一格看起来是硬的)。另外**跨时区错位要进分母**,无带薪假的**可计费周数要进分子**。」 |
| ⭐ **它说「补一下参数采样」,我补完发现顺序一点没变** | 采样提醒**只有一种措辞**,照抄到"那两个参数根本没进排序"的场合上 —— ⛔ **把用户推去补一件补齐了也不改变结论的事** | 「判据一句话:**那两个参数有没有出现在任何一个参与排序的维度的算法里?** 没有就改说:『**本次的名次不由那两个参数决定,补采样不会改变这个顺序。真要动这个结论,缺的是 ××。**』」 |
| ⭐ **它说「本次无翻转点」,听起来像结论很稳,可我明明什么都没查到** | 「无翻转点」**只有"证据太足"一种措辞模板**,缺相反那一种(**证据太少,所以怎么变都不影响**) | 「判据:**参与排序的维度 ≥ 2 且每一维都是满列可比 → 才算"证据太足"**;否则照这句说:『**这不是因为结论稳 —— 是因为参与排序的东西太少,少到没有什么可翻的。真要让顺序动起来,先补 ××、××。**』⭐ 两句话给的下一步动作正好相反,⛔ 不许说反。」 |
| ⭐ **我手上零个 offer、只有现在这份工作,它说这个模块用不了** | 「零个 offer + 有在职工作」这一形态旧版**完全没覆盖** —— 六件必需产出里**三件失去对象**,而模板对它们都写着「不许留空」 | 「⭐ **这是一次单列体检,gate 照跑** —— 问的是『**我现在这份工作过不过得了我自己写下的线**』。三件失去对象的照替代形态写:**排序结论 → gate 结论**(不出名次)· **翻转点 → 什么变了我就该开始看外面**(临界取值照写)· **第 1 名最弱的一维 → 留在原地最弱的一维**。」 |
| ⭐ **另一家还在面,可我根本没有对方的联系人,它就直接判『不等』** | 三条判据只有 `成立` / `不成立` 两种取值,⛔ **没有 `判不出来`** —— 于是"我没人可问"被读成"它不值得等" | 「⛔ **`判不出来` 不是 `不成立`** —— **『没人可问』说的是我的处境,不是那家公司的**。照三个动作走:**先按『没有它』出一版排序** · **把那条写成必问项第 1 条** · **明写代价让我自己签字**。另外判据 2 没有第 1 名当锚点时,**换成『排在最前面的那一列』**。」 |
| ⭐ **它交出来的东西我看都看不懂**(实跑里用户的原话) | ⛔ **不是准入门槛的问题**(这个模块确实不用装任何东西),是**产出本身**的问题:一页纸没写;或者写了,但把下面几节的词原样搬了上去(误差带 / 指数 / `纯占位待校准` / `gate 待定` / 三套标签) | 「**把最前面那一页重写**,只留四件事:**顺序 + 第 1 名和第 2 名差在哪一件事** · **哪个假设变了会翻** · **这几天该做什么(具体动作,不是"再想想")** · **哪几条是你猜的**。下面几节⛔ 一个字别删、⛔ 结论一个字别改 —— **我要的不是简化版,是换个说法。**」 |
| ⭐ ⛔ **我自己问了一句「你说我是不是在给自己找理由」,它答不上来**(或者干脆没接这句) | ⚠️ **通道 3 的 B 组词表恰好就是人自我说服时的句式** —— ⛔ **提取出的"底线"很可能就是他那段自述的结论,等于拿一个人的结论去检验他的结论** | 「⭐ **先跑那道自我说服自查**:把提取出的每条候选条件逐列判一次,看它们**是不是全部指向同一列**;⭐ 再看材料里**有没有一句字面倾向那一列**的话。两样都成立 → 整组标 `可能是自我说服`:⛔ **不许单独踢掉谁**,⭐ 并把这句原话问回给我:『**这可能是你真的有这三条底线,也可能是你已经想好了要去哪一家,正在给这个决定找理由 —— 哪一种?**』」 |
| ⭐ ⛔ **我已经攒了好几年才拿到的东西(资格 / 排期 / 归属期),它一句「别被沉没成本绑架」就让我别管了** | ⛔ **框架里没有"已经投入的东西"这个格子**,且立场上是反沉没成本的 —— ⚠️ **它没区分"认知偏差"和"有载体的既得资产"** | 「⛔ **那句话用错地方了。** 判据一句话:**如果我明天离开,这个东西是留下、还是清零重来?** ⭐ **清零重来 = 既得资产,要算** —— 它进排序,算在「留在原地」那一列的收益侧,**离开的代价里必须写出'重新积累它要多久'**;本来就带不走也退不了的,才是沉没成本,不进排序(但要在表下写一行,⛔ 别静默删)。」 |
| ⭐ **我这几年是一路在往下走的,它每年比一次都说"差一档,分不出来"** | ⚠️ **误差带那条「相邻一档视为分不出来」在多年尺度上会系统性抹掉缓慢下滑** —— ⭐ **三年滑三档,每年看都是相邻一档**,⛔ **框架里没有斜率** | 「⭐ **跨一年以上的比较,看的是方向,⛔ 不是相邻两次差几档。** 判据:**同一维上连续两次观察同向、中间没有反向 → 记成一条趋势**(每次观察都要带它的日期)。⭐ **趋势本身就是一条能参与排序的事实**,按『方向确定、量级不明』处理:可以定先后,⛔ 不能算差幅。⛔ 别再把它拆成三次分不出来。」 |
| ⭐ **根本没有人在等我答复,它就一直说"再去问清楚",于是我一直没决定** | ⛔ **答复截止只有"已知"和"未知"两档,⛔ 没有"结构上不存在"** —— ⚠️ **而没有截止日不是缺输入,它本身就是病灶** | 「⭐ **这一档叫『没有人在等你答复』,判据是:有没有一个具体的对方在等你在某天之前回话。没有 → 自己设一个**,写进口径表并注明是我自己设的。⭐ 然后照着说:『**你不定,就是定了「不动」**』。⛔ 设了它也不解除任何标记。」 |
| ⭐ **这件事是我几年前定的,可它今天还在过着 —— 它却给我写「你当时应该……」或者「下次再说」** | ⛔ **决策时点只有 A(正在做决定)/ B(回溯复盘)两种**,⚠️ **而 B 写死"这一段不出动作 + 措辞落在下次"** —— ⛔ **今天就该发的那封邮件被措辞推到了「下次」** | 「⭐ **本次是第三种:决策在过去做出、但至今仍在继续。** 标题换成『**当初定的那件事,和今天还能动的那部分**』,分两段:**① 当初定的是什么(不出动作)· ② 今天还能动的那部分 —— ⛔ 每条落在"今天"**:『**今天就 ××**』。⛔ 不许落在"下次",⛔ 更不许写「你当时应该」。」 |
| **多个人复述同一份材料,被算成互相印证** | 把职能覆盖面误当独立来源数 | 「请追到每条事实的原始记录,检查共同底稿或转述链。不同职能只增加观察面,不自动增加独立来源;保留事实内容,不用来源条数替代判断。」 |
| ⭐ **一维只有方向、另一维跟它方向相反,它两个出口都进不去,最后交了"分不出来"** | ⛔ **「两维方向相反」的触发判据字面要求"差幅或跨两档",⛔ 而『方向确定、量级不明』那一档明写这两样都没有** —— 一处硬断裂 | 「⭐ **那一档算"分得出来"的一种**,所以 ⭐ **照样触发方向冲突出口**(两维都是那一档时同样走)。⛔ 走进去之后**不许说"差多少"**,问法换成:『**这一条上 A 比 B 好是确定的,但好多少我不知道;那一条上 B 比 A 好、差多少我算得出来。这两件事只能保一件,你保哪一件?**』」 |
| ⭐ **同一维里两个子项方向正好相反、而且两个都有硬证据 —— 它要么整维取中说"分不出来",要么自己把它拆成了两维** | ⛔ **方向冲突出口只有维级,没有子项级** —— ⚠️ **拆维这一步框架里没写;换个执行者走"整维取中"同样不违规,⭐ 得到的是相反的产出**。**同一份材料、同样合规、两个相反结论,差别只在他当时怎么裁** | 「⭐ **判据补一条:同一维内部两个子项各自都有硬格、且方向相反 → 与跨维冲突同样处理**,走取舍出口,把我那句取舍的**原话**记下来当这一次的权重。⛔ **不许整维取中**(那把两个都硬的相反信号抹成了"分不出来",信息全丢),⛔ **也不许自己拆维**。取舍问句要**落在子项自己的说法上**,并注明这是**子项级**的冲突。」 |
| ⭐ ⛔ **是我自己说的「那边没有 ××」,它却说"这条底线你还没确认过",于是谁也没踢掉** | ⛔ **例外的判据挑错了维度**(写的是"用户在不在场")—— ⚠️ **一条 gate 判定有两个部分**:**条件**(我从材料里认定的,你没确认过)和**那一列在这条上的取值**(⭐ **有时就是你本人白纸黑字说的**)。⛔ **旧规则拿前者否掉了整行** | 「⭐ **判据换成「那一格的取值有多硬」**:判「不满足」靠的若是**我本人原话那种硬格**、且**指向的是这一列自身**,⭐ **就可以踢出去** —— ⛔ 用不用得着这条例外,**跟我在不在场没关系**。⭐ **但方向不对称,别弄反**:判「不满足」✅ 可以踢;⛔ 判「满足」仍然不发通行证 —— **踢掉一个选项,和抬高一个选项,需要的把握不一样。** 结论照旧带那句声明,并把回读那句写进「这几天该做什么」第一条。」 |
| ⭐ **它挑出的"最弱的一维",正好是我开头就说过我不在乎的那一维** | ⛔ **挑选判据只有"证据最薄 / 绝对水平最低"两步,⛔ 没有一步排除用户本人明确降权的维度** —— ⚠️ 于是它给了一个**正确但无用**的答案 | 「⭐ **挑之前先加一步 ⓪:把我明确说过『无所谓 / 不看 / 怎么样都行』的那几维排除掉**(⛔ 只在这一步排除,⛔ 别把它踢出排序 —— 我降的是我自己的关注,不是它的取值)。⭐ **排完一维都不剩就直说**:『**你在乎的那几维上,我没找到明显的短板**』+ 一句『我没去说 ×× 那一维,因为你说过你不看它』。⛔ 不许退回去挑那个我不在乎的。」 |
| ⭐ **它拿中间人(或招聘方)说的一句话当依据,说我该选那一家** | ⛔ **框架只管"这条信息准不准"(一手 / 二手 / 来源独立性),⛔ 完全没有位置记录"说这话的人希望我怎么选"** —— ⚠️ **一个中间人可以说一句完全属实的话,而那句话被挑出来说是因为它有利于成交** | 「⭐ **给来源加一个后缀 `(有利益方向)`**,判据一句话:**这个人会不会因为我做出某一个选择而得到好处?** ⛔ **不降低它的真实性**,⭐ **但它不能单独支撑一条"往那个方向走"的判断** —— 要一个**没有这个利益方向**的来源交叉;⭐ **找不到就把那一格降为 `我推测的`**(退出排序)并进必问项:『**这件事我还能问谁核实?**』。⚠️ 中间人转述的**客观事实**(面几轮、汇报给谁)⛔ 不受影响 —— 判据是**这句话有没有指向一个选择**。」 |
### ⚠️ 唯一允许「不出排序」的出口
正文写着 ⛔ **绝不许输出「两个都不错,看你自己」**;上表第一行又允许以「分不出来」收场。这两句不矛盾,但**边界必须写死**:
> **「分不出来」是本模块唯一允许不出排序的出口,且它有三个必须同时满足的条件:**
>
> ⛔ **先确认这不是「两维方向相反」。** 那一种**证据是够的,缺的是一次取舍**,走它自己的出口(见第 4 步),⛔ 不许走这里 —— 两者若用同一套措辞收场,用户会跑去补一堆补齐了也不改变结论的信息。
>
> ⛔ **最先确认「上位出口」没有触发** —— **有任何一列被二值硬约束判出局时,⭐ 必须出结论,⛔ 不许走这里**(见第 4 步「上位出口」)。⚠️ **这是本模块被误用得最多的一处**:别的维数据不全 → 走这个出口 → 一条已经成立的出局结论被压成"数据不够"。
>
> ⛔ **再确认 `无 gate` 没有同时成立。** 同时成立时 ⭐ **`无 gate` 优先,⛔ 不走这里** —— 裁决与执行动作见第 1 步「`无 gate` 与「分不出来」出口同时触发时的优先级」。
>
> 1. **已经先排过一次** —— 只用 `你给的` 和 `公开可查` 的那几维重排,仍然分不出。⛔ 不许一上来就宣布分不出来
> 2. **点名三条具体缺失信息** —— 不是「信息不足」,是「我缺这三条:××、××、××」,每条写成能直接问出口的过去式问句 + 该问谁
> 3. **说明补齐后会怎么裁决** —— 「这三条里只要 ×× 拿到,第 1↔2 就能分出来,因为……」。⭐ 这一条最容易被跳过,但它才是「分不出来」与「看你自己」的真正区别:**前者告诉用户下一步做什么,后者把决策原样退回去**
>
> ⛔ 三条缺任何一条,就退回「看你自己」,不合格。
#### ⭐ 条件 1 在深潜里也会死掉 —— 补同型出口(⛔ 不许拿它当"所以宣布分不出来"的理由)
⚠️ **条件 1 字面上要求"存在几维是全硬证据的",而实跑里常常一维都不存在** —— 每一维都掺着 `我推测的` 或空格。于是这个出口**整个走不通**:⛔ 走过去只会卡死,或者执行者悄悄放宽判据自己解释一遍。
⭐ **这与 v0.1.3 给最小路径补的那个死结是同一型**(最小路径只有一维,没有"那几维"可重排 → 已补出口:直接进深潜加第二维)。⚠️ **深潜里的同一个死结此前没补。** 现在补:
> ⭐ **条件 1 改写成两层,⛔ 必须按顺序试,第一层不成立才用第二层。**
1. ⭐ **第一层(原口径)**:**存在至少一维,它的每一格都是 `你给的` / `公开可查`** → 只用这些维重排一次。成立就照旧走
2. ⭐ **第二层(一维都没有时用这个)—— 降到格,⛔ 不再要求整维全硬**:
- 每一维按「作用粒度」那节的第三步取它的 **`可比` 列**(= 关键子项里**至少有一格是硬的**那几列),**只在这几列之间比**
- 逐维写明「**这一维只有 _ 列可比:××、××**」
- ⭐ **只要有任何一对列在任何一维上分得出来(差幅严格大于该维误差带 / 定性维跨两档),就不算"分不出来"** —— **照常出排序**,并写明这个名次建立在哪几对可比关系上
3. ⛔ **两层都跑完、一对都分不出来,才算满足条件 1。** 此时在输出里照着写一句:**「本次没有任何一维是全部可追溯的,我已经降到单格重排过一次,仍然分不开。」** ⛔ **不许跳过第二层直接宣布分不出来**
⭐ **判据仍是纯字面的**:第一层看"有没有全硬的维",第二层看"有没有分得出来的可比对"。⛔ 两者都不靠"证据够不够"这种裁量。
### ⚠️ 必问项问不到,而答复截止已经到了
「查不到就升级成必问项」默认假设**你还有时间去问**。实跑里常常没有:问了没人回、截止就在今晚。⛔ **这时不许把 `gate 待定` 悄悄当成"满足"来交差**,也 ⛔ 不许只回一句"建议你去问"就完事。收场规则写死四条:
1. ⭐ **标记照带,排序照出。** `gate 待定` 的那一列仍然**不能排第一** —— ⛔ **截止时间到了不是解除标记的理由**:时间流逝没有改变任何一格的取值。(同理 `有条件满足(待闭合)`:截止到了不等于租约签了)
2. ⭐ **把没问到的那条,转成一个"当场就能做的最小验证动作"**,而不是一个还要等回复的问句。例:那条必要条件若是「这个岗一周有几成时间在写代码」,当场可做的是 —— **翻一遍这家给你的 offer letter / 岗位描述,看它写没写职责构成;再回想面试里对方主动举过的例子属于哪一类**。⚠️ 这些只能得到 `我推测的` 级别的取值,**⛔ 不解除 `gate 待定`**,但它能告诉用户"手上现有的东西指向哪一侧"
3. ⭐ **明写代价,让用户自己签字**(照着说):「**××这条到现在没问到。你可以选:① 再要一天 —— 多数公司给得起,而且"要不要得到"这件事本身就是一个信号;② 现在就答复 —— 那等于你接受『这一条即使不成立,这个 offer 对你也仍然成立』。⛔ 这个字我不能替你签。**」
4. ⛔ **不许因为"来不及"就摘掉四种标记里的任何一种。** 摘掉之后,「**问过了并且通过**」和「**没来得及问**」在文件里长得一模一样 —— 这正是本模块每一条留痕规则要挡的东西
---
## 三级自救阶梯
> **不许一出问题就让人接管。** 先自救两级,第三级才回报人,且回报必须带建议动作。
| 级 | 什么时候到这一级 | 你该做什么 | ⛔ 不该做什么 |
|---|---|---|---|
| **L1 有现成的,直接走** | 本文件里有明确规则命中(gate 判定、真实时薪口径、来源标注、输出格式) | 按规则执行,**不问**。已有规则能裁决的,自己裁决 | ⛔ 不为「确认一下」打断用户。「通勤要不要算进去」这种问题本文件已经写死了,别再问 |
| **L2 没现成的,尽力走通 + ⭐ 沉淀** | 用户给的材料是散的(聊天记录转述、条款截图的文字、一段语音转文字)/ 某个维度这里没定义 / 某个数据查不到 | ① 自己把散材料整理成对照表,**不要求用户先填模板** ② 自己按「取值不同才留」的判据决定加哪些维度 ③ 查不到的现场写成「答复前必问项」 ④ ⭐ **走通之后写回去** —— ⭐ **写回目标只有一个:你工作区里的 `offers.md`。** 新的口径写进它的「口径与假设」一节;新的填表规则**也写进它**(末尾另起一节「本地填表约定」),下次直接回 L1。⛔ **不许写回仓库里的 `templates/offer-matrix.md`** —— 那是模块自带的只读模板,而本模块明说"不需要 git";改它的后果是用户下次拉更新必冲突。⭐ 判据一句话:**沉淀只写进工作区文件,不写进模块目录** | ⛔ 不把「这次绕过去了」只留在对话里。没沉淀 = 下次还得再试一遍 = 等于没走通 |
| **L3 实在不行,才回报人** | L2 也走不通 / 只有用户本人才有的事实(他自己的必要条件、他愿不愿意搬家、他现在这份工作的真实体感)/ 触及边界(法律条款、签证、期权税务) | 输出 **症状 + 已经试过什么 + 建议你做什么(给可选项)**。例:「排序在『浮动兑现率』这一档会翻,我按三种口径都算过了(症状+已试)。**建议你做**:让对方把浮动的计算口径写进 offer letter;写不进去就按 0 那一档的排序执行。」 | ⛔ 不输出裸错误;⛔ 不说「请提供更多信息」这种没有指向的话;⛔ 不把 L2 该自己整理的材料推回给用户 |
---
## 变更日志
- **v0.1.8**(发布前第八轮修订,依据**两个实跑案例**:一个多年尺度的"还要不要待下去"、一个带中间人的材料型输入):
- **[P0] 通道 3 会把"自我说服"洗成"底线" —— 补一道字面自查** —— ⚠️ **这是 v0.1.7 补 B 组词表带来的副作用**:补它是为了让通道 3 命中真人口语,⭐ **而真人最常用「不是 A,是 B」「××无所谓先保××」这种句式的时刻,恰恰是在说服自己**。于是 gate 的候选必要条件**全部从他那段"正在给自己找理由"的自述里提取**,提出来的"底线"**必然是这段论证的结论** —— ⭐ **等于用一个人的结论去检验他的结论**;而材料最后一句正是「你说我是不是在给自己找理由」,⛔ **框架结构性地答不了**。现在补:**通道 3 提取之后、进 gate 表之前跑一次自查** —— ⭐ **数两样,都是字面的**:① 每条候选条件逐列判一次,看**是不是全部指向同一列**;② 材料里**有没有一句字面倾向那一列**的话。两样都成立 → 整组标 **`可能是自我说服`**:⛔ **不许单独触发上位出口(用户不在场也不许)**,⭐ **必须原话回读 + 问一句写死的话**;⭐ **用户不在场时结论照出,但必须带一句写死的声明**(「我没法判断这是你的底线,还是你已经做了决定之后给它找的理由」)。⭐ 设计同源:**不替他裁决,而是把结论对它的依赖显式暴露出来** —— ⛔ 框架答不了这个问题,但它可以**把问题原样递回去,而不是假装没看见**
- **[P0] 沉没成本没有格子,而且立场用错了地方** —— ⚠️ **框架里一个格子都没有**,且立场上是**反**沉没成本的:唯一的跨期机制(`一次性成本摊销年限`)方向相反(摊将来),最接近的一格(「最坏情况沉没什么」)是**未来时态**。⭐ **而实跑那一例的沉没成本是有明确载体的既得资产,不是认知偏差** —— ⛔ **框架没有区分这两种,会把人推向做错事**(对一个排了多年队、已经积累了可保留资格的人,「别被沉没成本绑架」是**有害建议**)。现在给"已经投入的东西"一个格子,⭐ **两类的判据写死**:**沉没成本**(换个地方不会退给你、也带不走)⛔ **不进排序**;⭐ **既得资产**(离开会失去或要重新积累,**且有明确载体**:资格 / 年限 / 排期 / 归属期 / 认证 / 内部信用)✅ **进排序**,算在「留在原地」那一列的**收益侧**,⭐ **离开的代价里必须显式包含"重新积累它要多久"**。⭐ **判据一句话**:「**如果我明天离开,这个东西是留下、还是清零重来?**」⛔ **并写死一条禁令:不许对既得资产说「别被沉没成本绑架」** —— 那句话是对付认知偏差的,用在真实资产上是**在劝人放弃自己的东西**
- **[P1] 时间尺度三条** —— ① ⭐ **误差带系统性抹掉缓慢下滑**:「相邻一档视为分不出来」在多年尺度上让**三年滑三档、每年看都是相邻一档** —— ⭐ **多年尺度要的是斜率,而框架里没有斜率**。补:**跨越一年以上的比较看的是方向**,⭐ **连续两次观察同向 = 一条趋势**(⛔ 不要求三次,否则真实材料上恒不触发),趋势按第三档处理(可定先后、⛔ 不算差幅);② ⭐ **答复截止日只有"未知"一档,⛔ 没有"结构上不存在"** —— ⚠️ **而没有截止日不是缺输入,它本身就是病灶**(决策被无限推迟成默认选项)。补第三档并写死处理:**自己设一个** + 照着说「**你不定,就是定了「不动」**」;③ ⭐ **决策时点缺第三种:决策在过去做出、但至今仍在继续** —— A / B 都不合身,⛔ **而 B 写死"这一段不出动作 + 措辞落在下次",于是"今天就该发的那封邮件"被措辞推到了「下次」**。补 C 措辞(「**当初定的那件事,和今天还能动的那部分**」,⭐ **第 ② 段每条落在"今天"**),并给 B / C 分不清时的保守缺省(**缺省走 C**,因为两个方向的代价不对称)
- **[P1] 两处判据接不上** —— ① ⭐ **「有硬格」≠「算得出取值」**:真实时薪的**分子有硬格、分母三格全空**时,第二步只问"有没有硬格"就判 `可比`,⛔ **而比值算不出来**。补第二问(**算式里每个必需输入是不是都有取值;空格 = 没有**)与第三档 `可比 · 算不出`(⛔ 不算差幅、⛔ 也不把整列当空,方向照用、量级进必问项),并写死 ⛔ **不许拿默认参数把空格填满再宣称算出来了**;② ⭐ **第三档 `方向确定 · 量级不明` 接不上「两维方向相反」出口** —— 后者触发判据字面要求"差幅或跨两档",⛔ **而第三档明写这两样都没有**,于是「一维是第三档、另一维方向相反」**两个出口都够不着**。写死:**第三档算"分得出来"的一种,照样触发方向冲突出口**(两维都是第三档时同样走),⛔ **走进去之后不许说"差多少"**
- **[P1] 「两维方向相反」只有维级,没有子项级** —— ⚠️ 实测:**同一维内部两个子项各自都有硬格、方向正好相反**。⭐ **执行者自行把它拆成两维处理 —— 而这一步框架里没写**;换一个执行者走「整维取中 → 分不出来」,**同样不违规,得到相反的产出**。⭐ **同一份材料、同样合规、两个相反结论,差别只在执行者当时怎么裁 —— 这正是本模块最反对的形态**。补**子项级触发判据**(同一维内部两个子项各自都有硬格且方向相反 → 与跨维冲突同样处理),⛔ **不许整维取中**(取中把两个都硬的相反信号抹成"分不出来",信息全丢),⛔ **也不许执行者自行拆维**;取舍问句**落在子项自己的说法上**,记下来时**注明它是子项级的**
- **[P0] 改写「`待你确认` 可以触发上位出口」那条例外 —— ⛔ 上一版判据挑错了维度** —— ⚠️ 它写的是「**用户在不在场**」,⭐ **而正确的判据是「这条『不满足』的判定,靠的是什么」**。一句话说破:⭐ **拿"他没确认这是他的底线",去挡住"他自己说了这件事不成立" —— 挡错了对象。** ⭐ **一条 gate 判定有两个部分**:**条件**(「我要 ××」—— 我从材料里认定的,你没确认过)和 ⭐ **那一列在这条上的取值**(「这一列**没有** ××」—— **有时就是用户本人白纸黑字说的,非常硬**)。⭐ **`待你确认` 标的是前者**,⛔ **而旧规则拿它否掉了整行,连后者那个硬事实一起否掉了**。现在适用条件换成:**① 判「不满足」的依据是 `你给的` 的硬格(用户本人原话)**;**② 那个依据指向的是这一列自身**(⛔ 不是笼统的行业判断);**③ 条件来自通道 3 且原话逐字可引、属不可闭合类**;**④ 没有被标 `可能是自我说服`**。⭐ **「用户在不在场」不再是适用条件** —— 他在场只意味着**你应该顺便问一句**,⛔ 不意味着在他回答之前你什么都不能说。⭐ **并写死方向不对称**:**判「不满足」→ ✅ 可以踢出去**;⛔ **判「满足」→ 仍然不发通行证** —— ⭐ **踢掉一个选项,和抬高一个选项,需要的把握不一样**:前者只要"这一条上它确实不行",后者要"这条底线确实是你的底线",**而后面这件事只有他能确认**。声明句与翻转点照旧保留
- **[P2] 「挑最弱的一维」没考虑"用户明说过这一维我不在乎"** —— ⚠️ 实测挑出了一个**正确但无用**的答案:那一维确实最弱,⛔ **而用户开头就声明过不关心它**。现在挑选判据前面补一步 ⭐ **⓪ 先排除用户本人明确降权 / 踢掉的那几维**(判据字面:有没有一句「××我无所谓」「××我不看」);⛔ **只排除"挑最弱"这一步,⛔ 不把那一维踢出排序**;⭐ **排除后一维都不剩 → 第五种合格答案**:「**你在乎的那几维上,我没找到明显的短板**」+ 一句留痕,⛔ **不许退回去挑那个他不在乎的**
- **[P1] 框架没有任何地方要求标注来源的利益方向** —— ⚠️ 实测:一条关键判断的依据来自**一个有佣金动机的人**,⛔ **而框架里没有位置记录这件事**。⭐ **对照**:本模块对**信源可信度**已经很成熟(一手 / 二手 / 来源独立性 / 同源合并),⛔ **那一整套管的是"这条信息准不准",管不了"说这话的人希望我怎么选"** —— ⚠️ **一个中间人可以说一句完全属实的话,而那句话被挑出来说是因为它有利于成交**。补后缀 **`(有利益方向)`**(⛔ 不是第四套标签,与 `(口头说的)` 同级),判据字面(**这个人会不会因为我做出某一个选择而得到好处**);⛔ **不降低它的真实性**,⭐ **但它不能单独支撑一条"往那个方向走"的判断** —— 需要**没有这个利益方向**的来源交叉,⭐ **找不到就降为 `我推测的`** 并进必问项。⭐ 在「来源独立性」那节钉死:**利益方向与来源独立性是两件事** —— **三个都拿佣金的人说同一句话,既不独立、也同向,要一起打折**。⚠️ ⛔ **别改坏:这条只针对"指向一个选择"的判断**,中间人转述的**客观事实**不受影响
- **v0.1.7**(发布前第七轮修订,依据**一轮回归实测剩下的三条 + 一条跨模块核对**):
- **[P1] 可分性判定补第三档 `方向确定 · 量级不明`** —— ⚠️ 旧版只有"分得出来" / "分不出来"两档,于是「这一维上有一条方向明确的硬差异,但零金额、量级判不出来」只能落进"分不出来",⭐ **和"两列真的差不多"在输出里长得一模一样**,⛔ **而两者下一步动作完全相反**。⭐ 判据字面:**这一维上有没有一条 `你给的` 或 `公开可查` 的事实能确定 A 优于 B(哪怕说不出优多少)**。⭐ **它算"分得出来"的一种**:✅ 可用它定先后,⛔ **不能算差幅 → ⛔ 不能判决胜维**,⛔ 也不能写进翻转点;措辞写死「**这一维 A 优于 B 是确定的,但优多少不知道**」;必问项配一句落在这一维自己刻度上的量级问法。同时在第 4 步的四类诊断里补 ②b(⛔ 不许并进 ②)
- **[P1] 「开跑前」新增一致性自查(⛔ 在开始算之前跑一次)** —— ⚠️ 实测:材料里一处事件日期**晚于答复截止日**,⛔ **框架里没有任何位置处理"材料自己前后对不上"**,执行者只能借「两套都跑 + 显式声明」,⚠️ **而那个模式是为"外部事实不确定"设计的**。三项照查(日期先后 · 同一件事两处取值 · 相对量的基准);⛔ 不许自己挑一个用 / 静默取平均 / 当笔误改掉;⭐ 用户在场 → 原样念回;⭐ 不在场 → 两种读法都跑,**结论不同就写进一页纸第一段**。⭐ 与「材料日期 vs 检索日期」**并列不混**(一个管材料与外部世界,一个管材料与它自己)
- **[P1] 一页纸第 ③ 块补回溯措辞(按决策时点字段自动选)** —— ⚠️ 旧版只有「这几天该做什么」,预设"你正在做决定",⛔ 回溯 · 复盘场景用不了。⭐ **B 措辞改成两段**(① 这一次已经定了的部分,⛔ 不出动作 · ② 下一次遇到同类处境时,提前做什么,⛔ 措辞落在"下次")。⛔ **不许写「你当时应该……」——「回溯的用途是让下一轮不再漏,不是让人后悔」,那句话产出零个可执行动作**
- **[P2] 「整列现金都口头 → 按 0 计」在一页纸上补人话译法** —— ⚠️ 一页纸不许出现方法论词汇,⛔ **而那个 0 不解释,用户看到的就是"这家不给钱"**,恰好是这条纪律要防的那个误读
- **v0.1.6**(发布前第六轮修订,依据**六个互相独立的执行者各跑一个海外合成案例**,⚠️ **随后对照 agent 开了真值**):
- ⛔ **一句话诊断:本模块的失败模式不是"判错",是"六次全部拒绝判" —— 而真值显示其中四次是可判的。** 六个案例、四种完全不同的真值类型,全部输出同一形状(「不排名次 + 数据不够」);真值核对:真的无从判断 1 例、部分 1 例、⚠️ **当时可判而它没敢判 4 例**(其中一例真值原话:「**几乎不需要推理,只需要不自我说服**」)。根因是**三条互锁的机械判据**:`无 gate`(回溯输入上无法解除)+「数列不数格」整维退出 + `未成 offer` 不参与排序 —— ⭐ **任一成立就出不了名次**
- **[P0] 新增上位出口:有一列被二值硬约束判出局时,⭐ 必须出结论** —— ⛔ **优先于本模块其余任何一条"不出结论"的规则**。哪怕结论只是「只剩两列、而这两列分不出来」,⛔ 也不许因为别的维整维退出就压成"数据不够"。⚠️ **"某一列出局"是结论,"其余维数据不全"是缺口;合并成一句,用户拿到的是零个结论**。同时管住维度池:⭐ **一个"取到某值就让某列直接出局"的二值维,即使本次取值相同也不许删**
- **[P0] gate 的输入通道从两条补到三条** —— ⚠️ 旧版只有 `positioning.md` 与"当场让用户写",⭐ **两条都要求用户在场**,于是**任何离线 / 转述 / 材料型输入最多只能走到 `无 gate`**。⚠️ **这很可能就是上一轮 gate 从没跑起来的根因,而它此前被误判成"回溯场景的固有限制"**。现在补**通道 3:从已有书面材料里认定** —— ⭐ **判据是字面的排他性措辞词表**(「我不可能」「必须要」「再也不」等),⛔ 不靠体会;提取出来的标 **`待你确认`** 并**回读确认**(⭐ 这一档正是"提取 = 替用户立法 / 不提取 = 有信息却判一条都没有"这个两难的解),⛔ 确认前既不能踢人也不能放人。⭐ 并**明确区分「冷启动」(用户在场、条件现写)与「用户不在场」(只有材料)** —— ⚠️ 此前框架里没有一处区分它们,只有前者有处理
- **[P0] 「数列不数格」的标定失败 —— 判据重写(⛔ 旧判据作废)** —— ⚠️ 三个案例复现:三列表 2 列即过半 + "任一子项推测即整列计入" → **在真实稀疏材料上每一维都出局**。⭐ **更根本的毛病:它对「材料完整度」的敏感性超过了对「证据硬度」的敏感性** —— 一格由**五个互相独立、各自可证伪的来源**撑着的取值,被同维两个**空格**一起带出局。现在三步:⭐ **① 每一格分硬 / 推测 / 空三档**(⛔ 空 ≠ 推测,两者补法完全不同:一个去问、一个去证实)· ⭐ **② 每一列看它在这一维有没有硬格** · ⭐ **③ 整维退出的判据改成"这一维里没有任何一格是 `你给的` 或 `公开可查`"**;≥2 列可比 → 保留并明写「只有 _ 列可比」。⭐ **另补「硬证据留档」逃生位**(可比列 ≤1 且有硬格时必填)—— ⚠️ **实跑里执行者是靠别的章节手动把那一维捞回来的,而框架里没有任何规则要求他这么做**
- **[P0] `无 gate` 与「分不出来」出口互撞,补裁决句** —— 两者要求相反(前者要排序照出、后者是唯一允许不出排序的出口),⛔ 旧版没有优先级。⭐ **裁决:`无 gate` 优先** —— 它管**输入缺失**,那个出口管**证据不足**,**连判据都没有时谈不上"分不分得出来"**;且重排出的名次在 `无 gate` 下一列都不能合法排第一。⭐ **那三条要求不作废,降级成第二段照写**,⛔ 两条原因都要写
- **[P0] 「分不出来」出口的第 1 个必要条件在深潜里补同型出口** —— ⚠️ 它要求"先只用全硬证据的那几维重排",⛔ **而实跑里不存在任何一维是全硬的**,字面无法满足。⭐ **与 v0.1.3 给最小路径补过的那个死结同型,深潜里一直没补**。现在条件 1 改成两层:**第一层原口径 → 不成立才用第二层「降到格」**(每一维取可比列、只在这几列间比;**任何一对分得出来就照常出排序**);⛔ 不许跳过第二层直接宣布分不出来
- **[P0] 「整维退出」的诊断补第四类:可问而未问** —— ⚠️ 实测里大量缺失属于这一类(用户自己明说"我没问"),却被整体归进 ①「缺数据」。⭐ **两者下一步动作完全不同**:真缺数据 = **拿不到**;可问而未问 = ⭐ **发一封邮件 / 问一句就有**。判据字面(**有没有一个具体的提问对象 + 问题写得成一句过去式问句**),并给**专属措辞**(具体到"问谁 + 原话说什么")。⛔ **把两种收进同一句话,会把"今天就能做完的事"说成"补不齐"**
- **[P1] 「来源独立性」补第二问** —— 旧判据只有「**它们能不能同时错**」,治得了"同一个人说三遍",⛔ 治不了"**同一个根因在几个不同职能面各露一次**"。实测:来自 recruiter 与 HR 至少两人、四个不同职能面的四句话被压成一个来源,叠加整维退出后**对结论贡献为零**,⚠️ **而真值证明它就是决定性的**。现在补:**这几条如果错,是同一个人错,还是同一个组织事实错?** 后者按**职能面数**算多个独立观测面。⚠️ ⛔ **第一问一个字不改**(它在"五条事实追溯到五个互不相干对象"那组样本上判得更硬,那条路径原样保留);⛔ 保守缺省也不动
- **[P1] `未成 offer` 的三条判据补第三种取值 `判不出来`** —— ⛔ 旧版只有 `成立` / `不成立`,于是**没有提问对象**(判据 1 必须问出来、不许推测)时只能判 `不等`。⚠️ **"没人可问"说的是你的处境,不是那家公司的**。⭐ 判据 2 的锚点也补齐(没有第 1 名时换成"排在最前面的那一列";一个 offer 都没有 → `判不出来`)。另补 ⭐ **「连流程都没开始」的机会 ⛔ 不进表**(判据字面:有没有一件已经发生的事)
- **[P1] 补第三种形态:零个 offer + 有在职工作** —— ⚠️ 旧版覆盖了"一个 offer 无在职"和"一个 offer 另一家在面",缺这一种,后果是**六件必需产出里三件失去对象,而模板对它们都写着「不许留空」**。现在给三件各一个写死的替代形态(排序结论 → gate 结论 / 翻转点 → 「什么变了你就该开始看外面」/ 第 1 名最弱的一维 → 「留在原地最弱的一维」)
- **[P1] 「第 1 名最弱的一维」补第四种合格答案:本次没有第 1 名** —— ⚠️ 三种旧答案**全部预设存在第一名**,而 6/6 案例都没有。分两支写死(名次排出来了但没人能合法拿第一 → 「排在最前面那一列最弱的一维」;连名次都没排出来 → 「争第一的那两列各自最弱的一维」,**两列各写一遍**)
- **[P1] 「每一名与下一名差在哪一维」补"参与排序的维度为零"的写法** —— ⚠️ 它与翻转点都以"名次已存在"为前提,实跑里**四个执行者各编了一种写法**。现在写死两支(先看上位出口 / 一列都没出局时照着说「本次参与排序的维度是零维 —— 不是这几列一样好,是我手上没有任何一维能拿来比」+ 一句最短缺口)
- **[P1] 全 remote / 跨国场景下「通勤」语义失效** —— ⭐ 全 remote 时**通勤按 0 并写明**(⛔ 不许编);⚠️ **住处与租金两格互为输入(循环)** → 住处提到**前置声明**里先定死,⛔ 定不下来时**两格一起标 `我推测的`**。另补两项此前在分母 / 分子里**没有位置**的东西:⭐ **跨时区错位(进分母,与通勤同性质)** · ⭐ **无带薪假 → 可计费周数(进分子,⛔ 不许按全年算)**,各配一个 `纯占位待校准` 参数与保守 / 激进两端
- **[P1] ⭐ 新增「前置声明」栏 —— 给"改变其他所有维度计算口径的前提"一个容器** —— ⚠️ 框架原本只有「维度」和「参数」两种,⛔ 而**雇佣形式**这类东西两种都不是:它自己不排序、也不是算式里的数,**却决定了别的维度怎么算**。判据一句话:**"它取什么值会改变另一维怎么算" → 它就是前置声明**。⛔ 标 `我推测的` 时,它影响的那几维一律按单元格退出
- **[P1] 「开跑前」补四项必需输入**:⭐ **答复截止日**(⚠️ 它是多处判据的输入,却从来没被要过)· ⭐ **材料日期 / 事情发生时间** · ⭐ **决策时点** · ⭐ **用户在不在场**
- **[P1] 补纪律:材料日期 vs 检索日期** —— ⚠️ **三个独立案例复现**:只标检索日期 → 「当时可不可知」与「现在是否属实」被混成一件事;其中一例直接踩雷(**最关键的那条公开信息公示于决策时点之后**,⭐ 执行者自己发现并写破了,**而框架没有任何规则要求他这么做**)。现在写死:**公示时间晚于决策时点的信息,只能用于「今天该怎么办」,⛔ 不能用于「他当时判断得对不对」**,那一格在比较里按单元格退出
- **[P2] 两处"只有一种措辞"的模板补齐反向那一种** —— ⭐ **三点采样跳过提醒**:那两个参数没进任何参与排序的维度时,⛔ 照抄旧措辞会**把用户推去补一件补齐了也不改变结论的事**;⭐ **「无翻转点」**:旧版只有"证据太足所以不会翻",⛔ 缺"**证据太少所以怎么变都不影响**"那一种 —— ⚠️ **两句话给用户的下一步动作正好相反**(一句是"不必再查",另一句恰恰是"必须再查")
- **v0.1.5**(发布前第五轮修订,依据**端到端实跑**:用户从零走完全程,⚠️ **反馈「看都看不懂」**):
- **[P0] 新增第 1 件必需产出:一页纸(原有五件顺延)** —— ⚠️ **准入门槛过关 ≠ 他读得懂。** 本模块在准入那一头确实是过关的(只要一个能读写本地文件的 agent、全是 markdown、不需要 git),⛔ **但实跑交出去的是几十 KB**,里面是误差带 · 指数 · `纯占位待校准` · "我引入的折算" · 多层嵌套表 · 四种标记 · 三套标签体系 —— **对一个今晚就得答复、且不是技术背景的人,可消费性接近零**。⭐ **修法不是删规则**(删了就退回记分板),是**加一层呈现层**:**一页纸放最前面,方法论痕迹全部留在它后面的各节、一个字没删**。⭐ 形态照抄仓库里已经验证过的 [`面试执行一页纸`](../03-company-analysis/interview-strategic-assessment/templates/面试执行一页纸.md)(那是给现场用的那一份)
- **这一页里只有四件事**:**顺序 + 第 1↔2 差在哪一件事** · **哪个假设变了会翻** · **这几天该做什么** · **哪几条是我猜的**
- ⛔ **禁用词表是纯字面判据**(出现 `误差带` / `指数` / `gate 待定` / `纯占位待校准` 等任一个 = 没收敛完),与「闭合上限那一格空着按不可闭合处理」同源:⭐ **判据必须能一眼判,⛔ 不能靠执行者当场裁定"够不够通俗"**
- ⛔ **顺序必须与排序结论逐字一致**;⛔ 不许出现总分 / 星级 / 红绿灯 / 匹配度百分比 —— ⚠️ **这一件新增产出最可能的失败方式,就是被写成一个综合分**(纪律 3 在这一页上一个字不改)
- ⭐ **四种标记有写死的人话译法**(`gate 未通过` → 「它不满足你自己写下的一条底线:××」等):⭐ **换说法、⛔ 不换存在**
- ⭐ **「没有一列能合法排第一」在这一页上有专门写法**:第一句形状写死成 **「今晚先别答复 —— 不是这几个都不好,是你还缺一件东西:××」**,⛔ 不许写成「信息不足,建议慎重考虑」。⭐ **要让他看出这不是框架没算出来,是还差一件今天就能做的事**
- ⭐ **来源标注在这一页上改成三行人话**(你说的 / 我查的 / ⚠️ 我猜的还没证实),⛔ 不许把 `你给的` / `公开可查` / `我推测的` 原样堆上去 —— **堆上去这一页就废了**;⛔ 但「我猜的」那一行不许省,⭐ 一条都没有时也要写「这一页上没有我猜的东西」(判据仍是"这一行是不是空的")
- **[P2]** 「不对劲的时候」补一行(**用户说"看都看不懂"**,并写明这不是准入门槛问题);`templates/offer-matrix.md` 最前面补一页纸空模板;`examples/sample-offer-comparison.md` 最前面补同一份分析的一页纸版本 —— ⭐ **同一份分析、两种说法摆在一起,是这次修订最能说明问题的一处**
- **v0.1.4**(发布前第四轮修订,依据**合成回溯测试**:8 个案例,框架在不看真值的情况下跑完):
- **[P0] 补第四种标记 `无 gate`:gate 表整个为空时,每一列都不能排第一** —— 8 例里 **4 例**用户一条必要条件都给不出(回溯 / 冷启动场景都会这样)→ gate 表整张为空。⚠️ **而「整个没有 gate」比「某一格没问到」还宽松,旧版却连一个标记都没有** —— 最松的那一种情形反而畅通无阻。现在 `gate 未通过` / `有条件满足(待闭合)` / `gate 待定` / `无 gate` **四种全部不能排第一**;⭐ **解除只要写下一条必要条件(哪怕只有一条)** —— 这个标记的作用不是逼他写全,是**不让"没写"变成默认放行**。⚠️ 与冷启动例外**不合并**:冷启动管的是"条件是事后写的",本条管的是"一条都没有",两者是先后关系
- **[P0] 「两维方向相反」有了独立于「证据不足」的出口** —— 实测(case-06):两维**都分得出来但方向相反**,纪律 3 禁掉加权求和,而旧版只有"每一名与下一名差在哪一维"(**前提是名次已经存在**),**没有名次的产生算法**。执行者只能塞进「分不出来」出口,⚠️ **而那个出口是给证据不足设计的,措辞上与"证据充足、方向冲突"完全无法区分**。现在:⭐ **排序不由框架产生,由用户回答一句话产生 ——「这两件事只能保一件,你保哪一件?」原话写下来就是这一次的权重,且只对这一次有效**;与加权求和的区别是**一次显式的、被记录下来的取舍**,⭐ **必须出现在输出里**。⛔ 不引入任何权重
- **[P1] `我推测的` 的"按单元格 vs 整维"改成能一眼数出来的判据** —— 旧版是"支撑不了一个结论",**三个案例的最终结论直接由执行者这一次的裁定决定**。现在:**数列不数格** —— **1 列推测 → 按单元格退出;过半的列都是推测 → 整维退出**(三列表 = 2 列即过半),并必须写进「要证实它你该问谁」
- **[P1] 补两种没覆盖的形态** —— ① **一个 offer + 当前无在职工作**(连基准列都没有):基准换成它自己、⛔ 机会成本明说算不出来、**结论形态从"排序"改成"接 / 不接 / 先补一条再定"**(只剩一列时 gate 才是全部价值);② ⭐ **还在流程中、尚未成为 offer 的机会**(很可能是最常见的形态之一):给它 **`未成 offer`** 标记,**进表但不参与排序、⛔ 不给名次**,并给出「要不要为它拖延答复」的三条判据(时间够不够得着 / 假想它拿到了会不会改变决定 / 拖一天的代价)
- **[P1] 分母补「出差」项** —— 与通勤同性质(**报销的是钱,不是时间**):**在途全额 + 驻场超出常规工时的部分**;⛔ 岗位描述写了驻场 / 现场支持的不许按 0 计;新增 `出差强度默认`(`纯占位待校准`,含保守 / 激进两端)
- **[P1] 「原话记不清」有了位置** —— 它不是 `你给的`(那一档要有可复述的说法),也不完全是 `我推测的`(那一档用户根本没听过)。现在标 **`你给的(原话记不清)`**:排序里按 `我推测的` 处理,⭐ **但必问项的问法不同 —— 不是问新问题,是回去把那句话确认成一句可复述的话**,且**排在必问项最前面**(补救成本最低)
- **[P1] agent 自加的参数补来源等级栏** —— 旧版只有方向声明义务。实测:执行者临时编了一个折算系数,**而它决定了唯一参与排序那一维的判定**。现在:必须进「口径与假设」表 + 必须标等级(**没给过 / 没写过 / 查不到 = `纯占位待校准`**)→ 自动落进三点采样,且**交互项因此被触发**
- **[P1] 「加第二维」补停止条件** —— 实测有案例加到第二、第三维仍整维退出。现在:**每次只加一维、最多加到第三维**;停下来后走「分不出来」出口并**点名缺的是哪几类数据**(① 整维退出 = 真缺数据 / ② 差幅不过误差带 = 不缺数据 / ③ 方向冲突 = 走另一个出口)。⭐ 三维全是 ② 时是一条**强结论**,不是"分不出来"
- **[P1] 补来源独立性口径** —— `06-positioning` 和 `03-company-analysis` 都有"数的是互相独立的来源,不是条数",**本模块缺席**,而实测中有案例的核心恰恰是"这几条观察算不算互相独立"。现在自包含地写死:**判据 = 它们能不能同时错**;同一场面试同一个人说的三句话 = 一个来源;⛔ 判不出同不同源时**按同源处理**
- **[P2] 最小路径出口补一句采样提醒** —— ⚠️ **最需要三点采样的,恰恰是最不可能跑深潜的人**(今晚就要答复的)。⛔ 不把它移回最小路径(那会重蹈上一版覆辙),⭐ 但收尾必须说出口:**「你这次跳过了参数采样,这个排序对『浮动兑现率 / 周工时』有多敏感是未知的」** + 给出只补一项的具体做法
- **v0.1.3**(发布前第三轮修订,依据**第二轮端到端实跑测试**:空白环境、只拿仓库文件、扮演真人用户走完全程):
- **[P0] `gate 待定` 补上「不能放人」的执行动作 → 三种标记全部不能排第一** —— 旧版在 gate 那节写着「推测在 gate 上既不能踢人,也不能放人」,但**只有「不能踢人」有执行动作**(留在排序里、标 `gate 待定`),「不能放人」一个动作都没有。于是出现一个反常的不对称:**必要条件状态"未知"的那列能赢,必要条件"已知违反"的那列反而不能赢** —— 而两者的差别只是**有没有人去问过**。现在 `gate 未通过` / `有条件满足(待闭合)` / `gate 待定` **三种全部不能排第一**,「没有一列能合法排第一」那条强结论的枚举同步从两种扩到三种
- **[P0] `未验证` 在本模块有落点了** —— 上游复盘用三态(`证实` / `证伪` / `未验证`)且明写"不能压成两态",而旧版 `你给的` 的定义写着「或来自他的面试复盘」,**按字面读「某条判据:未验证」就是 `你给的` → 参与排序**,三态在这里被压回两态。现在写死:**`未验证` 一律按 `我推测的` 处理**(按单元格退出排序 + 必进必问项 + 挂着必要条件时标 `gate 待定`);**`你给的` 只指标 `证实` / `证伪` 的那些**(`证伪` 也是 `你给的`)
- **[P0] 推翻上一版的「最小路径不触发任何对照义务」免责表** —— 那张表 4 行里 3 行的论证是错的("gate 是二值的、没有降级"用的是已被 v0.1.2 取消的旧机制;"不判有条件满足"答非所问,触发条件其实是"换一种通勤方式会不会改变 gate 判定";三点采样漏了 `周工时默认` 这个 `纯占位待校准` 参数,两个参数落后两档就已触发交互项)。**改法:把这些对照从第 1 步整体移进深潜**,最小路径的 gate 只判满足 / 不满足两档,其余一律标 `gate 待定` 挂起
- **[P0] 10 分钟的承诺撤掉,改成产出边界** —— **旧版自己给的分步预算相加就已经把 10 分钟占满**(零余量),任何一处对照被触发都必破。现在:**最小路径 = 四步跑完 + 一版带待确认标记的排序**,⛔ 不再给最小路径写任何分钟预算
- **[P0] 冷启动场景的 gate 退化,写明了** —— 第一次用本模块的人(offer 已在手、无 `positioning.md`),他的必要条件**结构性地必然是"事后重构"**。旧版会逐条问写下时点(答案已知)并把 2-3 条各跑两套(**二的 n 次方套**),工作量翻倍而约束力一点没换来。现在:**不必逐条问,一次性按"全部事后重构"处理、只跑两套,并一次性说明「这一次 gate 只起暴露作用、不起约束作用」**,同时给出正面价值(**把底线写下来,下一次它才开始约束你**)并指向入职前存档。README 的 I1 三问同步补冷启动警示
- **[P1] 通勤方式补保守缺省** —— 旧版说它「和『这条是不是事前写的』是同一类,配同一条解法」,但事前 / 事后拿到的是**两样**(两套都跑 + 保守缺省),通勤方式只拿到一样。现在:**改变 gate 判定时缺省按更慢的那一种算**;要用更快的须给**行为化理由**,⛔ 不接受「我也可以开车」这类可能性陈述
- **[P1] 本模块开始读 `positioning.md`** —— 旧版第 1 步直接「要用户写下 2-3 条」,全文零处提到它,于是接续场景里一条几周前手写的真·事前条件被当场重问 → 时点变成今天 → 降级成 `事后重构`。现在:**第一个动作是先看工作区有没有 `positioning.md`**,有就直接读,**写下时点按文件里记的日期判**;并给 `positioning.md` 的第三类字段(**硬性排除**)一个接收位,保留它的**短路语义**(命中即出局,⛔ 没有「有条件满足」这一档)
- **[P1] 误差带的比较口径写死 + 最小路径补出口** —— 「±5」旧版有两种读法(差幅门槛 / 区间重叠),**同一份数据不同答案**。现在写死:**差幅必须严格大于误差带绝对值才算分得出来**。另外最小路径只有一维,判为"分不出来"后既没有下一维可换、也走不了「分不出来」出口(那个出口要求"先只用 `你给的` / `公开可查` 的那几维重排")→ 现在给它专门出口:**直接进深潜加第二维**
- **[P2]** 证据等级补 `未验证` 档;`你给的` 内部补 **`(写进 offer letter)` / `(口头说的)`** 后缀(否则"口头承诺按 0 计"在横向对照表里没有落点);「开跑前」输入表补**上游文件位置**与**能不能联网检索**两项;「第 1 名最弱的一维」补第三种合格答案(**不是会跌出第一,是可能整个出局**);补「**必问项问不到、而答复截止已到**」的四条收场规则;**L2 沉淀的写回目标改为工作区 `offers.md`**(旧版写回仓库 `templates/`,与"不需要 git"冲突且会让用户拉更新冲突);「不对劲的时候」补两行(`未验证` 被当成没问题 / 从零重问而 `positioning.md` 已有)
- **v0.1.2**(发布前第二轮修订,依据**回归验证**:P0-3 已堵、P0-1 半堵、P0-2 未堵):
- **统一思路**:剩下的问题全部落在「**有人说了一句无人可验证的话,框架就照做**」的地方。修法不是再加一句 ⛔ 提醒,而是**把不可验证的用户自述,转成一个可见的敏感性**——与本模块已有的翻转点同源
- **[P0-2] 事后重构的必要条件不再降级**,改成「**两套都跑 + 显式声明差异**」(含它 / 不含它)。旧版激励方向是反的:用户想让底线**不算数**时,降级正是他要的结果
- **[P0-2] 判定表补「说不清 / 记不清」兜底行 → 按事前算**(保守缺省)
- **[P0-2] Gate 判定格补来源标注**:`我推测的` 在 gate 上**两个方向都不生效**(既不能踢人也不能放人),必须先升级为答复前必问项,未答复期间标 `gate 待定`
- **[P0-1] 覆盖误差带补三条**:① 收窄要给理由且理由要对得上具体哪一项估算,给不出就按默认 ② 覆盖了就**同时按默认跑一遍**,名次不同必须显式声明 ③ 模板补「声明于第几轮 / 是否修改过」留痕位
- **[P0-1] 裁决:误差带不做三点采样**(你需要误差带来判断采样结果算不算变化,再去采样它本身是循环的),并修掉标签体系表里与之冲突的那句
- **[P0-3 放大器] 分母口径写死用「闭合前」的通勤**;**「有条件满足」进排序带 `有条件满足(待闭合)` 标记且不能排第一**(与「留在原地」对称);**通勤口径定义死**(工作日早高峰 · 实际会用的方式 · 同表所有列同一口径)
- **[P1] 第 1 名最弱的一维**:明确「跌到任何程度都不会,因为决胜维是另一维」是**合格答案**;⛔ 禁止编跨维门槛(等于偷偷设权重);补「最弱」的挑选判据(先看证据最薄,再看绝对水平最低)
- **[P2]** 三点采样的保守 / 激进方向**逐参数写死**;补**交互项**(两个及以上参数在后两档时,额外跑一次同时取保守值);裁决「相对量够不够」与「不需要具体金额」的互斥
- **v0.1.1**(发布前修订,依据区分度测试「不通过」+ 红线审查「需修改」+ 独立可用性测试):
- **gate 补两处闭合性**:必要条件的**写下时点**(事后写的降级为加分条件,与模板口径合一);「有条件满足」只对**可闭合**的条件成立,且**写下时必须带闭合上限**,没写上限一律按不可闭合处理
- **给「估算误差带」一个定义**:每一维一个默认误差带 + 来源等级,且必须在排序前写进「口径与假设」——旧版误差带全文无定义,同一份数据取 ±1 与取 ±5 会得出两条不同的决胜维
- **发展空间瘦身**:删掉「四条策略是否彼此吻合」(不可测、光环效应);「市场蓝海还是白热化」换成「最近一次丢单输给了谁」;「团队 AI 使用程度」移出本维,改为**只记录不排序**
- **AI 时代三条降级为必问项**(经验溢价 × AI 暴露度 / 学徒通道 / 信号可迁移性),拿到具体回答才升级成维度;「你在闭环里的位置」并入「授权范围与汇报线」,消除重复计入
- **离职者去向改写**:从「最好的单一代理指标」改成**问出来的、有系统性乐观偏差的、问不到就整维出局**的一条,并明确 ⛔ 不检索特定个人
- **输出加第 5 件必需产出**:第 1 名最弱的一维 + 它要跌到什么程度才会掉出第一(补上「赢面越大弱点越沉默」的缺口)
- **翻转点**:加「临界取值」列并要求写成必问项里的具体问句;「至少一条」改为「没有就明写无翻转点及理由」
- **三点采样义务扩面**到所有 `默认建议值` / `纯占位待校准` 参数,且名次不变但决胜维变了也要写
- **修口径分叉**:通勤时间不再重复计入生活成本(只留交通费);最小可接受形态改为三组;`我推测的` 明确**按单元格生效**;三套标签体系显式区分(证据等级的 `公开可查` 改名 `公开记录`);补 `实践校准` 与 `周工时默认`;融资轮次禁止反推 runway;「分不出来」出口写死三个必要条件
- **v0.1.0**(首发):确立写死的五条纪律(gate / 真实时薪含通勤 / 出排序不出综合分 / 翻转点 / 来源标注);确立目标 10 分钟的最小路径;维度从必填表降为可选维度池 + 一条挑选判据;补齐三段式区块与三级自救阶梯。
## 2026-09-13 修订
来源链与观察面分开计,不再把不同职能等同独立证据。旧变更日志仅记录历史,当前执行以上述来源独立性节为准。回归材料见 [定向回归](../../fixtures/research-regression-2026-09-13.md)。
Files in this skill
- README.md
- 透镜库.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.