docs(cheap-gen): W-AXIS 波0 文档批——诊断档+SoT×4 修订+两份 plan+策展层勘误

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>
This commit is contained in:
lili 2026-07-10 04:20:56 -07:00
parent 1c4d5838ec
commit 5d0f351050
14 changed files with 350 additions and 25 deletions

View File

@ -133,7 +133,7 @@ W-G1 实证后创始人亲玩校准拍定:**生产环无 Claude**,质量由*
**方向②扩模板 数据点(2026-06-29,难品类经营,修正了假设)**:建经营黄金骨架 `game-runtime/games/_template-shop/`(蒸馏过门的 bake-shop-serve 实证 pattern + 母语化 API + 多样性参数空间 + fill-in 标记,独立过九门)+ 品类路由接入(`scaffold-saa <id> [template]` / `cheap_run.scaffold(template)` / `run_studio(scaffold_template, scaffold_desc)`,缺省回落 _template)。同一咖啡馆 brief 三路对照(n=1):**软脚手架**(给骨架 + 软提示)892 行/¥0.85——AI 把预算填进增富化(自加 combo+VIP)、对 ~890 行基线三指标全平**没降**;**强制换皮**(write_whitelist 锁 game-logic.js、只许改 core 主题数值+render 观感)696 行(-22%)/¥0.34(-51%)/tokens-64%,game-logic **0-diff**、仍过门仍 distinct。**结论:"扩模板降工作面"成立但只在"强制换皮"模式**(脚手架+锁循环只换皮)——降本杠杆不是脚手架本身、是写边界强制;软脚手架买的是质量/过门鲁棒(增富化)、不买成本。取舍:强制换皮省成本但封顶增富化,软脚手架反之。**n=5 收敛环确认(经营,5 个不同店主题 奶茶/书店/花店/拉面/冰淇淋):5/5 全过九门 · 成本均 ¥0.252(-64% vs 基线)· game-logic 全 0-diff · 全 1 轮 · 5 店菜单互异——成本腰斩稳 / 过门 100% / 多款不雷同 三件全确认**。🔴 **创始人纠正(2026-06-29,推翻 reskin 策略框)**:上面 reskin 的成本数据作留痕(锁写省成本机制为真),但**「reskin 锁循环只换皮作阶段二成本主线」= 错、越线、已废**。① **便宜 = LLM 低参与度,不是游戏低质量**;底线 = 2D 丰富游戏(进货/解锁/成长/音乐/丰富玩法),reskin 砍复杂度违背底线;"低参与" = agent 不在引擎/plumbing 上耗(脚手架+插件包了)、精力放游戏设计。② **架构红线:项目代码只做机械确定性的事;玩法/美术/音乐的「丰富生成」= 生成 agent 设计创作职责(靠 [sim-business-game-design](../skills/sim-business-game-design.md) + 组合插件),「丰富校验」= 纯 LLM 验证 agent 非阻塞——绝不写成代码校验、不进九门、不进脚手架**。故"丰富脚手架/脚手架好玩门断言"也废。**修正后下一步**:接 sim-business 设计指导到生成 agent(现 prompt 漏)+ 建 LLM 丰富度验证 agent → 喂 M1 达标门(标=过九门+丰富);脚手架保持轻起点。 **方向②扩模板 数据点(2026-06-29,难品类经营,修正了假设)**:建经营黄金骨架 `game-runtime/games/_template-shop/`(蒸馏过门的 bake-shop-serve 实证 pattern + 母语化 API + 多样性参数空间 + fill-in 标记,独立过九门)+ 品类路由接入(`scaffold-saa <id> [template]` / `cheap_run.scaffold(template)` / `run_studio(scaffold_template, scaffold_desc)`,缺省回落 _template)。同一咖啡馆 brief 三路对照(n=1):**软脚手架**(给骨架 + 软提示)892 行/¥0.85——AI 把预算填进增富化(自加 combo+VIP)、对 ~890 行基线三指标全平**没降**;**强制换皮**(write_whitelist 锁 game-logic.js、只许改 core 主题数值+render 观感)696 行(-22%)/¥0.34(-51%)/tokens-64%,game-logic **0-diff**、仍过门仍 distinct。**结论:"扩模板降工作面"成立但只在"强制换皮"模式**(脚手架+锁循环只换皮)——降本杠杆不是脚手架本身、是写边界强制;软脚手架买的是质量/过门鲁棒(增富化)、不买成本。取舍:强制换皮省成本但封顶增富化,软脚手架反之。**n=5 收敛环确认(经营,5 个不同店主题 奶茶/书店/花店/拉面/冰淇淋):5/5 全过九门 · 成本均 ¥0.252(-64% vs 基线)· game-logic 全 0-diff · 全 1 轮 · 5 店菜单互异——成本腰斩稳 / 过门 100% / 多款不雷同 三件全确认**。🔴 **创始人纠正(2026-06-29,推翻 reskin 策略框)**:上面 reskin 的成本数据作留痕(锁写省成本机制为真),但**「reskin 锁循环只换皮作阶段二成本主线」= 错、越线、已废**。① **便宜 = LLM 低参与度,不是游戏低质量**;底线 = 2D 丰富游戏(进货/解锁/成长/音乐/丰富玩法),reskin 砍复杂度违背底线;"低参与" = agent 不在引擎/plumbing 上耗(脚手架+插件包了)、精力放游戏设计。② **架构红线:项目代码只做机械确定性的事;玩法/美术/音乐的「丰富生成」= 生成 agent 设计创作职责(靠 [sim-business-game-design](../skills/sim-business-game-design.md) + 组合插件),「丰富校验」= 纯 LLM 验证 agent 非阻塞——绝不写成代码校验、不进九门、不进脚手架**。故"丰富脚手架/脚手架好玩门断言"也废。**修正后下一步**:接 sim-business 设计指导到生成 agent(现 prompt 漏)+ 建 LLM 丰富度验证 agent → 喂 M1 达标门(标=过九门+丰富);脚手架保持轻起点。
**切片一收口落地(2026-06-30,上面"修正后下一步"全部交付并验证)**:生成 agent 接上 sim-business 设计指导(`cheap_roles.py` + `prompt.mjs` 双源,"先设计后写码"步 + MVP-first 铁律 + 8 条好玩自检);新建纯 LLM 丰富度验证 agent `cheap_verify.py`——读产物源码逐条裁 8 条好玩清单、写进 run-summary 的 richness 字段,**非阻塞(失败降级不阻断)、不进 verdict、不改达标判定、零 code-presence 断言**(命中与否 100% 由 LLM judge 裁,代码只搬运计数——红线落地;sim-business §10 那 4 条"可机检好玩门"刻意不实现)。富游戏重验 M1 达标门(全新 gameId、三品类各 n=5):**click/whack/shop 各 5/5 = 100% 过九门、整体达标 ✅**——richness 加固没压垮达标,plan 担心的"丰富后跌破"未发生;richness 均分 shop 4.2 / click 3.4 / whack 2.4(8 条 rubric 偏经营,最贴 shop,whack 低是品类不匹配非质量差)。退役授权据新富游戏 M1 报告重算 `authorized=True`。基建线同轮交付:统一 trace 落库(tier2 `JsonlFileSink` + cheap-worker 接线 + SAA 扩展段 schema)、配置注册表运行时热取(cheap_roles 三级回落加载器、Java `@Scheduled` TTL、`check_registry.py` 一致性 CI 门)、生成控制面只读管理面(后端 3 端点 + game-admin Vue 三 card)。**两个测试坑(留给后来人)**:① bake-off 复跑同一 gameId 会复用 `_wg1-gen/<id>/play-spec.json` 旧 spec(`ensure_play_spec` 是"已存在不覆盖"语义)——旧薄游戏 spec 驱新富游戏会假失败(自动驱动器卡菜单 `phaseNow=menu`、score 0→0、E_live/G_input/H_progress 齐挂),`auto_vs_golden.py` 有 staged-spec 残留断言守卫而 `bake_off.py` 没有,故达标门复验务必 `--offset` 取全新 gameId(或先清 `_wg1-gen` 实验 staging);② `cheap_run.game_dir("base4")=games/amgen-base4` 是 load_brief 的 brief 来源依赖,清理 `amgen-*` 实验产物时**必须排除 `amgen-base*`**,否则断掉所有品类的 bake-off brief。 **切片一收口落地(2026-06-30,上面"修正后下一步"全部交付并验证)**:生成 agent 接上 sim-business 设计指导(`cheap_roles.py` + `prompt.mjs` 双源,"先设计后写码"步 + MVP-first 铁律 + 8 条好玩自检);新建纯 LLM 丰富度验证 agent `cheap_verify.py`——读产物源码逐条裁 8 条好玩清单、写进 run-summary 的 richness 字段,**非阻塞(失败降级不阻断)、不进 verdict、不改达标判定、零 code-presence 断言**(命中与否 100% 由 LLM judge 裁,代码只搬运计数——红线落地;sim-business §10 那 4 条"可机检好玩门"刻意不实现)。富游戏重验 M1 达标门(全新 gameId、三品类各 n=5):**click/whack/shop 各 5/5 = 100% 过九门、整体达标 ✅**——richness 加固没压垮达标,plan 担心的"丰富后跌破"未发生;richness 均分 shop 4.2 / click 3.4 / whack 2.4(8 条 rubric 偏经营,最贴 shop,whack 低是品类不匹配非质量差)。退役授权据新富游戏 M1 报告重算 `authorized=True`。基建线同轮交付:统一 trace 落库(tier2 `JsonlFileSink` + cheap-worker 接线 + SAA 扩展段 schema)、配置注册表运行时热取(cheap_roles 三级回落加载器、Java `@Scheduled` TTL、`check_registry.py` 一致性 CI 门)、生成控制面只读管理面(后端 3 端点 + game-admin Vue 三 card)。**两个测试坑(留给后来人)**:① bake-off 复跑同一 gameId 会复用 `_wg1-gen/<id>/play-spec.json` 旧 spec(`ensure_play_spec` 是"已存在不覆盖"语义)——旧薄游戏 spec 驱新富游戏会假失败(自动驱动器卡菜单 `phaseNow=menu`、score 0→0、E_live/G_input/H_progress 齐挂),`auto_vs_golden.py` 有 staged-spec 残留断言守卫而 `bake_off.py` 没有,故达标门复验务必 `--offset` 取全新 gameId(或先清 `_wg1-gen` 实验 staging);② `cheap_run.game_dir("base4")=games/amgen-base4` 是 load_brief 的 brief 来源依赖,清理 `amgen-*` 实验产物时**必须排除 `amgen-base*`**,否则断掉所有品类的 bake-off brief。2026-07-09 勘误:本条两处定性已被裁定三收窄——「各 5/5 100% 过九门、整体达标」中「过九门」自此只算机械预筛通过玩法层达标另需独立模型玩法判定而当日审计正认定「LLM 丰富度非阻塞、不进 verdict、不改达标判定」这套设计是病根之一——懂玩法的模型判断被钉成旁路、判定权威落给不懂玩法的机械门故丰富度里「玩法有无」的布尔裁决升为阻断权威程度评分仍软。当时测得 5/5 是历史事实真实率按新基线重锚W-AXIS 收尾波)。见质量 SoT《游戏质量与爆火能力》裁定三与诊断档 §2.1。)
## 6. 决策落地的关键工程参数(供选型校验,技术决策版 §4/§7 ## 6. 决策落地的关键工程参数(供选型校验,技术决策版 §4/§7

View File

@ -85,4 +85,4 @@ ssh -o ProxyCommand=none root@100.64.0.7 'cd /root/game-staging/repo/game-runtim
## 8. 现行集成与状态(指针) ## 8. 现行集成与状态(指针)
reframe 后本 harness 的工具循环由便宜档 `cheap-worker`AgentScope/Pythonshell-out 复用便宜档生成质量已收口M1 达标门三品类各 5/5 过九门、richness 加固不跌破,见 [`../knowledge/tech-decisions.md`](../knowledge/tech-decisions.md) §5.1旧「Phase4 cutover 删 gamedef/factory」路径随 gameDefinition 废除、A-model 直写真 `src/` 而 moot。当前构建态另见 memory `amodel-generation-build-state` reframe 后本 harness 的工具循环由便宜档 `cheap-worker`AgentScope/Pythonshell-out 复用便宜档生成质量已收口M1 达标门三品类各 5/5 过九门、richness 加固不跌破,见 [`../knowledge/tech-decisions.md`](../knowledge/tech-decisions.md) §5.1旧「Phase4 cutover 删 gamedef/factory」路径随 gameDefinition 废除、A-model 直写真 `src/` 而 moot。当前构建态另见 memory `amodel-generation-build-state`2026-07-09 勘误:「过九门 生成质量已收口」的口径已被裁定三收窄——过九门自此只算机械预筛通过玩法层验收另需独立模型玩法判定便宜档真实率按新基线重锚W-AXIS 收尾波当日审计并证「richness 非阻塞旁路」是病根之一,所引 §5.1 条目已同步补注。见质量 SoT《游戏质量与爆火能力》裁定三。

View File

@ -17,7 +17,7 @@ description: "当需要 new-api 便宜模型成本口径、前缀缓存降本、
## 1. 链路(已退役 · 仅留指针) ## 1. 链路(已退役 · 仅留指针)
旧 gamedef/factory 链路 = brief → 便宜模型写 `generated-factory.js`(一个 `GameHostFactory`)→ 静态校验门 → 套官方 generic 壳(`entry-generic.js` + `buildGenericHostConfig`)→ esbuild `--global-name=__GameBundle` iife → P1 宿主 `bootGameHost` 装载 → 九门真玩、失败回喂重试。**reframe 后废**:便宜档改 `cheap-worker`Python/AgentScope直写 LittleJS `src/` 多文件、import 复用 tier2 框架层(见篇首注 + [`agentic-amodel-generation.md`](agentic-amodel-generation.md))。铁律不变——**能编译 / 能渲染 / 能动 ≠ 能玩,必须过九门真玩才算 pass**。 旧 gamedef/factory 链路 = brief → 便宜模型写 `generated-factory.js`(一个 `GameHostFactory`)→ 静态校验门 → 套官方 generic 壳(`entry-generic.js` + `buildGenericHostConfig`)→ esbuild `--global-name=__GameBundle` iife → P1 宿主 `bootGameHost` 装载 → 九门真玩、失败回喂重试。**reframe 后废**:便宜档改 `cheap-worker`Python/AgentScope直写 LittleJS `src/` 多文件、import 复用 tier2 框架层(见篇首注 + [`agentic-amodel-generation.md`](agentic-amodel-generation.md))。铁律不变——**能编译 / 能渲染 / 能动 ≠ 能玩,必须过九门真玩才算 pass**。2026-07-09 勘误:九门 pass 自此降为「未见明显死」的机械预筛地板,验收 机械预筛 ∧ 独立模型对真玩证据的玩法判定,过九门不再单独等于 pass铁律里「不由生成模型自评、必须真玩取证」的内核不变、且被强化。见质量 SoT《游戏质量与爆火能力》裁定三。
## 2. 模型与成本2026-06-14 网关实测) ## 2. 模型与成本2026-06-14 网关实测)
@ -114,4 +114,4 @@ SAA gameDefinition 路已随 reframe 废A-model 直写真 `src/`。Plan B
**附带的可追溯性缺口**:brief 原文在 worker/Service 任何日志与产物里都**没落盘**worker 只记 trace_id/gameId、Service 没记 input、agent 找的 `start.brief` 根本不存在)——生成的核心输入事后不可审计,该补落盘。 **附带的可追溯性缺口**:brief 原文在 worker/Service 任何日志与产物里都**没落盘**worker 只记 trace_id/gameId、Service 没记 input、agent 找的 `start.brief` 根本不存在)——生成的核心输入事后不可审计,该补落盘。
修法方向(不写代码,经 Codex+Opus 双评审校正,详见计划档):①给便宜档一条**可靠的增量 edit/apply-patch 工具**(read→精确替换→复用 `cheap_run.write_file` 的 L1/L3+whitelist 回写、不触发 check、加入软停 blocked-tools) + 对「连撞同签名畸形参数」做**窄口径**纠偏(仅 schema 缺字段类、不重置 stuck 计数、cheap-only 别改坏共享 tier2 熔断)——治死圈这一终止模式的最高杠杆;②**`_template` 的 rng 本就合规(`ctx?ctx.random.next():0`)、根本无 nowMs,违规是模型无视合规模板自造的**——不是"改模板",而是让 check 红线报错**指到行并点破「函数内回退也算裸调、正则按纯文本命中」**+ 提示层加「照模板逐字克隆、禁自造裸回退」与 check-early(写完即 check),比造工具更上游更省;③补 brief 落盘(落 `game_dir/evidence/` 脱敏限长、别落工程根——源工程可进素材市场交易)。**死圈只是失败模式之一**:实测 23 局真过门率仅 ~39%(跑到门 83% 但多为 E/G/H 玩法坏死挂门),三修消除死圈但到不了 MVP ≥80%,80% 缺口(玩法正确性)属质量线另一工作面。 修法方向(不写代码,经 Codex+Opus 双评审校正,详见计划档):①给便宜档一条**可靠的增量 edit/apply-patch 工具**(read→精确替换→复用 `cheap_run.write_file` 的 L1/L3+whitelist 回写、不触发 check、加入软停 blocked-tools) + 对「连撞同签名畸形参数」做**窄口径**纠偏(仅 schema 缺字段类、不重置 stuck 计数、cheap-only 别改坏共享 tier2 熔断)——治死圈这一终止模式的最高杠杆;②**`_template` 的 rng 本就合规(`ctx?ctx.random.next():0`)、根本无 nowMs,违规是模型无视合规模板自造的**——不是"改模板",而是让 check 红线报错**指到行并点破「函数内回退也算裸调、正则按纯文本命中」**+ 提示层加「照模板逐字克隆、禁自造裸回退」与 check-early(写完即 check),比造工具更上游更省;③补 brief 落盘(落 `game_dir/evidence/` 脱敏限长、别落工程根——源工程可进素材市场交易)。**死圈只是失败模式之一**:实测 23 局真过门率仅 ~39%(跑到门 83% 但多为 E/G/H 玩法坏死挂门),三修消除死圈但到不了 MVP ≥80%,80% 缺口(玩法正确性)属质量线另一工作面。2026-07-09 勘误:这三个数字与归因已被五路审计推翻——「真过门率 ~39%」是 stripCode 假阴修复前所测,字符串内 `//`(如赛博文案 'JACK IN // FLOOR'被误当注释抹掉真代码、把写对的模型反复拒到熔断烧钱commit 0be0f61c修复并给 per-genre 起点后 xthemeit5-lockcorer1 三批各 5/5、模型未变过门率随工具移动不随模型「多为 E/G/H 玩法坏死」大半是误标真因多为判卷驱动器合约缺口——进不去菜单认不出终局score 键没对上,小补丁即过,真坏死是少数且已被 per-genre scaffold 修掉故「80% 缺口=玩法正确性」不成立。诚实边界:只能判 80% 不是 MiniMax 天花板,不能反推已稳定 95%+。见质量 SoT《游戏质量与爆火能力》裁定三与同日诊断档 `docs/brainstorms/2026-07-09-生成线harness方向性诊断与换轴方向.md` §2.5。)

View File

@ -5,6 +5,8 @@ description: "当新功能/跨模块/改用户可见行为/触及外部服务·
# 功能设计文档作业手册feature-design-doc # 功能设计文档作业手册feature-design-doc
> **定位修订(2026-07-09,创始人)**:两份产物重新定位——**人审版 = brainstorm / SoT 设计文档**(方向诊断落 brainstorm,设计本体直接改所属 SoT,人审对象就是 SoT diff 与 brainstorm),**执行版 = `docs/plans/` 的 plan**(工单六要素,可派单)。已有 SoT 的改动**不再另造平行"功能设计文档"**——先改 SoT 的意识是硬要求;独立设计档只留给"尚无 SoT 的全新子系统"(产出后它本身成为/并入 SoT)。本 skill 的骨架、图规范、防漂移纪律对 SoT 设计档与上述独立设计档继续适用。
>
> 每个有真实复杂度的功能,开工前产出**一份**「功能设计文档」,取代旧的 `-review.md` + `-execution.md` 双档。一份文档同时承载 **WHAT**(意图/目标/边界/验证)与 **HOW**(方案/步骤),并以**一式两份**的表达服务两类读者:**文字 + Mermaid** 给人和 AIAI 主靠它),**SVG / HTML** 给人(更重要,看图即懂边界与核心思想)。 > 每个有真实复杂度的功能,开工前产出**一份**「功能设计文档」,取代旧的 `-review.md` + `-execution.md` 双档。一份文档同时承载 **WHAT**(意图/目标/边界/验证)与 **HOW**(方案/步骤),并以**一式两份**的表达服务两类读者:**文字 + Mermaid** 给人和 AIAI 主靠它),**SVG / HTML** 给人(更重要,看图即懂边界与核心思想)。
## 何时用 ## 何时用

View File

@ -55,7 +55,7 @@ node_type: skill
## 达标门口径:质量地板 vs 生产真实交付率(M1 U3 实证) ## 达标门口径:质量地板 vs 生产真实交付率(M1 U3 实证)
对照验证比的是「两路等价」;达标门(bake-off)换一个问题——「这条路生成出来的游戏,按品类稳不稳定够格上线」,按品类聚合九门过门率、逐品类 ≥80% 判。建这道门时,**算过门率的分母怎么定**是个会直接翻转结论的口径决策。 对照验证比的是「两路等价」;达标门(bake-off)换一个问题——「这条路生成出来的游戏,按品类稳不稳定够格上线」,按品类聚合九门过门率、逐品类 ≥80% 判。建这道门时,**算过门率的分母怎么定**是个会直接翻转结论的口径决策。2026-07-09 勘误:「按品类九门过门率 ≥80% 判达标」自此只度量机械预筛地板——九门 pass 降为「未见明显死」的预筛够不够格上线还须过独立模型玩法判定达标口径随之收窄下文分母口径收敛款为分母、rawPassRate 并报〕本身不受影响。见质量 SoT《游戏质量与爆火能力》裁定三。
一次生成会以两种性质完全不同的方式「不过」: 一次生成会以两种性质完全不同的方式「不过」:

View File

@ -36,7 +36,7 @@ MVP 目标:交付一条**种子用户可试用的全链路闭环** —— create
现行技术口径(决策史与依据一律见 [`.agents/knowledge/tech-decisions.md`](.agents/knowledge/tech-decisions.md),运行时单一真相见 [`docs/architecture/架构/生成引擎/agentic运行时架构图说.md`](docs/architecture/架构/生成引擎/agentic运行时架构图说.md)): 现行技术口径(决策史与依据一律见 [`.agents/knowledge/tech-decisions.md`](.agents/knowledge/tech-decisions.md),运行时单一真相见 [`docs/architecture/架构/生成引擎/agentic运行时架构图说.md`](docs/architecture/架构/生成引擎/agentic运行时架构图说.md)):
- **游戏生成统一收敛 AgentScope**(2026-06-25):按 AI 参与深度分三档(Tier0/1/2),全部高度模板化;产物终态 = `src/` 多文件源工程(gameDefinition 已废);各档过九门兜底真玩判定。tier2 富游戏档 = AgentScope + Phaser 独立 Python service。 - **游戏生成统一收敛 AgentScope**(2026-06-25):按 AI 参与深度分三档(Tier0/1/2),全部高度模板化;产物终态 = `src/` 多文件源工程(gameDefinition 已废);各档过分层验收(2026-07-09,裁定见质量模型 SoT 裁定三):九门机械预筛兜「未见明显死」地板;玩法地板便宜档 = 独立模型判定(W-AXIS 落地中)、tier2 = 富三门双路真玩(对位物,是否叠加模型判定随校准另议)。tier2 富游戏档 = AgentScope + Phaser 独立 Python service。
- **引擎按表现复杂度选**:轻-中档 LittleJS 增强发行版 / 最高档 Phaser;引擎不是分档轴;Cocos 只留 3D/渠道导出(人在环)。 - **引擎按表现复杂度选**:轻-中档 LittleJS 增强发行版 / 最高档 Phaser;引擎不是分档轴;Cocos 只留 3D/渠道导出(人在环)。
- **SAA / Dify / coze 降为最低优先级远期**(适配验证可插拔目标,不在 MVP runtime)。 - **SAA / Dify / coze 降为最低优先级远期**(适配验证可插拔目标,不在 MVP runtime)。
- **Nacos / RocketMQ / Sentinel = MVP 生产 runtime**(2026-07-01 反转:Spring Cloud Alibaba 原生三件套,自托管 mini-infra;配置控制面在飞,见 [`docs/agent-specs/_index.md`](docs/agent-specs/_index.md))。 - **Nacos / RocketMQ / Sentinel = MVP 生产 runtime**(2026-07-01 反转:Spring Cloud Alibaba 原生三件套,自托管 mini-infra;配置控制面在飞,见 [`docs/agent-specs/_index.md`](docs/agent-specs/_index.md))。

View File

@ -30,5 +30,6 @@
| [2026-06-28-002-tier2-n5收敛环-go-no-go](../plans/2026-06-28-002-feat-tier2-n5收敛环-go-no-go-plan.md) | 切片二 runbook(**终局 2026-07-04:r4 4/5 收敛、decide_n5=KEEP_留观、fable 终判 go**;剩=留观观测+archetype 清账,见作战清单 W-S2) | | [2026-06-28-002-tier2-n5收敛环-go-no-go](../plans/2026-06-28-002-feat-tier2-n5收敛环-go-no-go-plan.md) | 切片二 runbook(**终局 2026-07-04:r4 4/5 收敛、decide_n5=KEEP_留观、fable 终判 go**;剩=留观观测+archetype 清账,见作战清单 W-S2) |
| [2026-06-30-便宜档M3-生产cutover](../plans/2026-06-30-便宜档M3-生产cutover-plan.md) | 切片一 M3 尾(**S0S6 证据侧全收口 2026-07-04**;只余放行+S5a=决策包⑤) | | [2026-06-30-便宜档M3-生产cutover](../plans/2026-06-30-便宜档M3-生产cutover-plan.md) | 切片一 M3 尾(**S0S6 证据侧全收口 2026-07-04**;只余放行+S5a=决策包⑤) |
| [2026-07-04-prompt治理-四道闸CI接线-工单](../plans/2026-07-04-prompt治理-四道闸CI接线-工单-plan.md) | prompt 治理机器门接线工单(2026-07-04 新排,即刻可派;步骤 0 消费面对账先行) | | [2026-07-04-prompt治理-四道闸CI接线-工单](../plans/2026-07-04-prompt治理-四道闸CI接线-工单-plan.md) | prompt 治理机器门接线工单(2026-07-04 新排,即刻可派;步骤 0 消费面对账先行) |
| [2026-07-09-001-生成线验收换轴三波](../plans/2026-07-09-001-feat-生成线验收换轴三波-plan.md) | W-AXIS 换轴执行版(创始人 2026-07-09 拍:三波连打+模型判定升阻断;SoT 修订已同批回写质量模型裁定三/图说护城河段/验收门 §2.4;人审版=brainstorms 同日诊断档;**待双评审后开波 0/1**) |
新建设计一律走 [`feature-design-doc`](../../.agents/skills/feature-design-doc.md):先查注册表、frontmatter 申报 `topic/status/sot-impact`(docs-gate G6 强制),收口时蒸馏进 SoT 后从本板移除。 新建设计一律走 [`feature-design-doc`](../../.agents/skills/feature-design-doc.md):先查注册表、frontmatter 申报 `topic/status/sot-impact`(docs-gate G6 强制),收口时蒸馏进 SoT 后从本板移除。

View File

@ -161,7 +161,7 @@ flowchart TB
![图 8 端到端跨域全链泳道](assets/07-端到端全链泳道.svg) ![图 8 端到端跨域全链泳道](assets/07-端到端全链泳道.svg)
这张图是整本图集里**最该第一个读**的一张:它把前面那些分门别类的领域图,拼成了一条从「创作者敲下一句话」一直跑到「数据回流让 feed 重排」的完整系统链。它用八条横向泳道——创作者、game-studio、aigc + SAA、compliance、project + feed、玩家、telemetry、ad + trade——各占一条道,让你能顺着一个编号(①到⑮,外加钱流的 Ⓐ 到 Ⓓ)从头走到尾,看清每一步落在哪个域、交给谁、产出什么。主链是这样跑的:创作者一句话(①)经 studio 提交(②),aigc 建任务(③)进入 SAA 十六节点编排(④),九门验收通过后 emit 出包(⑤)回写成 project 草稿(⑥);创作者提交发布(⑦)触发 compliance 锁风门裁决(⑧),只有 pass 才让游戏 PUBLISHED 入 feed(⑨);玩家在竖屏游戏流里刷到(⑩)、即点即玩并互动(⑪);这些行为经埋点上报进 telemetry 聚合(⑬)、算出 0100 的质量分(⑭),再把 feed 重新排序(⑮),把更好的游戏推回到玩家眼前——这条绿色的回流箭头,正是把一条线性的价值链弯成飞轮的地方。下半部还叠了一条与主链并联的钱流:玩家试玩时触发游戏内广告曝光(Ⓐ),经 ad 模块计费落账(Ⓑ),由 trade 按 `source_ref` 对账分账(Ⓒ),最终结进创作者钱包(Ⓓ)。 这张图是整本图集里**最该第一个读**的一张:它把前面那些分门别类的领域图,拼成了一条从「创作者敲下一句话」一直跑到「数据回流让 feed 重排」的完整系统链。它用八条横向泳道——创作者、game-studio、aigc + SAA、compliance、project + feed、玩家、telemetry、ad + trade——各占一条道,让你能顺着一个编号(①到⑮,外加钱流的 Ⓐ 到 Ⓓ)从头走到尾,看清每一步落在哪个域、交给谁、产出什么。主链是这样跑的:创作者一句话(①)经 studio 提交(②),aigc 建任务(③)进入 SAA 十六节点编排(④),九门验收通过后 emit 出包(⑤)回写成 project 草稿(⑥);创作者提交发布(⑦)触发 compliance 锁风门裁决(⑧),只有 pass 才让游戏 PUBLISHED 入 feed(⑨);玩家在竖屏游戏流里刷到(⑩)、即点即玩并互动(⑪);这些行为经埋点上报进 telemetry 聚合(⑬)、算出 0100 的质量分(⑭),再把 feed 重新排序(⑮),把更好的游戏推回到玩家眼前——这条绿色的回流箭头,正是把一条线性的价值链弯成飞轮的地方。下半部还叠了一条与主链并联的钱流:玩家试玩时触发游戏内广告曝光(Ⓐ),经 ad 模块计费落账(Ⓑ),由 trade 按 `source_ref` 对账分账(Ⓒ),最终结进创作者钱包(Ⓓ)。2026-07-09 勘误:主链里「九门验收通过后 emit 出包」这一环,九门自此降为「未见明显死」的机械预筛地板,出包放行还须叠加独立模型对真玩证据的玩法判定,详见质量 SoT《游戏质量与爆火能力》裁定三。
新人能从这张图看出几件单看任何一张领域图都看不全的事。其一,**判断「系统有没有缝」,就是看相邻泳道的交接处对不对得上**——出包能不能落成草稿、草稿能不能提审、裁决能不能控制入流、互动能不能回流成排序,任何一处接不上,闭环就断了;这张图把所有交接点都画在了一条线上,据图就能逐个核对。其二,**合规门是整条链的上线总闸**:图上那条红线写着「pass 才入流」,游戏造得再好,过不了锁风门也进不了 feed,这是平台不碰红线的硬约束。其三,**现状必须诚实地读**,不能因为画出来了就当全是实的:图里用橙色虚线小标点出了两处现状桩——feed 的游标分页现在恒返第一页、Redis 候选集还是增长期形态,广告侧的 `provider` 还是 mock、真广告 SDK 要等渠道落地才接;提现打款那一格更标了红线,缺渠道时必须 fail-fast、绝不发假钱。其四,右上角那个虚线框是 **tier2 富游戏档**——它走的是 AgentScope 自治加 Phaser 无头的更深 AI 介入档,**0 号 spike 已过 accept、核心代码已落**(验证走 n=5 收敛环),产品化排期待定;它**不在这条现行链上跑同一条装载路**,换的只是「游戏内容怎么造出来」,造出来之后仍旧汇进同一条上线与发行的公共件。把这些边界一眼标清,正是为了让据图做评审的人,既能顺着主链确认闭环跑得通,又不会把桩误当成已经建好的现行。 新人能从这张图看出几件单看任何一张领域图都看不全的事。其一,**判断「系统有没有缝」,就是看相邻泳道的交接处对不对得上**——出包能不能落成草稿、草稿能不能提审、裁决能不能控制入流、互动能不能回流成排序,任何一处接不上,闭环就断了;这张图把所有交接点都画在了一条线上,据图就能逐个核对。其二,**合规门是整条链的上线总闸**:图上那条红线写着「pass 才入流」,游戏造得再好,过不了锁风门也进不了 feed,这是平台不碰红线的硬约束。其三,**现状必须诚实地读**,不能因为画出来了就当全是实的:图里用橙色虚线小标点出了两处现状桩——feed 的游标分页现在恒返第一页、Redis 候选集还是增长期形态,广告侧的 `provider` 还是 mock、真广告 SDK 要等渠道落地才接;提现打款那一格更标了红线,缺渠道时必须 fail-fast、绝不发假钱。其四,右上角那个虚线框是 **tier2 富游戏档**——它走的是 AgentScope 自治加 Phaser 无头的更深 AI 介入档,**0 号 spike 已过 accept、核心代码已落**(验证走 n=5 收敛环),产品化排期待定;它**不在这条现行链上跑同一条装载路**,换的只是「游戏内容怎么造出来」,造出来之后仍旧汇进同一条上线与发行的公共件。把这些边界一眼标清,正是为了让据图做评审的人,既能顺着主链确认闭环跑得通,又不会把桩误当成已经建好的现行。

View File

@ -8,7 +8,7 @@ date: 2026-06-24
# agentic 生成运行时架构 # agentic 生成运行时架构
> **定位**:绘境AI 游戏生成的统一运行时架构,单一事实源。把"谁来生成"(agent 框架)和"生成什么、怎么验收、怎么落库"(平台契约)彻底分开:平台只认一层 adapter,框架在 adapter 背后可换、可并存、可水平扩容。本文收敛原先散在十余份图说与详设里的设计,采用 2025 年已收敛的业界标准作 adapter 底座,自研只保留两块主流空白——生成专属的断点续跑、确定性验收门 > **定位**:绘境AI 游戏生成的统一运行时架构,单一事实源。把"谁来生成"(agent 框架)和"生成什么、怎么验收、怎么落库"(平台契约)彻底分开:平台只认一层 adapter,框架在 adapter 背后可换、可并存、可水平扩容。本文收敛原先散在十余份图说与详设里的设计,采用 2025 年已收敛的业界标准作 adapter 底座,自研只保留两块主流空白——生成专属的断点续跑、分层验收门(机械预筛 + 独立模型玩法判定,2026-07-09 修订)
> >
> **给谁看**:判断"整个生成架构是不是想要的那个"的创始人;照此实现的工程师。 > **给谁看**:判断"整个生成架构是不是想要的那个"的创始人;照此实现的工程师。
> >
@ -18,7 +18,7 @@ date: 2026-06-24
## 一、命题与定位:可插拔的 agent 平台 ## 一、命题与定位:可插拔的 agent 平台
绘境AI 的游戏生成统一由 **AgentScope 一套自治 agent 框架**编排,按 **AI 参与深度**分三档(Tier0/1/2):级别越高,AI 写进游戏的内容与代码越多。三档都不从零写——平台预建工程脚手架、备好玩法模板,AI 在**玩法模板加工程模板**上按档位深浅填数值、写逻辑、写表现层;最低档也是能上线、能挂广告或内购的真游戏,无法形成商业闭环的超休闲玩具不做。引擎按表现复杂度选(轻量档 LittleJS 增强发行版、最富档 Phaser),但引擎只是实现、不是分档的轴——分档的轴只有 AI 参与深度这一条。无论哪档,产物都过九门兜底真玩判定 绘境AI 的游戏生成统一由 **AgentScope 一套自治 agent 框架**编排,按 **AI 参与深度**分三档(Tier0/1/2):级别越高,AI 写进游戏的内容与代码越多。三档都不从零写——平台预建工程脚手架、备好玩法模板,AI 在**玩法模板加工程模板**上按档位深浅填数值、写逻辑、写表现层;最低档也是能上线、能挂广告或内购的真游戏,无法形成商业闭环的超休闲玩具不做。引擎按表现复杂度选(轻量档 LittleJS 增强发行版、最富档 Phaser),但引擎只是实现、不是分档的轴——分档的轴只有 AI 参与深度这一条。无论哪档,产物都过分层验收:九门机械预筛兜「未见明显死」的地板,独立模型玩法判定裁「真的可玩」(2026-07-09 起,裁定见[游戏质量与爆火能力](游戏质量与爆火能力.md)裁定三)
生产编排现阶段只押 AgentScope 一套;SAA(Spring AI Alibaba)、dify、coze 等别的框架降到最低优先级,留作后期"验证框架可插拔"的适配目标——等 AgentScope 这条做扎实,再把它们一一适配进来,用这件事证明下面这条可插拔原则不是空话,而不是现在并行养两套编排。 生产编排现阶段只押 AgentScope 一套;SAA(Spring AI Alibaba)、dify、coze 等别的框架降到最低优先级,留作后期"验证框架可插拔"的适配目标——等 AgentScope 这条做扎实,再把它们一一适配进来,用这件事证明下面这条可插拔原则不是空话,而不是现在并行养两套编排。
@ -26,7 +26,7 @@ date: 2026-06-24
这条原则不是空谈"将来好换",它有具体落点:后期把 SAA、dify 适配进来时,固定协议钉在那里,适配就只是给它们各接一个被治理的 adapter、各包一个执行后端,而不是推倒重来——把它们适配进来这件事本身,就是对这条可插拔原则的验证。 这条原则不是空谈"将来好换",它有具体落点:后期把 SAA、dify 适配进来时,固定协议钉在那里,适配就只是给它们各接一个被治理的 adapter、各包一个执行后端,而不是推倒重来——把它们适配进来这件事本身,就是对这条可插拔原则的验证。
**两块不外包的自研——这是护城河。** 采标准能解决绝大多数适配问题(见 §二),但有两件事没有主流对等物,必须自建:一是**确定性验收门**——在没有人、也没有看图模型的情况下,用纯代码机器判定一局游戏"真的可玩",判定权与"出题的和被考的绝不能是同一只模型"这条纪律不让步;二是**生成专属的断点续跑语义**——一次自治生成跑到哪、能否按平台口径续上,各框架自造、互不通用。这两块是平台真正的工程纵深,别人短期补不上。 **两块不外包的自研——这是护城河。** 采标准能解决绝大多数适配问题(见 §二),但有两件事没有主流对等物,必须自建:一是**分层验收门**——机械真玩预筛(CDP 真浏览器九门,纯代码)判「未见明显死」的地板,独立模型对真玩证据链(截图/录屏/日志/取证状态时间线)的玩法判定裁「真的可玩」,两层相与才放行。2026-07-09 修订:原口径「在没有人、也没有看图模型的情况下,用纯代码机器判定真的可玩」被当日五路 harness 审计证伪——机械断言只证得「有东西在涨」,秒死/刷分/死锁都能空心过门(判定归属与裁定见同目录[游戏质量与爆火能力](游戏质量与爆火能力.md)裁定三)。护城河的实体因此讲准确:是取证契约、真玩证据链与金标校准资产这套别人短期补不上的东西,不是「零模型」的判定纯度;「出题的和被考的绝不能是同一只模型」这条纪律原样不让步——判定模型独立于生成模型,只吃运行证据、不吃生成 agent 的自报。二是**生成专属的断点续跑语义**——一次自治生成跑到哪、能否按平台口径续上,各框架自造、互不通用。这两块是平台真正的工程纵深,别人短期补不上。
--- ---
@ -46,7 +46,7 @@ date: 2026-06-24
| 沙箱(固定端口 CDP) | 隔离的 build + run 环境 | **microVM 抽象**(E2B Firecracker / 阿里云 AgentRun·AIO Sandbox) | **抽象为 SandboxDriver,近期只承诺 Local/Docker/薄沙箱**(现状 = Local workdir + 端口段错开、已 accept,**非"采 microVM"**);microVM 云端多租户才需,CDP/成本/数据主权待验、AgentRun 厂商锁死(见 §二补③) | | 沙箱(固定端口 CDP) | 隔离的 build + run 环境 | **microVM 抽象**(E2B Firecracker / 阿里云 AgentRun·AIO Sandbox) | **抽象为 SandboxDriver,近期只承诺 Local/Docker/薄沙箱**(现状 = Local workdir + 端口段错开、已 accept,**非"采 microVM"**);microVM 云端多租户才需,CDP/成本/数据主权待验、AgentRun 厂商锁死(见 §二补③) |
| 水平扩容(K-槽 Semaphore + 进程内端口槽) | 长跑 agent 并发 | **durable-execution**(范式:Temporal / DB queue+lock / MessageBus) | **现状非反模式**:K-槽已参数化(线程池+Semaphore(K)+K 错开端口槽+单测守);durable-execution 跨机扩容才需——独立选型(≥3 候选)、先旁路 tier2、不动在产 SAA(见 §二补③) | | 水平扩容(K-槽 Semaphore + 进程内端口槽) | 长跑 agent 并发 | **durable-execution**(范式:Temporal / DB queue+lock / MessageBus) | **现状非反模式**:K-槽已参数化(线程池+Semaphore(K)+K 错开端口槽+单测守);durable-execution 跨机扩容才需——独立选型(≥3 候选)、先旁路 tier2、不动在产 SAA(见 §二补③) |
| prompt / model 配置 | 配置注册 + 热改 | ~~**Langfuse 式**(registry + 运行时热取 + 缓存 TTL + config-as-data)~~ | **2026-07-01 反转**:改采 yudao 配置中心版本化 ⊕ Nacos 下发 ⊕ AgentScope per-POST 热重载(Langfuse 式退历史备选,详见 ADR-4);受治理配置走 yudao 审批发版、运营开关热改 | | prompt / model 配置 | 配置注册 + 热改 | ~~**Langfuse 式**(registry + 运行时热取 + 缓存 TTL + config-as-data)~~ | **2026-07-01 反转**:改采 yudao 配置中心版本化 ⊕ Nacos 下发 ⊕ AgentScope per-POST 热重载(Langfuse 式退历史备选,详见 ADR-4);受治理配置走 yudao 审批发版、运营开关热改 |
| 验收门(judge 纯代码、禁 LLM 自评、出题≠被考) | 确定性验收 | **无主流对等** | **自研 —— 护城河,必须自建** | | 验收门(机械预筛纯代码 + 独立模型玩法判定、禁自评、出题≠被考;2026-07-09 分层修订,裁定见质量模型档) | 分层验收(证据链 + 校准资产) | **无主流对等** | **自研 —— 护城河,必须自建** |
| checkpoint / 续跑 | 生成专属续跑 | **无跨框架标准** | **自研合理** | | checkpoint / 续跑 | 生成专属续跑 | **无跨框架标准** | **自研合理** |
收敛后的架构是"采标准 + 瘦身自研":adapter 退化成三个标准端点加两块自研。 收敛后的架构是"采标准 + 瘦身自研":adapter 退化成三个标准端点加两块自研。
@ -60,7 +60,7 @@ date: 2026-06-24
│ · MCP server ← 工具(write / build / run_gates / finish)+ 资产/模板 │ │ · MCP server ← 工具(write / build / run_gates / finish)+ 资产/模板 │
│ · OTel GenAI ← trace(invoke_agent / chat / execute_tool) │ │ · OTel GenAI ← trace(invoke_agent / chat / execute_tool) │
│ · 〔自研〕生成 checkpoint / 续跑语义 │ │ · 〔自研〕生成 checkpoint / 续跑语义 │
│ · 〔自研·护城河〕确定性验收门(judge 禁自评 + per-tier verdict) │ │ · 〔自研·护城河〕分层验收门(预筛+模型判定 · 禁自评 + verdict) │
└────────────────────────────────────────────────────────────┘ └────────────────────────────────────────────────────────────┘
↕ 标准端点(框架只要会说 A2A+MCP+OTel 即插入) ↕ 标准端点(框架只要会说 A2A+MCP+OTel 即插入)
agent 框架:AgentScope(主框架,三档统一编排) / SAA·dify·coze(最低优先级,远期适配验证可插拔) agent 框架:AgentScope(主框架,三档统一编排) / SAA·dify·coze(最低优先级,远期适配验证可插拔)
@ -101,7 +101,7 @@ date: 2026-06-24
| durable-execution(跨机) | Temporal(MIT)/ DBOS(OSS) | 范式 · future-state(跨机才需) | 扩容 | 跨机 run 调度/续跑是否真超出 Agent Service durable session | | durable-execution(跨机) | Temporal(MIT)/ DBOS(OSS) | 范式 · future-state(跨机才需) | 扩容 | 跨机 run 调度/续跑是否真超出 Agent Service durable session |
| microVM 沙箱(远期) | E2B(via E2BWorkspace)/ 阿里云 AgentRun | future-state | 沙箱 | E2B 数据出境 / AgentRun 数据不出境·FC 锁·定价;Chrome+CDP under gVisor | | microVM 沙箱(远期) | E2B(via E2BWorkspace)/ 阿里云 AgentRun | future-state | 沙箱 | E2B 数据出境 / AgentRun 数据不出境·FC 锁·定价;Chrome+CDP under gVisor |
护城河两块,标准都不提供、必自研:确定性验收门 + fail-closed 预算硬闸。归属须分清:MCP / goose / AGENTS.md ∈ AAIF;A2A ∈ Linux Foundation;OTel GenAI ∈ OpenTelemetry 独立仓。独立的 `agentscope-runtime` 仓已归档,其工具沙箱 / Agent-as-a-Service / 可观测能力已并入 agentscope 2.0.3(`workspace` / `app` / `event`)——做沙箱与部署用 `agentscope[full]` 一个包,不装那个归档仓(本仓 [`agentscope-2.0-facts.md`](../../../../.agents/knowledge/agentscope-2.0-facts.md) 早有此结论)。 护城河两块,标准都不提供、必自研:分层验收门(机械预筛 + 模型判定) + fail-closed 预算硬闸。归属须分清:MCP / goose / AGENTS.md ∈ AAIF;A2A ∈ Linux Foundation;OTel GenAI ∈ OpenTelemetry 独立仓。独立的 `agentscope-runtime` 仓已归档,其工具沙箱 / Agent-as-a-Service / 可观测能力已并入 agentscope 2.0.3(`workspace` / `app` / `event`)——做沙箱与部署用 `agentscope[full]` 一个包,不装那个归档仓(本仓 [`agentscope-2.0-facts.md`](../../../../.agents/knowledge/agentscope-2.0-facts.md) 早有此结论)。
### 二补三 · build-vs-buy ADR 决策矩阵 ### 二补三 · build-vs-buy ADR 决策矩阵
@ -198,8 +198,8 @@ agentscope 2.0.3 内置 Workspace 三后端(源码实证 `LocalWorkspace` / `Doc
### 3.1 划线五原则 ### 3.1 划线五原则
1. **契约固定、实现可插拔。** 固定的是"形状"——接口签名、状态 schema、verdict schema;可插拔的是"形状背后由谁去满足它"。SAA 实现一遍任务协议,AgentScope 再实现一遍;LittleJS 实现一套探针,Phaser 再实现一套。 1. **契约固定、实现可插拔。** 固定的是"形状"——接口签名、状态 schema、verdict schema;可插拔的是"形状背后由谁去满足它"。SAA 实现一遍任务协议,AgentScope 再实现一遍;LittleJS 实现一套探针,Phaser 再实现一套。
2. **契约不做成 skill。** skill 本质是"喂给 agent 的指令 + 资源包",自身不执行代码,agent 可读可不读。把硬约束写成 skill,等于降格成提示。固定协议必须落在机器可校验的载体上:JSON Schema、`.d.ts` 接口、Java interface、纯代码的 judge 判定。skill 只承载"怎么用某个引擎写游戏"这类 playbook,不承载"完成与否谁说了算"这类纪律。 2. **契约不做成 skill。** skill 本质是"喂给 agent 的指令 + 资源包",自身不执行代码,agent 可读可不读。把硬约束写成 skill,等于降格成提示。固定协议必须落在机器可校验的载体上:JSON Schema、`.d.ts` 接口、Java interface、schema 化的 judge 判据(机械预筛纯代码;模型玩法判定的输入证据与输出裁决同样是固定 schema——判定可换模型,契约不动)。skill 只承载"怎么用某个引擎写游戏"这类 playbook,不承载"完成与否谁说了算"这类纪律。
3. **门探针劈两半。** "门要从引擎读哪几样"(canvas 选择器、帧计数源、boot 就绪信号、输入注入、可观测 state)是引擎无关的抽象,该固定;"怎么从某个具体引擎把这几样读出来"是 per-engine 的实现,该可插拔。判 pass / fail 的逻辑永远待在固定层、由纯代码产出,探针只负责"读"和"驱动",绝不负责"判"。 3. **门探针劈两半。** "门要从引擎读哪几样"(canvas 选择器、帧计数源、boot 就绪信号、输入注入、可观测 state)是引擎无关的抽象,该固定;"怎么从某个具体引擎把这几样读出来"是 per-engine 的实现,该可插拔。判 pass / fail 的逻辑永远待在固定层、由纯代码产出,探针只负责"读"和"驱动",绝不负责"判"——本条约束的是**机械预筛探针层**;L1 终判 = 预筛 ∧ 独立模型玩法判定(2026-07-09),后者是证据判读层、不受"纯代码"限定,其输入证据与输出裁决的契约固定见原则 2 与质量模型档裁定三
4. **多语言走 MCP / shell-out。** 单写 agent 跑在 Python,但探针是 node/CDP、构建是 esbuild、某些能力包可能是别的语言。跨语言不靠在 Python 里硬塞,走两条标准通道:MCP 协议天生跨进程跨语言;或 skill 目录放任意语言脚本、SKILL.md 指示 agent 用内置 Bash shell-out 去跑。 4. **多语言走 MCP / shell-out。** 单写 agent 跑在 Python,但探针是 node/CDP、构建是 esbuild、某些能力包可能是别的语言。跨语言不靠在 Python 里硬塞,走两条标准通道:MCP 协议天生跨进程跨语言;或 skill 目录放任意语言脚本、SKILL.md 指示 agent 用内置 Bash shell-out 去跑。
5. **单一实现时不冻接口(rule-of-three)。** 一个接口只有一套真实现时把形状钉死,必被那唯一一套实现反向决定,等第二套落地才发现抽错。所以第一套实现先定 v1 directional(方向性草案 + 留演进位),真正冻结推迟到第二套实现落地。这条直接影响 A6 / A7 的定级——它们现在只有 LittleJS 一套真实现,不该被当成已冻结的协议。 5. **单一实现时不冻接口(rule-of-three)。** 一个接口只有一套真实现时把形状钉死,必被那唯一一套实现反向决定,等第二套落地才发现抽错。所以第一套实现先定 v1 directional(方向性草案 + 留演进位),真正冻结推迟到第二套实现落地。这条直接影响 A6 / A7 的定级——它们现在只有 LittleJS 一套真实现,不该被当成已冻结的协议。
@ -382,9 +382,9 @@ tier2(最高深度档)的运行时按 AgentScope 2.0.3 的真实对象结构落
### 5.4 三层校验与九门 ### 5.4 三层校验与九门
验收分三层,处置力度递减。**L1 硬约束**管编译、启动、运行错误——boot 不起、跑着抛异常、画面死;判据全是确定性信号(构建日志、浏览器 console、CDP 错误捕获、九门探针),零 LLM 参与,必须循环逼到解决为止。**L2 设计符合**管玩法与关卡实现对不对、UI 缺组件、品类约定有没有违反;靠确定性的设计符合度信号,尽量解决而非死循环;它的拒发权不是天生的,走 observe→enforce——先只观测积累信号,在真实数据上证明判得准,才赋予拒发权。**L3 效果**管特效、美观、好不好玩;只用 M3 多模态视觉软检打分,绝不解决、绝不阻塞拒发,产出只进质量趋势、告警、给人工终审减负。L3 死活不当门有两条硬理由:扩确定性门去自动判"好不好玩"只会得到能被刷的代理指标(精心做的打砖块和"摆三块砖点一下就赢"的退化品会一起全绿,门即废);让纯 LLM 当玩家裁判则踩 Goodhart——模型进了验收当裁判,会学会优化成"让裁判说好"而非真好。所以"好不好玩"最终归人工终审。迭代上初期只焊死 L1,L2 / L3 渐进,绝不让效果问题阻塞真问题。 验收分三层,处置力度递减。**L1 硬约束**管编译、启动、运行错误——boot 不起、跑着抛异常、画面死;判据全是确定性信号(构建日志、浏览器 console、CDP 错误捕获、九门探针),零 LLM 参与,必须循环逼到解决为止。**L2 设计符合**管玩法与关卡实现对不对、UI 缺组件、品类约定有没有违反;靠确定性的设计符合度信号,尽量解决而非死循环;它的拒发权不是天生的,走 observe→enforce——先只观测积累信号,在真实数据上证明判得准,才赋予拒发权。**L3 效果**管特效、美观、好不好玩;只用 M3 多模态视觉软检打分,绝不解决、绝不阻塞拒发,产出只进质量趋势、告警、给人工终审减负。L3 死活不当门有两条硬理由:扩确定性门去自动判"好不好玩"只会得到能被刷的代理指标(精心做的打砖块和"摆三块砖点一下就赢"的退化品会一起全绿,门即废);让纯 LLM 当玩家裁判则踩 Goodhart——模型进了验收当裁判,会学会优化成"让裁判说好"而非真好。所以"好不好玩"最终归人工终审。迭代上初期只焊死 L1,L2 / L3 渐进,绝不让效果问题阻塞真问题。(2026-07-09 修订:L2 里「玩法真实性」一项的 enforce 已生效——五路审计坐实机械代理指标被刷穿score-only 空心 pass 五案在册〕,正是本段预言的「能被刷的代理指标」;独立模型玩法判定以布尔裁决升为阻断,金标正反例复验加创始人抽玩承担「在真实数据上证明判得准」的义务,细则见[游戏质量与爆火能力](游戏质量与爆火能力.md)裁定三。「纯 LLM 当玩家裁判踩 Goodhart」的告诫仍有效,防线=判定只吃运行证据不吃生成 agent 自报、金标校准、判定模型可换、阻断开关可回退;L3 效果〔美观/特效〕仍永不阻塞。)
L1 的主体是九门,每门在真浏览器里真玩一局取确定性证据:A_boot(能否 boot,轮询 boot 信号)、B_uncaught(有无未捕获异常,监听 console 与 CDP 错误)、C_frame(帧在不在推进,前后取帧号差大于零)、D_render(画面有无真实内容,截图回读亮像素阈值)、E_live(画面在不在变,对多帧取哈希去重)、F_wiring(逻辑真调引擎还是空桩,查引擎 API 调用有没有出现)、G_input(注入输入后状态有无变化)、H_progress(核心机制有无真进展,driver 驱动加玩后断言、含 latch 终态)、I_control(控制响应跟不跟手,输入到反应的时序在阈值内)。九门里只有 H_progress 落 L2,其余落 L1;E_live 与 H_progress 是条件门(没有 driver 时降为 advisory),其余是硬门。九门全绿等于机制地板通过、可发——把"做完了"钉在客观证据上,绝不让模型自评。 L1 的主体是九门,每门在真浏览器里真玩一局取确定性证据:A_boot(能否 boot,轮询 boot 信号)、B_uncaught(有无未捕获异常,监听 console 与 CDP 错误)、C_frame(帧在不在推进,前后取帧号差大于零)、D_render(画面有无真实内容,截图回读亮像素阈值)、E_live(画面在不在变,对多帧取哈希去重)、F_wiring(逻辑真调引擎还是空桩,查引擎 API 调用有没有出现)、G_input(注入输入后状态有无变化)、H_progress(核心机制有无真进展,driver 驱动加玩后断言、含 latch 终态)、I_control(控制响应跟不跟手,输入到反应的时序在阈值内)。九门里只有 H_progress 落 L2,其余落 L1;E_live 与 H_progress 是条件门(没有 driver 时降为 advisory),其余是硬门。九门全绿等于机械预筛地板通过;放行还需独立模型玩法判定(2026-07-09,质量模型档裁定三)——「做完了」依旧绝不由生成模型自评。
现有九门是为低档的 LittleJS 建的,探针钩子硬编码了 LittleJS 专属取法。tier2 复用的是"真玩判定加零自评"这套哲学、**不是**这套代码,探针要为 Phaser 整套重写——canvas 选择器、帧源、boot 信号、输入注入与 state 读取四条钩子各自重写,不是参数化一键切。沙箱底座曾被列为 spike 的前置阻断项:agentscope-runtime 独立仓已归档、能力并入 2.0.3,原打算先小验 agentscope 2.0.3 内置 Workspace 的 Docker 后端能否托管这套 CDP 探针(它是 MCP-gateway 工具沙箱、不直接暴露 CDP),够就用、不够回落自建 Docker 薄沙箱复用现有 harness。**但 2026-06-28 收敛环 runbook 已解除这道前置**:实测证明 harness 能在 in-process(本地 runner)直接跑起来,收敛环就走本地 runner、不再卡等 DockerWorkspace 托管结论;跨机 / Docker 沙箱选型降为 go/no-go 之后的 Phase B 项、不阻塞收敛。原"这个结论必须在生成迭代开跑前出来、否则 spike 跑不起来"的判断已被证伪。 现有九门是为低档的 LittleJS 建的,探针钩子硬编码了 LittleJS 专属取法。tier2 复用的是"真玩判定加零自评"这套哲学、**不是**这套代码,探针要为 Phaser 整套重写——canvas 选择器、帧源、boot 信号、输入注入与 state 读取四条钩子各自重写,不是参数化一键切。沙箱底座曾被列为 spike 的前置阻断项:agentscope-runtime 独立仓已归档、能力并入 2.0.3,原打算先小验 agentscope 2.0.3 内置 Workspace 的 Docker 后端能否托管这套 CDP 探针(它是 MCP-gateway 工具沙箱、不直接暴露 CDP),够就用、不够回落自建 Docker 薄沙箱复用现有 harness。**但 2026-06-28 收敛环 runbook 已解除这道前置**:实测证明 harness 能在 in-process(本地 runner)直接跑起来,收敛环就走本地 runner、不再卡等 DockerWorkspace 托管结论;跨机 / Docker 沙箱选型降为 go/no-go 之后的 Phase B 项、不阻塞收敛。原"这个结论必须在生成迭代开跑前出来、否则 spike 跑不起来"的判断已被证伪。
@ -394,7 +394,7 @@ L1 的主体是九门,每门在真浏览器里真玩一局取确定性证据:A_b
spike 第二段放开让 agent 自产或扩展 driver 时,会撞上一个 Goodhart 雷:**写者不能写判自己游戏的那张卷子**——agent 既造游戏又造判它的 driver,会把 driver 写成只走它走过的路、只读不暴露真实力的字段,然后全绿假绿。隔离办法是拆开写卷人与判卷人,走三层:平台先按 schema 加白名单编译(非白名单或越界字段直接拒)、再交一个不向着被评对象、专找漏洞的独立 adversarial 评审(查它是否覆盖真实玩家路径、是否读了作弊字段)、三层全过才入验收。配套采两个指标:自产 driver 被独立评审打回的比例、driver 被修改的次数(防靠反复改 driver 逃避卡死探测)。 spike 第二段放开让 agent 自产或扩展 driver 时,会撞上一个 Goodhart 雷:**写者不能写判自己游戏的那张卷子**——agent 既造游戏又造判它的 driver,会把 driver 写成只走它走过的路、只读不暴露真实力的字段,然后全绿假绿。隔离办法是拆开写卷人与判卷人,走三层:平台先按 schema 加白名单编译(非白名单或越界字段直接拒)、再交一个不向着被评对象、专找漏洞的独立 adversarial 评审(查它是否覆盖真实玩家路径、是否读了作弊字段)、三层全过才入验收。配套采两个指标:自产 driver 被独立评审打回的比例、driver 被修改的次数(防靠反复改 driver 逃避卡死探测)。
> **本节是运行时视角的九门与三层校验,确定性验收的护城河命题(机器判、禁自评、出题≠被考、per-tier verdict 元协议)即落在此节与 §三 A5**;另有一层"对外开闸放行"的 6 道门(D12 控制平面、GP9 合规先行、落库观测三门、首局体验门、G0/G1 前置)坐在九门机制地板之上,是独立 SoT,见 [`验收门.md`](验收门.md),其基准靶集见 [`WG1基准.md`](WG1基准.md)。 > **本节是运行时视角的九门与三层校验,分层验收的护城河命题(机械预筛机器判、玩法判定独立模型、禁自评、出题≠被考、per-tier verdict 元协议)即落在此节与 §三 A5**;另有一层"对外开闸放行"的 6 道门(D12 控制平面、GP9 合规先行、落库观测三门、首局体验门、G0/G1 前置)坐在九门机制地板之上,是独立 SoT,见 [`验收门.md`](验收门.md),其基准靶集见 [`WG1基准.md`](WG1基准.md)。
> **与质量四层塔的轴区分(2026-07-02 质量 canonical 接管,防混)**:本节的"三层校验"(L1 硬约束 / L2 设计符合 / L3 效果)按**处置力度**分层——必须解决 / 尽量解决 / 只评分不阻塞;它与 [`游戏质量与爆火能力.md`](游戏质量与爆火能力.md) canonical 的**四层质量塔**(L1 机制可玩 / L2 内容丰富 / L3 留存结构 / L4 传播钩子)**共用 L1L3 字母、但轴完全不同**——后者按**质量维度**分层。两者别对齐字母:三层校验的 L1(机器硬门)确实约等于质量塔的 L1(机制可玩,唯一拒发权),但三层校验的 L3(效果视觉软检)对应的是质量塔的 L2(内容丰富,LLM 评)。质量塔是品类 rubric、tier2 反馈契约、数据飞轮留存口径的共同上位标准,九门 / 富三门 / 首局门的**判据 SoT 仍是本节与 [`验收门.md`](验收门.md),质量 canonical 只裁消费口径**;开闸六门里与质量相关的 **D11 就绪分,权重管辖已移交质量轨** > **与质量四层塔的轴区分(2026-07-02 质量 canonical 接管,防混)**:本节的"三层校验"(L1 硬约束 / L2 设计符合 / L3 效果)按**处置力度**分层——必须解决 / 尽量解决 / 只评分不阻塞;它与 [`游戏质量与爆火能力.md`](游戏质量与爆火能力.md) canonical 的**四层质量塔**(L1 机制可玩 / L2 内容丰富 / L3 留存结构 / L4 传播钩子)**共用 L1L3 字母、但轴完全不同**——后者按**质量维度**分层。两者别对齐字母:三层校验的 L1(机器硬门)确实约等于质量塔的 L1(机制可玩,唯一拒发权),但三层校验的 L3(效果视觉软检)对应的是质量塔的 L2(内容丰富,LLM 评)。质量塔是品类 rubric、tier2 反馈契约、数据飞轮留存口径的共同上位标准,九门 / 富三门 / 首局门的**判据 SoT 仍是本节与 [`验收门.md`](验收门.md),质量 canonical 只裁消费口径**;开闸六门里与质量相关的 **D11 就绪分,权重管辖已移交质量轨**
> **现 / 建(2026-06-24 spike 后)**:低档九门现行已落。tier2 侧——三层校验框架、Phaser 探针(九门 + 富游戏三门:三联动/经济/latch)、L3 视觉软检 observe-only 接线**已落并在 feie-005 全过**;spike 收敛补的四道契约机器门(`validate_datatable` 数据表 schema+DAG+可达性、`LOCKED_PLATFORM_FILES` 锁平台文件、`validate_play_scene` 表现层契约、finish 门)也已落。待:自产 driver 三层隔离(spike 第二段)、偏脆的文本契约门做成结构化校验。 > **现 / 建(2026-06-24 spike 后)**:低档九门现行已落。tier2 侧——三层校验框架、Phaser 探针(九门 + 富游戏三门:三联动/经济/latch)、L3 视觉软检 observe-only 接线**已落并在 feie-005 全过**;spike 收敛补的四道契约机器门(`validate_datatable` 数据表 schema+DAG+可达性、`LOCKED_PLATFORM_FILES` 锁平台文件、`validate_play_scene` 表现层契约、finish 门)也已落。待:自产 driver 三层隔离(spike 第二段)、偏脆的文本契约门做成结构化校验。
![图 D1 · 三层校验全景](assets/t2-D-01-三层校验全景.svg) ![图 D1 · 三层校验全景](assets/t2-D-01-三层校验全景.svg)
@ -468,7 +468,7 @@ SAA 那一侧的能力面是另一套形态,但它现已降为最低优先级、
复用边界看两个维度:来源(官方现成,即 AgentScope 2.0.3 自带,还是自建)乘以共享(各档公共,还是 tier2 私有)。一个关键的交叉结论是——**公共组件等于自建与共享的交集**(九门、三层校验、CDP、计费、送审、feed、trace),它们是团队自建、被各档共用的,**不是官方现成能力**;"框架里有"不等于"公共组件"。每个自建项还标出它用哪种 AgentScope 扩展点落地:验收门是框架外的确定性断言、硬熔断三件是挂在洋葱上的 Middleware、角色 prompt 与模型路由是纯数据的 Prompt 热配置、skill 目录经 Workspace 的 add_skill 注入、工作记忆与经验召回是 AgentState 的 context 加经验库。把载体类型标清楚,是为了让"换引擎等于换 id 和 version、trace 始终按 id/version 归因"这条目标态有落点,也防止把本该热配的东西硬编码进机制。 复用边界看两个维度:来源(官方现成,即 AgentScope 2.0.3 自带,还是自建)乘以共享(各档公共,还是 tier2 私有)。一个关键的交叉结论是——**公共组件等于自建与共享的交集**(九门、三层校验、CDP、计费、送审、feed、trace),它们是团队自建、被各档共用的,**不是官方现成能力**;"框架里有"不等于"公共组件"。每个自建项还标出它用哪种 AgentScope 扩展点落地:验收门是框架外的确定性断言、硬熔断三件是挂在洋葱上的 Middleware、角色 prompt 与模型路由是纯数据的 Prompt 热配置、skill 目录经 Workspace 的 add_skill 注入、工作记忆与经验召回是 AgentState 的 context 加经验库。把载体类型标清楚,是为了让"换引擎等于换 id 和 version、trace 始终按 id/version 归因"这条目标态有落点,也防止把本该热配的东西硬编码进机制。
一次诚实的对地基现成度的上修:有几样早稿打算自建的能力,其实官方已有现成件,该删掉自建、改用官方——token 计量用模型响应自带的用量、结构化输出用模型层能力、可观测 trace 用官方 TracingMiddleware(纯 OTel)、经验召回用现成的记忆框架、多 agent 总线用 Agent Team。**这里要纠一处早稿错**:早稿还列了"软预算控制用官方 `ReplyBudgetControlMiddleware`",但 0 号 spike 期核验官方当时无此类(2.0.3 已补进原生 token 制、仍保自建 ¥ 闸,见 §15)——这一项不属"改用官方",反而归下面"必须自建"(tier2 已用自建 `on_system_prompt` + 订阅模型调用结束事件的硬熔断实现)。官方确实没有、必须自建或引第三方的是:RAG 检索管线、评测模块、成品级的框架互通、以及两块护城河——确定性验收门(框架不提供)和强制 fail-closed 的预算硬闸。 一次诚实的对地基现成度的上修:有几样早稿打算自建的能力,其实官方已有现成件,该删掉自建、改用官方——token 计量用模型响应自带的用量、结构化输出用模型层能力、可观测 trace 用官方 TracingMiddleware(纯 OTel)、经验召回用现成的记忆框架、多 agent 总线用 Agent Team。**这里要纠一处早稿错**:早稿还列了"软预算控制用官方 `ReplyBudgetControlMiddleware`",但 0 号 spike 期核验官方当时无此类(2.0.3 已补进原生 token 制、仍保自建 ¥ 闸,见 §15)——这一项不属"改用官方",反而归下面"必须自建"(tier2 已用自建 `on_system_prompt` + 订阅模型调用结束事件的硬熔断实现)。官方确实没有、必须自建或引第三方的是:RAG 检索管线、评测模块、成品级的框架互通、以及两块护城河——分层验收门(框架不提供;机械预筛 + 模型判定)和强制 fail-closed 的预算硬闸。
配置分三类,决定一样东西改了要不要发版。硬代码机制类(确定性门断言、四道熔断、基线硬门强制、循环与记忆的组装压缩机制、权限硬上限、那几条铁律)随代码走、不外置。版本化安全与构建配置类(依赖锁、引擎版本、构建 profile、启用的沙箱类型、权限上限只可降不可升)审计留痕、不热改。热配置策略类(prompt 文本、各 agent 的模型路由、few-shot、skills、max_iters、熔断阈值、新增门的 observe/enforce 档、上下文预算、压缩阈值、枚举内的 RAG 源、记忆模式)改配置不重新部署服务代码。但这里的"不发版"只指不重部署代码:其中影响生产质量/安全的**重要配置**(关键 agent、关键玩法模板、prompt 正文、生成门阈值)的发布仍须走**配置发布流程审批**、通过才生效,本质是一次**受治理的配置发版**(后期阶段做、复用 yudao,见 §5.2 管理面);只有非关键热配置才即时生效。一条颗粒度澄清:新增或删除一类内容等于改枚举、是硬代码;已有类里增减取值(比如多挂一个 RAG 源)是可配置。三类门也同此分:基线确定性硬门永远强制、不可关,新增确定性门走 observe→enforce(默认只观测,达标率稳了才赋拒发权),M3 视觉软检永远只观察、绝不放行也绝不拒发。 配置分三类,决定一样东西改了要不要发版。硬代码机制类(确定性门断言、四道熔断、基线硬门强制、循环与记忆的组装压缩机制、权限硬上限、那几条铁律)随代码走、不外置。版本化安全与构建配置类(依赖锁、引擎版本、构建 profile、启用的沙箱类型、权限上限只可降不可升)审计留痕、不热改。热配置策略类(prompt 文本、各 agent 的模型路由、few-shot、skills、max_iters、熔断阈值、新增门的 observe/enforce 档、上下文预算、压缩阈值、枚举内的 RAG 源、记忆模式)改配置不重新部署服务代码。但这里的"不发版"只指不重部署代码:其中影响生产质量/安全的**重要配置**(关键 agent、关键玩法模板、prompt 正文、生成门阈值)的发布仍须走**配置发布流程审批**、通过才生效,本质是一次**受治理的配置发版**(后期阶段做、复用 yudao,见 §5.2 管理面);只有非关键热配置才即时生效。一条颗粒度澄清:新增或删除一类内容等于改枚举、是硬代码;已有类里增减取值(比如多挂一个 RAG 源)是可配置。三类门也同此分:基线确定性硬门永远强制、不可关,新增确定性门走 observe→enforce(默认只观测,达标率稳了才赋拒发权),M3 视觉软检永远只观察、绝不放行也绝不拒发。

View File

@ -9,6 +9,8 @@ date: 2026-07-02
![四层质量塔](assets/quality-01-四层质量塔.svg) ![四层质量塔](assets/quality-01-四层质量塔.svg)
> **生效状态**:本模型经 Codex + Opus 双评审后,由创始人 2026-07-02 以决策包⑦一次拍定生效——四层定义与权力分配、档位观测线、rubric 计分制、平衡门判法五裁定、「收窄 AE」历史化、富三门档位适用与断言分界、D11 权重管辖移交,七项俱批;档内数值草案即生效值,观测线区间待首批品类件回填分布后锁成单值(§10)。2026-07-03 通用底座增补第 12 条口径(「核心操作非无脑」,L2 满分升至 12),图 1 底部明细带按 L2 7 / L3 3 / L4 2 分组列全。设计留痕 = `docs/agent-specs/2026-07-02-游戏质量与爆火能力-设计.md` > **生效状态**:本模型经 Codex + Opus 双评审后,由创始人 2026-07-02 以决策包⑦一次拍定生效——四层定义与权力分配、档位观测线、rubric 计分制、平衡门判法五裁定、「收窄 AE」历史化、富三门档位适用与断言分界、D11 权重管辖移交,七项俱批;档内数值草案即生效值,观测线区间待首批品类件回填分布后锁成单值(§10)。2026-07-03 通用底座增补第 12 条口径(「核心操作非无脑」,L2 满分升至 12),图 1 底部明细带按 L2 7 / L3 3 / L4 2 分组列全。设计留痕 = `docs/agent-specs/2026-07-02-游戏质量与爆火能力-设计.md`
>
> **2026-07-09 修订(创始人当日拍板)**:L1 的证据构成升级——机械门降位为「未见明显死」预筛,独立模型对真玩证据的玩法判定升为阻断,合称 L1 双证据口径(裁定三,§3)。依据是当日五路 harness 审计坐实的三处病根:机械门的玩法语义已空心化(现存五份 verdict 仅凭 score 单调上升即 pass、终态闭环降 advisory)、判卷合约失败被误标为玩法失败、链路真相层缺失(诊断档 = `docs/brainstorms/2026-07-09-生成线harness方向性诊断与换轴方向.md`)。修订面 = §2 表格与权力宪法第一条、§3 裁定三、§9 防 Goodhart 第二条;**L2L4 分数一律非阻塞的纪律不变**——升级的是 L1 自身的证据,不是把丰富度分数变成门。
质量不是一个分,是四层递进的塔:机器门保「能玩」(L1,质量分层内唯一拒发权),LLM 评「有料」(L2),结构要求保「想再玩」(L3)与「想传出去」(L4)的前提;玩家真实数据是 L3/L4 的最终裁判,并回流校准 L2L4 评分与 D11 权重。本档立标准、判定归属与数值档位,是 W-GENRE 品类件 rubric、tier2 富三门反馈契约、数据飞轮留存口径的共同上位标准。它不重定义九门/富三门/首局门的具体判据(判据 SoT 仍是[验收门](验收门.md),本档只裁消费口径),不建留存/传播数据的采集管道(归 telemetry 线与[数据飞轮](数据飞轮.md)回流环),不替 agent 调平衡数值,不写各品类的完整 rubric(归 W-GENRE 品类件),不造统一「质量总分/爆火分」或任何自动爆火门,也不改开闸六门的治理设计(仅接管其中 D11 就绪分的权重管辖)。 质量不是一个分,是四层递进的塔:机器门保「能玩」(L1,质量分层内唯一拒发权),LLM 评「有料」(L2),结构要求保「想再玩」(L3)与「想传出去」(L4)的前提;玩家真实数据是 L3/L4 的最终裁判,并回流校准 L2L4 评分与 D11 权重。本档立标准、判定归属与数值档位,是 W-GENRE 品类件 rubric、tier2 富三门反馈契约、数据飞轮留存口径的共同上位标准。它不重定义九门/富三门/首局门的具体判据(判据 SoT 仍是[验收门](验收门.md),本档只裁消费口径),不建留存/传播数据的采集管道(归 telemetry 线与[数据飞轮](数据飞轮.md)回流环),不替 agent 调平衡数值,不写各品类的完整 rubric(归 W-GENRE 品类件),不造统一「质量总分/爆火分」或任何自动爆火门,也不改开闸六门的治理设计(仅接管其中 D11 就绪分的权重管辖)。
@ -22,14 +24,14 @@ date: 2026-07-02
| 层 | 回答 | 判定者 | 量纲 | 权力 | 消费者 | | 层 | 回答 | 判定者 | 量纲 | 权力 | 消费者 |
|---|---|---|---|---|---| |---|---|---|---|---|---|
| **L1 机制可玩** | 能玩、玩得通吗 | 机器真玩(九门 + 富游戏三门 + 首局门),零 LLM | 布尔(过/不过) | **质量分层内唯一拒发权** | 生成环放行、生产复验 | | **L1 机制可玩** | 能玩、玩得通吗 | 双证据:机器真玩预筛(九门 + 富游戏三门 + 首局门)**∧** 玩法地板判定(便宜档 = 独立模型看真玩证据,出题 ≠ 被考;tier2 现 = 富三门双路,见裁定三落地范围) | 布尔(过/不过) | **质量分层内唯一拒发权** | 生成环放行、生产复验 |
| **L2 内容丰富** | 有料、耐玩吗 | LLM 验证 agent 按品类 rubric,非阻塞 | 逐条 0/1 + 分组小计 | 观测 + 批次验收线,不拦单款 | 品类件验收、批次观测、回流分析 | | **L2 内容丰富** | 有料、耐玩吗 | LLM 验证 agent 按品类 rubric,非阻塞 | 逐条 0/1 + 分组小计 | 观测 + 批次验收线,不拦单款 | 品类件验收、批次观测、回流分析 |
| **L3 留存结构** | 想再玩的结构前提在吗 | 生成时 rubric 留存组;上线后玩家真数据 | rubric 分;运营 0100 | 观测;真数据经 quality_score 影响分发 | feed 排序、数据飞轮 | | **L3 留存结构** | 想再玩的结构前提在吗 | 生成时 rubric 留存组;上线后玩家真数据 | rubric 分;运营 0100 | 观测;真数据经 quality_score 影响分发 | feed 排序、数据飞轮 |
| **L4 传播钩子** | 想让别人看的结构前提在吗 | 生成时 rubric 传播组;上线后 share/remix 漏斗 | rubric 分;漏斗率 | 观测;爆款筛选归运营 | remix 网络效应、爆款签约(P-IPX-06) | | **L4 传播钩子** | 想让别人看的结构前提在吗 | 生成时 rubric 传播组;上线后 share/remix 漏斗 | rubric 分;漏斗率 | 观测;爆款筛选归运营 | remix 网络效应、爆款签约(P-IPX-06) |
层间纪律三条,是整个模型的权力宪法。 层间纪律三条,是整个模型的权力宪法。
**质量侧的发布权只在 L1。** 一款游戏能不能进 feed,质量分层内由确定性证据说了算,L2L4 任何分数都不拦发布。这是既有防 Goodhart 红线(效果层「绝不放行也绝不拒发」)在整个模型上的推广:LLM 评分与结构评分都是软信号,软信号一旦拿到拒发权,评分尺立刻变成被优化的目标。发布链上另有治理拒发权(GP9 合规、D12 控制平面),在本模型之外、不受本档约束。 **质量侧的发布权只在 L1。** 一款游戏能不能进 feed,质量分层内由 L1 说了算,L2L4 任何分数都不拦发布。L1 自身的证据构成 2026-07-09 起为双份:机械真玩预筛是地板(挡明显死:起不来、抛异常、不渲染、不掌帧),独立模型对真玩证据的玩法判定是裁决(能玩到终局吗、核心操作有真决策吗、切 brief 的题吗)。这样改的原因写在裁定三:机械断言曾被当成「可玩」的完整证据,实测它只证得了「有东西在涨」,秒死、刷分、死锁、永不结束的游戏都能空心过门——把发布权全押在它上面,恰好造出了另一种 Goodhart(游戏围着盲驱动器的盲区设计)。原防 Goodhart 红线本身不动:LLM 的丰富度/留存/传播**评分**仍是软信号、永不拿拒发权;玩法判定不是评分——它裁的是**地板的有无**(玩得通吗/有决策层吗/切题吗),不是**程度的高低**(丰富、耐玩、好玩到什么程度——那些永远归 L2 软信号),与机械预筛同属 L1,受金标校准与人工抽检约束。发布链上另有治理拒发权(GP9 合规、D12 控制平面),在本模型之外、不受本档约束。
**推荐权在真数据。** 玩家行为聚合成运营质量分(0100)回灌 feed 决定「值不值得推」;生成侧 rubric 分只影响批次改进与回流分析,不直接改 feed 排序。 **推荐权在真数据。** 玩家行为聚合成运营质量分(0100)回灌 feed 决定「值不值得推」;生成侧 rubric 分只影响批次改进与回流分析,不直接改 feed 排序。
@ -43,10 +45,12 @@ date: 2026-07-02
判据本体在[验收门](验收门.md),本档不重抄:九门 = 客观健康门 A_boot/B_uncaught/C_frame/D_render/E_live 加 driver 依赖门 F_wiring/G_input/H_progress/I_control,真玩驱动、CDP 探针、零 LLM;富游戏三门 = tier2 多系统档专属(三联动/经济/latch);首局门 = H 门的 additive 派生超集(可玩 ≤2s/首反馈即时/60s 品类闭环),FAIL 不推翻 H。定稿时点的现状:便宜档 M1 三品类 15/15 达标;tier2 收敛环 conditional,卡在经济门与 H_progress——判法与反馈的解法见 §8。 判据本体在[验收门](验收门.md),本档不重抄:九门 = 客观健康门 A_boot/B_uncaught/C_frame/D_render/E_live 加 driver 依赖门 F_wiring/G_input/H_progress/I_control,真玩驱动、CDP 探针、零 LLM;富游戏三门 = tier2 多系统档专属(三联动/经济/latch);首局门 = H 门的 additive 派生超集(可玩 ≤2s/首反馈即时/60s 品类闭环),FAIL 不推翻 H。定稿时点的现状:便宜档 M1 三品类 15/15 达标;tier2 收敛环 conditional,卡在经济门与 H_progress——判法与反馈的解法见 §8。
**裁定一(消费口径):driven 时九门全量 AND 为现行 L1 口径,「收窄 AE」历史化。** 验收门 §2.4 曾记「生成环消费从九门全过收窄成只认 AE,G/H/I 降参考,F_wiring 改 VLM 判」——那是 gamedef 时代 driver 缺失、G/H/I 不可靠时的消费策略。现行便宜档在门跑前自动生成 play-spec 使 driven=true、九门全部致命,cheap 与 tier2 的判据代码都认九门全量与富门,M1 达标 15/15 正是这个口径。据此裁定:driven 时九门全量 AND 为现行 L1 口径;undriven 时 E_live/H_progress 自动降 advisory 的分级保留在 harness(已实装);「收窄 AE」条款自本档定稿起历史化,消除文档-代码漂移,存量引用面随收口逐一改注,此后再发现的引用面一律改该处引用、不回改本裁定。F_wiring 保持机器硬门;VLM 视觉判定归 L3 视觉软检,永远软 **裁定一(消费口径):driven 时九门全量 AND 为机械层取值口径,「收窄 AE」历史化;2026-07-09 起该口径的通过 = 预筛通过,不再单独构成 L1 通过(见裁定三)。** 验收门 §2.4 曾记「生成环消费从九门全过收窄成只认 AE,G/H/I 降参考,F_wiring 改 VLM 判」——那是 gamedef 时代 driver 缺失、G/H/I 不可靠时的消费策略。现行便宜档在门跑前自动生成 play-spec 使 driven=true、九门全部致命,cheap 与 tier2 的判据代码都认九门全量与富门,M1 达标 15/15 正是这个口径。据此裁定:driven 时九门全量 AND 为机械层现行取值口径(自裁定三起它构成 L1 的预筛半,另一半 = 独立模型玩法判定);undriven 时 E_live/H_progress 自动降 advisory 的分级保留在 harness(已实装);「收窄 AE」条款自本档定稿起历史化,消除文档-代码漂移,存量引用面随收口逐一改注,此后再发现的引用面一律改该处引用、不回改本裁定。F_wiring 保持机器硬门;VLM 视觉**效果**评分归 L3 视觉软检,永远软——它与裁定三的玩法判定(布尔裁决、阻断)是两物,别混
**裁定二(富三门档位适用):富游戏三门只随「多系统富游戏」档位走**(现为 tier2 经营类)。便宜档经营品类的进度判定 = occupied 反应族驱动 + score 递增断言,不引入 tier2 经济平衡门(盈利/破产双路判)——单循环游戏没有「经济死局」问题,把它强推到便宜档,是给 L1 加不属于该档位的判据。这里要分清「门」与「断言」两个层次:play-spec 里经 H 门校验的 per-game 真玩断言(score 递增,以及游戏含消费扣减时的 currency 扣减断言)是便宜档 L1 的正当判据,照常使用;本裁定挡的是门级判据跨档,不是禁用某类断言(断言与 rubric 的分界见 §4 规范五)。两档判据差异是档位事实,不是待统一的债。 **裁定二(富三门档位适用):富游戏三门只随「多系统富游戏」档位走**(现为 tier2 经营类)。便宜档经营品类的进度判定 = occupied 反应族驱动 + score 递增断言,不引入 tier2 经济平衡门(盈利/破产双路判)——单循环游戏没有「经济死局」问题,把它强推到便宜档,是给 L1 加不属于该档位的判据。这里要分清「门」与「断言」两个层次:play-spec 里经 H 门校验的 per-game 真玩断言(score 递增,以及游戏含消费扣减时的 currency 扣减断言)是便宜档 L1 的正当判据,照常使用;本裁定挡的是门级判据跨档,不是禁用某类断言(断言与 rubric 的分界见 §4 规范五)。两档判据差异是档位事实,不是待统一的债。
**裁定三(2026-07-09,L1 双证据口径):机械门降位为预筛,独立模型玩法判定升为阻断,两者相与才是 L1 通过。** 依据是当日五路 harness 审计:九门里唯一带玩法语义的 H_progress 实测退化成「score 单调上升」,终态闭环 latch 在「有进展」时一律降 advisory,现存五份 pass verdict(hard-heritage/hard-trpg/hard-idle-sim/c2v-1/c2v-3)全部仅凭 score↑ 过门——机械断言证得了「有东西在涨」,证不了「人能玩通」;而系统提示为让盲驱动器能跑,曾教模型把计分结构围着验收器的盲区设计(「两层奖励」条款),机械门独裁的后果正是它自己被 Goodhart。据此裁定四条:**其一**,机械真玩链(九门/富三门/首局门)语义降位为「未见明显死」的预筛地板,driven 时仍按裁定一全量 AND 取值,但其通过不再单独构成 L1 通过,verdict 的对外语义随之改名(预筛通过 ≠ 验收通过);**其二**,新增独立模型玩法判定,输入 = brief 加真玩证据链(首帧/局中/局末截图或录屏、游戏日志、取证状态时间线),产出 = 布尔裁决加逐条理由,阻断放行,理由原文回喂续修——判定者与生成者绝不同源(出题 ≠ 被考纪律原样保留),且判定只吃运行证据、不吃生成 agent 的自报。**玩法判定只裁地板布尔,分界钉死**:它的三类拒绝 = broken(真人玩不通/到不了终局)、hollow(空壳——核心循环不存在决策层,判「有没有」、不判「做得多好」)、off-brief(不切题);凡「多丰富/多耐玩/多好玩」的**程度**问题一律归 L2 rubric 非阻塞——同一维度在两层各管一半:L1 判定裁「有无」(如:决策层存在吗),L2 rubric 评「高低」(如:rubric 第 12 条评决策做得多有层次),谁想把某条 rubric 升成门,仍须回本档改 SoT 并过创始人,近义措辞不构成升门依据;**其三**,判定失败或评不出一律 fail-closed:不放行、标 degraded、入人工复核队列,人可放行——绝不静默降级成自动通过;**其四**,判定的校准纪律与 rubric 同构:每品类金标正反例复验、漂移超线先复采样再回退,创始人抽玩是最终校准锚,判定阻断带配置开关可整体回退到修订前口径。**落地范围**:模型判定先在便宜档生效(执行 = W-AXIS 换轴 plan 波 2);tier2 的玩法地板现由富三门双路真玩承担——其经济双路(赢得了且输得了且都到终态)正是「地板布尔」的机械对位物——tier2 是否叠加模型判定,随便宜档校准结果另议,在此之前 §2 表行的「模型判定」对 tier2 读作「富三门双路」。失败归因随本裁定分三层——判卷驱动器合约失败(取证不完整)、机械门失败(代码/运行缺陷)、玩法判定失败(设计缺陷)——回喂反馈必须按真实层次措辞,不得再把合约缺口说成「玩法坏死」。
## 4 L2 内容丰富:rubric 体系 ## 4 L2 内容丰富:rubric 体系
![rubric 计分制与 F-4 平衡门五裁定](assets/quality-02-rubric计分与平衡门.svg) ![rubric 计分制与 F-4 平衡门五裁定](assets/quality-02-rubric计分与平衡门.svg)
@ -69,7 +73,7 @@ date: 2026-07-02
**规范四:判定形态。** 纯 LLM、非阻塞、逐条给理由;绝不写成代码校验、不进九门、不进脚手架(创始人红线)。评分调用失败/超时/解析失败一律降级为「本次未评出」,不抛、不阻断生成、不进达标判定——非阻塞语义自带降级,也把错杀面封为零(评分再错也不拦游戏)。每款一次评分调用,成本占比可忽略(便宜档 <¥0.1 量级)。 **规范四:判定形态。** 纯 LLM、非阻塞、逐条给理由;绝不写成代码校验、不进九门、不进脚手架(创始人红线)。评分调用失败/超时/解析失败一律降级为「本次未评出」,不抛、不阻断生成、不进达标判定——非阻塞语义自带降级,也把错杀面封为零(评分再错也不拦游戏)。每款一次评分调用,成本占比可忽略(便宜档 <¥0.1 量级)。
**规范五:与 L1 断言的分界。** `sim-business-game-design` skill §10 曾注「4 条可机检」,这四条不同质,分两类处置:纯 code-presence 类(即时反馈/下一个解锁/音反馈——代码里存在调用 ≠ 体验成立)按红线软化为 LLM 评分维度,不落项目代码;经 H 门 assertAfterPlay 校验的 per-game 真玩断言(可见成长的 score/资源递增断言、经营的 currency 扣减断言)属 L1 机制可玩,保留为硬断言、不软化——把真玩硬证据降成软评分会削 L1 的拒发权,方向恰好反了。同名两物并存且分工明确:L1 断言判「机制上真发生」,L2 rubric 判「体验上成立、有层次」;skill §10 注记照此改口。 **规范五:与 L1 断言的分界。** `sim-business-game-design` skill §10 曾注「4 条可机检」,这四条不同质,分两类处置:纯 code-presence 类(即时反馈/下一个解锁/音反馈——代码里存在调用 ≠ 体验成立)按红线软化为 LLM 评分维度,不落项目代码;经 H 门 assertAfterPlay 校验的 per-game 真玩断言(可见成长的 score/资源递增断言、经营的 currency 扣减断言)属 L1 机制可玩,保留为硬断言、不软化——把真玩硬证据降成软评分会削 L1 的拒发权,方向恰好反了。同名两物并存且分工明确:L1 断言判「机制上真发生」,L2 rubric 判「体验上成立、有层次」;skill §10 注记照此改口。2026-07-09 起这套分类学加入第三员——L1 模型玩法判定,判「作为游戏成立的**地板有无**」(broken/hollow/off-brief 三类拒绝,见裁定三):同一维度可以同时出现在 L1 判定与 L2 rubric,前者裁有无、后者评高低(例:决策层——L1 判定裁「有没有真决策」,rubric 第 12 条评「决策做得多好」),近义措辞不使 rubric 条目获得门权。
**规范六:消费点。** 分组小计消费于品类件验收与批次观测(档位观测线,§7)和回流分析(§10);逐条理由消费于品类件迭代——哪条维度长期不成立,就是品类设计 skill 或脚手架的改进信号。 **规范六:消费点。** 分组小计消费于品类件验收与批次观测(档位观测线,§7)和回流分析(§10);逐条理由消费于品类件迭代——哪条维度长期不成立,就是品类设计 skill 或脚手架的改进信号。
@ -139,7 +143,7 @@ flowchart LR
量纲纪律:既有双量纲锁死不动——生成质量分(01,aigc 域)与运营质量分(0100,telemetry→feed)不可互相回灌(`contracts/README.md` 双量纲红线);rubric 分(0N)是生成侧局部量纲,只在品类验收、批次观测、回流分析消费,禁止换算回灌进前两者;**不新造统一「质量总分/爆火分」**。D11 就绪分(0100,开闸治理观测件)的权重(playability 0.5/firstPlay 0.25/stability 0.15/efficiency 0.1)自本档起归质量轨管辖:放量前的起步值仍由生产 cutover plan 落定(其部署步已在修 efficiency 维 BUDGET_RMB 与便宜档实际成本的错配,该项列为质量轨接管后的首个复核件);放量后第一轮校准见 §10。 量纲纪律:既有双量纲锁死不动——生成质量分(01,aigc 域)与运营质量分(0100,telemetry→feed)不可互相回灌(`contracts/README.md` 双量纲红线);rubric 分(0N)是生成侧局部量纲,只在品类验收、批次观测、回流分析消费,禁止换算回灌进前两者;**不新造统一「质量总分/爆火分」**。D11 就绪分(0100,开闸治理观测件)的权重(playability 0.5/firstPlay 0.25/stability 0.15/efficiency 0.1)自本档起归质量轨管辖:放量前的起步值仍由生产 cutover plan 落定(其部署步已在修 efficiency 维 BUDGET_RMB 与便宜档实际成本的错配,该项列为质量轨接管后的首个复核件);放量后第一轮校准见 §10。
防 Goodhart 三条,贯穿全模型:**L2L4 分数一律非阻塞**——任何丰富/留存/传播分都不得升为拒发门,升门动议须回本档改 SoT 并过创始人;**真玩与真实玩家数据是仅有的两种「硬」证据**——设计侧一切 LLM 评分都是软信号;**「好玩」的终审归人**(审核台)。rubric 被 Goodhart 或评分漂移的兜底与此同构:非阻塞设计把错杀面封为零,金标锚定 ±1 回退管住漂移,放量后真数据校准是最终纠偏——若 rubric 分与留存相关性为零或负,重审 rubric 维度,回滚面只在 rubric 文本与评分 prompt,不伤门与代码。 防 Goodhart 三条,贯穿全模型:**L2L4 分数一律非阻塞**——任何丰富/留存/传播分都不得升为拒发门,升门动议须回本档改 SoT 并过创始人;**真玩与真实玩家数据是仅有的两种「硬」证据,且真玩证据必须被判读**——设计侧一切 LLM 评分都是软信号;机械断言对真玩证据的解读同样会空心(2026-07-09 实证:score-only pass 五案),所以 L1 的判读自裁定三起是「机械预筛 ∧ 独立模型判定」双份,单独哪一份都不许自称完整硬证据;**「好玩」的终审归人**(审核台与创始人抽玩)。rubric 被 Goodhart 或评分漂移的兜底与此同构:非阻塞设计把错杀面封为零,金标锚定 ±1 回退管住漂移,放量后真数据校准是最终纠偏——若 rubric 分与留存相关性为零或负,重审 rubric 维度,回滚面只在 rubric 文本与评分 prompt,不伤门与代码。
## 10 生效、校准与升级路径 ## 10 生效、校准与升级路径

View File

@ -76,7 +76,7 @@ flowchart TD
这三组门的取舍理由,可以浓缩成三条核心决策: 这三组门的取舍理由,可以浓缩成三条核心决策:
1. **D12 和 GP9 为什么必须硬阻塞?** 因为这两件事不做,后果都不可逆。后台的生成 worker 是**全局串行**的(一次只处理一个任务),不做控制平面,单个用户的并发请求就能把它压垮,所有人都生成不了;不做合规先行,违规内容会直接生成出来进入玩家信息流,这是法务红线,一旦发生无法回收。 1. **D12 和 GP9 为什么必须硬阻塞?** 因为这两件事不做,后果都不可逆。后台的生成 worker 是**全局串行**的(一次只处理一个任务),不做控制平面,单个用户的并发请求就能把它压垮,所有人都生成不了;不做合规先行,违规内容会直接生成出来进入玩家信息流,这是法务红线,一旦发生无法回收。
2. **那 3 道落库门为什么第一版只观测、不拦截?** 因为底层那套"九门 harness"(在真实浏览器里跑游戏、用九道确定性检查判定能不能玩的测试夹具)已经是挡住坏游戏的**硬地板**了。这三道落库门是更上一层的质量观测,第一版若一上来就生效拦截,反而会**误杀好游戏**——所以先只记录数据,等积累够了再考虑收紧。(这里"九门硬地板"说的是**开闸放行**那一侧:一款游戏要进信息流,仍按完整九门要求。生成环迭代生成时的消费口径曾在 2026-06-20 收窄为"只认五道客观健康门 AE",但已于 2026-07-02 由质量轨裁定回到 **driven 时九门全量 AND**、收窄 AE 归为历史方案——沿革详见 §2.4。) 2. **那 3 道落库门为什么第一版只观测、不拦截?** 因为底层那套"九门 harness"(在真实浏览器里跑游戏、用九道确定性检查判定能不能玩的测试夹具)已经是挡住坏游戏的**硬地板**了。这三道落库门是更上一层的质量观测,第一版若一上来就生效拦截,反而会**误杀好游戏**——所以先只记录数据,等积累够了再考虑收紧。(这里"九门硬地板"说的是**开闸放行**那一侧:一款游戏要进信息流,须过完整九门机械预筛,且 2026-07-09 起还须过独立模型玩法判定——L1 双证据口径,裁定见质量 SoT《游戏质量与爆火能力》裁定三。生成环消费口径的沿革:2026-06-20 曾收窄为"只认五道客观健康门 AE",2026-07-02 由质量轨裁定回到 **driven 时九门全量 AND**,2026-07-09 该口径整体降位为预筛——详见 §2.4。)
3. **真实计费为什么不在这一批?** 见 §1.2。 3. **真实计费为什么不在这一批?** 见 §1.2。
### 1.2 真实计费扣退为什么被拆出去(随 M4) ### 1.2 真实计费扣退为什么被拆出去(随 M4)
@ -157,6 +157,8 @@ flowchart TD
### 2.4 生成环消费九门的口径:硬门收窄成客观健康门 AE(创始人 2026-06-22 历史回收判定捡回) ### 2.4 生成环消费九门的口径:硬门收窄成客观健康门 AE(创始人 2026-06-22 历史回收判定捡回)
> **历史化注记(2026-07-02,质量轨裁定)**:本节记述的"生成环把九门收窄成只认 AE 客观健康门",是 gamedef 时代 driver 常缺、G/H/I 三门不可靠时的消费策略。现行便宜档在门跑前自动生成 play-spec 使 driven=true,cheap 与 tier2 的判据代码都按九门全量与富游戏门取 AND(M1 达标 bake-off 15/15 正是这个口径);undriven 时 E_live/H_progress 自动降 advisory 的分级仍保留在 harness。因此 **driven 时九门全量 AND 为现行 L1 口径,"收窄 AE"归为历史方案、不再是待选路线**;判定归属见同目录现行 canonical《游戏质量与爆火能力》(裁定 L1-a)。以下原文按历史记录保留,不删。 > **历史化注记(2026-07-02,质量轨裁定)**:本节记述的"生成环把九门收窄成只认 AE 客观健康门",是 gamedef 时代 driver 常缺、G/H/I 三门不可靠时的消费策略。现行便宜档在门跑前自动生成 play-spec 使 driven=true,cheap 与 tier2 的判据代码都按九门全量与富游戏门取 AND(M1 达标 bake-off 15/15 正是这个口径);undriven 时 E_live/H_progress 自动降 advisory 的分级仍保留在 harness。因此 **driven 时九门全量 AND 为现行 L1 口径,"收窄 AE"归为历史方案、不再是待选路线**;判定归属见同目录现行 canonical《游戏质量与爆火能力》(裁定 L1-a)。以下原文按历史记录保留,不删。
>
> **再修订(2026-07-09,创始人拍板)**:九门全量 AND 的语义再降一级——它仍是机械层的取值口径,但其通过自此只构成「未见明显死」的**预筛**,不再单独等于 L1 通过;L1 通过 = 机械预筛 ∧ 独立模型玩法判定(依据 = 当日五路 harness 审计:H_progress 实测退化为 score 单调上升、latch 有进展即降 advisory,五份空心 pass verdict 在册)。裁定与四条细则见《游戏质量与爆火能力》裁定三,本档判据本体(九门各门怎么判)不动——动的又一次只是消费侧语义。
前面几节把九门 harness 讲成一道统一的"硬地板",这个说法在"开闸放行"这个语境里仍然成立——一款游戏要进信息流,确实要先过这套真玩检测。但要把一件 2026-06-20 拍下的口径变化讲清楚,否则架构档会和现行真相脱节:**生成环(SAA 管线)在迭代生成时怎么"消费"九门的裁决,已经从"九门全过才算成功"收窄成了"只认五道客观健康门 AE"。** 这是九门收窄后、gamedef 路实测生成质量从 all-9 口径下的约 50% 做到 91.7% 的直接原因之一——实测样本 n=12:关闭 thinking 时过 8/12,启用 Anthropic 原生 thinking 分离协议后过 11/12(即 91.7%);创始人 2026-06-20 拍板以 n=12/91.7% 宣告达标(n≥30 只多给方差信息,不改"thinking-on 更好且过门"的结论)。gamedef 路虽已判错误路线废弃,但"九门收窄成 AE 客观门"这条验收消费策略引擎无关、对现行 A-model 真 src/ 同样适用。 前面几节把九门 harness 讲成一道统一的"硬地板",这个说法在"开闸放行"这个语境里仍然成立——一款游戏要进信息流,确实要先过这套真玩检测。但要把一件 2026-06-20 拍下的口径变化讲清楚,否则架构档会和现行真相脱节:**生成环(SAA 管线)在迭代生成时怎么"消费"九门的裁决,已经从"九门全过才算成功"收窄成了"只认五道客观健康门 AE"。** 这是九门收窄后、gamedef 路实测生成质量从 all-9 口径下的约 50% 做到 91.7% 的直接原因之一——实测样本 n=12:关闭 thinking 时过 8/12,启用 Anthropic 原生 thinking 分离协议后过 11/12(即 91.7%);创始人 2026-06-20 拍板以 n=12/91.7% 宣告达标(n≥30 只多给方差信息,不改"thinking-on 更好且过门"的结论)。gamedef 路虽已判错误路线废弃,但"九门收窄成 AE 客观门"这条验收消费策略引擎无关、对现行 A-model 真 src/ 同样适用。

View File

@ -0,0 +1,91 @@
---
topic: cheap-gen-harness-direction-diagnosis
status: draft(待创始人拍方向)
sot-impact: 本档不改 SoT;若换轴获批,判定语义与判卷合约的变更须另立设计档申报 agentic运行时架构图说 的 sot-impact
上级: docs/architecture/架构/生成引擎/agentic运行时架构图说.md
---
# 生成线 harness 方向性诊断与换轴方向(2026-07-09)
2026-07-09 凌晨创始人提出方向性质疑:harness 与 agent 设计有方向性错误,各种伪装成功伪装失败,模型能力被限制被误导,过去的结论建立在错误结果上,且从未有人做过真实链路的端到端验证。本档是对这一质疑的取证与裁定:五路独立审计(harness 约束机制清单、真实链路端到端还原、验证信号真伪、知识层对标 TapTap、微信/抖音/QQ 行业方案调研)+ 主会话亲手复核四项要害证据。
## 一、结论
质疑主体成立,但病根与直觉不同。**不在「知识层薄」——知识层其实厚且路子对**(薄提示+模型自读知识库,与 TapTap 同构);**真正的方向性错误有三处,互相咬合成一个自我蒙蔽的循环**:
1. **判定语义膨胀**:机械信号被系统当成「可玩」事实。九门唯一的玩法语义门 H_progress 实测退化为「score 涨了就行」;终态闭环(latch)在「有进展」时一律降级 advisory。结果是「点哪都加分、永不结束」的游戏能过全部九门。与此同时真正懂玩法的 LLM 丰富度评审被设计成非阻塞旁路,richness=0 或 null 照样 pass——**判定权威给了不懂玩法的机械门,懂玩法的模型判断靠边站**。
2. **判卷合约反噬生成**:盲驱动器判卷要求游戏暴露私有内省合约(`state().targets` 键名锁死、phase 命名、score 键)。合约没对上,失败反馈却措辞成「玩法坏死/终态不可达/空壳」,既误导了模型的续修方向,也误导了我们的根因结论;系统提示甚至教模型用「两层奖励」围着盲驱动器的盲区设计计分——**验证器的局限反向塑造了游戏设计与失败归因**。
3. **真相层缺失**:trace.jsonl 只落事件骨架(工具名/参数增量/成败/token 数),模型文本、工具返回、门反馈**一个字都不落盘**;失败 run 的产物被同 gameId 重跑直接覆盖;同一 evidence 目录混着不同 run 的 verdict 与 verdict-feedback。「没人端到端读过链路」不是偶然失职——**磁盘上物理没有这份数据**。所有历史结论都建立在聚合数字上,于是每次事故只能催生又一层兜底补丁(现存 14+ 层事故驱动补丁、约 36 个约束机制),层层叠成创始人说的「不成体系」。
## 二、证据(全部可复核,标注来源)
### 2.1 判定语义膨胀(审计三 + 主会话亲验)
- 九门 A/B/C/D/F(装载/无异常/掌帧/真像素渲染/真接线)是真实机械信号,E/G/H/I 是半启发式。放行判据 `gate_judge.py:382` = `pass && guards 非空`
- **亲验实锤**:`_wg1-gen/hard-trpg/evidence/verdict.json` 顶层 `pass=true`,`guards.H_progress` 仅凭 `{"path":"score","op":"increased","before":0,"after":216}` 通过,`latch:{pass:false, advisory:true, reason:"未驱动到终态但有真进展(限时/无快速失败态类→advisory)"}`。同构的 score-only pass 现存至少五份:hard-heritage / hard-trpg / hard-idle-sim / c2v-1 / c2v-3,其中 hard-heritage 与 c2v-3 连 firstPlay 的 firstFeedback=False 都照样 pass(首局门非阻塞)。降级机制在 `play.cdp.cjs:1150-1161`
- 创始人点名的三类假阳(秒死/存档刷分/死锁,AGENTS.md §6.13、commit ec276b1b)与该机制严丝合缝:score 单调上升即可过,不问是否靠刷、不问能否结束。
- 唯一质量判断 `cheap_verify.py` 是纯 LLM judge,合规(不违「模型能力不写代码校验」红线),但被三重声明钉成「不进 verdict、不改 ok、不动达标」——xtheme-v1-prefix 批里 rich=0 与 rich=null 的游戏全部 verdictPass=true。
- 静态 check 六类里语法(node --check)与未定义标识符(esbuild 作用域分析)是真实信号;红线八条(禁裸 Math.random/Date.now 等)靠自制 stripCode 正则,已坐实假阴事故:字符串内 `//`(如赛博文案 'JACK IN // FLOOR')被当注释误抹真代码 → 误报红线缺失 → **模型明明写对却被反复拒到熔断烧钱**(commit 0be0f61c,2026-07-08 23:27 才修)。系统提示为此教模型「check 按去注释后的纯文本正则命中,把裸调封装进函数内部照样被拦」——教模型绕正则,而不是写对代码。
### 2.2 判卷合约反噬(审计二)
- 8 份留存失败反馈(verdict-feedback.json)里 H_progress 8/8 挂:4 例 phaseNow=menu(**驱动器进不去菜单**),3 例进了 play 但 score 键没接上。反馈文本却统一措辞「无真实进展/终态不可达/空壳」。
- 干净的证伪案:xt-puzzle-huarong turn1 被拒(「终态不可达/空壳」),turn2 模型的 finish summary 原文是「menu/over 按钮加入 targets(occupied:true)让 tap-targets 驱动可导航;phase 名改 'game...'」——**只是把按钮暴露进 targets、改了 phase 名就过,游戏本体(804 行真 15-puzzle,行优先归位判定、3×3→5×5 关卡递进)一直是好的**。
- 系统提示(contracts/prompts/04-config/cheap-system.md:30)明文:「九门自动验收会盲点 occupied:true 目标、判 score 涨,所以做成两层奖励——基础分(保盲驱动器能跑通过门)+技巧分」。游戏计分结构为判卷器而设计。
- resume 后模型为了自证,去读判卷器源码 play.cdp.cjs、读自己的 trace.jsonl、自写 smoke 测试:xt-puzzle-huarong 一局烧到 ¥11.48 / input 180,292 tokens / 19 分钟;同品类干净一次过(xt-trpg-cyber)只要 ¥0.79——**14 倍成本方差全是 harness 摩擦,与品类难度无关**。
### 2.3 真相层缺失(审计二 + 主会话亲验)
- **亲验实锤**:amgen-xt-puzzle-huarong/trace.jsonl 每行只有 `{"ext":{"raw":{"event":"ToolResultTextDeltaEvent"},...}}` 类事件骨架,全文件 grep ERROR/PASS/FAIL 仅 5 处(argsDelta 碎片),模型推理文本与门反馈文本零落盘。
- 失败 run 无归档:重跑同 gid 直接覆盖 amgen-<gid>/ 与 _wg1-gen/<gid>/;现存 10 条 trace 全是通过 run,it4-baseline 的失败链路、xtheme-v1-prefix 的熔断链路(trpg-cyber ¥13.84 / puzzle 7 次 ¥10.09)已被抹掉。
- evidence 目录卫生:hard-heritage 目录里 verdict.json(07-09 00:20,pass=True)与 verdict-feedback.json(07-08 17:06,passed=False,init 字符串不同=不同代码)并存——红线③只清 verdict.json 与 service-run-summary.json,不清反馈残留。
- OTLP sink 默认 no-op(CHEAP_OTLP_ENDPOINT 缺省即不发),观测线没有第二处留存。
### 2.4 约束面全景(审计一)
系统提示 10,814 字符 / 92 句,强制与禁止词密度约每句一个(必须×12、绝不×11、别×30、钉死×6、红线×9);7 个工具、框架原生 Planning/Team/Bash/Edit/Glob/Grep/Read/Write 全被 monkeypatch 关闭;熔断经济学 = ¥10 软停 + ¥15 硬地板 + 6 次续修 + 150 步 + stuck 4 连同签名。约 36 个约束机制、14+ 层事故补丁,每层注释都自认「兜底/纵深/fail-open」——**层数本身就是「主判定不可信」的证据**。写锁(20fb8754「换皮写锁」)已被创始人当夜纠偏全撤(22da3464,同时 max_tokens 16K→512K),但 reskin 机器(build_reskin_system_prompt、白名单管路)休眠在代码里待清理;唯一正当的白名单残存 = modify 路「只改玩法」的语义收窄。
### 2.5 被推翻的两个历史结论(审计二)
- **「真实率 ~80% 是 MiniMax-M3 天花板」不成立**。它是三个口径的混淆(死圈修复 plan 实测真过门率 39%、跑到门率 83%;bake-off-7 是 3 个简单街机品类 n=2 的 100%;AGENTS.md 的 80% 是 MVP 目标值),且在 stripCode 假阴修复前测得(污染)。修复+per-genre 起点后 xtheme / it5-lockcore / r1 三批各 5/5 全过,模型没变——**过门率随工具移动,不随模型**。(诚实边界:近批 n=1/品类,不能反推「已稳定 95%+」,只能判「80% 不是模型天花板」。)
- **「主导根因=玩法坏死」大半是误标**。多数失败真因是判卷驱动器合约缺口(进不去菜单/认不出终局/score 键没对上),小补丁即过;真坏死(heritage 黑屏渲染没接线)是少数,且已被 per-genre scaffold 修掉。
### 2.6 模型真实能力重估(审计二)
五套通过产物亲读:L1 五文件字节全同(固定 plumbing),game-logic/core/render 五款 md5 各异——**是「模板骨架+模型自著内容」,不是字节换皮**。story-campus 377 行真分支叙事(8 节点/4 结局/双属性轴/结局图鉴)、heritage 310 行节拍火候玩法、puzzle 804 行真解谜。工程质量整体良好,几乎无死代码。M3 在被解开限制后的表现,支持创始人「llm 能力很强,一直被限制被误导」的判断。
## 三、哪些资产是对的(不推倒)
知识层:薄入口+read_file 自取知识库的架构(cheap_roles.py:4 铁律)、6 份品类设计 skill(~933 行)、11 份插件 api.d.ts、❌→✅ 幻觉速查表、6 套黄金脚手架、「先设计后写码+⑨否决项」的设计纪律——这些与 TapTap/行业同构,是对的地基。真浏览器 CDP 九门里 A/B/C/D/F 五门是真实机械信号,该留作地板。tier2 的双路经济门(赢得了且输得了且都到终态)是结构性可玩地板的正确样板。LLM 丰富度评审本身合规且已接线,只是权威位置放错。¥ 硬地板 fail-closed 的成本封顶正确。撤写锁+放开 max_tokens 的纠偏方向正确。
行业对照(审计五):TapTap/微信 CodeBuddy/抖音/QQ 四家收敛的最小结构 = (半)通用 coding agent + 规则/知识文件 + 真实编译/预览/真机验证 + 人在环。**没有一家用代码启发式判玩法;没有一家用正则拒改 agent 输出**;约束要么进知识库(软),要么进工具权限层 Deny/Ask/Allow(CodeBuddy),不进语义层。我们知识层已同构,自造的私有物恰好是出问题的两处:判定语义与判卷合约。
## 四、换轴方向(三波七件,待拍)
**波 1 · 真相层(先行,其余一切验证的前提)**
① 链路全文落盘:模型文本、工具返回、门反馈逐 turn 留存;per-run 归档(带 attempt 序号),永不同 gid 覆盖;evidence 目录卫生(残留反馈/快照全清)。
② 判卷驱动器合约失败与游戏失败分开归因:反馈文本按真实层次措辞(「驱动器无法导航:菜单按钮未暴露进 targets」≠「玩法空壳」),失败分类进批次账。
**波 2 · 判定语义重置(§6.13 的产品化)**
③ 九门 pass 语义降级为「未见明显死」的机械预筛;验收 = 机械门绿 **且** 模型判定过——把 LLM judge 从非阻塞旁路升为阻断权威,并从「读源码」扩到「看运行」(录屏/连拍截图喂视觉模型 + agent 按 brief 试玩判定:能玩到终局吗、决策有代价吗、像不像 brief 要的游戏)。终态可达按品类做成 tier2 式双路门。
④ 拆真正误导模型的残笼:清理休眠 reskin 机器;stripCode 类正则红线换 esbuild/AST 词法层判定;删「两层奖励围着盲驱动器设计」的提示文案(判卷改为 agent 试玩后此合约整体可退役);edit_file 锚点容错(行号/模糊匹配),消 5 连拒螺旋。
**波 3 · 知识层补强(对标清单的三个真缺口)**
⑤ 类型硬门:tsc 对 api.d.ts 做真类型检查(TapTap 的 LSP 门对等物)。
⑥ examples 索引 + recipes 场景库(现有 5 份设计范式是「什么好玩」,补「场景怎么实现」)。
⑦ 暗资产接线:6 个模型不可见插件、11 份 PLUGIN.md、引擎能力摘要,接进模型面并建防漂移对账。
**收尾:n=5 重测基线**——波 1/2 落地后按品类重跑,作废全部污染数字,重锚真实率与单局成本;所有下过的相关结论(容量、成本、品类难度)以新基线为准。
## 五、风险与验证
- 视觉模型+agent 试玩升为阻断权威后,单局验收成本上升(多一次模型判定)。对冲:机械预筛先挡明显死,判定只对过筛者跑;且当前 14 倍成本方差主要来自 harness 摩擦,拆笼后净成本预期下降而非上升。判定模型的假阳假阴同样存在——用 n=5 收敛环+创始人抽玩校准它,而不是回退到机械门。
- 判卷合约(targets)退役是行为面变更:现存过门游戏依赖它,需保留读取兼容或一次性重判。
- 换轴范围只及便宜档与共享 verdict 语义;tier2 自治环与双路门不动(它是样板)。
- 验证方式:每项落地都以「同一失败案例在新链路下能否一眼下钻到真根因」为验收(拿 xt-puzzle-huarong turn1 与 heritage 黑屏两案回放);重测基线用真浏览器亲玩+截图为硬证,遵 §6.13。
## 六、证据索引
commit:0be0f61c(stripCode 假阴)/ 22da3464(撤写锁+512K)/ 20fb8754(写锁引入,已撤)/ 88d3a237(死菜单假阳→加 played)/ 9d463f08(whack-mole E_live 假阴)/ 8b491d13(latch 词表)/ ec276b1b(§6.13 立规)。
文件:play.cdp.cjs:1150-1191(latch 降级与判定主体)/ gate_judge.py:365,382 / tools.mjs:130-134,275,302-427(静态门)/ cheap_verify.py + cheap_studio.py:424-441(LLM judge 非阻塞)/ cheap-system.md:30(两层奖励)、:65(正则语义)/ cheap_roles.py:4(知识自取铁律)/ cheap_run.py:113-134(read_file 沙箱)/ _wg1-gen/{hard-trpg,hard-heritage,hard-idle-sim,c2v-1,c2v-3}/evidence/verdict.json(score-only pass)/ amgen-*/trace.jsonl(骨架化)/ results/hard-genre-*.json(批次账)。
审计执行:2026-07-09 五路只读审计代理(opus)+ 主会话四项亲验;审计报告要点已并入本档,原始报告在会话内。

View File

@ -0,0 +1,61 @@
---
date: 2026-07-09
topic: cheap-gen-acceptance-axis-shift-plan
status: 草稿(待双评审;方向与验收权威已由创始人 2026-07-09 拍板)
上级: docs/plans/2026-06-25-生成引擎统一执行计划-AgentScope三档-plan.md
sot-impact: 已回写——质量模型 SoT 裁定三、运行时图说护城河段、验收门 §2.4 再修订、AGENTS.md §3.1(同工作树,与本 plan 同批提交);本 plan 只执行、不再改 SoT
关联: cheap-worker/ + game-runtime/tools/amodel-gen/tools.mjs + game-runtime/games/_wg1-gen/_shared/play.cdp.cjs + tier2/gen-worker/worker/gate_judge.py + contracts/prompts/04-config/cheap-system.md @ d3baf86e
---
# 生成线验收换轴三波 · 执行计划(W-AXIS)
人审版(方向诊断)= `docs/brainstorms/2026-07-09-生成线harness方向性诊断与换轴方向.md`;判定归属的权威文本 = 质量模型 SoT 裁定三。本 plan 是执行版:波 0(并行勘误)+ 三波主体 + 收尾重测,波内可派单、波间有依赖。创始人已拍:三波连打、模型判定升为阻断;每波收口按 §6.13 真浏览器验收,报可提交状态等指令。执行位 = opus(工单六要素即下表各波),主会话验真终审。
## 波 0 · 污染引用面定点勘误(小,半天;与波 1 并行)
- **目标**:被 2026-07-09 审计推翻的两个结论(「~80%=MiniMax 天花板」「主导根因=玩法坏死」)及「九门 pass=验收通过」旧语义,在**策展层**的引用点全部勘误;留痕层(docs/plans、docs/brainstorms、agent-specs 历史档)一律不改——它们是带日期的快照,git 即历史。
- **边界**:只改策展层 = `.agents/**``docs/architecture/**``docs/mvp/**``AGENTS.md`(已改)、auto-memory(已勘误两档);不重写历史,不删数据文件(results/*.json、_wg1-gen 产物全保留)。
- **输入**:grep 关键词族(「80%」「天花板」「玩法坏死」「九门.*(通过|达标|放行)」「verdictPass」),诊断档 §2.5 的证据。
- **产出**:勘误点清单(文件:行 → 改法)+ 逐点修正(有日期的勘误注记,不抹原文);`.agents/skills/cheap-model-game-generation.md` §11 等生成线 skill 的结论段对齐新口径。
- **验收**:清单里每点给 diff;再跑同一 grep,策展层无残留旧口径(历史档命中属预期,标注即可)。
- **回滚**:纯文档,git revert 即回。
## 波 1 · 真相层(先行,其余波的验证前提)
- **目标**:从此每个生成 run 的完整链路可读、可归档、可归因——「模型每轮写了什么、harness 每轮回了什么」不再是物理缺失的数据。
- **边界**:只动 cheap-worker 落盘/归档层与 evidence 卫生;不改门判定、不改 prompt、不动 tier2。
- **输入**:现 trace sink(事件骨架)、Service 事件流、`_write_session_cfg`/collector 收口点;诊断档 §2.3 的 F0-a/b/c 三缺口。
- **产出**:①逐 turn 全文落盘(模型文本、工具调用全参、工具返回文本、门反馈/续修注入文本),落 `amgen-<gid>/turns.jsonl`,带单文件上限与轮转,密钥类字段脱敏;②per-run 归档——重跑同 gid 前把上一 run 的 amgen 目录与 evidence 整体移入带时间戳的归档位,批次账每 run 记归档指针;③evidence 清理清单化——scaffold 时按固定清单清残留(verdict-feedback/world-snapshot/play-report 等全列,不再只清两个文件);④失败归因三层字段(driver 合约失败/机械失败/玩法判定失败)进 verdict 消费层与批次账,回喂反馈按真实层次措辞。
- **验收**:拿两个历史案回放——xt-puzzle-huarong「合约缺口被误标空壳」案与 heritage「黑屏」案:新链路下从批次账出发 ≤3 步到达逐 turn 全文与正确归因层;跑一局真生成,turns.jsonl 里能原文看到门反馈与模型响应。
- **回滚**:落盘/归档是纯增量旁路,关开关即回;归因字段只加不减。
## 波 2 · 判定语义重置(依赖波 1;SoT 裁定三的代码兑现)
- **目标**:验收 = 机械预筛 ∧ 独立模型玩法判定;误导模型的残笼拆除。
- **边界**:cheap 路 verdict 消费层、cheap_verify 升级、cheap-system prompt 清洗、amodel-gen 静态门实现替换;九门 harness 判据本体不动(动消费语义,与 2026-06-22 收窄同一条边界纪律);tier2 双路门不动。
- **输入**:质量模型 SoT 裁定三(四条细则:预筛降位/判定契约/fail-closed/校准纪律);波 1 的证据链;现 cheap_verify LLM judge 接线位。
- **产出**:①判定器——输入 brief + 真玩证据链(first-paint/after-play/局中连拍截图、game-log、取证状态时间线),输出布尔裁决 + 逐条理由(schema 固定),阻断放行,理由原文进续修反馈;判定模型走 new-api 可配置(默认便宜多模态档,单局判定成本目标 ≤¥0.3,草案值随首批校准),评不出 fail-closed 标 degraded;degraded 的落点(内测期口径,防孤儿设计):不建独立队列 UI——落批次账 + result_out 标 degraded、按生成失败回调(用户可重试),人工复核从批次账捞、放行走现有审核台通道,独立复核队列显式 defer 至量起来再立;阻断带 genconfig 开关(整体回退位);②ok 语义切换——`ok = 预筛 ∧ 判定`:verdict 物理保留 `pass` 字段(语义收窄为「预筛通过」,不改名不删),新增 `accepted`(= 预筛 ∧ 判定)与 `judge` 段(裁决/理由/degraded),字段只加不减;**跨模块影响面同批核清**——game-cloud 回调消费(GateVerdict/status 分类)与 OTLP 观测(gen_task_total{status}、gen_gate_fail_total{gate})需新增「玩法判定失败」类目与 degraded 态,防观测线静默漏计,核对结论列入本波验收;③拆残笼——清休眠 reskin 机器(build_reskin_system_prompt 与 create 路白名单管路,保 modify 路语义收窄)、红线八条的判定从 stripCode 正则换 AST/词法级事实(esbuild/acorn 通道已有)、prompt 清洗(「两层奖励」改纯游戏设计语并删「围盲驱动器」「绕正则」措辞;删已失效的恐吓式熔断警告)、edit_file 锚点容错(空白归一/近似定位提示);④判定校准包——每品类金标正反例(含审计在册的五份空心 pass 作反例种子),漂移复采样纪律同 rubric 规范三。
- **验收**:现存五份 score-only pass 全部进金标标注(创始人/主会话亲玩定标)——判定器对标注为反例的必须判不过、对标注为正例的必须判过,**不预设五份全是反例**;任何样本不得仅凭预筛通过自动验收,判定评不出的 fail-closed 入人工复核;跑 n=3 冒烟,判定理由与创始人抽玩结论一致 ≥2/3;一局含字符串 `//` 的游戏红线判定不再假阴;edit 锚点 5 连拒案例在容错下 ≤2 次收敛;全程真浏览器截图硬证。
- **回滚**:判定阻断开关回退到修订前口径;prompt 走 registry 版本回退;AST 红线与正则实现可并跑对照一批再切。
## 波 3 · 知识层补强(与波 2 尾部可并行)
- **目标**:补对标 TapTap 清单的三个真缺口,把「存在但没喂」的资产接进模型面。
- **边界**:只动知识资产与 check 的类型检查通道;不动插件实现;不新建品类模板(idle/action 归 W-GENRE)。
- **输入**:知识层审计盘点表(诊断档 §三);littlejs.d.ts(277KB 现货)、11 份 PLUGIN.md、6 个暗插件、ENGINE-CAPABILITIES.md。
- **产出**:①类型硬门——tsc 对游戏源 × api.d.ts/受控面 d.ts 做真类型检查,先 advisory 跑一批校准噪声再转阻断,报错原文进 check 反馈;②examples 索引(「要做 X → 读 Y」)+ 35 篇高频 recipes(命中矩形/计时器/资产回退/场景机/结算演出);③暗资产接线——6 个未注入插件逐个裁定(注入+文档化,或明确移出库面),PLUGIN.md 进模型可读指针,引擎能力摘要蒸馏 ≤3KB 版;④防漂移对账门——插件目录 vs prompt 白名单 vs host-config 注入清单三方一致性检查进 CI。
- **验收**:tsc 门对金标语料零误伤——金标 = `cheap-worker/fixtures/golden-samples`(现 2 款)+ `game-runtime/games` 下 6 套 `_template*` 脚手架与 2 款 `_fewshot*` 良品,清单随工单固化(评审更正:此前「amodel-gen 29 金标」为误记,该处只有单测无金标);新对账门在 CI 红绿可证;抽一局生成,模型 read_file 命中新索引/recipes(turns.jsonl 佐证)。
- **回滚**:tsc 门 advisory→阻断分两步,阻断前可停在 advisory;知识文件纯增量。
## 收尾 · n=5 重测基线(依赖波 1+2)
- **目标**:作废全部污染数字,在新链路、新语义下重锚便宜档真实率与单局成本;所有容量/成本/品类难度类结论以新基线为准。
- **边界**:只测便宜档 5 已覆盖品类,纯度量、不改代码;idle/action 无模板品类不入本轮(归 W-GENRE)。
- **输入**:波 1 的真相层(turns.jsonl/归档/归因)+ 波 2 的新验收语义与判定器;批跑脚本沿用 hard_genre_batch 族。
- **产出**:5 品类 × n=5(按 tier2-validation 口径),每局四件套证据 + 判定理由 + 归因层;真浏览器亲玩抽验;基线报告回写进度总账与质量模型 §7 实测列。
- **验收**:创始人抽玩 ≥3 款与判定结论一致;基线报告过主会话终审。
- **回滚**:纯度量任务无回滚面(N/A)——数字不达预期就是结论本身,作废重跑即可。
## 风险与依赖
判定器自身会假阳假阴——靠金标校准+抽玩+阻断开关兜,绝不回退到机械门独裁;判定成本上升被拆笼后的重试下降对冲(审计:14 倍成本方差主要是 harness 摩擦);targets 取证合约本计划保留(归因修正后它只是取证接口,不再是隐性验收目标),整体退役(agent 亲手试玩驱动)列为判定 v2 的后续评估项,不在本三波。

View File

@ -0,0 +1,164 @@
---
date: 2026-07-10
topic: cheap-gen-acceptance-v2-tester-agent-plan
status: 双评审收敛终稿待创始人批(初审 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-impact: 申报——质量模型 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.1~0.25/轮(8~14 步含截图),设计预算上限 ¥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 的实现验收标准,不留给模型自觉:
1. **坐标协议钉死**:测试员回路自截自用——`Emulation.setDeviceMetricsOverride` 390×844、DPR=1,截图像素与逻辑坐标 1:1,模型报的 tap 坐标即 CSS 坐标直接派发;与 harness 的 DPR2 取证截图互不掺和。协议(动作 JSON schema、退出码、超时、evidence 目录布局)以 `playtest/1` schema 落档于实现文件头注。
2. **坐标尺**:截图上烧 50/100px 网格与轴刻度,模型照尺读数报坐标(无尺时 M3 偏 160~230px,有尺仍偏 60~90px——必要不充分,还需 3/4)。
3. **落点回显**:每次 tap 后页面放亮黄圆环标记,下一帧截图可见上一步落点,照偏差自校正(narrative-r1 案:加回显后 12 步真玩通到结局卡)。
4. **runner 侧硬提示**:同一坐标连点 ≥2 次即确定性注入警告文本逼换点,由 runner 代码保证,不靠提示词自觉。
5. **反早退驳回**:fail 裁决若独立落点 <3 处且非图像通道故障,驳回一次逼继续测
6. **预算随进展扩展**:基础步数预算(缺省 14)在有进展证据(得分/关卡/日志推进)时自动扩到上限(缺省 24);两值进 genconfig。
7. **fail 二掷确认**:测试员判 fail 且四门地板全绿时,重开一局再测一掷,两掷同 fail 才落 fail;二掷证据落 `evidence/playtest/roll-2/`,seed 由 runner 显式生成并记录进转写(禁隐式时钟种子),每掷前清 localStorage 与存档,保证两掷独立。pass 一掷即过,不加成本。
8. **图像通道自检**:裁决 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.mjs` Node 遗留路的 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.py` modify 路的契约切片、品类设计 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 每步 10~40s ≈ 2~10 分钟,与生成本身(5~6 分钟)同量级;二掷只对 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)裁定三,四处修订(终文):**
1. 「其一」句末追加:「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)。」
2. 「其二」句判定输入改为(替换「brief 加真玩证据链(首帧/局中/局末截图或录屏、游戏日志、取证状态时间线)」):「brief 加真玩证据链;v2 起证据由测试 agent 亲手真玩产生(视觉引导逐步操作的全程截图序列、行动转写、运行日志),取证状态时间线随 `_forensicsView` 契约退役不再作判定输入——判定与真玩合一于测试 agent,其裁决即玩法判定半。三类拒绝与『判有无不判多好』分界不变。」
3. 「其二」句「判定者与生成者绝不同源(出题≠被考纪律原样保留)」改为:「出题≠被考的实质 = 判定只吃运行证据、不吃生成 agent 的自报,且测试员与写手会话隔离;判定模型允许与生成同源(2026-07-10 创始人拍板切 MiniMax-M3)——地板布尔判『有无』使同源盲区风险最小,同源模型抓自家缺陷已有实证(spike 考卷 8undefine 案);残余风险由金标正反例复验与创始人抽玩兜底。动因:glm-5.2 唯一供给通道为二手中转,图像支持按池轮换、2026-07-09 整日全盲,判定层可用性不押注二手供给。」
4. 失败归因三层句「判卷驱动器合约失败(取证不完整)」加注:「(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}`