--- name: 核对内容一致性 description: 检查正文或细纲候选的结构、事实、角色状态、能力代价、伏笔和证据缺口。候选进入用户决策或独立评分前使用;只产检测报告,不修改候选。 disable-model-invocation: true --- # 检测(scenario: validation / consistency_check | purpose: detection | 槽位: 检测→detector) 何时用:候选章生成后、用户三决策前的伴随检查(C4);也可对既有章回溯检查。 ## 正文候选执行顺序 1. 先运行 `scripts/check_writer_candidate.py`;它只做确定性机械硬门,不调用模型。 2. 机械硬门阻塞时直接返回结构化失败码,保留审查轨迹,不调用语义 detector。 3. 机械硬门通过后,编排层构造 `semantic-detector-input-v3`(生产构造器:`scripts/run_writer_semantic_detector.py` 的 `build_semantic_input_v3`,从 WriterContext + 候选投影并闭集校验,sourceRef 清洗成合同形状),再以 fresh 无会话调用执行一个候选的语义核查。 4. 模型只返回 `semantic-detection-draft-v3`;adapter 负责绑定输入、候选、上下文、模型回执、字符 offset、状态和报告 hash,形成 `SemanticDetection v3`。异常、非法结构或绑定不一致全部失败关闭。 当前机械硬门覆盖:WriterContext v1、CandidateEnvelope v2、上下文与候选 hash、篇幅、细纲事件/角色/伏笔/章末钩子锚点。事实断言、角色知情范围、能力代价、语义冲突、新设定识别和证据缺口属于 semantic detector,不得塞回 writer 输出或机械门。 ## 元数据驱动(本功能的核心机制) **检查清单由字段生成,不硬编**:凡 aiContext 含 `detection` 的字段,自动成为一个检查项—— | 字段(来源) | 检查什么 | |---|---| | character.知情范围 | 角色说出/表现出不该知道的事("说漏嘴"是第一大穿帮) | | character.行事逻辑/说话方式 | 言行与语言指纹逐一核对 | | power_system.代价限制 | 境界与能力是否越过体系代价 | | location.规则特例 | 地点规则是否被违反 | | item 能力边界 | 物品表现是否超出卡面 | | 演变历程(各实体型) | 演变连续性/跳级穿帮(上一章还4级、这一章突然7级;登场/退场节点缺失或时间线倒挂) | | outline.伏笔动作 | 埋/推/收是否照细纲执行,有无擅自新开或提前回收 | | work_core.谜底与真相/结局方向 | **防提前泄底**——这正是检测可见底牌的原因 | | style 黑名单与画像 | Grep 逐词扫黑名单;宣告情绪/形容词堆叠/无三件套场景抽查 | | narrative_state | 时间线/即时局面/角色位置衔接 | schema 给字段加上 detection 用途,检查项自动+1,本 skill 与 detector 一字不改。 ## 输出合同 模型草稿必须精确包含: `schemaVersion / claims[] / findings[] / assertionVerdicts[] / hardConstraintVerdicts[] / newSettingCandidates[] / evidenceGaps[]` `claims` 明确候选中的事实主张与覆盖状态;`findings` 记录可定位问题;verdict 完整覆盖输入登记的 assertion/constraint ID。`newSettingCandidates` 登记写手新写出的设定(提案,不是正典);与既有正典冲突才进 `findings`/`conflict` 并失败关闭。只有针对**已有正典/前文章节**的 `evidenceGaps` 或 `unknown` 可以触发编排器补证;把新设定写成缺口不触发补证。纯机械失败或明确语义失败直接拒绝,不以同一输入重试。补证后必须冻结新的上下文快照和新的 WriterCreativeInput,再启动 fresh writer 调用。正典检索零命中时,编排器把缺口升格为新设定提案,当前候选进人闸。 正文回放检测每臂最多调用三次。模型已返回但结构/引文不合约时,可用剩余额度回喂上一稿纠错;带可信成本回执的瞬时 `SEMANTIC_DETECTOR_API_ERROR` 最多重发同一输入一次,并与结构纠错共用三次总额度。认证、预算、本地合同、成本未知或连续第二次 API 错误均失败关闭,不得重试绕过。 最终 SemanticDetection v3 由 adapter 增加运行身份、候选/上下文 hash、字符 offset、模型回执、状态和报告 hash。模型不得输出这些可信字段。 ## 细纲回放分支(`fine_outline_replay`) 何时用:`规划下一章` 产出的 `fine_outline` 候选进入独立评分前。检测器只看冻结到 `as_of` 的规划上下文和候选,不看目标章标准事实,不把评测答案倒灌回规划侧。 检查对象和证据格式: | 检查对象 | 检查项 | 高严重度条件 | 证据必须包含 | |---|---|---|---| | 候选结构 | 必填字段、目标章号、事件 ID、事件顺序 | 缺字段、重复事件或目标章错误导致无法评估 | 字段路径 + 候选值摘要 | | 因果链 | 事件触发、行动、结果方向是否自洽 | 后一事件无前置、结果与前置状态矛盾 | 事件 ID 对 + 冲突原因 | | 实体状态 | 角色/势力/地点/能力是否违反冻结事实 | 引用未来事实或越过 N 时点能力边界 | `sourceId` + 冻结字段 | | 伏笔动作 | 埋、推进、回收和不确定标记 | 将未知或未来回收写成确定事实 | 伏笔标识 + 当前台账定位 | | 来源引用 | `sourceRefs` 是否来自快照、是否包含目标章及以后 | 目标章/未来来源出现在候选引用中 | 来源 ID + 章号范围 | | 未知项纪律 | `unknowns` / `assumptions` 是否显式承载缺口 | 用无来源断言替代未知项 | 候选字段路径 | 机器报告的类别是闭集:`findings.category` 只允许 `candidate_structure`、`causal_chain`、`entity_state`、`foreshadowing_action`、`source_reference`、`unknowns_discipline`;`coverageFindings.category` 只允许 `frozen_context_gap`。未登记类别不得用近义词或变体绕过,编排器必须失败关闭。 报告仍然只产审查结果,不修改候选。回放中任一高严重度问题阻断该臂进入 judge;目标章新角色是否缺卡需要目标章标准事实,detector 无权判断,归 judge/eval。 ## 红线 只产报告,不改任何创作文件;证据先行——无依据的观感问题归「建议」并标明主观;底牌信息仅用于检测判断。 ## 数据边界 - 可发起受治理的外部模型调用;不落库除非合同另有声明。 - 不写 Canonical、不改正式规划。 ## 输入 - 用户明确点名本 Skill 所服务的创作阶段任务包(作品、章节/场景范围、冻结上下文摘要)。 - 只消费 本 Skill 的 `references/` 目录 中与当前阶段相关的合同段落。 ## 复利合同 - **消费**:候选正文与冻结上下文 / 大纲锚点。 - **回写**:本检测槽不单独落 `example_lesson`;阻断结论进入 `写下一章` / `回放评估细纲质量` 后由生产或评测链登记效果信号。