2026-07-09 创始人方向性质疑经五路审计坐实,正式推翻两个历史结论(80% 天花板=口径混淆 +stripCode 污染;玩法坏死主因=判卷合约缺口误标),病根三条=判定语义膨胀/判卷合约反噬/ 真相层缺失。本批为纯文档批: - 诊断档 docs/brainstorms/2026-07-09-生成线harness方向性诊断与换轴方向.md(人审版) - SoT 修订×4(双评审修入、docs-gate 绿):质量模型裁定三(L1 双证据=机械预筛∧独立模型 玩法判定,fail-closed+金标校准)/图说护城河改「分层验收」/验收门 §2.4/AGENTS.md §3.1 - 执行版 plan×2:07-09 三波换轴 + 07-10 验收v2(测试agent替E/G/H,创始人已批, 含附录A SoT 修订逐字终文与波0-3 工单拆分) - 策展层定点勘误:tech-decisions/三份生成线 skill 追加 2026-07-09 勘误注记(过九门 自此只算机械预筛),feature-design-doc 固化「人审版=brainstorm/SoT、执行版=plan」定位 - 在飞板登记 W-AXIS Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
30 KiB
date, topic, status, 上级, sot-impact, 关联
| date | topic | status | 上级 | sot-impact | 关联 |
|---|---|---|---|---|---|
| 2026-07-10 | cheap-gen-acceptance-v2-tester-agent-plan | 双评审收敛终稿待创始人批(初审 Codex 10 项+Opus 8 项全修入;差量复核 Opus 5/5 FIXED+3 小项、Codex 3 FIXED+2 PARTIAL+1 矛盾,余项已全部修入;方向由创始人 2026-07-09 拍板「拆着杀」、判定档 2026-07-10 拍板切 MiniMax-M3) | docs/plans/2026-07-09-001-feat-生成线验收换轴三波-plan.md | 申报——质量模型 SoT(游戏质量与爆火能力.md)裁定一/二/三与 §2 表 L1 行、验收门.md §2.4 与 F_wiring 归类句与首局门段、agentic运行时架构图说.md 分层验收与 C5/C6 段;主修订处逐字文案见附录 A,次级引用面按附录 A 末表在波 0 内落并对照验收;评审通过前 SoT 不动 | cheap-worker/(cheap_studio/cheap_verify/cheap_run/cheap_gates/cheap_service_driver/cheap_service_app/cheap_modify/cheap_roles/result_out/hard_genre_batch/hard_genre_xtheme)+ tier2/gen-worker/worker/gate_judge.py + game-runtime/games/_wg1-gen/_shared/play.cdp.cjs + game-runtime/tools/amodel-gen/(gen/tools)+ contracts/prompts/04-config/cheap-system.md + tier2/config/generation.yaml + game-cloud ReadinessScorer/GenMetrics(读侧)@ d3baf86e |
生成线验收 v2 · 测试 agent 替 E/G/H 执行计划(W-AXIS-V2)
W-AXIS 三波(2026-07-09)把验收权威从机械门移交给了独立模型判定,但判定的证据仍由旧机械链生产:tap-targets 驱动器按游戏自报的 _forensicsView 契约去玩,E_live/G_input/H_progress 三门再按同一契约读数。n=5 重测基线(25 局,cheap-worker/results/wax-baseline.jsonl)与随后的逐局破案证明,这条证据生产线本身就是最大的失败源。本计划执行创始人 2026-07-09 晚拍板的「拆着杀」:契约无关的机械门降为地板保留,依赖契约的门连同驱动器与取证契约整体退役,由一个测试 agent(视觉引导真玩 + 玩法地板判定合一)接管验收证据的生产与裁决;修复侧不新建角色——现有 writer 续修回路就是修复 agent,换的只是喂给它的反馈来源。判定与测试员模型档 = MiniMax-M3(创始人 2026-07-10 拍板,动因与边界修正见附录 A)。
双评审(Codex 10 项、Opus 8 项,2026-07-10)的全部发现已修入本稿,其中三处硬伤直接改写了初稿的口径:机械地板从「五门」修正为「四门投影」(F_wiring 的期望前缀集唯一来源就是 play-spec,拆契约后它必然坍缩,不能再称契约无关);生产 Service 路与 A11 修改链纳入波 1(初稿只接了 CLI 批跑路);回退机制从复用 judge.blocking 改为独立的 acceptance.mode 三态开关(布尔开关承担不了「判定是否阻断」与「验收器版本选择」两种语义)。
1 为什么换:三组已核实数字
基线失败的多数出自验收仪器自身缺陷,不是游戏差。 n=5 基线 25 局,操作口径 11 局失败,其中判定 cap 截断误拒 1 局、判定图像盲假阴 3 局、取证契约缺陷坑杀好游戏 2 局、判定边界偏严 1 局——仪器与 harness 归因 6~7/11。真游戏缺陷只有 2 局(boot 空指针、局内点击全哑),生成线 stall 1 局。质量口径修正后真实率 18/25 = 72%,而失败集中的 puzzle/sim-business 两品类,每局失败都烧到 ¥10+ 软停——因为契约仪表盘骗的不止是门,还有模型自己:它收到的门反馈与它的代码对不上,只能反复续修直到熔断。
逐局破案坐实「一份固定代码玩几十种游戏」的结构病。 五局失败全部下钻到代码行:hard-puzzle-r2 与 hard-sim-business-r1 是同一个冻结闭包缺陷——模型把 phase/targets 算在 _forensicsView() 外层、state 闭包之外,host 只调一次,导出永远定格 boot 值;两局的模型都在注释里写明白了这个坑该怎么防,然后放错了一层。游戏本体真浏览器一拍就点开,驱动器、三门、续修反馈三方全在读一块失真的仪表盘。hard-puzzle-r3 是真不可玩(hitTile 四参函数只传三参,局内点击全部静默吞掉),hard-sim-business-r3 是 boot 空指针但门反馈无栈无行号修不动,hard-puzzle-r5 是生成 stall。品类失败集中的原因由此清楚:puzzle/sim-business 的进展链条最深(菜单→观察→解题→计分、排队→点单→配方→交付),取证契约面最大,出错概率与杀伤都最大;轻叙事品类点一下就有进展,契约面小,全过。这与创始人既有红线「模型能力的事绝不写成代码校验」同构——E/G/H 正是在用代码回答「这游戏玩起来对不对」。
Spike 考卷证明测试 agent 方向成立,且量化了它的弱点。 用 10 局已知真相的基线游戏做考卷(spike 资产随波 0 入 spikes/playtest-agent/),M3 当测试员:已知真相 9 局判对 7 局;3 局真坏局全部拦住、未出现假阳——trpg-r3 报「战斗场景缺掷骰按钮和面板无法操作」与人工亲眼的空壳一致,puzzle-r2 报出 8undefine 渲染错,而这张局内画面旧管线从未见过(旧驱动器从没进过 play)。2 局假阴(sim-business-r2、heritage-r4)经人工按视觉坐标复点裁决:游戏命中完全正常(红茶→顾客,serve 日志立现、score 0→7→14),是测试员接地失误后把自己的失手归因成游戏缺陷;heritage-r4 另有 14 步预算装不下四道工序节拍的成分。结论:未见假阳是这套验收的第一性优势;假阴以重测成本为代价、可通过预算与二掷确认压低;「失手后错误归因」是 M3 级测试员的头号风险,必须由设计约束(§3)而非模型自觉来治。
2 目标形态:v2 验收 = 四门地板 ∧ 测试 agent 裁决
机械地板 = A_boot / B_uncaught / C_frame / D_render 四门的显式投影,权威字段独立。 四门共同特征是契约无关——读装载标志、未捕获异常、引擎帧号、canvas 像素,不需要游戏配合任何自报接口,零成本、确定性、抓真死(基线里 boot 空指针正是 A 门拦的)。落地形态是一个投影函数与权威字段:消费层从 verdict.guards 显式抽取四门求与,记 floor 段({pass, gates}),所有预筛消费点一律读它;harness 原生 verdict.pass 保持 harness 语义不动(driven 时九门全量 AND、undriven 时七门硬集),不原地改义——初稿把「五门」与 verdict.pass 混为一谈,是评审纠正的第一处硬伤。
F_wiring 降观测,不入地板。 它的判据 = 命中 spec.expectedEngineCallPrefixes,而该期望集唯一来源是 play-spec(cheap_run._build_play_spec 按驱动器族写死);拆掉 play-spec 后 F 会静默坍缩成「任意引擎调用即过」,不再证「真接线」。验收门 §2.4 本就把 F 归为 driver 依赖门,初稿称其契约无关是事实错误。「真接线」的关切移交两处:check 静态层(波 2 增补源码级插件调用存在断言——现 check 只有结构存在门与红线词法扫,无此断言,须新增而非「现有」)与测试员的观察项(玩的过程中音效/计分/表现是否真实发生);F 门结果照落 verdict 供观测,一个版本窗口后各消费面停止读取(verdict.json 的 harness 输出本身永不删改,tier2 与历史复跑照旧)。
E_live / G_input / H_progress / I_control 四门退役:E/G/H 依赖 _forensicsView 状态导出与驱动器真玩,I 依赖 per-game controlCheck 契约,全部随契约拆除(降观测一个版本窗口,后摘)。
测试 agent = 真玩与玩法地板判定合一,持 L1 判定半的阻断权。 输入只有 brief 与浏览器;它按人类可见的证据(截图 + 运行日志尾)视觉引导地玩——点它看见的,不是契约导出的;产出三样:①行动转写(每步动作/理由/落点)与全程截图序列,即验收证据链,落 evidence/playtest/——v2 起 gameplay 硬证据的唯一落点在此,harness 的 first-paint/after-play 在 undriven 下只是 boot 屏,降为装载观测,§6.13 亲眼验收、审核台与后端 trace 的截图指针随波 1 迁移;②布尔裁决,三类拒绝语义原样继承裁定三(broken/hollow/off_brief,判「有无」不判「多好」),外加图像通道自检(看不到图 fail-closed);③修复反馈,现象与推测强制分离(「我在第 N 步点 (x,y) 后画面未变」是现象;「可能是事件未绑定」是推测,必须标注)——这是对 spike 三次错误归因失效模式的直接约束,续修反馈模板只引用现象段。丰富度 LLM 评分(L2,非阻塞)不动,继续读源码走旁路。
统一验收编排器,CLI 与 Service 与 modify 三路共用。 生产线的验收权威不在 cheap_studio(那是批跑/实验路),而在 Service 生产路(cheap_service_driver 判定接线、cheap_service_app→cheap_gates 收口)与 A11 修改链(cheap_modify 确定性修改与模块重生成,现按九门全量验收)。波 1 交付一个编排器函数:输入 gid/brief/evidence 上下文,输出 floor ∧ playtest 裁决 + 修复反馈 + 记账,三条路全部改调它——创建与修改不允许两套验收标准。
修复回路复用现有 writer resume。 续修反馈的来源从门反馈模板换成「测试员现象报告 + 四门地板结果」;测试员与写手在会话与角色上物理隔离(测试员看不到源码与生成对话,写手拿不到测试员系统提示),「只吃运行证据、不吃自报」的纪律原样保留。
模型与成本。 测试员与判定档同一配置(genconfig judge.model,现 MiniMax-M3;出题≠被考的边界修正随附录 A 落 SoT)。spike 实测 ¥0.10.25/轮(814 步含截图),设计预算上限 ¥0.5/轮、单局验收(含 fail 二掷)≤¥1.5,对照旧链路契约困死单局烧 ¥10+ 的账,经济上净赚。测试员模型档是显式质量旋钮:M3 是下限起步,换更强档只改配置。
阻断、回退与灰度 = acceptance.mode 三态(genconfig 新键),judge.blocking 退回单一语义。 初稿想复用 judge.blocking 当回退位,评审证伪:该布尔在代码里的语义是「判定结果是否阻断」(False = ok 仍取预筛、判定照跑仅观测),拨它回不到「判定器读驱动器证据」的 W-AXIS 态;且波 2 拆除 play-spec/驱动器后,旧判定器的证据(driver 真玩截图、状态时间线)物理不存在,任何开关都造不出来。v2 采用:
acceptance.mode = v2(目标态):accepted = floor ∧ playtest,测试员阻断;acceptance.mode = shadow(波 1 灰度窗口):测试员照跑照落证据,accepted仍取旧口径——新旧并跑对照的合法形态;acceptance.mode = v1(回退态):W-AXIS 口径(driven 九门 + 判定器读驱动器证据)。时序约束:v1 仅在 play-spec/驱动器仍挂载的波 1~波 2 前有效;波 2 拆除后 v1 不可达,回退 = 版本化整体回退(prompt registry 版本 + git revert 波 2 提交),这是有意的单向门,写进波 2 验收前的放行检查。judge.blocking保留原语义(玩法裁决是否阻断)且缺省 true,不再兼职版本选择;配置键命名空间judge.*不改名(playtest是 summary 字段名,与配置键不对齐是刻意的)。
fail-closed 语义不变。 测试员评不出、看不到图、步数预算尽而无裁决,一律 degraded 不放行,落批次账与 result_out,人工复核从批次账捞(维持 W-AXIS 波 2 的 degraded 落点口径,不建独立队列)。
3 测试员设计要求:spike 实证转为约束
以下八件写进波 1 的实现验收标准,不留给模型自觉:
- 坐标协议钉死:测试员回路自截自用——
Emulation.setDeviceMetricsOverride390×844、DPR=1,截图像素与逻辑坐标 1:1,模型报的 tap 坐标即 CSS 坐标直接派发;与 harness 的 DPR2 取证截图互不掺和。协议(动作 JSON schema、退出码、超时、evidence 目录布局)以playtest/1schema 落档于实现文件头注。 - 坐标尺:截图上烧 50/100px 网格与轴刻度,模型照尺读数报坐标(无尺时 M3 偏 160
230px,有尺仍偏 6090px——必要不充分,还需 3/4)。 - 落点回显:每次 tap 后页面放亮黄圆环标记,下一帧截图可见上一步落点,照偏差自校正(narrative-r1 案:加回显后 12 步真玩通到结局卡)。
- runner 侧硬提示:同一坐标连点 ≥2 次即确定性注入警告文本逼换点,由 runner 代码保证,不靠提示词自觉。
- 反早退驳回:fail 裁决若独立落点 <3 处且非图像通道故障,驳回一次逼继续测。
- 预算随进展扩展:基础步数预算(缺省 14)在有进展证据(得分/关卡/日志推进)时自动扩到上限(缺省 24);两值进 genconfig。
- fail 二掷确认:测试员判 fail 且四门地板全绿时,重开一局再测一掷,两掷同 fail 才落 fail;二掷证据落
evidence/playtest/roll-2/,seed 由 runner 显式生成并记录进转写(禁隐式时钟种子),每掷前清 localStorage 与存档,保证两掷独立。pass 一掷即过,不加成本。 - 图像通道自检:裁决 JSON 强制自报「本轮是否真实看到截图」;看不到 → fail-closed degraded,归因「测试员图像通道故障」而非游戏缺陷(继承判定器 07-09 盲检修的教训;字段名在 playtest schema 内统一,与旧判定器 judge.json 的
imagesSeen是两套工具的两个字段,不强行对齐)。
4 字段与迁移协议(run-summary / verdict / trace 三层)
新增字段一次钉死,旧字段双写一个版本窗口,消费者逐个点名:
| 层 | 新字段 | 语义 | 旧字段(双写/并列一个版本窗口,窗口后停止消费——verdict.json 的 harness 原生输出永不删改) |
|---|---|---|---|
| verdict 消费层 | floor 段 {pass, gates:{A,B,C,D}} |
四门投影,预筛权威 | pass 照产照落(harness 原生,不改义,消费面停读)、E/G/H/I/F 结果(降观测) |
| run-summary | acceptanceVersion(取值随 acceptance.mode:v2/shadow/v1)、playtest 段(裁决/拒类/现象清单/degraded/成本/rolls) |
测试员裁决权威;shadow 行与 v2 行靠 acceptanceVersion 区分,防波 3 基线对账串数 | judge 段(双写窗口) |
| result_out/trace | trace.playtest(additive) |
后端消费 | trace.gameplayJudge(双写窗口) |
| 批账 | floorPass 列 + accepted + acceptanceVersion 列(每行必带) |
报表口径 | verdictPass 列(窗口内并列打印仅供对照,表头注明 harness 原生语义,不作判定输入) |
消费者清单与改点:cheap_studio._prefilter、apply_gameplay_judge 的 prefilter 入参、result_out.prefilter_pass/_build_trace/_map_failure_reason、hard_genre_batch、hard_genre_xtheme、worker/gate_judge.judge_cheap_verdict(续修触发器)、game-cloud 读侧 GenMetrics(gen_gate_fail 归因加 playtest 类目)与 ReadinessScorer(见 §5 首局维)。failureLayer 归因沿用三层语义,driver_contract 层随契约退役自然消亡(存量保留历史语义),新增 tester_degraded。
5 首局体验门与 D11 首局维的去向(被拆契约的直接下游,同波裁定)
现首局门是 H 门的 additive 派生(可玩 ≤2s / 首反馈即时 / 60s 品类闭环),证据全部来自驱动器真玩;D11 就绪分的首局维读 gatespec.driver + H_progress。契约拆除后两者失去证据来源,不能含糊成「观测漏计」。裁定:三断言由测试员转写接管——转写天然带时间戳与动作序列,首次有效交互时刻、首个可感知反馈、闭环达成时刻都可从转写机械提取,波 1 在 playtest 段落 firstPlay:{playableAtMs, firstFeedbackMs, loopClosed} 三字段;D11 首局维与 ReadinessScorer.scorePlayability 同波改读 trace.playtest(Java 侧小改,与 GenMetrics 归因补齐合并为一张随波 1 的跨仓工单,不再是「事后可选优化」)。首局门作为独立门名退役,语义并入 playtest 证据。
6 波次
波 0 · SoT 修订与 spike 资产入仓(半天;评审过即落)
- 目标:v2 的判定归属先在权威文本上成立,证据资产可检索。
- 边界:只动附录 A 列明的策展层文本与
spikes/、在飞板;不动代码;留痕层不改。 - 输入:附录 A(主修订处逐字终文 + 次级引用面清单);scratchpad 的 spike 三件。
- 产出:①主修订四处按附录 A1~A4 逐字落;②次级引用面(质量 SoT §2 表 L1 行、裁定二中依赖 occupied 驱动/score 断言的判定句、规范五的断言分界句、验收门首局门段与 F 归类句、运行时图说 C5/C6 与 driven 段)按附录 A5 表逐处修,修订注记统一「已裁定、随 W-AXIS-V2 波 1/2 兑现」——SoT 写裁定与生效条件,不把未来态写成当前事实;③spike 资产入
spikes/playtest-agent/(脚本 + 考卷终榜 + README:复跑方法、真相表、结论);④在飞板登记。 - 验收:docs-gate 七检全绿;主修订处
git diff与附录 A 逐字对账;次级引用面按 A5 表逐处人工对照,rg 复扫无「九门=验收」「五门」残留口径;spikes/README 按考卷真相表可复核。 - 回滚:纯文档,git revert。
波 1 · 测试 agent 生产化 + 三路统一接线(3~5 天;主体)
- 目标:spike 原型变成生产件,CLI/Service/modify 三路共用一个验收编排器,shadow 灰度可用。
- 边界:新增件(playtest 回路 + 编排器)+ 三路接线点 + 字段迁移(§4)+ 跨仓读侧小改(§5);不拆 play-spec/驱动器(波 2)、不动 prompt 正文(波 2)、不动 tier2 判据。
- 输入:spike 脚本(§3 前五件已实证);cheap_verify 判定器基建(
_NewapiVisionModel计费、fail-closed、真相层落盘、genconfig 旋钮);play.cdp.cjs 的 CDP 会话与起服编排;§4 迁移协议。 - 产出:①
game-runtime/games/_wg1-gen/_shared/playtest.cdp.cjs生产版——§3 八件全实现,playtest/1协议落头注,证据落evidence/playtest/roll-N/;②cheap-worker/cheap_verify.py新增run_playtest()(子进程封装/超时/成本记账/fail-closed/playtest.json真相层)与四门投影函数(floor 段的唯一产地);③统一验收编排器——accepted = floor ∧ playtest(mode=v2)/旧口径(mode=shadow/v1),修复反馈拼装(只引现象段);④三路接线:cheap_studio、cheap_service_driver+cheap_service_app/cheap_gates、cheap_modify(确定性修改与模块重生成)全部改调编排器;⑤§4 字段迁移与全部预筛消费点同批切读 floor 投影——判定语义单轨,无双语义窗口(含hard_genre_xtheme、gate_judge续修触发器);批账的verdictPass列窗口内并列打印仅供对照(表头注明 = harness 原生 driven/undriven 语义),不作任何判定输入——「双写窗口」只存在于报表列与 trace 旧段,不存在于判定语义;⑥§5 firstPlay 三字段 + 跨仓工单(ReadinessScorer/GenMetrics);⑦单测(fake 测试员覆盖 §3 八件与 fail-closed 各路径、投影函数、mode 三态)+ 真跑验收。 - 验收:pytest 全量绿;10 局考卷用生产件重跑:已知真相判对 ≥8/9、真坏局零放行,假阴经二掷+预算扩展 ≤1/6(sb2 与 heritage-r4 应翻为 pass);Service 真续修 E2E 一局(create→写→shadow 并跑→v2 切换→测→裁→回喂→收敛)与 modify 回归一局(create→modify→v2 验收),全链真浏览器截图硬证;shadow 模式下新旧口径对照表落批次账。
- 回滚:mode 拨回 v1(驱动器仍挂载,W-AXIS 口径完整可达);新增件全部旁路,不触旧链。
波 2 · 契约退役与提示清洗(1~2 天;依赖波 1 验收过)
- 目标:play-spec/驱动器/取证契约退出便宜档验收链,提示与工具面按真实加载链清洗到零残留,模型不再为死契约写代码。
- 边界:cheap 路验收消费层、play-spec 生成层、prompt 全加载链、amodel-gen check;九门 harness 判据代码不删(降观测,保 tier2 与历史复跑);tier2 双路门不动。
- 输入:波 1 的编排器与考卷回归;prompt 真实加载链清单(见产出③);
_template*脚手架。 - 产出:①验收消费——四门地板为唯一机械取值,E/G/H/I/F 结果降观测字段(照落 verdict 供对照,一个版本窗口后各消费面停止读取;harness 输出不删);增补 check 源码级插件调用存在断言(词法层,接替 F_wiring 的真接线护栏);②play-spec 生成与 tap-targets 驱动器从 cheap 验收链退役:
cheap_gates.ensure_play_spec调用摘除、cheap_service_driver._read_driver_type改读 playtest、gen.mjsNode 遗留路的 play-spec 自动产同批摘、golden-spec 对照工具(auto_vs_golden/bake_off)改挂测试员或显式封存,逐件裁定入清单;③prompt 全加载链清洗(评审补全的清单,缺一即残留):contracts/prompts/04-config/cheap-system.md(registry 正文)、cheap_roles.py内置回退正文(registry 读取失败的 fallback,必须与 registry 同步改)、cheap_roles.pymodify 路的契约切片、品类设计 skills 里教 targets/occupied 的段落(.agents/skills/sim-business-game-design.md等)、_template*内为 E/G/H 服务的注释与结构——删_forensicsView「自动验收契约」全部教学与 targets/occupied 语义、删两步成单围驱动器设计的教导;_forensicsView降级为可选调试接口,check 摘除「必须实现」拦截(保留 handleTap 输入契约与 ctx.log 日志纪律——它们服务真人与测试员,不是死契约);④批跑与报表——hard_genre_batch/hard_genre_xtheme结账口径切 floorPass+playtest 语义。 - 验收:同一批游戏新旧口径并跑对照(观测窗口),无一例「旧口径拦住的真坏局新口径放行」;prompt 清洗按加载链清单逐项给 diff 与动因,
rg -n "forensicsView|occupied|targets.*occupied|play-spec"在 prompt/skills/模板面零残留(代码与历史档命中属预期,标注);n=3 冒烟全链绿;波 2 放行检查:确认 v1 回退窗口自此关闭,回退=版本化整体回退,创始人知悉。 - 回滚:prompt 走 registry 版本回退 + cheap_roles 内置正文同批 revert;play-spec 生成器代码保留一个版本窗口,重挂 + mode=v1 即回 W-AXIS 口径(本窗口内);窗口后走 git revert。
波 3 · 重测基线与金标校准(1 天+;依赖波 2)
- 目标:v2 口径下的真实率基线与测试员校准锚。
- 输入:波 1 考卷回归数据;
cheap-worker/fixtures/judge-golden/金标种子(expectReject 待创始人定标)。 - 产出:①n=5×5 品类重测(零重跑纪律、逐行 JSONL、¥ 硬停线沿用),报告与 07-09 基线并排(口径差异显式标注);②金标扩容——10 局考卷真相表并入金标(含 2 假阴案作测试员反例),创始人亲玩定标窗口;③测试员观测面——假阴率/二掷翻案率/步数分布/成本分布进批次账,作为换测试员模型档的决策数据。
- 验收:基线报告过主会话终审(逐行核账 + 抽 3 局亲眼);金标复验通过(测试员对标注反例必须 fail、正例必须 pass);双差品类(puzzle/sim-business)真实率相对 07-09 基线不降(它们契约税最重,v2 应受益最大——不达即回查)。
- 回滚:基线是测量不是变更;测量期发现缺陷按波 1/2 回滚位处理。
7 风险与对策
- 测试员假阴(实测 2/6,二掷+预算扩展后目标 ≤1/6):fail-closed 方向安全,代价是重测/续修成本;波 3 观测面持续量化,超线即升测试员模型档(配置项,零代码)。
- M3 同源残余盲区(测试员与生成同模型):地板布尔判「有无」使同源风险最小化,spike 已实证 M3 抓自家缺陷(8undefine 案);金标反例复验 + 创始人抽玩是校准锚。
- 错误归因污染续修:现象/推测强制分离 + 现象必须带步号与落点坐标;续修反馈模板只引用现象段。
- 时延:一轮 8
24 步 × M3 每步 1040s ≈ 210 分钟,与生成本身(56 分钟)同量级;二掷只对 fail 触发;步数与超时在 genconfig 可调。 - 供给:M3 走 MiniMax Direct 一手通道;图像通道自检 fail-closed 兜故障,degraded 不放行。
- 单向门:波 2 关闭的是配置级回退(
acceptance.mode=v1自此不可达);代码级仍可版本化整体回退(重挂 play-spec + revert 波 2 提交),但那是一次变更而非拨开关——非严格不可逆,是计划内唯一需要创始人知悉后放行的降级换挡点,已列波 2 放行检查。
8 明确不做(本计划边界)
不动 tier2 富三门双路(裁定三落地范围原句保留:tier2 是否叠加模型判定随便宜档校准另议);不做「好玩程度」评价(L2 rubric 职责,非阻塞纪律不变);不建独立人工复核队列 UI(维持批次账 + 审核台通道);不为测试员新建模型供给通道(用现网关配置);不重写九门 harness 代码(降位不删码)。
附录 A · SoT 修订(波 0 落;A1~A4 为逐字终文,A5 为次级引用面清单)
生效语气约定:A1~A4 终文里的「2026-07-10 起 / v2 起」一律指裁定生效;工程兑现以波 1/2 收口为准,波 0 落档时每处修订注记统一附「已裁定,随 W-AXIS-V2 波 1/2 兑现」——SoT 陈述裁定与生效条件,不把未完成的工程写成当前事实。
A1 质量模型 SoT(游戏质量与爆火能力.md)裁定三,四处修订(终文):
- 「其一」句末追加:「2026-07-10 再修订(W-AXIS-V2):便宜档机械预筛收敛为契约无关四门投影(A_boot/B_uncaught/C_frame/D_render,消费层从 guards 显式抽取,权威字段 floor,不复用 harness 原生 verdict.pass);F_wiring 的期望前缀集源自 play-spec,随契约退役降观测,『真接线』关切移交 check 静态层与测试员观察;E_live/G_input/H_progress/I_control 退出便宜档验收取值(判据代码保留、降观测)。依据是 2026-07-10 基线逐局破案:取证契约实现缺陷在 25 局里坑杀 2 局好游戏、误导续修每局烧 ¥10+,契约面最大的品类失败最集中(执行与证据 = W-AXIS-V2 plan)。」
- 「其二」句判定输入改为(替换「brief 加真玩证据链(首帧/局中/局末截图或录屏、游戏日志、取证状态时间线)」):「brief 加真玩证据链;v2 起证据由测试 agent 亲手真玩产生(视觉引导逐步操作的全程截图序列、行动转写、运行日志),取证状态时间线随
_forensicsView契约退役不再作判定输入——判定与真玩合一于测试 agent,其裁决即玩法判定半。三类拒绝与『判有无不判多好』分界不变。」 - 「其二」句「判定者与生成者绝不同源(出题≠被考纪律原样保留)」改为:「出题≠被考的实质 = 判定只吃运行证据、不吃生成 agent 的自报,且测试员与写手会话隔离;判定模型允许与生成同源(2026-07-10 创始人拍板切 MiniMax-M3)——地板布尔判『有无』使同源盲区风险最小,同源模型抓自家缺陷已有实证(spike 考卷 8undefine 案);残余风险由金标正反例复验与创始人抽玩兜底。动因:glm-5.2 唯一供给通道为二手中转,图像支持按池轮换、2026-07-09 整日全盲,判定层可用性不押注二手供给。」
- 失败归因三层句「判卷驱动器合约失败(取证不完整)」加注:「(v2 起该层随契约退役自然消亡,存量归因保留历史语义;新增 tester_degraded = 测试员评不出,fail-closed 待人工)」。
A2 裁定一末句追加(终文):「2026-07-10 起『driven 时九门全量 AND』口径仅存于 tier2 与历史复跑;便宜档机械取值 = 从 verdict.guards 显式抽取的契约无关四门投影(G/I 在 undriven 下恒 skip-pass、E/H 降 advisory、F 期望集随 play-spec 退役,均不进取值)——四门投影是消费层函数,不等于也不改写 harness 原生 verdict.pass(见裁定三 2026-07-10 修订)。」
A3 验收门.md §2.4 追加段(终文):「便宜档消费口径 v2(2026-07-10,W-AXIS-V2):机械取值 = A_boot/B_uncaught/C_frame/D_render 四门投影(消费层 floor 字段),E_live/G_input/H_progress/I_control 与 F_wiring 降观测——F 的期望前缀集源自 play-spec,契约退役后不再具证真力,本节前文『F_wiring 属 driver 依赖门』的归类由此坐实;验收 = 四门 ∧ 测试 agent 真玩裁决(证据落 evidence/playtest/,harness 截图在 undriven 下为 boot 屏、仅作装载观测)。九门判据代码不删,tier2 与历史复跑照旧。首局门三断言随驱动器退役由测试员转写接管(firstPlay 三字段),独立门名退役。执行与字段协议 = W-AXIS-V2 plan。」
A4 agentic运行时架构图说.md 分层验收段(终文):「便宜档分层验收 2026-07-10 起为:契约无关四门预筛(A/B/C/D 投影)∧ 测试 agent 真玩裁决(视觉引导真玩 + 玩法地板判定合一,broken/hollow/off_brief 三类拒绝,fail-closed);E/G/H/I/F 降观测,play-spec 与 _forensicsView 取证契约退役。指针:质量模型 SoT 裁定三、W-AXIS-V2 plan。」
A5 次级引用面(波 0 逐处修,注记「已裁定、随波 1/2 兑现」):
| 文件 | 处 | 修订要点 |
|---|---|---|
| 游戏质量与爆火能力.md | §2 表 L1 行 | 「机器真玩预筛(九门+富三门+首局门)」→ 便宜档=四门投影、tier2=九门+富三门;首局门语义并入测试员转写 |
| 游戏质量与爆火能力.md | 裁定二 | 「便宜档经营品类的进度判定 = occupied 反应族驱动 + score 递增断言」句改为历史口径注记(该判定手段随契约退役,进度证据改由测试员转写承担);门级判据不跨档的本旨不动 |
| 游戏质量与爆火能力.md | 规范五(断言与 rubric 分界) | play-spec 断言相关表述加 v2 注记(断言载体退役,分界原则保留:机械可判的归地板/转写,程度评价归 rubric) |
| 验收门.md | 九门条目 E/G/H/I/F 段、首局门段 | 各加一句 v2 便宜档降观测/退役注记,指针 A3 |
| agentic运行时架构图说.md | C5/C6、driven 段 | play-spec 自动生成与 driven 判定描述加「便宜档 v2 退役,tier2 保留」注记 |
| 游戏质量与爆火能力.md | §2 门类型消歧段、§3 总述句 | 「两套门」消歧与「九门=A..E+driver 依赖门」总述各加便宜档 v2 取值注记(四门投影,指针 A2) |
| 验收门.md / 质量 SoT | 首局时间口径处(可玩≤2s/首反馈/60s 闭环) | 断言语义迁移至测试员转写 firstPlay 三字段的注记(指针本 plan §5) |
| agentic运行时架构图说.md | §六 A11 调整回路「三断言机器门」句 | modify 验收随统一编排器切 v2(三断言证据来源迁移),加注记指针本 plan 波 1④ |
附录 B · Spike 证据清单(波 0 随资产入仓)
- 考卷终榜:已知真相 9 局判对 7,真坏 3/3 全拦、零假阳(trpg-r3 空壳理由与人工一致、puzzle-r2 报出旧管线从未见过的 8undefine、puzzle-r3 拦对),真好 4/6 过;2 假阴经人工视觉复点平反(sim-business-r2:红茶→顾客 serve 立现 score 0→7→14)。
- 失效模式三案(测试员失手后错误归因):narrative-r1 v2 版、puzzle-r3 理由段、sim-business-r2——§3 第 2/3/4/7 条设计要求的直接依据。
- 成本:考卷 10 局共 15.2 万入/0.85 万出 tokens ≈ ¥2;单轮 ¥0.1~0.25。
- 资产:
spikes/playtest-agent/{playtest-agent-spike.cjs, playtest-exam.jsonl, transcripts/, README.md}。