9.3 KiB
Raw Blame History

name, description, disable-model-invocation
name description disable-model-invocation
回放评估正文质量 执行正文 A/B/C 三臂隔离回放:构造并校验三臂 WriterContext、跑写手与盲评、结算预算与 raw 租约,产出逐样本脱敏结果。需要用真实作品验证卡索引对正文质量是否有增益时使用;不产生 Gate 终态,不把原书正文写进仓库。 true

正文回放执行(scenario: writer_replay | 三臂单变量 | 上下文=冻结到 as_of 的历史)

本 Skill 只做正文侧回放执行。细纲回放编排归 回放评估细纲质量;真实五章配置装配归 准备正文回放数据;评分口径归 评估内容质量;Gate 终态归 判定质量是否合格;角色调用、CAS 与 raw 归 执行角色任务 与 记录运行证据。依赖箭头只向下。

输入

  • --config:当前中文身份基线为 configs/writer-gate-a-deep-space-v1-cn-skills.json,预注册深空之影五章:489 战斗、321 人物对话、544 转折、199 信息揭示、523 老角色回归。该文件的运行探针为 dry_run,只能证明配置构建与哈希合同;真实 execute 必须先由 验证角色运行能力 取得 successful probe,再由 准备正文回放数据 重新装配仓外配置。角色、运行时、模型策略、prompt 或 schema 任一变化后,必须更新能力证明。不得根据候选结果换章、换场景分类或改冻结点;每个冻结点必须等于 targetChapter-1。
  • commonControls:预注册选择器版本、选择器规范 JSON 原始字节的 SHA-256、inputProvenance=oracle_reference_scaffold、统一 maxContextChars=140000。五个样本的 A/C 补充原文预算统一预注册为 2000 Unicode code point,loader 在读库前机械核对,不得按实际文本抬高或降低。
  • writerContextInput:仓内基础配置只允许 contentMode=sanitized_contract_fixture,为 A/C 各提供恰好 2000 code point 的合成脱敏补充原文,用于机械证明合同、冻结与创作输入差异;这些文本不得来自原书。真实临时配置必须改为 canonical_frozen_prose。

三臂都必须构造并校验完整 WriterContext v1,固定 mode=diagnostic_only、purpose=evaluation、acceptanceEligible=false。adapter 随后投影 WriterCreativeInput v2;writer 模型只看创作投影,看不到运行身份、manifest、hash、实验臂或验收状态:

  • A:evidenceStrategy=historical_prose_only,保留连续四章脱敏基线,不放 indexHints,patternReferences 恒空。
  • B:evidenceStrategy=card_index_only,只放 retrievalResult.indexHints 与冻结公共 patternReferences,proseEvidence 为空;这是合同内可审计的诊断基线例外,不是生产旁路。
  • C:evidenceStrategy=card_index_plus_prose,保留连续四章脱敏基线,并放冻结 indexHints、与 B 相同的公共 patternReferences 及配置中的补充原文证据。

A/C 单变量回执在 WriterCreativeInput v2 上比较。正式 Gate A 的 allowedDifferencePaths 必须非空,A/C contextSha256 必须不同,且所有路径只能位于 factConstraints、proseExcerpts 或预注册的 patternReferences;indexHints 等模型不可见字段的差异不能使样本合格。

篇幅只能用冻结点前连续四章汉字数经 calculate_target_chars 复算;Gate A 固定 hardEventCount=1、foreshadowingActionCount=0、requiredSceneCount=0,禁止读取目标章实际长度。expectedLength 必须等于机械目标的正负 30%,再受 2000-10000 边界限制。

输出

逐样本脱敏结果,提交给 判定质量是否合格 构建 Gate 输入。本 Skill 不产生也不改写 Gate 终态。

indexHints 每项只能含 cardId/name/type/content/sourceId/sourceVersion/asOf,只用于 diagnostic_only 的 evaluation/diagnostic,不得进入 writer 或 semantic detector 的模型输入。可信组装器只能把经来源回读确认的内容转成 factEvidence / factConstraints;eval_draft 的 content 不能直接成为 supported/pass 依据。所有 asOf 与来源章号不得超过样本冻结点。

卡没有持久化 sourceRefs 时,允许把冻结线内最近三个里程碑章的整章 Canonical block 作为降级回读,但每个引用必须标记 sourceType=card_chapter_proxy、对应 proseEvidence.purpose=card_chapter_proxy,不得冒充精确片段;代理章必须实际出现卡规范名或选择器预注册的合法别名,否则失败关闭。

newCharacterRatio 是具名 requiredCharacters 中在 asOfChapter 前无记录的角色比例,由 loader 在同一只读事务内扫描冻结历史正文重算,卡内容不参与判定。泛称角色不猜:第 544 章的"内应"必须记 newCharacterRatio=null 与 newCharacterRatioStatus=unresolved_generic_role,不得默认成 0。

盲评走 writer-blind-input-v4,绑定预注册 scenario 与 writer-replay-rubric-v2;三位评委的场景或策略版本不一致时在模型调用前失败关闭。模型输入不得含 indexHints、卡 manifest、evidenceStrategy、真实 A/B/C、各臂 WriterContext、raw 路径、reviewer 身份、任何 hash 或其他评委结果。映射只留在编排器内存,评分完成后才去盲。

数据边界

不直接连数据库;真实配置由 准备正文回放数据 在只读事务中装配后以文件传入。

原始 prompt、response、候选、标准事实摘要与完整输入只能留在仓库外受控 raw vault,受显式保留授权、租约与迁移回执约束。禁止把完整 Prompt/Response、供应商原始响应、原书正文、完整目标细纲、token、密钥或未脱敏授权资料写入 Git 仓库或安全摘要。

预算合同分为不可变 plannedCalls 与独立安全上限 maxCalls。Gate A 预注册 writer 60 次(15 基础 + 最多 45 篇幅修订)、semantic detector 24 次(15 基础 + 9 纠错/重试)、blind judge 45 次;各 maxCalls=150、单次 cap $5、总预算 $2250。启动预留只按 plannedCalls * maxBudgetUsdPerCall($645)。每次调用前账本同时检查角色计划槽位、maxCalls、累计实际成本与未执行计划的最坏预留;调用后只能用可信 RoleExecutionReceipt.totalCostUsd 结算。缺回执成本、重复/错序结算、单次 cap 或总预算越界均失败关闭。

用法

dry-run 只输出计划、manifest 与上下文摘要,不调用任何模型,不生成候选正文,也不得声称真实回放完成:

PYTHONPATH=muse/lifecycle/quality/skills/replay/回放评估正文质量/scripts .venv/bin/python -m run_writer_replay \
  --config muse/lifecycle/quality/skills/replay/回放评估正文质量/configs/writer-gate-a-deep-space-v1-cn-skills.json \
  --dry-run

--execute 必须在创建 runner、raw vault 或调用模型前校验预算、授权、冻结快照、三角色 profile、schema、prompt、内容模式、调用计划与显式 runtime 认证;任一不一致失败关闭。固定 Opus profile 使用 MUSE_ROLE_OPUS_BASE_URL / MUSE_ROLE_OPUS_AUTH_TOKEN,模型不可用或认证缺失时返回受控阻断,不消耗预算槽位也不建立 raw vault。正式 execute 还必须显式传 --raw-archive-dir <仓外绝对目录>。

红线

正式 --execute 会发起长时间、多角色的模型调用,运行方式本身是合同的一部分:

  • 正式 execute 必须由持续等待的前台受控会话运行,全程阻塞到进程自己退出并读到退出码;禁止后台启动。后台启动会被外部任务管理器在数分钟后按 status=killed 收掉,Python 来不及进 finally,留下 open raw lease、无 manifest、无费用回执。
  • 禁止用不带 pipefail 的 python ... | tail 捕获退出码:管道退出码默认取 tail 的,Python 的非零码被静默吞掉,失败关闭看起来像成功。
  • 进程内对外部终止只承诺 SIGTERM / SIGINT 可收口:两者转成受控异常后迁移 raw、写安全 manifest、把在途且无回执的调用记为 costUnknown=true / failureReason=EXECUTION_COST_UNKNOWN 并禁止后续调用,最后非零退出。SIGKILL 无法捕获,只能事后靠 raw vault 迁移恢复与 CAS 扫描收敛残留。
  • 受控终止进入最终迁移后,SIGTERM/SIGINT handler 必须保持 defer/ignore,覆盖 raw migration、CAS 收口与 manifest 原子写入;manifest 发布完成后才恢复调用方原 handler。
  • 单个 raw lease 覆盖整轮串行回放。启动时按三角色中最长的单次 timeoutSeconds + cleanupMargin 校验剩余租期,每次模型调用前按当前角色同一公式复检,复检必须发生在消耗预算槽位和外发调用之前。租期不足时在下一笔调用前安全停止、迁移已有 raw 并保留未执行计划。
  • 运行结束以 rawDisposition.status=migrated 与 raw-vault-migration-receipt-v1 证明产物已迁移,不再以删除后的 closed 作为完成条件。
  • 生产 --execute 在创建 vault 或 runner 前拒绝脱敏夹具;脱敏夹具只可由离线评测适配器执行。

复利合同

  • 消费:授权预算、冻结上下文与预注册样本;执行三角色回放。
  • 回写:本闸道不单独落 example_lesson;status=completed 的效果信号由 回放评估细纲质量 登记,盲评稳定性由 评估内容质量 登记。