SKILL · Offer 排序与翻转点

SkillDev tools

A job-hunting methodology written for agents to read. Not a submission script, but discipline for judgment at every decision point.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the SKILL · Offer 排序与翻转点 skill

What this skill tells your AI

The instructions your AI receives, as published by gilgameshcc/ai-native-jobhunt in modules/05-offer/SKILL.md and read by ahel’s review.

把本文件整份交给你的 agent 即可。 不依赖任何特定 agent 产品,不需要注册斜杠命令、不需要放进特定目录、不需要装任何东西——SKILL.md 只是一个文件名约定,不是某一家的格式。把这份文件粘给它,说一句「按这个帮我排一下手上的 offer」就能开始。

这份文件是写给 agent 的执行剧本。 你(使用者)只需要读「开跑前」「一、最小路径」和「不对劲的时候」三节——其余章节(写死的五条纪律、可选维度池、完整输出格式等)是 agent 执行时要查的细则,你不需要现在通读。

⭐ 如果你是人,而且想自己想清楚而不是要一个排序 —— 去读 透镜库.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:成品路径、结论依据、采用策略、待确认项及影响、实际检查和下一步;重新读取文件核对后给可点击路径。缺材料时先完成不依赖它的部分并标部分完成;无文件写入能力须明确未落盘。可审阅不等于获准发送,外部动作仍按既有授权和模块边界。

交付前交叉核对报告、申请索引、台账和审阅卡:结论与下一步必须一致,已判不投的岗位只说明排除依据及证据或本人条件改变后可重评,不沿用继续推进的话术。内容重排后修正上下文指代;检查数量只填写工具实际统计值,未统计就列检查对象,不手写估数。发现历史审阅错误时另写勘误,保留原记录。

完整规则与模板见 本地交付约定;只拿到本 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:⚠️ 它对所有材料型输入给同一个结论,因而与一条坏掉的规则无法区分。 补第三条:

#通道判据条件的写下时点按什么算
通道 1positioning.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」是同一个方向错误,只是更彻底:这一次连问都没有问。

Shortened here. Read the whole file on GitHub.

Signals

GitHub stars
61
Forks
8
Last commit
Sep 2026
Advanced
Item type
skill
Key
x-05-offer
Source
github.com/gilgameshcc/ai-native-jobhunt