评审版(review-closed,§6.8 Opus 全量 + Codex 半程独立印证 + 代码核实): - ① 策划 agent(升级 designNode)= 低风险、大半已通(design 经 K_ENRICHED 喂 amodel); - ② 音频/资产线 + ③ modify 双路 = **净新建**(双评审纠正原稿"复用"误框:amodel 路 validate→play 跳 scaffold/asset/build,SAA asset 机器与 modify 生命周期均 gamedef 专用); - 质量门三类(API-存在静态门[玩法无关] / per-game gatespec 断言[语义·复用 H] / 好玩 N-of-8[设计时]), **通用九门保持玩法无关、零品类语义**(创始人纠正);3 阶段分期。 Phase 1 执行版(execution-pending,待 §6.8 双评审):6 单元 = 设计 agent harness(JS tool-using,读真 sim skill)/ 薄 prompt / designNode amodel shell-out / API-存在静态门 / 扩 sim skill(进货+节奏+可机检 N)/ 好玩-经济 per-game 断言接线。 图说更新(519→999 行,11 内联 SVG,自包含):纠正现状(amodel 跳 scaffold/asset/build、九门玩法无关、 gatespec→play_spec→H)+ 新增新设计 6 图 + 3 阶段演进(三色:复用/净新建/零触碰)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
12 KiB
12 KiB
topic, type, phase, date, status, origin, owner
| topic | type | phase | date | status | origin | owner |
|---|---|---|---|---|---|---|
| Phase 1 执行版 —— 策划 agent(create)+ API-存在静态门 + 好玩机检 | execution | 1 of 3 | 2026-06-23 | execution-pending(待 §6.8 双评审 + 创始人批准后执行) | docs/agent-specs/2026-06-23-design-agent-audio-asset-line-review.md(review-closed) | Mac 开发执行线 |
Phase 1 执行版:策划 agent(create)+ API-存在静态门 + 好玩机检
承接 review 版(已 §6.8 收口)的 Phase 1。仅 create 路;不含 modify(Phase 3)/音频资产线(Phase 2)。 执行版 = 模块/文件/契约/步骤/失败路径/验收/回滚;不预写不可验证的代码细节。
1. 目标与范围边界
目标:让 amodel create 路的 design 节点变成"会读 skill 的策划 agent",产出含进货/库存环 + 节奏目标值 + 好玩自检的设计 → 喂现有 code ReAct;并加两道玩法无关的质量门(API-存在静态门 + 好玩机检),把"能玩"抬到"更好玩"。
范围内:
- 策划 agent = tool-using JS agent(复用
tools/amodel-gen/的 m3.mjs + read_file 工具),读真 sim skill(不手抄),输出设计文本 +gatespec。 - designNode amodel 路改为 shell-out 到该 JS 设计 agent;gamedef 路 design 不动(零回归)。
- check 加 API-存在静态门(校验插件/ctx 方法真存在)。
- 扩
sim-business-game-designskill(进货/库存范式 + 节奏目标值 + §10 标注可机检项 + 定 N)。 - 好玩门 = design 产 per-game
gatespec断言(复用现成assertAfterPlay→play_spec→H)+ 设计时 N-of-8 自检。
范围外(硬边界):
- 不碰 modify 生命周期(Phase 3 净新建)。
- 不碰音频/图片资产线(Phase 2);Phase 1 BGM 维持现状(静音 / 修对 ZzFXM 兜底,见 U6 失败路径)。
- 通用九门零改、绝不加玩法语义(创始人定)。
- 不碰 gamedef/factory design 路;不动 code ReAct harness 的生成逻辑(只改它的输入)。
- 不改 design 输出为结构化 schema(维持富化散文 brief,review D8)。
2. 前置条件
- mini staging repo 同步(本会话改动已 push,feat/mac-amodel-foundation @88d3a237)。
- NEWAPI_KEY / new-api 网关可达(
docs/内网凭据与端点.md);M3 可调。 - 基线绿:v3 干净 re-gen 八/九门、SAA 83 确定性回归、amodel e2e(执行前各跑一次留底)。
3. 模块与文件(repo-relative)
| 模块 | 文件 | 改动 |
|---|---|---|
| 设计 agent harness | game-runtime/tools/amodel-gen/gen.mjs |
加 --mode design(或新 design.mjs):scaffold-free,read_file/list_dir + done(emit 设计文本+gatespec) |
| 设计 agent prompt | game-runtime/tools/amodel-gen/prompt.mjs |
加 buildDesignSystemPrompt():薄指令指 read sim skill + 可达性自检 + 好玩 N-of-8 + 产 gatespec |
| API-存在静态门 | game-runtime/tools/amodel-gen/tools.mjs(check) |
新增:解析游戏源 <plugin>.<m>( / ctx.<m>( → 比对各 api.d.ts 方法集 → 未知方法报错 |
| SAA design 节点 | game-cloud/.../saa/SaaStudioNodes.java(designNode) |
amodel 路 shell-out 到 JS 设计 agent(复用 runProcessSplit 范式);gamedef 路保 Java DESIGN_SYSTEM |
| 配置 | game-cloud/.../saa/AigcExecutorProperties.java / SaaStudioGraph.Models |
design amodel 模型档(D1:M3)+ shell-out 开关(回滚用) |
| design 层知识 | .agents/skills/sim-business-game-design.md |
扩:进货/库存资源循环范式 + 节奏目标值指引 + §10 标注可机检 N 条 |
| 蒸馏 | .agents/skills/agentic-amodel-generation.md + .agents/README.md |
记设计-agent 形态 + API 静态门 + 第 6 footgun |
4. 数据流与依赖
brief ─▶ designNode(amodel) ─shell-out─▶ JS 设计 agent
read_file: sim skill + 用到的 api.d.ts
done ─▶ 设计文本 + ```gatespec
◀── 设计文本 ───────────────────────────────────────────────┘
designNode: enriched = brief + 设计文本 (现有逻辑不变)
gatespec → merge play_spec.assertAfterPlay/expectLatch/... (现有逻辑不变)
enriched ─▶ generate(code ReAct, 现有) ─▶ check(+API-存在静态门) ─▶ build ─▶ validate ─▶ play(通用九门 + per-game 断言)
关键:design→code 的喂法(K_ENRICHED 富化-brief)已通,不改;只是把 design 的产出方从"Java 单次调用"换成"会读 skill 的 JS agent"(amodel 路)。gatespec→play_spec 的 merge 已存在,不改——per-game 好玩/经济断言顺这条现成路走。
5. 接口 / 数据契约
- 设计 agent CLI 契约(对齐现有
gen.mjs --mode saa范式):node gen.mjs --mode design --brief "..." [--game-id <id>] --key <NEWAPI_KEY>→ stdout 末行单行 JSON{ ok, designText, gatespec? }(或落临时文件,designNode 读)。stderr/stdout 分流(沿用runProcessSplit,末行 JSON 不被 stderr 污染)。 - 设计 agent 工具集:
read_file/list_dir(只读,repo 根)+done({designText});无 write/无 shell(design 不落文件,只产文本)。 - 设计文本契约:紧凑中文设计稿(覆盖 sim skill §8 配方)+ 末尾一个 ```gatespec JSON 块(
expectLatch+assertAfterPlay[],经营含经济断言如{path:"currency",op:"decreased"}或营收{path:"score",op:"increased"})+ 一段「好玩自检:命中 §10 第 X/Y/… 条」。 - API-存在静态门契约:输入 = 游戏源 + 各插件 api.d.ts;规则 = 游戏调的
plugins.<键>.<方法>/ctx.<方法>必须在对应 api.d.ts 的 interface 里声明;违者 check FAIL,报「<键>.<方法> 不存在,见 <api.d.ts> 真方法名」。允许列表:动态/非插件成员(如自有对象方法)不误伤——只校验已知插件键 + ctx 面。
6. 实现单元(依赖序)
U1. 设计 agent harness(JS,tool-using)
- 目标:
gen.mjs加--mode design:不 scaffold、只给 read_file/list_dir/done,跑 ReAct 让 M3 读 sim skill+api.d.ts → 产设计文本+gatespec,stdout 末行 JSON。 - 文件:
game-runtime/tools/amodel-gen/gen.mjs、game-runtime/tools/amodel-gen/prompt.mjs(buildDesignSystemPrompt)。 - 依赖:无(复用 m3.mjs / TOOLS 子集)。
- 失败路径:M3 超时/失败 → 末行 JSON
{ok:false},designNode 回落 brief-only(沿用现有 degrade)。 - 验收:本地
--mode design --brief "经营 brief"→ 末行 JSON 含非空 designText + 合法 gatespec;run-log 显示真 read 了 sim skill。
U2. 设计 agent 薄 prompt(指读 skill + 可达性 + 好玩 + gatespec)
- 目标:
buildDesignSystemPrompt()——薄指令:① read.agents/skills/sim-business-game-design.md(别手抄)② 按 §8 配方产设计稿 ③ 可达性自检(只用 12 插件+boot.ctx 能达成的机制,落不到的剔除/简化,见 skill §9)④ 好玩自检:过 §10、命中 ≥N 条并写明 ⑤ 末尾产 ```gatespec(expectLatch + assertAfterPlay,经营含经济/营收断言)。 - 文件:
game-runtime/tools/amodel-gen/prompt.mjs。禁反引号(模板字面量陷阱,node --check 每改必跑)。 - 依赖:U1。
- 验收:产的设计含进货/库存环 + 节奏目标值 + 好玩自检 N≥定值 + 合法 gatespec。
U3. designNode amodel 路 shell-out(gamedef 不动)
- 目标:
designNode加 amodel 分支:saaSourceMode==amodel→ shell-out JS 设计 agent(复用runProcessSplit),拿 designText 回填 → 现有 enriched/gatespec/play_spec merge 原样复用;gamedef 路保callAndRecord(designModel, DESIGN_SYSTEM, brief)。 - 文件:
game-cloud/.../saa/SaaStudioNodes.java、AigcExecutorProperties.java(shell-out 开关 + design amodel 模型档)。 - 依赖:U1、U2。
- 失败路径:shell-out 非零/末行 JSON ok:false → 落
K_DESIGN_TEXT占位 + 回落 brief-only(对齐现有 design 失败 degrade);绝不裸退图。 - 验收:amodel 路真走 JS 设计 agent(trace 可见);gamedef 路 design 行为字节不变(回归)。
U4. API-存在静态门(check,玩法无关)
- 目标:
check解析游戏源(game-logic/core/render)的plugins.<键>.<方法>(与ctx.<方法>(→ 比对各插件src/plugins/<name>/api.d.ts+ PluginContext 方法集 → 未知方法 FAIL。 - 文件:
game-runtime/tools/amodel-gen/tools.mjs。 - 依赖:无(独立)。先以 advisory 上线(记录不阻断)跑几轮看误报,再转硬 FAIL。
- 失败路径/误伤防护:只校验已知插件键(host-config 注入的 11 + ctx 面),非插件对象方法跳过;插件键→dir 映射坑(
juice→particles-juice)写进映射表。 - 验收:对 v3
stopBgm与历史defineScenes报错;对 v3 其余真方法零误报;模板 _template 零误报。
U5. 扩 sim-business-game-design skill
- 目标:补 ① 进货/库存资源循环范式(进货扣币→库存→售卖→补货;§1/§3)② 节奏目标值指引(spawn 区间/rush 起点参考区间,治"太快")③ §10 标注哪几条可机检 + 定 N(如飘字+音效/score-delta/解锁/经济扣减,N=4)。
- 文件:
.agents/skills/sim-business-game-design.md。 - 依赖:无(U2 的 prompt 指它)。
- 验收:skill 含进货范式 + 节奏区间 + 可机检 N 条标注;设计 agent 读后产出体现。
U6. 好玩/经济 per-game 断言接线 + 蒸馏
- 目标:① 确认 design 产的 gatespec 经济/营收断言经现成 merge 进 play_spec.assertAfterPlay、被 H 门校验(无新管线,仅验证链路通)② 蒸馏:
agentic-amodel-generation记设计-agent 形态 + API 门 + 第 6 footgun(stopBgm→stop)。 - 文件:
.agents/skills/agentic-amodel-generation.md、.agents/README.md;(经济断言驱动可达性靠 U2 设计 + driver,记 open 若 driver 不可达则降 advisory)。 - 依赖:U2、U3、U4。
- 验收:re-gen 经营游戏的 play_spec 含经济/营收断言且 H 门据其判定;skill 索引更新。
7. 边界 / 失败路径汇总
- 设计 agent 失败/超时 → brief-only degrade(不退图)。
- shell-out 末行 JSON 被 stderr 污染 → 沿用
runProcessSplit分流(批 B 已验)。 - API-存在静态门误报 → advisory 先行 + 允许列表 + 键→dir 映射;确无误报再转硬门。
- 经济断言对应动作 driver 不可达 → 该断言降 advisory(记 open O,不阻断;Phase 3 modify/driver 增强再硬化)。
- BGM:Phase 1 不修音频通道;若 design 选 ZzFXM 兜底,必须连带修
SongDatashape footgun,否则显式接受静音(写进验收,不假装有声)。 - 富化 design 扰动刚转绿的 amodel e2e → 每次执行前后跑 e2e + 83 回归,红即回滚(开关)。
8. 验证方法
- 单元:U1 本地
--mode design出 JSON;U4 对 v3/_template 跑 check(报 stopBgm、零误报);U2 设计含进货/节奏/好玩。 - 集成(端到端 re-gen v4):经现新设计 agent 干净 re-gen 一台经营游戏 → 看产出有进货环 + 节奏舒适 + 好玩 N-of-8 命中 + 过通用九门 ≥8/9 + 过 API 静态门 + play_spec 经济断言被 H 校验。创始人亲玩判"更好玩"(对比 v3)。
- 回归:gamedef design 字节不变;SAA 83 确定性回归全绿;amodel e2e 不回归。
9. 完成条件
- A1(review):干净 re-gen 经营游戏自带进货/库存 + 节奏舒适(亲玩 + N-of-8 机检过),九门 ≥8/9,经济断言过。
- A4(review):API 静态门拦掉 stopBgm/defineScenes 类、通用九门零品类语义。
- A5(review):gamedef + 通用九门 + SAA 83 + amodel e2e 全绿。
10. 回滚
- design shell-out 由
AigcExecutorProperties开关控制 → 关之即回 JavaDESIGN_SYSTEM(amodel 也回单次调用)。 - API-存在静态门 advisory→hard 两段;hard 出问题降回 advisory。
- skill/prompt 改动纯文本,git revert 即回。
- 各改动 amodel-gated,gamedef/factory/通用九门零触碰 → 回滚面小。
11. 待执行前定(origin Open Items 收敛)
- O1【D1】design amodel 模型档定 M3?(执行前一次小量测:M3 vs stage1 设计质量)。
- O3【U5】§10 可机检 N 值(建议 N=4)+ 进货范式具体子型。
- O6【U4】API 门覆盖面(插件方法 + ctx 面;arg-shape 类不在本门,留 footgun-doc)。
- O7【U6】Phase 1 BGM:修 ZzFXM SongData footgun 兜底 vs 显式静音——二选一写死验收。
下一步:本执行版过 §6.8 双评审 → 创始人批准 → 按 U1→U6 序执行。