docs: 真结构化地基双证 + Tier-1 三域收口回填(plan 001/002 + 总账)

- plan 001 重写为「SAA 真结构化生成主线—地基产线化+ReAct演进」:spike+build段双证
  地基成立(便宜模型 gameDefinition→build-from-source→真过九门 deepseek满分3/4款),
  创始人拍真结构化+SAA独家本session开发;产线化5单元(运行时约定2D适配器/
  build-from-source产线化/generate真产/模型可靠性/ReAct演进接法B);接法A七成已建是躯干
- plan 002 进展:Tier-1 feed/econ/account 合入 0db1d0da(codex揪3 P0全修,82测试绿),
  剩 social/admin/material/template
- 总账 M2:真结构化地基双证里程碑回填

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
zizi 2026-06-18 04:20:01 +00:00
parent 0db1d0da6d
commit 8db1414281
3 changed files with 82 additions and 107 deletions

View File

@ -27,7 +27,7 @@
|---|---|---|---|---|
| **M0 契约锁定** | 6/9 上午 | ✅ **达成** | 9 个 API yaml + DB V1-V9 + sdk-interface/game-package/events/dify-workflow/ad-slot = 8 类契约入库 | `c4e2d73` 起 |
| **M1 全栈可启动** | 6/11(Day3) | ✅ **达成6/9 提前)** | 单体 `Started HuijingServerApplication`Flyway V1-V9 全 success24 张 game_* 表admin-api `/system/user/page`→20 真实用户、app-api `/feed/stream`→200 | 启动修复 `d7fac90`+`8565fa2` |
| **M2 创作链路(真 LLM** | 6/18(Day8) | 🟢 **生成链路贯通6/9~11→ generic 桥接接棒6/17** | batch-001 成功率 **80.0%**(达标口径)+ M-b 薄轮询执行器上线UI 一句话→18-27s 可玩游戏);**历史**:模板 1→4clicker/merge/idle/tycoonM-c 批①②);**⚠️ 现行2026-06-17**:旧 4 模板已随 **W-CLEAN** 清除+存量数据清(`template/list` 空=设计态),**generic 桥接 `7534bdf9`** 接棒(一句话无需选模板走 generic 生成路);**仍待**generic 真出可玩端到端过 W-G1 开闸验收门 + A4 大样本盲评;**🆕 SAA 真全图 e2e 首证2026-06-18,`SaaFullGraphE2eTest` `bf99662c`**Java 编排路(16 节点真 LLM+真九门 harness+真出口回调)机制完整跑通、**零 prod bug**,但**成功率 3/5=60% < 80%**贪吃蛇/接金币/躲障碍过,打砖块败 I_control点击消除败 F_wiring+H_progress,救场阶梯耗尽 giveup 真落盘;单款 3.5-16min)→ **worker 转 SAA 默认产线(U7)按门未切,现 worker 主链保持默认(零回归)**;gap=难门生成质量(W-G1 调优域) | spike `2026-06-09-generation-spike/`·M-b `42d3237`·M-c `b1fa30d→26319b3`·generic `7534bdf9`·SAA-e2e `bf99662c` |
| **M2 创作链路(真 LLM** | 6/18(Day8) | 🟢 **生成链路贯通6/9~11→ generic 桥接接棒6/17** | batch-001 成功率 **80.0%**(达标口径)+ M-b 薄轮询执行器上线UI 一句话→18-27s 可玩游戏);**历史**:模板 1→4clicker/merge/idle/tycoonM-c 批①②);**⚠️ 现行2026-06-17**:旧 4 模板已随 **W-CLEAN** 清除+存量数据清(`template/list` 空=设计态),**generic 桥接 `7534bdf9`** 接棒(一句话无需选模板走 generic 生成路);**仍待**generic 真出可玩端到端过 W-G1 开闸验收门 + A4 大样本盲评;**🆕 SAA 真全图 e2e 首证2026-06-18,`SaaFullGraphE2eTest` `bf99662c`**Java 编排路(16 节点真 LLM+真九门 harness+真出口回调)机制完整跑通、**零 prod bug**,但**成功率 3/5=60% < 80%**贪吃蛇/接金币/躲障碍过,打砖块败 I_control点击消除败 F_wiring+H_progress,救场阶梯耗尽 giveup 真落盘;单款 3.5-16min)→ **worker 转 SAA 默认产线(U7)按门未切,现 worker 主链保持默认(零回归)**;gap=难门生成质量(W-G1 调优域);**🆕🎯 真结构化地基双证成立(2026-06-18)**:深度评审揪出现 SAA 仍产 iife 空壳(gameDefinition 未真填)→创始人拍**真结构化(gameDefinition)+ SAA 独家本 session 开发**;**① spike 证便宜模型产连贯 gameDefinition 92-100%/¥0.011 build段证 gameDefinitionbuild-from-source真过九门(deepseek-v4-flash 满分 3/4 ,截图实证)**——"改源不改包/可维护源项目"代码级成立,产出运行时约定 v0+build-from-source PoC;**进产线化**(plan `2026-06-18-001`:运行时约定/build-from-source/generate 真产/可靠性/ReAct 演进);接法A(16 节点 studio 七成已建)是接法B 躯干 | spike `2026-06-09-generation-spike/`·M-b `42d3237`·M-c `b1fa30d→26319b3`·generic `7534bdf9`·SAA-e2e `bf99662c`·真结构化双证 plan `2026-06-18-001` |
| **M3 分发链路** | 6/20(Day10) | 🟢 **发布链+数据回路+真人试玩 全 e2e 真实(6/9)** | **B1**submit→锁风门→APPROVE→发布编排跨4表→feed 可见。**B2 数据回路**(curl)A(q28)/B(q88)→事件→quality→**feed重排**→重放幂等。**B2 真人试玩**(浏览器实玩)feed真标题→Canvas clicker 真玩通关→game_play_end(completed)→quality 0→60→**feed 翻转登顶**;逮修 4 真 bug编码/布局/兜底/completed。**仍待**:真实编译打包(M2 runtime产物)+真实分享落地 | `…ab0037c→d279898` |
| **M4 变现链路** | 6/23(Day11) | 🟢 **mock 可切真** | ad/trade **业务逻辑已真实落地**AdRevenueServiceImpl uk_trace 幂等 / SettlementServiceImpl uk_source 逐笔入账 / WithdrawServiceImpl 冻结+CAS 状态机);本波=打款异步回调 CAS+PayoutClientFactory fail-fast+reward 到账+广告验签+创作者收益端点;**87 单测绿+staging mock e2e 门广告→结算→提现→mock 打款回调 1→24 对账断言 HOLD**pay 模块未接单体;**真广告联盟/真支付受日历闸门=mock gated** | `43fce85`(骨架)·`e3be456d`(G1 本波) |
| **M5 MVP 交付** | 6/27(Day15) | ❌ **未达成** | 55/55 P0 真实可验收 + 冒烟全绿 + P0 Bug=0 远未达 | — |

View File

@ -1,173 +1,146 @@
---
title: "feat: gameDefinition 生命周期迁移 — 前置 spike 先行 + 条件工程"
title: "feat: SAA 真结构化生成主线 — 地基产线化 + ReAct 演进"
status: active
date: 2026-06-18
type: feat
origin: docs/brainstorms/2026-06-17-6c6g-后端-P1-工作清单-requirements.md
supersedes: 本档 2026-06-18 初版(基座+Tier1 合一)经双对抗评审重构;Tier-1 广度已拆出至 2026-06-18-002
canonical: docs/agent-specs/2026-06-17-固定游戏架构与SAA-agentic-studio-{review,execution}.md接法A 架构 SoT现归本 session 开发)
---
# feat: gameDefinition 生命周期迁移 — 前置 spike 先行 + 条件工程
# feat: SAA 真结构化生成主线 — 地基产线化 + ReAct 演进
> **重构说明(2026-06-18,双对抗评审后)**:本档初版把"gameDefinition 基座迁移"与"Tier-1 七域广度"合一(10 单元),被 codex + opus 双对抗评审揪出**根本前提问题**:① gameDefinition **不替代** JS、是**组织/包裹** LLM 产的 JS(behaviors 真逻辑仍是 LLM 写的 JS,见 execution §224 + schema `behavior` 仅需 `{id,trigger}`)→ 迁移是让便宜模型在现 JS 之上**多产一层结构**,现路才 60% → **更难不更易**;② 核心赌注**未验证**就排 3 单元工程;③ U1 验收门(过 schema 校验)是**空门**;④ 基座(高风险两线协调)与广度(独立 CRUD)绑一个 plan = 命运耦合。**创始人裁定:前置 spike 先行;Tier-1 广度拆独立计划([2026-06-18-002](2026-06-18-002-feat-tier1-breadth-backend-plan.md))。** 本档现只管 gameDefinition 迁移,且工程**条件于 spike 通过**。
## 进展结论2026-06-18 · 地基双证成立 · 创始人拍真结构化 + SAA 独家交付)
本计划历经三次 reframe现定调:**真结构化生成范式(游戏=可维护结构化源项目 gameDefinition)已从代码层双证成立**,进入产线化。journey:
1. 初版"基座迁移+Tier1 合一"经**双对抗评审**(codex+opus)揪出根本前提错(gameDefinition 是**包裹/组织** JS 非替代;赌注未验证;空验收门;基座与广度命运耦合)→ 拆 Tier-1 至 [2026-06-18-002](2026-06-18-002-feat-tier1-breadth-backend-plan.md),本档改 **spike 先行**
2. **spike(结构层)双证**:便宜模型对 `source-project.schema.json` 产连贯 gameDefinition **92-100%**(¥0.011/款),behaviors 带真逻辑 JS。
3. **build段(可玩层)双证**:gameDefinition → build-from-source → **真浏览器过九门**——deepseek-v4-flash 接金币/打砖块 **满分 9/9**,便宜模型实产 **3/4 款过门**(截图实证真渲染真玩到 GAME OVER)。
**创始人 2026-06-18 拍:① 真结构化地基(非轻量 iife)② SAA 现由本 session 独家开发**(协调红线解除,在飞设计 canonical 归我)。**地基成立,进产线化。**
---
## 摘要
落地 06-17 生命周期裁定(游戏=长生命周期项目:gameDefinition 源 → build → engineBundle 包)前,**先做一个前置 spike 证伪核心赌注**——便宜模型能否产出**结构化 gameDefinition**(组织 LLM 的 JS 为模块化 behaviors + 声明式 entities/scenes/rules 信封)、且 build 出的游戏**端到端过九门、过门率不低于现 factorySrc 60% 基线**。spike 并列对比两条路(模型直产结构化 vs 模型产 JS + 后端确定性抽取派生),出结果再决定**要不要/怎么迁移**。工程单元(U1U3)**全部条件于 spike 通过 + 引擎线 E1/E2 就绪**,不在 spike 出结论前启动。
把已双证的 PoC **产线化进 SAA**,让"改源不改包 / 可维护结构化源项目 / LLM as 工作室"真正上产线:运行时访问约定(2D 适配器契约)→ build-from-source 产线化 → generate 真产 gameDefinition(替现 iife 空壳)→ 模型可靠性兜底 → 地基稳后 **ReAct 演进**(接法B)。**接法A(裸图 16 节点 studio,已建七成、已合 dev/2.0.0)是接法B 的躯干,evolve 增量不返工。** 架构 SoT 见 canonical(固定架构与SAA-agentic-studio),本档是其**产线化执行计划**,不重复架构
---
## 问题背景
**两阶段生命周期(06-17 裁定 · 不变)**:gameDefinition = 权威开发态源;engineBundle = 发行态构建产物(全保留冻结,见 KTD 5)
**现状缺口(代码核证)**:接法A 的 16 节点 studio 图已建并合入,但 **gameDefinition 是空壳**——generate 仍产 iife `factorySrc`、build 不读 sourceProject,真结构化范式的立论根基此前一行真代码没验证
**前提纠正(评审揪出,我已核实)**:gameDefinition **不消除 JS 生成**。读 `2026-06-17-固定游戏架构与SAA-agentic-studio-execution.md:224`「gameDefinition.behaviors 是声明式模块描述,真逻辑代码仍由核心代码 agent 产出经构建编译进 __GameBundle」+ 冻结 `source-project.schema.json`(`behavior` 仅 required `{id,trigger}``code` 非必填)。即:gameDefinition = **在 LLM 产的 JS 逻辑(模块化进 behaviors)之外,再加一层声明式 entities/scenes/rules/config/assets 信封**。迁移要便宜模型**多产一层结构 + 保持一致**——SAA 现路才 60%,这一层只会**更难**;可维护性收益也**部分**(换美术/调参/改关卡 → 确定性改数据;改玩法逻辑 → 仍走 LLM regenerate 重出 behavior 的 JS)。**故核心赌注必须先验证,不能假定。**
**机会成本(评审提出 · spike 输入)**:SAA 现路 60%、worker 转产线 cutover 已 defer(见 [2026-06-17-001](2026-06-17-001-feat-backend-tier0-gen-mainline-plan.md))。此刻投激进形态迁移 vs **先把现路推到 80% 上线**(最接近 MVP 可玩闭环)——spike 结果 + 成本是这个决策的输入。
**双证已填坑**:spike 证便宜模型能产连贯结构;build段证结构 build 出来真过九门。配套产出 **运行时访问约定 v0** + **build-from-source 装配 PoC**(详见 KTD 2/3)。剩 = 把 PoC 产线化 + generate 真产 gameDefinition + 可靠性兜底。
---
## 关键技术决策KTD
1. **gameDefinition = 结构化源(组织/包裹 JS,非替代)**:模块化 behaviors(各含 LLM 产的逻辑 JS)+ 声明式 entities/scenes/rules/config/assets 信封。**纠正初版"取代 factorySrc 直出 JS"的错误框架。**
1. **真结构化源(gameDefinition,非轻量 iife)**:generate 直接产模块化结构(声明式 entities/components/scenes/rules + behaviors 各带逻辑 JS),build 从它构建。全兑现可维护/改源不改包/玩法模块化点改。
2. **spike 先行(前置门)**:核心赌注(便宜模型能否稳产 build-able 的结构化 gameDefinition)未验证 → 工程前先 spike,**端到端过门率为判据**(非 schema-valid 空门)。spike 不通过则不进工程
2. **运行时访问约定 = 2D 适配器契约**(spike 产 v0):注入每个 behavior 的 `rt` 对象——getEntity/entities/query/spawn/destroy + input(isDown/justTapped/pointer)+ time/random(走 `boot.ctx` 受控种子,确定性)+ score/win/lose(置 latch 终态)+ **fx.burst/beep(经 `ctx.getEngine` 真调引擎粒子/音频=满 F 门)**。即把现宿主受控面 `boot.ctx` 包装成 behaviors 友好的 2D 面。**迭代 1-2 轮(收 3-5 类游戏真实模型输出补 idiom)再正式化为契约,别冻早**(M3 自造 `rt._spawnFood` 证模型会用约定外习惯)
3. **spike 并列两路**:**路 A**(模型直产结构化 gameDefinition + 最小 build-from-source)vs **路 B**(模型仍产 JS现 60% 路不动〕+ 后端**确定性抽取**派生 gameDefinition)。路 B 把"结构化"风险从"模型能否稳产"(高方差瓶颈)移到"抽取器能否覆盖"(可工程化可测)——初版完全没考虑此路
3. **build-from-source**(spike 产 PoC):strip unknown-key+校验 → gameDefinition 内联进 generated-factory.js → createRuntime 建可变世界(entities 实例化+behaviors 编译+rules 编 JS 布尔)→ **内置声明式渲染器**(components.render rect/circle/fill,behaviors 只写逻辑不画)→ _forensicsView 自动派生 harness driver → 复用现 esbuild + **九门 harness 零改**
4. **工程条件化 + 诚实依赖账**:U1U3 工程**条件于 spike 通过**;且 U2(build-from-source)/U3(modify)**承重依赖引擎线 E1/E2**(gameDefinition→render 适配器 + build 命令),E1/E2 未冻接口前不启动 U2。后端**真能独立交付的只有 U1**(产源 + 落库),其端到端真值仍依赖 E1/E2 → 阶段一拆"U1 源生成 / E1/E2 就绪后联调 / modify"三段独立验收
4. **engineBundle/__GameBundle 全保留冻结**(发行态构建产物):build-from-source 只改 engineBundle 的来源(从 iife → 从 gameDefinition 装配),GamePackage/__GameBundle 全局名/Runner v2 装载链/feed 宿主一字不变。源新增(独立 `game_source_project` 表,源不进 GamePackage)、包保留
5. **engineBundle/__GameBundle 全保留冻结**:`__GameBundle` 全局名(契约冻结 `game-studio/src/host/inject.ts:202`)、GamePackage(仍存 engineBundle)、Runner v2 装载链(engineBundle→feed 真玩)、feed 宿主——迁移**只改 engineBundle 的来源**(从 LLM 直出 JS → 从结构化源 build),**不改包本身与下游**。源新增(独立 `game_source_project` 表,源不进 GamePackage)、包保留。**绝非"用 gameDefinition 取代 engineBundle"。**
5. **接法A 是接法B 躯干,evolve 不返工**:接法A(裸图 16 节点确定性编排,九门定 done)已建七成;接法B(ReAct 自治 loop)= 给 generate/repair 节点装真 tools(写源/build/跑九门/读错/改 config-asset)长成 ReactAgent。**九门兜底化解铁律张力——自治在门内、裁决在门外**(LLM 在 loop 里自治写-跑-改,但收工权归九门 verdict,review §10.5 已留口)。
6. **additive 非破坏 + cutover 量化门**:迁移期保现 factorySrc→engineBundle 60% working 路;cutover 判据 = 新路过门率 ≥ 现基线 × 阈值(非"过一款"),有 owner、有 dual-path 上限期。两套生成 prompt **物理隔离零共享**(保"flag off 零回归"为强保证)
6. **玩法模板 = 品类 prompt 模板**(经营/管理/射击/休闲/放置),给 studio 主 agent 调度子 agent 时构造标准化 prompt 用——非代码、非节点、非 pre-built
---
## 高层技术设计HTD
### 两阶段生命周期(前提纠正版:源组织 JS,非替代)
```mermaid
flowchart LR
LLM["便宜模型"]
subgraph S1["开发态(权威源)"]
GDEF["gameDefinition<br/>声明式 entities/scenes/rules/config<br/>+ behaviors(各含 LLM 产的逻辑 JS,模块化)"]
LLM["便宜模型(deepseek-v4-flash 打底)"]
subgraph DEV["开发态(权威源)"]
GDEF["gameDefinition<br/>声明式 entities/scenes/rules<br/>+ behaviors(各带逻辑 JS,用 rt 约定)"]
end
subgraph S2["发行态(构建产物·全保留)"]
BUNDLE["engineBundle (__GameBundle)"]
subgraph BUILD["build-from-source(2D 适配器)"]
RT["运行时约定 rt(getEntity/spawn/input/fx)"]
ASM["装配:内联+createRuntime+声明式渲染器+esbuild"]
end
LLM -->|"路A:直产结构化源"| GDEF
LLM -.->|"路B:产 JS"| JS["JS 工厂(现 60% 路)"]
JS -.->|"后端确定性抽取派生"| GDEF
GDEF -->|"build-from-source(引擎 E1/E2)"| BUNDLE
BUNDLE --> PKG["GamePackage 发行(不变)"]
BUNDLE["engineBundle(__GameBundle·全保留)"]
LLM -->|"generate 真产(替 iife)"| GDEF
GDEF --> ASM
RT --> ASM
ASM --> BUNDLE
BUNDLE -->|九门 harness 零改| GATE["真九门过门"]
BUNDLE --> PKG["GamePackage→feed"]
GDEF -.->|"改源不改包·点改/regenerate→重建"| GDEF
```
### spike → 决策 → 条件工程
```mermaid
flowchart TB
SPIKE["前置 spike(S1 路A / S2 路B / S3 对比决策)"]
SPIKE -->|"路A 过门率 ≥ 现60%基线 ∧ 成本达标"| PA["工程走路A:U1 产结构化源"]
SPIKE -->|"路A 劣化 ∧ 路B 抽取覆盖够"| PB["工程走路B:模型产JS+后端抽取"]
SPIKE -->|"两路均未达标"| DEFER["推迟迁移 · 先稳现路到80%上线(U7/W-G1)"]
PA --> ENG["条件:引擎线 E1/E2 就绪"]
PB --> ENG
ENG --> U23["U2 build-from-source 联调 → U3 modify 真生效"]
```
**agent 架构演进**:接法A(16 节点确定性编排,generate/repair 单发节点回环,九门定 done)→ 接法B(generate/repair → ReactAgent 自治 tool-use loop,九门 verdict 作强制终止)。先 A(已建)稳地基,后 B 增量演进。
---
## 实现单元
## 实现单元(产线化 · 接 canonical 接法A
### 前置门 · gameDefinition spike先行 · 出结论才进工程
### U1. 运行时访问约定迭代 + 正式化2D 适配器契约)
> spike 是**实验**(改码看结果),由 ce-work 执行;本节定义实验设计、判据、决策。隔离分支跑、不进发布链、单独记 cost/trace。样本 = 58 款一句话,覆盖现路已知难易档(复用 U7 e2e 的贪吃蛇/接金币/躲障碍〔过〕+ 打砖块/点击消除〔败〕+ 23 款新档)。
- **Goal**:把 spike 产的运行时约定 v0(`rt` 对象)落成 game-runtime 产线基座,迭代 1-2 轮补 idiom(spawn helper/entity 方法/事件钩子,收 3-5 类游戏真实模型输出),再正式化为契约 `contracts/agent-loop/runtime-api-2d.{schema.json,d.ts}`
- **Files**:`game-runtime/src/gd-runtime.js`(运行时库)、`contracts/agent-loop/runtime-api-2d.*`(正式化后)、约定喂进 prompt。
- **Approach**:v0 = boot.ctx 的 behaviors 友好 2D 包装(KTD 2);迭代时收集模型自造的约定外访问(如 `_spawnFood`)→ 评估纳入或 prompt 约束。**别冻早**——1-2 轮稳定后再正式化。
- **Verification**:3-5 类游戏的 behaviors 用约定全跑通(无约定外 helper 漂移);约定喂进 prompt 后模型遵循率。
### S1. spike 路 A — 模型直产结构化 gameDefinition + 最小 build
### U2. build-from-source 产线化
- **Goal**:改 generate prompt 产结构化 gameDefinition(声明式 entities/scenes/rules/config + 模块化 behaviors各含逻辑 JS)+ 写一个 **spike 级最小 build-from-source**(把结构化源编译成能装载的 bundle)→ 真九门。测过门率/成本/失败类型
- **Files**(spike 分支,不进主干):`game-cloud/.../saa/SaaPrompts.java`(实验性 gameDefinition SYSTEM)、`.../saa/`spike build 适配、spike 脚本
- **判据**:过门率 vs 现 factorySrc 60% 基线;单款成本 vs ¥0.15 闸;失败类型归因(结构产不出 / 一致性失败 / build 失败 / 玩法不过门)。
- **Verification**:N 款端到端(gameDefinition→build→九门 真玩),出过门率表 + 失败类型分布 + 成本
- **Goal**:把 spike PoC(`build-from-source.mjs` 装配)产线化,接 SAA 编排 + 落库
- **Files**:`game-runtime/scripts/build-from-source.mjs`(产线版)、`game-cloud/.../saa/SaaGenNodes.java`(build 节点接 build-from-source,替现 factorySrc→esbuild)、`SaaStudioNodes.java`(移 build-from-source guard)
- **Approach**:① **ajv 严格校验**(替 PoC 轻量校验)② **behavior 沙箱+超时+错误回灌生成质量信号****渲染器扩**(精灵/图集/动画,现仅 rect/circle/fill)④ driver 形状标准化(_forensicsView 取证)⑤ 接 SAA build 节点 + 落库。复用九门 harness(零改)。
- **Verification**:门控 e2e:gameDefinition→build-from-source→九门过门率 ≥ spike 基线;同 buildInputHash 字节等价(从源可复现)
### S2. spike 路 B — 模型产 JS现路不动+ 后端确定性抽取派生 gameDefinition
### U3. generate 真产 gameDefinition替现 iife 空壳)
- **Goal**:generate 仍产现 JS 工厂(60% 路零改)+ 写后端**确定性抽取器**(JS/产物 → 派生 gameDefinition:抽 entities/config/assets 引用/behavior 模块边界)→ 现 build → 九门。测抽取**覆盖度**(多少结构能确定性抽出)+ 过门率(应 ≈ 现 60%,因生成路不动)
- **Files**(spike 分支):后端抽取器原型、spike 脚本
- **判据**:抽取覆盖度(entities/config/assets/behaviors 各能抽出多少);过门率(预期 ≈ 现基线);可维护性真收益(抽出的结构哪些可确定性编辑)。
- **Verification**:同 N 款,产派生 gameDefinition + 抽取覆盖度报告 + 过门率(对照路 A)
- **Goal**:generate 节点产出从 iife `factorySrc` 改为结构化 gameDefinition(喂运行时约定),落 `sourceProject.gameDefinition`
- **Files**:`SaaPrompts.java`(gameDefinition-producing SYSTEM,喂 U1 约定;与现 factory SYSTEM **物理隔离**)、`SaaStudioNodes.java`(generateNode 产 gameDefinition + unknown-key strip)
- **Approach**:prompt 喂 schema + 运行时约定 + 品类 prompt 模板(玩法模板);**additive**:迁移期 flag 二选一保现路;cutover 量化门(过门率 ≥ 现基线)。worker `prompt.py` 同步(W-G1 协调,否则 split-brain)。
- **Verification**:真 LLM 产 gameDefinition 过 schema+引用完整性,经 U2 build→九门过门率 ≥ 现 factorySrc 基线
### S3. spike 对比 + 决策
### U4. 模型可靠性兜底
- **Goal**:对比路 A / 路 B 的**过门率 vs 现 60% 基线 / 单款成本 / 可维护性真兑现面**,出三选一决策。
- **决策门**:
- 路 A 过门率 ≥ 现基线 ∧ 成本达标 → 工程走路 A(进 U1,条件引擎线)。
- 路 A 劣化 ∧ 路 B 抽取覆盖够用 → 工程走路 B(模型产 JS + 后端抽取,风险更低)。
- 两路均未达标 → **推迟迁移,先稳现路到 80% 上线**(资源回 U7/W-G1),迁移待现路达标后重评。
- **Verification**:决策文档(过门率/成本/覆盖度三表 + 选路理由),回填本计划 + 总账。
- **Goal**:产线稳态——重试 + 多模型回退 + JSON 修复。
- **Approach**:deepseek-v4-flash 打底(本批最稳 5/5);MiniMax 超时/返空/JSON 截断 → 重试 + 回退链 + JSON 修复;接现救场阶梯。
- **Verification**:批量生成成功率(含可靠性兜底)稳定 ≥ 目标。
---
### U5. ReAct 演进接法B · 地基稳后)
### 条件工程 · gameDefinition 落地spike 通过 + 引擎线 E1/E2 就绪才启动)
> 以下 U1U3 **不在 spike 出结论前启动**;措辞按路 A 写,若 spike 选路 B 则 U1 改为"后端抽取器产线化"。
### U1. generate 产结构化源(后端可独立 · spike 后)
- **Goal**:按 spike 选定路,generate 产结构化 gameDefinition 落 `sourceProject.gameDefinition`(收敛 behaviors 到契约 `gameDefinition.behaviors`)。
- **Dependencies**:S3 决策;**worker prompt 同步方案**(否则 SAA 产结构化、W-G1 worker 仍产 blob = split-brain → U1 验收须含 worker 同步或显式声明只覆盖 SAA 实验线)。
- **Files**:`SaaPrompts.java`(gameDefinition SYSTEM,与现 factory SYSTEM **物理隔离**)、`SaaStudioNodes.java`(generateNode 产源)、`SaaStudioNodesTest.java`;worker `wg1/gen-worker/worker/prompt.py`(同步,W-G1 协调)。
- **Approach**:dual-path 用 flag 二选一(shadow 模式才第二次 LLM 产结构化,单独记 cost/trace、不进发布);现路字节零变。
- **Test scenarios**:gameDefinition 过 schema **且引用完整性**(scene.entityRefs/entity.components 指向存在的 id);behaviors 模块化;现 factorySrc 路 prompt/产物字节零回归(flag off);worker 口径一致。
- **Verification**(硬门,非 schema-valid 空门):产的 gameDefinition 经 build(U2/spike build)→ 九门过门率 ≥ 现基线;现路零回归。
### U2. build-from-source 接缝(条件引擎线 E1/E2 · 前置冻接口)
- **Goal**:build 节点从 `gameDefinition` 构建 engineBundle(经引擎线 E1/E2 适配器),取代 factorySrc→esbuild。
- **Dependencies**:U1;**引擎线 E1/E2 — 前置门 = 冻结 E1 的 gameDefinition→render 字段级消费契约**(schema 已冻 ≠ 渲染语义已定);存储归属(`game_source_project` 归 studio vs project,execution §12 仍 Open)收口。
- **Approach**:接引擎 build 命令;E1/E2 未落前 guard/fallback 现路(不静默);cutover 量化门(过门率 ≥ 现基线 × 阈值 + dual-path 上限期)。复现性:同 buildInputHash → 字节等价 bundle(buildInputHash = gameDefinition canonical JSON + engine ver + build tool ver + templateId + asset refs)。
- **Test scenarios**:gameDefinition→build→含 `__GameBundle` 的 bundle;同源 hash 字节等价;E1/E2 未落 guard fail-loud。
- **Verification**:门控 e2e(E1/E2 就位):gameDefinition→build→play 过九门;现路 fallback 零回归。
### U3. modify 真生效(依赖 U2
- **Goal**:deterministic RFC6901 改 gameDefinition + regenerate-module 重一 behavior,经 build-from-source 重建;移除 U6 现 fail-loud guard。
- **Dependencies**:U2(build-from-source)。
- **Approach**:deterministic 改声明式部件(数据)→ 重建;regenerate-module 重目标 behavior 的 JS、不动其余;**诚实边界**:改玩法逻辑仍走 LLM regenerate(非纯确定性),可维护性收益限定在数据态部件。
- **Test scenarios**:deterministic 改 gameDefinition 一字段 → 重建反映;regenerate 重一 behavior 不动其余;改源不改包(重新构建)。
- **Verification**:modify 产新预览版,走发布审核、不动 currentVersion。
- **Goal**:generate/repair 节点 → ReactAgent 自治 tool-use loop(写源/build/跑九门/读错/改 config-asset 为 tools),主 agent 据品类动态调度子 agent。
- **Approach**:SAA 原生 ReactAgent/asNode/subAgents(能力够,见 [[saa-agentic-infra-decision]]);**九门 verdict 作强制终止条件**(自治在门内、裁决在门外,不破反 Goodhart 铁律);挂 ModelCallLimitHook/ToolCallLimitHook(ReAct 默认无限);依赖坑(agent-framework Boot 版本)前置 `dependency:tree` 核。
- **Verification**:agentic loop 过门率/成本 vs 接法A;便宜模型 tool-use 可靠性实测(未知,需验)。
- **Note**:地基(U1-U4)稳后才上;先只对九门测不了的品类(如 narrative)真需自治。
---
## 范围边界
- **Tier-1 七域广度** → 拆至 [2026-06-18-002](2026-06-18-002-feat-tier1-breadth-backend-plan.md)(独立 · JIT · 不受本迁移卡)。
- **引擎线 E1(gameDefinition→render 适配器)+ E2(build 命令)**:Mac/引擎线 owns;本计划 U2 只接缝、且前置冻 E1 字段契约。
- **W-G1 worker 转产线 + 生成质量 ≥80%**:W-G1 域;U1 的 worker prompt 同步 = W-G1 协调。
- **真广告/真支付/真采购** = 日历闸门,mock(provider 工厂注入)。
- **点对点修改**(config/asset/level 确定性 + behavior regenerate):接法A 已有 modify 契约 + 节点;deterministic 路依赖 build-from-source(U2)解锁(现 guard fail-loud)。详见 canonical execution §5.6 + [点改维度底账,本计划调研]。
- **Tier-1 广度** → [2026-06-18-002](2026-06-18-002-feat-tier1-breadth-backend-plan.md)(独立,不受地基卡)。
- **真广告/真支付/真采购** = 日历闸门,mock。
---
## 风险与依赖
- **R1(命门)便宜模型能否稳产 build-able 结构化源**:gameDefinition 在 JS 之上加结构 = 更难;**由前置 spike(S1/S2)证伪,非假定**。spike 失败 → 推迟迁移、先稳现路。
- **R2 引擎线 E1/E2 承重依赖**:U2/U3 全悬于 E1/E2;**前置门 = 冻 E1 字段级消费契约**;后端独立可交付仅 U1。
- **R3 dual-path 过渡态复杂度 + 两 cutover 叠加**(U7 worker@60% + 本迁移 cutover):两套 prompt 物理隔离;cutover 量化门 + owner + dual-path 上限期;逻辑上**宜先 U7 把现路达 80% 转正,再换地基**。
- **R4 验收门空门陷阱**:schema-valid ≠ 可玩;判据一律端到端过门率 + 引用完整性。
- **R5 worker split-brain**:U1 须含 worker 同步,否则只声称 SAA 实验线。
- **R6 存储归属(studio vs project)仍 Open**:U2 前置确认(非并行风险)。
- **R7 历史 engineBundle 游戏**:迁移期旧游戏只可 play/release、不可 deterministic modify(或 best-effort 反向 scaffold,不混入主验收)。
- **R1 运行时约定成熟度**:模型会用约定外访问(M3 案)。缓解:U1 迭代 1-2 轮再冻 + prompt 喂全。
- **R2 模型可靠性**:超时/返空/JSON 截断。缓解:U4 重试+回退+修复,deepseek-v4-flash 打底。
- **R3 "过九门 ≠ 好玩"**:九门是机制地板非设计完整性(贪吃蛇退化案)。缓解:prompt 约束 + 更强 gatespec + narrative 走评审 agent。
- **R4 接法B 便宜模型 tool-use 可靠性未知**:U5 前实测;先 A 稳地基。
- **R5 worker split-brain**:U3 须 worker prompt 同步(W-G1 协调)。
- **R6 在飞设计 canonical 现归我**:与 Tier-0(U1-U7,已合)+ 接法A 设计对齐,reconcile canonical 反映双证地基。
---
## 需求追溯
| 需求(origin) | 单元 | 性质 |
|---|---|---|
| 06-17 生命周期裁定核心赌注验证 | S1/S2/S3 spike | 前置门 |
| R-B7 源真化 / 产结构化源 | U1(条件) | 工程 |
| R-B7 build-from-source | U2(条件·引擎 E1/E2) | 工程 |
| R-B7 modify 完整应用 | U3(条件) | 工程 |
| 目标 | 单元 |
|---|---|
| 运行时约定(2D 适配器契约) | U1 |
| build-from-source(源→构建,R-B7/引擎线 E2 落地) | U2 |
| generate 真产结构化源(范式立论兑现) | U3 |
| 生成可靠(R-WORKER 稳态) | U4 |
| agent-native 工作室(创始人愿景) | U5接法B |
> **执行姿势**:spike 先行(S1/S2/S3 隔离分支,ce-work 执行,出决策)→ 决策门 → 条件工程(U1 后端独立 / U2 前置冻 E1 契约 / U3 依赖 U2)。**spike 不通过则推迟迁移、资源回稳现路。** 每工程单元 codex 一轮评审。测试机 mini-desktop
> **执行姿势**:U1(约定基座,先行)→ U2(build 产线化)→ U3(generate 真产,接 U1/U2)→ U4(可靠性)→ 地基稳 → U5(ReAct 演进)。每单元 codex 评审。测试机 mini-desktop。架构 SoT 见 canonical(固定架构与SAA-agentic-studio,现归本 session)

View File

@ -10,6 +10,8 @@ origin: docs/brainstorms/2026-06-17-6c6g-后端-P1-工作清单-requirements.md
> **拆分说明**:本档由 [2026-06-18-001](2026-06-18-001-feat-gen-lifecycle-and-tier1-breadth-plan.md) 初版的"阶段二·Tier-1 广度"拆出(双对抗评审建议:基座迁移与广度域性质迥异,绑一个 plan = 命运耦合)。**本档七域对 mock 独立、不受 gameDefinition 迁移卡**,按联调里程碑 M2/M3 各自 JIT 推进(需求档原口径)。
> **进展(2026-06-18,workflow 并行实现 + codex 评审 + mini-desktop 验证)**:**U1 feed / U2 econ / U4 account 三域已合入 dev/2.0.0(`0db1d0da`)**——并行 opus 实现→codex 评审揪 3 真 P0(feed 高过滤率丢数据 / econ 订阅幂等漏洞〔独立幂等账本表修〕/ account 申诉守卫非原子〔生成列局部唯一修〕)+ 主会话复验逮 1 测试 mock bug,**82 测试绿**才合。**剩 U3 社区 / U5 admin / U6 素材 / U7 玩法模板**(下批,U6 上传归属待裁、U7 排最后)。
## 摘要
Tier-1 = 闭环骨架 + 广度后端域,**对 mock 独立、可并行**,与生成主线迁移解耦。七域:feed 游标真化 / 经济(admin 赋余额+订阅)/ 社区(评论/关注/排行/弹幕)/ 账号(政策/申诉)/ admin 运营(限曝光/导出/看板)/ 素材(实体/浏览/上传)/ 玩法模板注册(低优先级·最后)。**复用现成模式**(provider 工厂 / 通知底座 / trade 幂等 / feed interact 幂等 / WebSocket starter),薄 CRUD 铺量为主,真复杂度点(feed 复合游标 / 社区 ZSET+弹幕)单独标注。