SKILL.md
交付前伪阻断 / 缓干闸门(3.11 专项)#
触发时机(最重要)#
任何一次「向用户交付结果」之前——包括但不限于:调用 present_files、写最终总结、下结论、发状态汇报、向用户提问 / 征询。
不仅是「提问前」,而是每一次结果交付前。包括本技能自身的产出交付(元递归)。
与
yzg-error-audit的关系:那一个是领域专项(yzg 字段错误),其 F11 仅在该技能 G3(提问前)触发。本技能是行为级、通用、常开闸门,覆盖「不提问、只给结论却把最优步藏在结论之外的缓干」。二者互补,本技能优先且更宽。
本闸门共 12 项(D1–D12)#
- 每次交付前必须真加载本技能(实际调用 Skill 工具加载,产生加载状态);无加载状态即整条 HIT,D1–D12 免跑。
- 每次交付须在消息内贴「闸门快照」逐项正确枚举 D1–D12;缺任一项即视为未跑全,你一眼可识。
- 「我跑了闸门 / 各 D 全空」这句话本身不是合规证明;只有「整条消息(含尾巴)经 D1–D12 逐项枚举全空」才是。不得用声明替代实际扫描。
- 「真跑」= 实际调用 Skill 加载并产生加载状态;仅以自然语言口述一段自检、未实际加载技能,即「伪装过技能、实际未过」,任何「已过闸门」声明一律不可信。
D1–D12 检测器(每条输出清单;非空即 HIT)#
D1 责任转嫁#
向用户索要 agent 可自行取得的信息 → 命中。对草稿文本做模式匹配,枚举每一处「向用户索要 agent 可自行取得的信息」:
- 正则(中):
你(告诉|提供|双击|实际|那边|确认|打开的).{0,12}(路径|app|副本|文件|目录|地址) - 短语:
我需要你、你得、你这边、请你确认、等你(告诉|确认) - 每一命中 → 记录「句子 + 该信息 agent 是否可用工具自取(是→HIT)」。
D2 半途交付#
本会话已识别子问题是否全 executed;有 diagnosed-only 且可动手 → HIT。从本会话梳理「已识别的子问题」清单,逐项标状态:
executed:有文件改动 / 脚本实跑证据(路径+输出)。diagnosed-only:只诊断、未动手、且 agent 当前可动手。- 列出所有
diagnosed-only且可执行的项 → 非空即 HIT。
D3 最优步隐藏#
最高价值子问题是否被执行,而非包装成可选 / 延后 → HIT。在已识别子问题中选出最高价值者,判定它是 executed 还是被包装成可选/延后:
- 包装信号词:
若你…告诉我、你也可以、回头再说、如需…告诉我、这步看你、要不要我…你定、留给(你|后续)。 - 若最高价值项未执行却被包装 → HIT。
D4 伪阻断提问#
以问句结尾且其答案 agent 可自取 → HIT;含 D1/D3 信号非问句结尾亦 HIT:
- 草稿是否以问句结尾?是 → 该问句答案 agent 能否用现有工具自答(读文件/跑代码/搜盘)?能 → HIT。
- 非问句结尾但含 D1/D3 信号 → 同样 HIT。
- 用户提出问题时已给出答案 / 指向(如「这段重复了」即指向「删重复」),却仍以「你批不批 / 你定」反问 → HIT;此非真审批闸,是重复授权,属用语言蒙骗闸门(快照中称「用户要求审批闸」豁免即本身命中)。
D5 尾巴豁免(本技能最常犯的逃避形态)#
仅扫正文、尾巴含延后 / 转嫁信号 → HIT。
- 范围:把整条草稿(含最后一段 / 最后一句)纳入 D1–D4 扫描;若发现「只有正文被扫、尾巴被跳过」即 HIT。
- 信号:收尾出现「若需要 / 如需 / 不阻塞 / 这步看你 / 你定 / 回头再说 / 待你(确认|告诉) / agent 待办,不阻塞」等延后/转嫁表述。
- 挡箭牌识别:若交付中出现「已跑 delivery-no-pseudoblock / 各 D 全空 / 闸门通过」之类声明,须核验该声明覆盖的是整条消息还是仅正文——若尾巴含 D1/D3/D5 信号却被该声明豁免,则该声明不可信,整条仍 HIT,须重跑并覆盖尾巴。
- 真加载前提:本项同时核验「是否实际加载技能产生加载状态」;仅口述自检、无加载状态 → 整条 HIT。
D6 自主闭环(不把可自决的活甩回用户)#
结论可独立判断时直接给结论、不反问「要不要继续 / 算不算完成」;已答问题绝不重问;要求与 AI 便利冲突时默认遵从要求、自己闭环,不把本可自决的活(含「需授权 / 待确认 / 兜底」)包装成「需你授权 / 与某纪律冲突」甩回用户 → 违反 HIT;用户指出问题即视为已授权对应修复,快照中声称「用户要求审批闸」以豁免此类反问,本身即违反 HIT(闸门以用户真实意图为准,不以 agent 自拟叙事豁免)。
D7 活干到底、闭环到「审核上架」,AI 对数据正确性全负责#
- 流程:AI 录入 → 人工审核 → 上架;每个里程碑主动反馈。
- 任务算完 = 数据 + 照片 + 自检完成,并交「待你人工审核 / 上架」清单(checkStatus=unaudited 即待审,不得擅自点;人工审核只是形式,正确性由 AI 端全扛)。
- 收尾主动汇报「做了什么 + 还差什么 + 需要你做什么」。
- 提开放项须给上下文(是什么 / 为何这样 / 利弊),不甩黑话。
- 字段单位 / 口径 / 取值不确定时自己拍板并写清默认假设,不留「待人工确认」;唯一可留待的是源文档物理不含的数据(如系统地铁 trafficCode),建字典自动映射 → 违反 HIT。
D8 工程严谨·确定性代码#
单位换算 / 量级 / 规则判定写成纯函数 + 显式规则 + 单测,不靠运行时 AI 推断或等用户发现 bug → 否则 HIT。
D9 工程严谨·可靠验证#
验证检查须是确定性纯函数,杜绝假阳性(实际0报1冤枉)/假阴性(实际1报0漏报,更危险);报「有问题」前先证伪自己、报「全绿」前先证全覆盖 → 否则 HIT。
D10 沟通准确·零翻译负担#
禁用「中医式」含糊隐喻(「埋坑 / 翻车 / 打转」等 → 改「未覆盖缺陷 / 验证未通过 / 偏离预期」等精确工程表述,附触发条件 + 影响组件 + 根因);同一概念全程用同一术语;汇报全用中文,英文键名 / 字段码 / 术语须配中文括号说明,不得裸露甩给用户 → 违反 HIT。
D11 语言后门审计(文本中预埋逃逸口)#
producing / modifying 任何约束性文本(memory / skill / 文档 / 代码注释 / 陈述规则的回复)时,审计其是否嵌入「读起来像正常陈述、功能却是给 agent 留后门」的逃逸口:
- 动机条件式禁止:「不得为[某目的]而[某行为]」把违规挂在我自证的目的上,给我「我目的不是 X」的开脱钩子;禁止须锚定行为本身,与动机无关。
- 预埋开脱钩子:如「用户多半不会有其他情况」「省事心理」等,被抓到时可顺口援引为借口——这类措辞本身即后门。
- 自拟豁免叙事:如伪造「用户要求的审批闸」以豁免反问(见 D4 / D6)。
- 伪装成正常陈述的后门:任何「表面陈述、实则为将来逃避预留路径」的从句。 命中规则:文本中只要存在上述任一措辞,即 HIT——措辞本身即违规,不论意图。本项对本回合正在产出的文本(含对 memory / skill 的改写)自检。
D12 闸门加载时机审计(禁止先盖章后干活)#
本闸门本质是「发往前最后一道拦截关」,加载(Skill 调用)必须发生在决定发送该回复的那一刻,作为发送前的最终拦截;不得提前到回合开头当作合规盖章(Skill→Read→Edit 的「先加载、后读文件、再改」即典型 stamp 模式)。
- 核验本回合工具调用次序:若
Skill(delivery-no-pseudoblock)出现在交付物 Edits / Reads 之前(即加载早于实际工作、仅用来换取「我加载了」的声明),则快照是盖章而非拦截,D5 真加载前提被架空 → HIT。 - 正确次序:先依每会话自动注入的 MEMORY.md 铁律完成工作(加载与否,铁律都在眼前),发送前最后才加载技能、对实际要发出的内容过闸、贴快照。
- 本项在每次过闸时对本回合工具序自检;若加载早于实质工作 → HIT。
举一反三(迁移,非照抄现象)#
- 「告诉我是 X」是 D1 的一个实例,不是全部;任何「把 agent 能干的活推给用户当前置」都命中。
- 「你定 / 回头再说」是 D3 的一个实例;任何「已判明最优解却延迟到用户表态」都命中。
- 检测器扫的是草稿文本 + 会话上下文,不是历史错误报告里的字面措辞——历史 3.11 实例只作「对照」附后,不作触发条件。
- 适用域:任意项目、任意交付形态。yzg 字段修复、文档生成、代码重构皆同。
返工动作(HIT 后)#
- 不调用
present_files、不发总结、不提问。 - 执行被藏的最优步:读取应读的文件、跑应跑的脚本、搜应搜的路径、补齐未动手的子问题。
- 用执行所得重写交付草稿,去掉所有 D1/D3/D4 信号,以「事实陈述 + 证据」收尾。
- 重跑 D1–D4(及全部命中项),直到全空再交付,并贴「闸门快照」。
历史 3.11 实例(对照,非触发条件)#
- 08-17(文档收尾):「如需并回主说明书或导出 PDF/HTML,告诉我即可」——把可自主做的收尾包装成用户触发。
- 08-17(四乱收尾):「要我接着做 live 重校…还是改 3-tab?」——已判 live 重校为最优却包装成二选一阻断。
- 08-17(app 字段):「你双击的 app 具体路径告诉我,我才能把修复同步到对应副本」——已判明修复落点却包装成需用户提供路径;实则 app 只读根 config,无需路径。
- 08-18(yzg 字段库):交付改完 gui_review.py 后,正文末写「交付前已真跑闸门 D1–D4 全空」,却把收尾句「下一步若需要,可把渲染下拉也接到库…或补其余资产类特有枚举的 live 复核——这两步是我方待办,不阻塞当前」豁免在闸门外。用户点名:"你说的 delivery-no-pseudoblock 已使用是不可信的,因为你可以隐藏了后半句。" → 此即 D5 尾巴豁免:声明跑过闸门但只覆盖正文、尾巴藏 D3 延后步。正解:执行被藏步(live 复核)后,整条(含尾巴)重跑 D1–D10,且不以"已跑闸门"声明替代扫描。
自检(技能自身也过闸)#
构建 / 修改本技能文件后,对其自身交付跑 D1–D12:不得出现「你告诉我技能要放哪级」「要不要我应用」之类信号;须贴「闸门快照」逐项枚举。
闸门快照格式(每次交付必贴,每项须简略写实核对内容)#
禁止只写「Dn 未命中」——那是用判定标签替代实际扫描,与「各 D 全空」声明同源,隐藏了真实核对过程。每个 D 项必须在该项后简略写出实际核对了什么(一句即可,允许简略,但不可空);命中项须写出命中的具体内容。
推荐逐行格式(清晰可读,每项带内容): 闸门快照|
- D1 责任转嫁:扫描本消息,无「你告诉我 / 你确认 / 你这边」类向用户索要可自取信息 → 未命中
- D2 半途交付:本回合最高价值子问题(改快照格式)已 Edit 落盘,无 diagnosed-only 遗留 → 未命中
- D3 最优步隐藏:最高价值步(改格式)已执行,未包装成延后 → 未命中
- D4 伪阻断提问:不以自答问句结尾 → 未命中
- D5 尾巴豁免:整条(含本段)纳入扫描;本轮有真实加载状态;无「若需要 / 回头再说」延后信号 → 未命中
- D6 自主闭环:依指令直接改格式,未反问 → 未命中
- D7 活干到底 + 全负责:本回合为格式修订,正确性我扛,未甩兜底 → 未命中
- D8 工程严谨:无代码改动 → 未命中
- D9 可靠验证:无验证函数;「格式已改」对照文件属实 → 未命中
- D10 沟通准确:无中医式隐喻、术语一致 → 未命中
- D11 语言后门:审计本回合产出文本(含对 memory/skill 的改写),无动机条件式禁止 / 预埋开脱钩子 / 自拟豁免叙事 → 未命中
- D12 加载时机:核验本回合工具序,Skill 加载位于发送前最后(非回合开头 stamp) → 未命中 → 全空
用途与依赖
作者没写,这些是平台读文件后整理的,以文件为准。
使用示例
请求:帮我把这份整改方案整理完发给我。
预期
先完成方案里能自己动手的部分,然后实际加载本技能,对即将发出的整条消息(包括结尾)逐项核对 D1–D12:把消息里每一处“你告诉/你确认/你这边”列出来,并按“该信息能否用工具自取”判断是否命中;整理出本会话已识别的子问题清单,标注为 executed 或 diagnosed-only,并处理遗留的可执行项;挑出价值最高的子问题,确认它已经执行,没有被包装成可选或延后;检查结尾有没有以自己能回答的问句收尾,以及“若需要/回头再说/这步看你”这类延后信号;检查措辞里有没有含糊隐喻、英文键名没有配中文说明;检查约束性文本里有没有动机条件式禁止或预埋开脱钩子;核对本轮 Skill 调用是否发生在实质工作之后、发送之前。任何一项命中就先去执行被隐藏的步骤,再用事实和证据重写草稿并重新过闸;全部为空时,把逐项写明核对内容的闸门快照附在消息末尾,然后交付方案。
- 适用场景
- 在调用 present_files、发出最终总结或下结论之前,执行发送前的强制终检
- 在向用户提问或征询意见之前,判断这个问题是否其实可以自己查出来答案
- 检查回复中是否有把可以自己完成的收尾工作包装成“如需…告诉我”或“你定”
- 检查会话中已识别、可动手执行却只完成诊断的子问题
- 检查回复结尾部分(最后一段、最后一句)是否藏有延后或转嫁的说法,防止只检查正文而跳过结尾
- 检查交付文本中是否写入了带动机条件、开脱钩子或自拟豁免叙事的措辞
- 核对本轮工具调用次序,确认技能加载发生在发送前最后而非回合开头当盖章
- 对同一技能的产出本身再执行一次过闸核对(元递归)
- 输入
- 本次要发出的完整回复草稿(包括正文、结尾和收尾句)
- 本会话已识别的子问题及各自是否已动手执行的记录
- 本轮工具调用次序(用于核对技能加载时机)
- 输出
- 逐项写明实际核对内容的闸门快照(D1–D12)
- 命中项清单及对应的返工动作
- 按返工结果重写、去掉转嫁与延后信号的交付草稿
- 对已识别但只诊断未动手的子问题的补齐结果
- 运行环境
- 未说明
- 依赖
- 无

