Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
213 lines
28 KiB
Markdown
213 lines
28 KiB
Markdown
---
|
||
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 达标门
|
||
关联:
|
||
- 7f8a418c(2026-06-28 M3 cutover:Python 路成内部默认生成路、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.mjs(Node 路 prompt)· cheap-worker/cheap_roles.py(Python 路 prompt · 双源同步对象)· .agents/skills/littlejs-game-dev.md
|
||
- game-runtime/tools/amodel-gen/tools.mjs:167-200(M1 已落的 drawButton/void 形状静态门 · 改签名须同步重写其判据)
|
||
- game-runtime/games/_template/(唯一匹配现契约的范例 · 模板覆盖基线)
|
||
- docs/agent-specs/2026-06-28-母语vs方言-生成对照实验-evidence.md(动因证据)
|
||
- docs/plans/2026-06-25-生成引擎统一执行计划-AgentScope三档-plan.md(canonical · 本设计认领进它的切片一)
|
||
关键决策(创始人 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 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.21–0.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 主笔、在飞)定稿——它定义①④的上位标准(丰富分层 / 留存结构 / 传播钩子 / 丰富度预算档位),先批产会返工。
|