games-development-ai/docs/agent-specs/2026-06-29-便宜档降AI参与-减摩擦与扩模板覆盖-设计.md
2026-07-02 19:31:53 -07:00

213 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
date: 2026-06-29
topic: 便宜档降AI参与-减摩擦与扩模板覆盖
status: 修订Codex + Opus 双评审已过 · 据证据驱动重定位 · 认领为 plan① 切片一里程碑蓝图)· 主体已交付(减摩擦 + 数据点 + 丰富两步,M1 达标 2026-06-30);剩 §7 品类扩产工单(解锁待质量模型 SoT)
sot-impact: 修订 生成引擎执行计划(切片一里程碑蓝图,plan① 认领)
上级: docs/plans/2026-06-25-生成引擎统一执行计划-AgentScope三档-plan.md
认领: plan① 切片一某里程碑L2 API 母语化重构 + per-genre 脚手架)· 挂 WU-B 实例达标 / WU-C 5.4 能力面契约变更 / WU-F 达标门
关联:
- 7f8a418c2026-06-28 M3 cutoverPython 路成内部默认生成路、Node 退役;对外放量 6 门未开、≥80% 生产复验未做)
- docs/architecture/架构/生成引擎/agentic运行时架构图说.md §4.1 / line 21·255·263·269便宜档权威定位
- game-runtime/src/plugins/11 注入插件 api.d.ts · 改签名对象)
- game-runtime/tools/amodel-gen/prompt.mjsNode 路 prompt· cheap-worker/cheap_roles.pyPython 路 prompt · 双源同步对象)· .agents/skills/littlejs-game-dev.md
- game-runtime/tools/amodel-gen/tools.mjs:167-200M1 已落的 drawButton/void 形状静态门 · 改签名须同步重写其判据)
- game-runtime/games/_template/(唯一匹配现契约的范例 · 模板覆盖基线)
- docs/agent-specs/2026-06-28-母语vs方言-生成对照实验-evidence.md动因证据
- docs/plans/2026-06-25-生成引擎统一执行计划-AgentScope三档-plan.mdcanonical · 本设计认领进它的切片一)
关键决策(创始人 2026-06-29: 直接改插件 API 签名向母语直觉对齐、不为 live 保兼容、可重构(存量重生成);证据驱动——先清脏数据 + 取难品类数据点,据数据再定阶段二范围。
图清单:
- 图1 降 AI 参与的两条路与量级Mermaid · 内联 §3
- 图2 插件 API 摩擦的两类(可改签名 / 结构约束Mermaid · 内联 §3
术语注: 本文「M3」一律指 MiniMax-M3 模型plan① 切片一的里程碑「M3真上线」是另一回事引用时写「plan① M3 里程碑」。
---
# 便宜档降 AI 参与:减摩擦与扩模板覆盖 功能设计
## §0 一图看懂
**核心思想**:便宜档按 SoT 定位是"AI 参与深度低的高质游戏"(轻量≠简单),靠玩法模板、工程脚手架与 L2 插件库承担复杂度、让 AI 在 L3 写得少。但 AI 在 L3 改写整个 game-logic.js 时学私有插件 API 的摩擦极大,"降 AI 参与"没兑现。降 AI 参与有两条路:**减摩擦**(让 AI 写得顺,小头)和**扩模板覆盖**(让 AI 写得少,大头但目前未验)。本设计先做零成本高收益的、取缺失的数据点,据数据再定范围。
**边界**:只动便宜档;九门验收内核不动;L2 插件库保留(降参与的核心载体,非负担);不动 tier2。改插件 API 直接改签名、不为 live 保兼容,存量重生成。
**怎么算成功**:减摩擦——同品类下 22 处 API 幻觉命中率、check/build 返工轮数、read_file 次数下降(不是 token 大降,那归扩模板);扩模板——在难品类上 AI 自由写的行数/轮数下降且多款不雷同;九门机制地板不降。
## §1 意图与目标
便宜档的"便宜"来自让 AI 少参与——平台预建工程脚手架、备玩法模板、给 L2 插件库(juice、物理、碰撞这些复杂能力 AI 直接调、不用自己写),AI 只在 L3 写游戏本体(SoT line 269:"轻量≠简单……低成本生成相对不复杂、又不易同质化的高质小游戏")。
但"少参与"没兑现。2026-06-28 实验:同一条点击得分 brief、同一个 MiniMax-M3,母语下三步一次成型约 14K token,现状私有方言下产同一款要约 26 倍 token。事实核准把根因摊清:AI 写 game-logic.js 时要学的私有 API 大量反直觉(共 22 处,见 §3 与附录),且一部分"幻觉"是我们喂错了学习材料——prompt 与 skill 教 AI 用根本不存在的 `collision.pointInRect`、被当范例的 catch-fruit/wanglanmei 是旧 `opts` 签名漂移、插件数 prompt 说 11 skill 说 12。
**现状要讲准(不夸大紧迫性)**:这条 Python/M3 便宜档路 2026-06-28 已 cutover,但 cutover 的是**内部默认生成路**(Node 旧路退役)——**不是对外面向用户放量**:对外开闸的 6 门未开、≥80% 生产分布达标复验未做、当前质量约 3/5、feed 放量还受备案日历闸约束(plan① 切片一现状)。所以痛点不是"即将放量的成本爆炸",而是"**已成默认生成路的单位成本是母语的约 26 倍**,等它真放量会放大";存量产物是测试批(`bake-*`/`amgen-*`)、不是用户在玩的游戏。
目标,摆正两条路的量级:
- **减摩擦(小头,先验得到)**:把高频反直觉的 API 改成符合母语直觉、把喂错的材料清干净。它省的是 AI **学 API 与返工**的 token,**不等于减少写代码量**。验证看 22 处幻觉命中率、check/build 返工轮数、read_file 次数下降。
- **扩模板覆盖(大头,但未验)**:把五品类玩法模板从纸面框架实体化成 per-genre 脚手架,AI 从"改写整个 game-logic.js"变成"在品类骨架上填更少"——这才是真正缩小 AI 工作面的杠杆。**但它目前在难品类零数据**;唯一的 26× 数据落在点击得分,而点击得分恰是 _template 原生范例、本就不需要新模板。所以扩模板的收益要在一个难品类上先取数据点,不当默认。
- **不降护城河、不丢复用**:九门不降;L2 插件库保留(扔了 AI 就得自己写物理碰撞、反而升参与)。
## §2 边界
**做**:① 清脏数据(教错的 API、漂移范例、插件数不一致);② 高频反直觉 API 直接改签名向母语直觉对齐,并同步重写 M1 已落的形状静态门判据;③ 补匹配现契约的 per-genre few-shot 正例;④ 在难品类取扩模板数据点,据数据把五品类玩法模板实体化为脚手架。
**不做**:不动九门验收内核;不丢 L2 插件库;不动 tier2;不为 live 存量保 API 兼容。
**与 plan① / live 的关系**:① **认领归属**——本设计不是游离的 agent-specs 文档,认领为 plan① 切片一的一个里程碑(L2 API 母语化重构 + per-genre 脚手架),其任务分挂 WU-C 5.4(契约变更:改 22 处 L2 API)、WU-B(实例达标:3/5→更高)、WU-F(达标门验证);plan① 切片一加指针。② **live 语义**——cutover 的是内部默认生成路、非对外放量,故存量重生成动的是测试批、无用户可见影响;但仍要有"批量重生成 + 九门复验 + 不留半新半旧"的处置。③ **tier2 对账**——L2 插件库若为两档共享,改 22 处 L2 API 会触及 tier2 底座;需先核 L2 与 tier2 插件是否物理隔离:共享则改签名补 tier2 回归,隔离则讲清隔离点(本设计默认先核、再决定 tier2 回归范围)。
## §3 方案
降 AI 参与两条路,**量级不对等**:减摩擦是小头(省学 API/返工),扩模板覆盖是大头(缩写代码量)——但大头未验。
图1:
```mermaid
flowchart TB
G["降 AI 参与 = 降便宜档成本(不降九门、不丢插件库)"]
subgraph R1["路一 · 减摩擦(小头 · 点击得分已验 26× 含学 API 税)"]
A["A 清脏数据collision.pointInRect 收敛 hud-ui、换漂移范例、修 11/12零架构改动"]
B["B 改签名:高频反直觉 API 改向母语直觉 + 同步重写形状门判据(不兼容 live、可重构"]
C["C 补密度C1 per-genre 正例落地 / C2 内嵌vs按需的 token×良率对比"]
end
subgraph R2["路二 · 扩模板覆盖(大头 · 难品类零数据 · 证据驱动)"]
DP["数据点:先在一个难品类测扩模板的行数/轮数下降"]
D["D 据数据点把五品类玩法模板实体化为脚手架 + 品类路由 + 兜底"]
DP --> D
end
G --> R1
G --> R2
R1 -. 留插件库的复杂能力复用 .-> G
R2 -. 平衡:骨架归模板、表现层留 AI防同质化须操作化.-> G
```
**路一 · 减摩擦**:
- **A 清脏数据(先做,零架构改动,高收益)**。把 prompt/skill 里教 AI 调用不存在的 `collision.pointInRect` **收敛到真实存在的 `hudUi.pointInRect`**(不在 collision 补——那会把 UI 的 Rect{x,y,w,h} 塞进用 Aabb{x,y,hw,hh} 的碰撞插件、制造新的几何类型不一致);把当范例引用的 catch-fruit/wanglanmei 换成匹配现契约的(唯一匹配的是 `_template/game-logic.js`);统一插件数口径(11 注入 + runtime-probe 取证不注入)。纯修材料,不改任何 API。`prompt.mjs``cheap-worker/cheap_roles.py` 是双源,必须同改。
- **B 改签名,向母语直觉对齐(直接改、不兼容 live、可重构)**。据附录的可改签名清单改 L2 API,**同时同改** api.d.ts、prompt、skill、`_template` 范例(它们是一套,漏一个就造新脏数据),并**同步重写 `tools.mjs:167-200` 那道 drawButton/void 形状静态门的判据**——它是 M1 已落的防护,改签名后不整批退役(因为"把返 void 的当返回值用、把 A 形状当 B 形状"这类幻觉模式不会消失、只会转移),而是逐条把判据对到新签名上。存量测试批重生成、过九门复验。
- **C 补密度**。拆两步:C1 把每品类一份**匹配现契约**的 few-shot 完整正例落地;C2 测正例供给方式——内嵌(增 token)vs read-on-demand(现行省 token)的 token×良率对比,据数据定。RAG 仅在 C2 显示按需读不够时才进。
图2,22 处摩擦分两类——改签名能解决的、和改签名解决不了的结构约束:
```mermaid
flowchart LR
subgraph C1["可改签名向直觉(路一 B 的清单 · 约 15 处)"]
X1["对象当函数ctx.random/ctx.time → 可直接调用"]
X2["模块级函数当实例方法physics/collision 几何 → 挂插件实例"]
X3["class 当实例gamefeel ComboWindow/InputBuffer → 实例给方法"]
X4["返回值/参数语义drawButton 返对象、addScore 加 add 别名、timer 统一单位、playSfx/loadSong 更直觉、juice 加 burst"]
X5["同名异构Aabb{hw,hh} vs Rect{w,h} → 统一几何约定"]
end
subgraph C2["结构约束(改签名解决不了 · 靠模板/L1/保留门 · 约 7 处)"]
Y1["bundle.tick(dt) 必调、dt 单位秒×1000"]
Y2["_forensicsView().state() 须函数体内实时算"]
Y3["输入不订阅 getInput、opts.runtime/.boot.ctx 嵌套"]
end
C1 --> O["改签名后按直觉写就对,幻觉命中率下降"]
C2 --> P["这些不靠改签名——L1 已收输入/wiring其余靠模板骨架与保留的红线/形状门"]
```
**路二 · 扩模板覆盖(证据驱动)**:把 SoT line 263 的五品类(经营/剧情/解谜/TRPG/非遗)实体化成 per-genre 工程脚手架。但先解两个它现在缺的东西,否则它是孤儿、是口号:
- **品类路由 + 兜底(入口)**:谁、按什么把一句话 brief 分到某品类?置信度不足或不属五类时走什么?——定一条路由路径 + 一个 generic 默认骨架兜底(不属五类落 generic,退化回现状、不崩)。"路由命中正确品类"列为验证项。
- **同质化边界操作化(不是口号)**:给每品类划出"骨架/表现层"的**具体界**——哪些必由模板(如经营的资源-订单-库存环结构)、哪些必留 AI(主题、数值、关卡、表现)。**安全阀不能是"踩线就回退覆盖"**(那等于把面还给 AI、抵消路二目的),改成**不牺牲覆盖的多样性手段**:表现层参数空间、关卡/数值随机源。"同品类多款不雷同"列为验证项。
**关键设计决策**:① 直接改签名、不兼容 live、可重构(创始人定);② L2 插件库保留(降参与核心载体);③ 九门内核不变;④ 形状门逐条重写判据、不退役;⑤ 证据驱动——扩模板大头未验,数据点之前不敲定阶段二范围;⑥ per-genre 正例与脚手架纳入"必须同改"清单 + 加机器校验门(范例签名 == 现契约),防它们成下一代漂移。
## §4 步骤计划
**阶段一 A · 清脏数据(立即,零架构改动)**。collision.pointInRect 收敛 hud-ui、换匹配现契约的范例、统一插件数;prompt.mjs 与 cheap_roles.py 同改。交付:不再教错的学习材料。验证(静态可核):prompt/skill 引用的每个 API 在对应契约里真实存在、范例签名与现契约一致。依赖无、风险低。
**数据点(前置阶段二,证据驱动)**。在一个难品类(如经营点客)取扩模板的行数/轮数下降数据——证明"扩模板真能缩小 AI 工作面"再投阶段二。交付:难品类路二数据点。验证:同难品类有无脚手架的行数/轮数对比。
**阶段一 B · 改签名**。据附录可改签名清单改 L2 API + 同改 api.d.ts/prompt/skill/_template 范例 + 重写形状门判据;**逐插件改、逐插件过九门回归**,回归矩阵覆盖:`tools.mjs` 静态门、`cheap-worker` 工具、金标 fixtures、自动 play-spec、F_wiring 期望前缀、prompt/skill、_template;存量重生成过九门。交付:向直觉对齐的 API + 同步材料 + 重生成存量。验证:22 处幻觉命中率显著降、check/build 返工降、九门不降。依赖阶段一 A。风险:改 L2 契约的回归面(逐插件回归守)。
**阶段一 C · 补密度**。C1 per-genre 正例落地;C2 内嵌 vs 按需的 token×良率对比定供给方式。依赖阶段一 B(正例用改签名后 API)。
**阶段二 · 扩模板覆盖**(据数据点定范围)。五品类脚手架实体化 + scaffold 加 genre 参数 + 品类路由兜底;每品类先做 1 个黄金骨架过九门、再扩 n。交付:per-genre 脚手架 + 路由。验证:AI 自由写行数/轮数随覆盖降、同品类多款不雷同、路由命中率。依赖数据点 + 阶段一。风险:模板维护债、同质化(靠操作化界 + 多样性安全阀守)。
## §5 验证方式(配仪器,不留口号指标)
- **减摩擦**:① 22 处幻觉命中率——检测手段 = 对生成代码/transcript 做静态匹配(每处摩擦一条匹配规则,复用 `tools.mjs` 形状门的扫描思路);② check/build 返工轮数、read_file 次数(从 run 记录取)。同品类对比,不锚点击得分绝对值,每品类先测裸跑基线。
- **扩模板覆盖**:① AI 自由写行数/轮数随脚手架覆盖下降(难品类数据点);② 同品类多款相似度不升——度量 = AST 结构相似度(定基线 + 踩线阈),踩线则用多样性手段而非回退覆盖。
- **不降护城河**:九门机制地板逐门;改 API 与建模板后,存量与新生成全过九门;形状门重写后单测绿。
## §6 风险与回滚
- **改签名回归面**:22 处波及九门探针(读 _forensicsView/插桩 __engineCalls)、插件间、形状门、金标 fixtures、_template 范例。对策:逐插件改逐插件过九门回归 + api.d.ts/prompt/skill/范例/形状门同改(漏一个造新脏数据)+ 回归矩阵列全。
- **大头未验**:扩模板是降参与大头却零难品类数据。对策:证据驱动——数据点之前不敲定阶段二范围、不投脚手架工程量。
- **存量重生成**:cutover 是内部默认路、存量是测试批,放量前重生成无用户可见影响;但要批量重生成 + 九门复验、不留半新半旧。
- **同质化对冲**:安全阀若是"回退覆盖"会抵消路二收益;改用表现层参数空间/随机源等不牺牲覆盖的多样性手段,并把"多款不雷同"作硬验证项。
- **few-shot/RAG token 权衡**:C2 实测定供给方式,不预设。
- **新漂移面**:per-genre 正例/脚手架纳入"必须同改"+ 机器校验门(范例签名==现契约)。
- **回滚**:便宜档可重构,改坏了重生成回退;九门兜底——不过九门不放量;全程不动九门内核与 tier2,影响面锁便宜档生成侧。
## 附 A · 22 处插件 API 摩擦清单(B-1 落仓 · 阶段一 B 改签名工件)
**可改签名向直觉(路一 B)**:
| # | 插件.点 | 现状(反直觉) | 改向(母语直觉) |
|---|---|---|---|
| 1 | `ctx.random`/`ctx.time` | 是对象,须 `.next()`/`.nowMs()` | 让其可直接调用 `ctx.random()`/`ctx.time()` |
| 2 | physics 几何(integrateProjectile 等) | 模块级函数,physics 实例为空 `{}` | 挂到 physics 实例上 |
| 3 | collision 几何(circleVsCircle 等) | 模块级函数,实例只有 spatial | 挂到 collision 实例上 |
| 4 | gamefeel(InputBuffer/CoyoteTimer/ComboWindow) | class 须 new | 实例直接给方法/工厂 |
| 5 | `hudUi.drawButton` | 返 void | 返按钮对象(可判命中) |
| 6 | `sessionScore.addScore` | 无 add 别名 | 加 `add` 别名 |
| 7 | `timer.after/every` | 收毫秒(与 dt 秒相反) | 统一单位或显式标注 |
| 8 | `audioMusic.playSfx` | 限 'blip'/'thud'/'chime' | 放开/语义名映射 |
| 9 | `audioMusic.play`/loadSong | play 入参是强度非曲目 | 更直觉的曲目接口 |
| 10 | `juice` 发射 | 无 burst 方法(burst 是预设名) | 加 `burst(x,y)` |
| 11 | `juice.render` | 须每帧手调 | 文档钉死/自动化 |
| 12 | collision `Aabb` | `{x,y,hw,hh}` | 与 hud-ui Rect 统一几何约定 |
| 13 | physics `ProjectileState` | 位置 `px/py` | `x/y` |
| 14 | `palettePost` | 不内置成品色板 | 提供常用预设 |
| 15 | scene `update` 回调 | 只收 `(dt)` | 文档钉死(防臆造首参) |
**结构约束(改签名解决不了 · 靠模板/L1/保留门,不在 B 范围)**:bundle.tick 必调、dt 单位秒、`_forensicsView().state()` 函数体内实时算、输入不订阅 getInput(L1 已收)、opts.runtime/.boot.ctx 嵌套(L1 已摊平)、sceneFsm.define 逐场景(可改批量,归 B #)、`collision.pointInRect` 不存在(归阶段一 A 清脏数据,收敛 hud-ui)。
> 完整逐条(真实形状/直觉写法/file:line)见本会话事实核准报告;阶段一 B 开工时据此表逐条建变更+回归条目。
## 附 B · 双评审收口
Codex:B-1(22 处清单落仓+回归矩阵·已补附 A/§4)、M-1(token 因果·已摆正 §1/§5)、M-2(collision 收敛 hud-ui·已改 §3A)、M-3(scaffold 工程量·先 1 黄金骨架 §4)、m-1(C 拆 C1/C2)、m-2(路径已修 frontmatter)。
Opus:M1(紧迫性/live 语义·已改实 §1/§2)、M2(执行归属·已认领 plan① 切片一 frontmatter/§2)、M3(品类路由孤儿·已补 §3 路二)、M4(同质化操作化+安全阀改多样性·已改 §3/§6)、M5(两条路量级+难品类数据点·已摆正 §1/§3/§4)、m1(新漂移面同步门·§3⑥/§6)、m2(指标配仪器·§5)、m3(tier2 对账·§2)、m4(散文去套话/M3 命名区分·已改 + frontmatter 术语注)。
**跨文档收口 TODO**:① ✅ 已认领入 plan① 切片一(里程碑 + WU-B/C5.4/F 归属,commit `56e9f28e`,创始人 2026-06-29 directed);② ✅ 前置核查已做——**L2 插件(`game-runtime/src/plugins/`)与 tier2 物理隔离**(tier2 用自己的 Phaser engine-caps、零 import 便宜档 L2 插件、仅注释口径对齐)→ **阶段一 B 改 L2 API 不触 tier2,tier2 回归范围 = 无**;③ ✅ 阶段二范围已按创始人纠正后的框落为 §7 扩产工单(2026-07-02;解锁待质量模型 SoT,原「脚手架范围」框随纠正作废)。
**执行进度(2026-06-29)**:
-**阶段一 A 清脏数据 + 文档治理锚**(三文件双源 + 锚,九门复验 PASS,`a6a37b1c`)。
-**阶段一 B 改签名全完成**——附 A 15 处可改签名 #1-#15 全落,逐插件改逐插件验,`2a20e5e7``2be7b718` 共 13 提交(含正交泛型门修复 `851b86fe`:API 静态门方法名正则漏认泛型 `get<T>(`、误杀带存档游戏)。每处单元 + 确定性验、各插件测试绿、双源 prompt 一致、形状门 11/11 不破。母语化要点:drawButton 返命中矩形(#5,治 #1 翻车点根因)、sessionScore.add / juice.burst / gamefeel 工厂 / collision·physics 几何挂实例 / Aabb 兼收 {x,y,w,h}(#12)/ ctx.random()·ctx.time() 可调用双 API(#1,单点 buildContext 包装)/ audioMusic 语义音名 / timer·scene·juice.render doc 钉死。
-**存量重生成九门复验(代表性一局)**:打地鼠 + 开始/再来一局按钮 + 高分持久化(走 drawButton/sessionScore/save.get/ctx.random),`verdict.pass``failedGates=[]`、**attempts=1 一次成型、¥0.64/209s**。对比改签名前同款游戏(s5btnverify)栽在 save.get 泛型门 bug 上(2 attempts、¥6.69、失败)——**现一次过、更便宜更快不 thrash**,减摩擦端到端见效。
-**难品类数据点(B)取得——结论修正了"扩模板降工作面"的假设**。建经营黄金骨架 `game-runtime/games/_template-shop/`(蒸馏 6/7 过门的 bake-shop-serve 实证 pattern:顾客→桌位→上菜收钱→耐心→限时循环 + `_forensicsView` 的 targets/score 取证契约;母语化 API + 多样性参数空间 + fill-in 标记),**独立过九门**(H_progress score 0→154)。接入品类路由:`scaffold-saa <id> [template]` + `cheap_run.scaffold(template)` + `run_studio(scaffold_template, scaffold_desc)`(缺省回落 _template,create 路不变)。同一咖啡馆 brief 三路对照(n=1):
- **无脚手架基线**(7 局 bake-shop-serve):~890 行 / ¥~0.7 / 6&#x202F;7 过门。
- **软脚手架**(给经营骨架 + 软提示"别重写循环"):892 行 / ¥0.85 / 过门 / 还 distinct——但 **AI 把省下的预算投进增富化**(自加 combo 连击 + VIP 客)而非减行数,**三指标(行数/成本/轮数)对基线全平、没降**。
- **强制换皮**(write_whitelist 锁 game-logic.js 循环、只许改 core 主题数值 + render 观感):**696 行(-22%)/ ¥0.34(-51%)/ tokens -64% / AI 写量 201 行(对 733 -73%)/ 过门 / 仍 distinct 咖啡馆**;game-logic.js **0 diff**(循环原样保留)。
- **结论**:设计 §1 的"扩模板=缩小 AI 工作面"假设**成立,但只在"强制换皮"模式下**(脚手架 + 写边界强制锁循环);**软脚手架不降成本**——AI 拿到能跑循环后会把预算填进增富化。降工作面的杠杆**不是脚手架本身,是"脚手架 + 锁循环只换皮"**。代价:强制换皮**封顶增富化**(只换主题、不加新机制),软脚手架**保留增富化但不省成本**——两模式各有取舍。
- **n=5 收敛环确认(2026-06-29)**:经营 reskin 跑 5 个不同店主题(奶茶/书店/花店/拉面/冰淇淋),**5/5 全过九门 · 成本均 ¥0.252(区间 0.210.38,vs 基线 ~¥0.7 = -64%)· game-logic.js 全 0-diff(循环锁定证明生效)· 全 1 轮 · 5 店菜单全互异(多款不雷同)**。连同咖啡馆 = n=6 全过、全腰斩、循环全锁定——**reskin 三件(成本腰斩稳 / 过门 100% 可靠 / 多款不雷同)全确认收敛**,无失败、无需追加。
- 🔴 **创始人纠正(2026-06-29,推翻上面的 reskin 策略框)**:把 **reskin「锁循环只换皮」作阶段二成本主线 = 错、越线**(上面 reskin 的成本数据作留痕——锁写省成本的机制为真——但**作阶段二策略已废**):
-**便宜 = LLM 低参与度,不是游戏低质量**。游戏底线 = **2D 丰富游戏**(进货/解锁/成长/音乐/丰富玩法、有吸引力);reskin 锁死薄循环换皮 = 砍复杂度,违背底线。"低参与"指 **agent 不在引擎/plumbing 上耗**(脚手架 + 插件包了)、**把精力放在游戏设计**,不是"脚手架替 agent 写好、agent 少写"。
-**架构红线**:项目代码只做机械确定性的事;**凡 agent/skill/mcp 该做的(需判断/创作/语义),代码绝不碰**。故 **玩法/美术/音乐的丰富「生成」= 生成 agent 的设计创作职责**(靠 [`sim-business-game-design.md`](../../.agents/skills/sim-business-game-design.md) 指导 + 组合插件实现);**丰富度「校验」= 纯 LLM 验证 agent(非阻塞)——绝不写成代码校验、不进九门、不进脚手架**。所以"重做丰富脚手架 / 脚手架写好玩门断言 / 4 条可机检好玩门做成代码"也一并错。
- ③ 连带:本设计 §1/§3/§4 把"扩模板覆盖"等同于"per-genre 丰富脚手架"的框也要随之修正为 **per-genre 设计 skill(给 agent 读、让它设计丰富)+ agent 实现 + LLM 验证**(脚手架保持轻起点);该重写列为收口 TODO。
- 🔄 **下一步(修正后 · 取代 reskin)**:① **把 `sim-business-game-design` 设计指导接上便宜档生成 agent**——现 cheap-worker prompt 只指 `littlejs-game-dev`(怎么写代码)、漏了"设计什么才好玩(进货/解锁/成长/音乐/8 条好玩)",接上让 agent 据 brief **先设计丰富玩法再实现**;② **建 LLM 丰富度/好玩验证 agent**(非阻塞评玩法/美术/音乐质量,给质量信号、不卡九门)。两步喂 **M1 达标门**(标 = 过九门 + 丰富)。**脚手架保持轻起点不动**。并行可推:阶段一 C 补密度(few-shot/RAG)。
-**修正后两步已落地 + M1 达标(2026-06-29/30)**:① sim-business 设计指导接入便宜档生成 agent、② LLM 丰富度验证 agent(非阻塞)建成;落地后 bake-off-M1-rich 三品类(click-score / whack-mole / shop-serve)各 5/5 过九门、`overallMeets=true``richnessByGenre` 佐证 richness 正路非 reskin(证据口径见 plan① 切片一起点校正 + M3 cutover plan §1.1);M2 退役授权据此 `authorized=True`。**本设计主体使命(减摩擦 + 数据点 + 丰富两步)交付**;剩余 = §7 品类资产扩产工单。
## §7 品类设计资产四件套扩产工单(2026-07-02 落账 · opus 自治批产 · 解锁待《游戏质量与爆火能力》SoT)
阶段二「扩模板覆盖」按创始人 2026-06-29 纠正后的框实体化:**per-genre 设计 skill(让 agent 设计丰富)+ agent 实现 + LLM 验证,脚手架保持轻起点**。五品类中经营一套已齐(`sim-business-game-design` + `_template-shop` + 金标 spec + rubric 雏形);剩四品类(剧情 / 解谜 / TRPG / 非遗)各批产一套四件:
| 件 | 经营范例(照此打样) | 要求 |
|---|---|---|
| ① 品类设计 skill | `.agents/skills/sim-business-game-design.md` | 这个品类什么好玩:核心循环 / 进度结构 / 留存钩子 / 常见设计错误;对齐质量模型 SoT 的分层标准 |
| ② 轻脚手架 | `game-runtime/games/_template-shop/` | **轻起点、非丰富脚手架(红线)**:工程骨架 + `_forensicsView` 取证契约 + 多样性参数空间,独立过九门 |
| ③ few-shot 过门正例 | 阶段一 C1 | 匹配现契约(母语化后 API);范例签名 == 现契约走机器校验门,防成下一代漂移源 |
| ④ 品类 rubric + 金标 play-spec | cheap-worker 金标 fixtures | 丰富度 rubric 喂 LLM 验证 agent(非阻塞),按质量模型 SoT §3.3 计分制(逐条 0/1 标层 + L2/L3/L4 三分组小计);金标 spec 喂九门对照 |
> **前置小工单(单列,生成线 lane、不占品类件)**:rubric v2 评分尺升级(8→11 条 + 分组)+ 评分输出三分组小计落库(cheap-worker 一次性改造,现只落单一 richness 总分;数据飞轮回流语料的输入前置)。首个品类件开工前先落;验收 = 金标复验(分组小计漂移 ≤±1)+ 落库字段真出现。
**工单六要素(每品类一个 opus 会话,plan 模式领单 → goal/ultracode 自治 + 自审)**:
- **目标**:该品类四件齐,②独立过九门、③④接入生成 / 验证链。
- **事实指针**:本档全文 + 经营四件现货 + `littlejs-game-dev` + 质量模型 SoT(上位标准)+ `cheap-worker/cheap_roles.py`
- **边界红线**:丰富「生成」归 agent 设计、项目代码只做机械确定的事(不写好玩门代码、不进九门、不进脚手架);L2 插件库保留;不动 tier2;`prompt.mjs``cheap_roles.py` 双源同改。
- **验收门**:②过九门;同品类 n=3-5 小批(**非 n≥30**)过门且多款不雷同(AST 相似度不踩线);22 处幻觉命中率不升。
- **坑**:双源同改漏一处即造新脏数据;`prompt.mjs` 禁反引号;范例签名机器校验门必须随③同步;worktree 缺 esbuild。
- **自审**:每件附真实 commit + 九门 verdict 路径;没全绿报 BLOCKED。fable 按质量模型 SoT 终审。
**解锁条件**:《游戏质量与爆火能力》SoT(质量模型,fable 主笔、在飞)定稿——它定义①④的上位标准(丰富分层 / 留存结构 / 传播钩子 / 丰富度预算档位),先批产会返工。