From f7f1262b05a312747ef6d64b67d83d21b60a97a3 Mon Sep 17 00:00:00 2001 From: zizi Date: Fri, 19 Jun 2026 01:33:38 +0000 Subject: [PATCH] =?UTF-8?q?docs(plan):=20=E7=94=9F=E6=88=90=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=20v3=20=E6=88=98=E7=95=A5=E8=BD=AC=E5=90=91=E2=80=94?= =?UTF-8?q?=E2=80=94=E7=94=A8=E5=AF=B9=20agentic=20=E7=9A=84=20M3=20?= =?UTF-8?q?=E6=8F=90=E4=B8=BB=E8=B7=AF(Anthropic=E5=8D=8F=E8=AE=AE+thinkin?= =?UTF-8?q?g/=E5=8E=86=E5=8F=B2=E4=BF=9D=E7=95=99+=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E5=BE=AA=E7=8E=AF)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 根因分析档 v3 重写:整合二轮双评审 P0(n=5 非 13 / M3 论点降工作假设 / 点击消除 H 归上下文非门测错 / a3 救场回传未做 / best-of-N 整图串行) + M3 双协议实测探针 + 官方 Interleaved Thinking 文档 - 最深根因=用法错:M3 是 agentic SOTA 却被当一次性 JSON 填空机用 + thinking 剥离 + 历史不留;QC thinking:disabled 是错补丁(该分离+保留) - 003-U1 杠杆重排:① 用对 M3(U-A Anthropic /v1/messages + U-B 完整 response/thinking 入历史 + U-C agentic 工具循环=接法B 提主路)② 测量/门修(不改 H 门本体)③ 上下文 8/8 driver ④ best-of-N 次要;加第 0 步真基线门(n≥30 + 证伪实验) - 退路分支/R2/已拍板 #2:ReAct 从 P2 contingency 提为 M3 主路;升强档/Claude premium=退路 - M3 身份确认:真 MiniMax agentic 双协议模型(非 Claude 改名),探针 /v1/messages 返原生 ['thinking','text'] 块 Co-Authored-By: Claude Opus 4.8 (1M context) --- ...026-06-18-生成失败根因分析-requirements.md | 137 +++++++++--------- ...uality-converge-and-m0-integration-plan.md | 37 ++--- 2 files changed, 90 insertions(+), 84 deletions(-) diff --git a/docs/brainstorms/2026-06-18-生成失败根因分析-requirements.md b/docs/brainstorms/2026-06-18-生成失败根因分析-requirements.md index 1b3c1f3b..71c20661 100644 --- a/docs/brainstorms/2026-06-18-生成失败根因分析-requirements.md +++ b/docs/brainstorms/2026-06-18-生成失败根因分析-requirements.md @@ -1,106 +1,109 @@ --- -date: 2026-06-18 +date: 2026-06-18(创建)/ 2026-06-19(v3 二次深化重写) topic: 生成失败根因分析 -title: 「游戏生成为什么失败」根因取证分析 + 改进清单(馈 003-U1 / 001 prompt-gatespec-ReAct) +title: 「游戏生成为什么失败」根因 + 优化方向(核心 = 用对 agentic 的 M3:Anthropic 协议 + thinking/历史全保留 + 工具循环) status: active -review: 已过 Codex+Opus 双视角(Opus 取证 + Codex 验证:命门/行号/救场弱点 ✅ 代码直证;"天花板"措辞按 Codex 精化为"无样本实证·非主因") +review: 已过两轮双评审(2026-06-18 / 2026-06-19 Codex+Opus,揪 3 P0);**本 v3 整合二轮 P0 整改 + M3 协议/agentic 实测,战略转向待执行** --- -# 「游戏生成为什么失败」根因取证分析(创始人 2026-06-18 指派) +# 「游戏生成为什么失败」根因 + 优化方向(创始人指派:用 M3 + mmx 基于现有架构达标) -## 结论先行 +> **v3 二次深化(2026-06-19)说明**:整合三股新输入——① 二轮双评审 P0 整改;② 6c6g 对 new-api 的 M3 双协议**实测探针**;③ MiniMax-M3 官方文档(Interleaved Thinking 最佳实践)。**结论实质转向**:最深根因不是 prompt/门,而是**我们把一个 agentic + 交错思维模型当一次性 JSON 填空机用、还剥掉了 thinking、历史不保留**——这是核心用法错。 -SAA 真全图 e2e 的 **60%(3/5)不是单一"便宜模型天花板",而是三类叠加**,且**"真模型硬天花板"无样本实证、非当前主因**(被现 saa-graph skill 口径高估;Codex 复核同此)。最大可立即修复的失分面:**① few-shot 探针在 H/I 门最关键的 `_forensicsView`/latch 导出处零示范(命门);② prompt 与九门 harness 判据间系统性"写法约束 vs 行为判据"缺口(尤以 I_control 平滑跟手为甚)**。 +## 结论先行(修正版,据实测 + 评审) -**对创始人已拍决定的微调**:**升模型档 + ReAct 方向对(是主杠杆),但若不先补 few-shot 与 prompt-harness 桥接这些零成本缺口,升档与 ReAct 的边际收益会被吃掉一部分。** 顺序应是:**c(prompt/few-shot 补缺,零成本先做)→ a(升档)+ b(ReAct)并行**。 +- **M3 身份(实测确认)**:**真 MiniMax Agentic 模型**(SWE/BrowseComp/xBench 等 Agent 榜 SOTA),原生**双协议**(Anthropic 兼容 `/anthropic` 官方推荐 / OpenAI 兼容 `/v1`),**原生 Interleaved Thinking**。探针证:`/v1/messages` 返回原生 `['thinking','text']` 块、`base_resp` 是 MiniMax 印记。**非 Claude 改名,非弱模型。** +- **60% 失败主因重排**:**① 用法错(最深)= 没当 agent 用 + thinking 剥离 + 历史不留 + 救场从头重生成;② 测量假阴(部分门对某品类不适用);③ 上下文断(driver 词汇/范例)**。**模型能力天花板:无样本实证、非主因**,但现证据仅 **n=5**(`SaaFullGraphE2eTest` 3/5),统计上撑不起强结论。 +- **第一动作 = 先量真基线**:mini-desktop 跑「M3 agentic + thinking 全保留」n≥30,落 verdict/截图;别在 n=5 + 错用法上押注优化方向。 -> **⚠️ 关键实证边界(决定可信度)**:那 60% 的 2 个 giveup 的**真 per-game dump(giveup-dump.json/verdict.json/截图)在 6c6g 与 mini-desktop 两机当前都不存在**(mini-desktop `saa-*` 目录空)。故"三类占比"是**基于判据机制 + 历史同类(scale-20/python-vs-SAA)的推断**,非 SAA 本批实测。**第一步行动 = mini-desktop 重跑取真 dump**(见 §5)。 -> **⚠️ 路径纠偏(承 003 P0-1)**:60% 是 **iife 旧路**实测;**80% 门所在的真结构化 gameDefinition 路(`001-U1~U3`)零行已建未测**。本分析的 prompt/few-shot/救场结论对两条路通用(同一 `SaaPrompts` + 同一九门 harness),可先行落地。 +> **一句心法(v3 升级)**:首版说"生成器上下文 ↔ 验证器契约没对齐";更根本的是——**我们没把 agentic 模型当 agent 用**。M3 的看家本事(工具调用 + 交错思维 + 多轮迭代)被「一次性填空 + 剥思考 + 从头重生成」三连击废掉。**优化第一性 = 先用对 M3,再谈门/prompt/best-of-N。** --- -## 1. 三难门确切判据(逐字引用 `game-runtime/games/_wg1-gen/_shared/play.cdp.cjs`,九门 AND 才 pass) +## 1. M3 是什么 · 怎么调(协议 / thinking / 历史 = 用法地基) -- **F_wiring(真接线 · 行 923-931)**:真玩中扫 `window.__engineCalls`,须命中 `expectedEngineCallPrefixes`(粒子/音效),剔 `math.lerp`(防刷屏挤掉 gameplay)。**只纯 canvas 自绘 = 挂**。 -- **H_progress(进展 + P0 latch · 行 960-988)**:`progressPass`(assertAfterPlay 每条过,如 remaining decreased / result==win)**且** `latchPass`(expectLatch 时,真玩后 ≤4.2s 进 `phase=gameover`,再 600ms 仍 gameover=驻留)。**可测性红线**:声明了门却读不到 state(没实现 `_forensicsView`)= 直接判否。 -- **I_control(控制跟手 · 行 508-526)**:连点目标 x,读控制体位置,`ok = |moved|≥25px ∧ dist≤70px`(朝目标移动可观距离且落容差内)。逮"一格一跳/卡死/不跟手"。仅 gatespec 声明 controlCheck 时启用。 +- **三条 thinking 分离路(官方,我们一条没用对)**: + 1. **Anthropic `/v1/messages`** → 原生 `thinking`/`text`/`tool_use` 分块(**最干净·官方推荐·6c6g 已实测可用**); + 2. **OpenAI `/v1` + `extra_body={"reasoning_split":True}`** → thinking 进独立 `reasoning_details` 字段(干净); + 3. OpenAI `/v1` 默认 → `` 内联 `content`(脏 → 撑爆 max_tokens 截断 = QC 撞的病)。 +- **铁律(官方文档原文)**:多轮必须把**完整模型返回(thinking+text+tool_use 所有块)回传进历史**,"切勿修改 content…否则 Interleaved Thinking 失效、发挥不出最佳性能"。→ **现 `looseParse` 只抠 JSON、丢 thinking + 救场从头重生成 = 正好违反它。** +- **QC 的「`thinking:disabled`」是错补丁**:它为躲截断把 thinking 关了(丢质量),正解是**用路 1/2 分离 + 保留**,不是关。 +- **`max_tokens=16000` 是输出上限,不是上下文窗**:M3 输入窗 512K → context engineering 不受限(driver 文档/范例/schema/反例随便喂);输出抬到 **<128K** 给 thinking+答案留够(创始人定)。 --- -## 2. 失败模式 + 三类归因(逐难门) +## 2. 三难门判据(保留)+ 门假阴审计(评审修正:点击消除 H 归上下文,非测量) -归因三分:**【喂不全=可修】**(prompt·gatespec·few-shot·约定没传达到判据)/**【门判据偏=误杀/Goodhart】**/**【模型能力天花板】**。 - -- **I_control —— 最被低估、最可修**:模型写"点哪跳哪"离散瞬移、或缓动不达 `moveMin/tol`。**归因=【喂不全】为主(强)**:prompt(`SaaPrompts.SYSTEM`)**完全没要求"控制体随输入平滑跟手/别一格一跳/跟到位"**——harness 查这条、prompt 零提及 = **最大判据缺口**。次要=【门判据偏】嫌疑(tol=70px 对惯性控制体可能误杀,待 dump 验)。 -- **F_wiring —— 中等可修**:接线只埋稀有分支(仅胜利时爆)、真玩核心路径采不到 call-ID。prompt 硬规则第5条**有**"调一次 getEngine 能力",**缺**"接线点须落核心循环高频事件"。历史强反证:scale-20 里 F_wiring 只栽 1 款且真因是**宿主缺键盘桥**(host 修后 0→27 翻绿),非模型不会接线。 -- **H_progress —— 失分主力,根因复杂**:三症状 =(a)latch 不驻留(进 gameover 又自动重开);(b)进展断言不满足(score/remaining 空心、tap 类 driver 盲打打不中);(c)可测性红线违约(没 `_forensicsView`/返回开局快照)。**三类都有**:【喂不全】强(few-shot 缺示范=命门,见 §3;tap driver 盲打曾大批栽已部分修);【模型天花板】部分(扫雷=明确模型质量差);【Goodhart】中(单条 `score++/revealed++` 鉴别力弱,harness §8 自认,踩雷也 revealed++)。 -- **其余门(A_boot/B/C/D/E/G)**:便宜模型实测稳过;scale-20 这些门的失败**全部"回喂一次即修"**(违禁词/缺 render/没调 getEngine);G_input 历史失败被证为**宿主键盘桥 2 行 bug**,非模型。 +- **判据**(逐字 `play.cdp.cjs`):F_wiring(923-931 命中引擎调用)/ H_progress(960-988,读 gatespec 自声明的 `assertAfterPlay[]` + latch 驻留)/ I_control(508-526,y=800 连点 `|moved|≥25∧dist≤70`)。 +- **I_control = 真测量问题(归环境/harness)**:只适配 tap-target/挡板横移;键盘/拖拽类必假阴 → 按 control-scheme 分型。 +- **H_progress = 评审修正为上下文/生成问题,非门测错**:H 门读 gatespec 的 `assertAfterPlay`,**金样 `match3`(消除类)用 `tap-pairs`+`score increased` 断言 H 门本来就过** → 点击消除失败是**生成选错 driver/断言**(退到 tap-targets+remaining),**不是 `remaining=alive.length` 把门测错**。修法在 prompt/gatespec(选对 driver+score),**不改 H 门本体**。 +- **F_wiring**:driver 没触核心路径 → fx/audio 零调用 → 连带败(与 H 同根)。 --- -## 3. 命门:few-shot 探针在最难导出处零示范(最高 ROI 单点 · 已亲证) +## 3. 三桶根因(用法桶升为首 · 标证据强度) -- **事实**:`SaaPrompts.buildMessages` 唯一注入的 few-shot = `game-runtime/games/_wg1-gen/_goldenpath-probe/factory.js`(78 行),其 `return {init,update,render,destroy}`(行 77)——**没有 `_forensicsView`、没有 phase/score/gameover/latch**。 -- **矛盾**:prompt 文字把 `_forensicsView`+latch 驻留列为**硬性验收点**(H/I 门可测性的全部依据),但**唯一代码范例在此处零演示**——便宜模型只能照文字硬抄一个它没见过实现的结构,而这恰是它最易漏/写错处。 -- **对照**:`game-runtime/games/_generic/generated-factory.js` 含完整 `_forensicsView`(27 处),prompt 只"文字引用"它、**没注入为 few-shot**。 -- **归因**:纯【喂不全=可修】,是 **H_progress + I_control 失分的共同上游放大器**。 +**① 用法桶(最深 · 代码直证)** +- **没把 M3 当 agent 用**:现 SAA 是确定性图,generate=单次吐 JSON、repair=另一次单调用;M3 的 tool-use + 交错思维**完全没用上**。 +- **thinking 剥离**:`SaaPrompts.looseParse`(503)只截最外层 `{...}` 抠 JSON,**丢弃任何 thinking**;`SaaStudioGraph.model()`(138-149)没配 thinking 路。 +- **历史不留**:`buildMessages`(348-356)每轮是全新 `[system,user(brief+feedback)]`,**无上一轮 assistant 响应(更无 thinking/tool 历史)** → 交错思维断链。 +- **救场从头重生成(a3 未做,评审 P0)**:gamedef repair 只喂题面+门 verdict,**连上一版源码都不回传**(只 factory regenerate 特例喂);prompt 还命令"重新产出完整模块" → 便宜模型反复犯同错、打翻已过部分。 +- **best-of-N 缺失且整图串行**:`SaaGraphDispatcher` `newSingleThreadExecutor`(101)+`Semaphore(1)`(113)包住整条 `graph.invoke`(非只 play)+ 固定端口 → K 候选无法并行(评审修正:不是"只 play 串")。 + +**② 上下文桶(纯加料 · 必要非充分)** +- **driver 词汇 8 vs 3**:harness 支持 8 种(`play.cdp.cjs:207-214`),`DESIGN_SYSTEM` 只教 3(`SaaPrompts.java:265`),`tap-pairs` 等没教。**评审警示:必要非充分**——QC `7c02ff91` 自证补了 flap-to-gap/seek-x、便宜模型仍产不出 `nextGap/nextPlatform` 配套障碍实体 = **真能力变量,补 driver 不全治**。 +- 失败品类无 worked example(`gd-archetypes.test.mjs:34-85` 有现成金样可内联)/ 隐性门约定(paddleY=800)未写 / 缺反例 / **512K 输入窗没喂满**(可塞全 driver+每品类范例+schema+检索同类)。 + +**③ 环境/测量桶** +- M3 thinking 协议错用(走 OpenAI 默认内联致截断;QC 关 thinking 是错补丁)/ Java `SaaStudioGraph.model()` M3 兜底未配 thinking / I_control 品类假阴 / **模型路由**:`models.yaml` 现 stage1 主码=deepseek-v4-flash、**M3 仅视觉+兜底**,要扶正 M3 需 n≥30 真基线(现仅 n=5,不可扶正)。 --- -## 4. 三类占比(推断,标证据强度)+ 救场结构弱点 +## 4. 优化清单(执行序 · 标在飞去重 · 放置 003) -| 归因类 | 推断占比 | 证据 | 强度 | -|---|---|---|---| -| 【喂不全=可修】 | **最大头** | few-shot 缺 `_forensicsView`(亲证)· I_control 平滑跟手 prompt 零提及(亲证)· F_wiring 接线点未桥接 · H 断言无终局语义 | 强(代码直证) | -| 【门判据偏/Goodhart】 | 中等 | I_control tol=70px 可能误杀 · H 单条断言鉴别力弱(harness §8 自认) | 中(需 dump 验) | -| 【模型能力天花板】 | **非主因·无样本实证** | scale-20 **无"人工介入后仍不过"的款**(=无确认硬天花板);唯一疑似=扫雷;python-vs-SAA 同 prompt 平手 | 中(历史同类,非本批;待 dump) | +> **第 0 步(前置硬门 · 评审焊死)**:mini-desktop 跑「**M3 agentic + thinking 全保留**」n≥30 真基线 + 落 verdict/截图 + 2 款失败款「**只改 driver 不改门**」证伪实验。**过=上下文桶;不过=能力变量**。没这个数,下面不押注。 -> **口径冲突(Codex 复核确认)**:saa-graph skill 把 I/F/H 60% 直接归"便宜模型天花板",**证据不足**——scale-20 的高通过掺入人工介入(调 driver+收紧 brief+重生成+host 修),**没有"人工介入后仍不过"的款**,故既无法反证"无人值守 80% 可达"、也无样本确认真硬天花板。**精确表述(Codex 建议)**:SAA 60% 主因 = **无人值守产线的"喂不全 + 救场机制不足 + 门判据偏"**;"便宜模型天花板"是有信息损失的 shorthand,真天花板占比待 dump 实测。 +**① 用对 M3(用法桶 · 首 · 治最深)→ `003-U1`** +- **U-A 协议切干净 thinking**:M3 走 Anthropic `/v1/messages`(或 OpenAI `reasoning_split=True`),**thinking 保持开**;Java 用 Spring AI `AnthropicChatModel`(指 new-api anthropic 端点)替 `OpenAiApi` 那条。 +- **U-B 完整历史 + thinking 回传**:每轮 `response.content`(thinking+text+tool_use)全留进历史;**repair 改连续对话**(恢复并升级 a3,非从头重生成)。 +- **U-C agentic 工具循环(接法B/ReAct 提主路)**:给 M3 工具(写源/build/跑九门/读 verdict/改),**九门从"外部判官"变 M3 手里的验证工具**,交错思维迭代修。SAA `ReactAgent` 落地;**便宜模型 tool-use 可靠性仍需我们任务上实测**(官方称 SOTA)。 +- max_tokens 抬 <128K。 -**两个救场结构弱点(放大失败,与归因正交)**: -1. **普通 repair 回喂只给失败原因文字、不回喂上一版源码** → 便宜模型每轮从零重出、看不到自己上轮代码 → 反复犯同类错。 -2. **failCount 跨档续计不重置**:stage1 用掉 5 次升 stage2 后,强档 `deepseek-v4-pro` 只剩 3 次救场——**最该发力的强档机会最少**。 +**② 测量/环境 → `003-U5`(门/运行时)+ `003-U1`(M3 配置)** +- I_control 按 control-scheme 分型(真活,给枚举);**H/F 不改门本体、改 gatespec 约定**(消除类用 score+tap-pairs);模型路由 n≥30 达标后切 M3 主码。 + +**③ 上下文(纯加料)→ `003-U1`** +- 8/8 driver 决策树 + 失败品类 worked example + 隐性约定 + 反例 + 512K 喂满(检索增强同类范例)。【在飞:QC driver 上半已补,扩齐 8/8。】 + +**④ 次要 → `003-U1`/`003-U2`** +- best-of-N(**需先重构 dispatcher 解整图串行**;K 候选相关性致上界 <94%,墙钟 K×3.5-16min,成本对账)/ JSON mode(per-model 实测;Anthropic 协议下 tool_use/structured 输出更稳,可能 moot)。 + +> **在飞去重(QC 分支 `feat/mac-gamedef-qc-concurrent`)**:已做 thinking py-side(但方向是"关"→**要改成"分离+保留"**)、assert 进展过滤、driver 上半。本分析把"点状修"扩成"**用对 M3(agentic+thinking+历史)为首** + 三门修对 + context 补齐 + best-of-N 次要"的系统版。 --- -## 5. 改进清单(映射创始人已拍杠杆 + 补缺;每条标 治哪类/收益/风险) +## 5. 放置(创始人 2026-06-19 定) -> 顺序 = 投入产出比。**a/b = 创始人已拍主杠杆;c/d = 必须先做或并做的底层补缺,否则 a/b 收益打折。** 公平性铁律:c1-c4 须 Python(`prompt.py`/`roles.py`)与 Java(`SaaPrompts.java`)**逐字同改**。 - -**c) prompt/gatespec/few-shot/运行时约定(治【喂不全】· 最高性价比 · 先做)** -- **c1 ★换 few-shot 探针为含 `_forensicsView`+latch 的范例**(命门,改 1 文件):预期最大单点提升,纯 few-shot 内容、不改判据、零成本。须保证范例本身过九门。 -- **c2 prompt 补 I_control 平滑跟手判据**:增"连续控制体须随输入平滑移动并跟到目标位,禁'点哪跳哪'离散瞬移"。补上 prompt↔harness 唯一零提及判据。 -- **c3 prompt 补 F_wiring 接线点桥接**:增"引擎能力调用须埋核心循环高频事件(每次得分/碰撞/移动),非仅稀有胜负分支"。 -- **c4 gatespec/H 断言带终局语义**:assertAfterPlay 优先用 remaining→0/result==win/全清,避免 `score++` 被无意义满足。 - -**a) 升默认模型档(已拍主杠杆 · 治真天花板那部分)** -- **a1 难门处升档**:I_control/H_progress 最吃力 → 把 stage1 code/fix 从 `deepseek-v4-flash` 升 `deepseek-v4-pro`(或网关更强档横比);破 ¥0.15 临时允许、记账(创始人已批,Phase-3 压回)。 -- **a2 修 failCount 跨档不重置**(配套·低成本高杠杆):escalate 升档时重置/放宽 failCount,让强档拿完整修复预算。 -- **a3 回喂带上一版源码**(配套):普通 repair 路也喂上轮 factory 源(类比 regenerate 路),让模型在自己代码上改;控 token 上限。 - -**b) ReAct 自治(已拍主杠杆 · 001-U5 · 治【喂不全】+ 提升复杂门)** -- **对 H_progress + I_control 最受益**:写源→build→真玩九门→读 verdict→改 的写-跑-改循环,对治"latch 不驻留/进展不达/跟手不到位"这类单发难、迭代能修对的问题;九门 verdict 作强制终止。 -- **风险(创始人已列 R3,必须实测)**:便宜模型 tool-use 可靠性未知(格式错乱/不收敛/烧预算)→ 不稳则该路也升档(质量优先)+ 设 tool-call 预算硬上限。**便宜模型 tool-use 可靠性 = ReAct 能否当主杠杆的前置实测。** - -**d) 其他** -- **d1 I_control tol 校准**:取真 dump 后看 moved/dist 分布,惯性控制体被误杀则按品类放宽。(前置:需 dump) -- **d2 giveup 真因不抹平**:现回调把 `max_repairs_exceeded`/`bundle_missing` 全抹成 `llm_error`(`SaaGraphDispatcher`)→ 审核台/分析看不到差异化真因;契约 #6 加细分失败码/trace 透传。 +- **全归 `003`,`001` 已收口不重开。** 用对 M3(U-A/B/C)+ 上下文 + best-of-N/JSON → `003-U1`;门判据/运行时(I_control 分型/资产)→ `003-U5`;模型路由 flip → `003-U2`。 +- **接法B/ReAct 从 P2(agentic canonical)提为 `003-U1` 的 M3 主路**(创始人 2026-06-19 转向:M3 是 agentic 模型,该当 agent 用;`agentic编排-SAA.md` 待同步 P2→主路)。 +- **角色分工**:本档(6c6g)出方向 + 精确可执行项;所有 codegen 由 Mac 在 `003-U1/U5` 落地。 --- -## 6. 验证闭环(挂 003-U1) +## 6. 验证闭环(挂 `003-U1`) -1. **第一步必做 = 取真基线 + 真 dump**:mini-desktop 重跑 `SaaFullGraphE2eTest`(`-Dsaa.e2e=1 -Dsaa.e2e.n≥10`,`NEWAPI_KEY`,`GAME_RUNTIME_DIR`),**gather 那批 giveup 的 `saa-*/evidence/{verdict.json,giveup-dump.json,*.png}`**——把 §4 占比从推断变实测、定位每个 giveup 真卡哪门哪类。**注:80% 门所在 gameDefinition 路零行已建,真基线应在 `001-U3` cutover 后测该路,不是"从 60% 收敛"。** -2. **改 → 重测(单变量 A/B)**:先单独验 **c1(换 few-shot,零成本预期最大)**→ 叠 c2/c3/c4 → 验 **a1(升档)+a2(重置)**→ 验 **b(ReAct)+ tool-use 可靠性(R3)**。每轮同组 n≥10 brief,记成功率 + 逐门过门率 + 每过门成本,单变量对比。 -3. **达标门**:`003-U1` 改造 `SaaFullGraphE2eTest` 加 `minSuccessRate=0.8` 硬断言;达 ≥80% 才走 `003-U2` flip。 +1. **第 0 步真基线门**(上)——先量「M3 agentic+thinking 全保留」真起点。 +2. **单变量 A/B(同组 n≥10)**:① thinking 开 vs 关、Anthropic vs OpenAI 协议 → ② agentic 工具循环 vs 单次 → ③ context 补料 → ④ best-of-N。每轮记成功率 + 逐门过门率 + 每过门成本(M3 计费口径=Anthropic 格式,待 new-api channel 确认)。 +3. **达标门**:`SaaFullGraphE2eTest` 加 `minSuccessRate=0.8` 硬断言;≥80% 才走 `003-U2` flip;成本破 ¥0.15/款临时允许(质量优先,Phase-3 压回)。 --- -## 关键文件锚点(供执行引用) +## 关键锚点(代码 + 实测证据) -- 九门判据:`game-runtime/games/_wg1-gen/_shared/play.cdp.cjs`(F_wiring 923-931 / H_progress 960-988 / I_control 508-526 / AND 1009) -- prompt:`game-cloud/.../saa/SaaPrompts.java`(SYSTEM 55-139 / DESIGN_SYSTEM 144-169)· `wg1/gen-worker/worker/prompt.py`(24-107)· `agent_loop/roles.py` -- **命门 few-shot(缺 `_forensicsView`)**:`game-runtime/games/_wg1-gen/_goldenpath-probe/factory.js`(行 77)· 对照范本 `game-runtime/games/_generic/generated-factory.js` -- 救场:`game-cloud/.../saa/SaaStudioNodes.java`(阶梯 1488-1505 / escalate 1302-1322 / giveup 794-835)· `SaaStudioGraph.java`(模型档 65-84) -- e2e(60% 来源):`game-cloud/.../saa/SaaFullGraphE2eTest.java` -- 历史归因:`docs/agent-specs/_archive/2026-06-14-WG1-scale20-短板量化报告.md` · `.agents/skills/{cheap-model-game-generation,game-e2e-cdp-harness}.md` +- **M3 双协议实测(6c6g curl,2026-06-19)**:`/v1/chat/completions` → `usage_source:anthropic`+claude_cache 字段、简单题无 thinking;`/v1/messages`+thinking → `content blocks:['thinking','text']`、`base_resp`(MiniMax)。 +- **MiniMax-M3 官方文档**:Agentic/Interleaved Thinking;最佳实践=完整回传 thinking/reasoning_details 入历史;`reasoning_split=True`(OpenAI)/原生块(Anthropic)。 +- 用法桶代码:`SaaPrompts.java`(looseParse 503 / buildMessages 348-356)· `SaaStudioGraph.java`(model() 138-149 / M3 fallback 89-91)· `SaaGraphDispatcher.java`(单线程 101 / Semaphore 113 / invoke 275)· 端口 `SaaGenNodes.java:455-456`。 +- 门 + driver:`play.cdp.cjs`(F 923-931 / H 960-988 / I 508-526 / 8 driver 207-214)· 金样 `gd-archetypes.test.mjs:34-85`(match3 tap-pairs+score 过 H)。 +- 框架 reasoning 支持:Spring AI Alibaba `getMetadata().get("reasoningContent")`(`ModelExecuteManager`/`LLMExecuteProcessor`)· `AnthropicChatModel` 可用。 +- 模型路由:`wg1/gen-worker/worker/models.yaml`(deepseek 主 / M3 视觉+兜底)。 +- 在飞:`git show 0ee2bf61 7c02ff91`(origin/feat/mac-gamedef-qc-concurrent)。 diff --git a/docs/plans/2026-06-18-003-feat-gen-quality-converge-and-m0-integration-plan.md b/docs/plans/2026-06-18-003-feat-gen-quality-converge-and-m0-integration-plan.md index 18006fdb..bbba2989 100644 --- a/docs/plans/2026-06-18-003-feat-gen-quality-converge-and-m0-integration-plan.md +++ b/docs/plans/2026-06-18-003-feat-gen-quality-converge-and-m0-integration-plan.md @@ -65,10 +65,14 @@ review: 本档已过 Codex + Opus 双评审(AGENTS.md §6 条款 8,2026-06-18), ### 003-U1. 真结构化路质量收口到产线门(≥80%,先实测真基线) - **Goal**:`001-U3` cutover 后**先实测 gameDefinition 路过门率真基线**(填"现起点=?%"),再在其上**收敛到 ≥80%** 产线门。**删除"从 60% 收敛"**(60% 是 iife 旧路,跨路径错配)。 -- **前置(硬,P0-1)**:`001-U1~U3` 落地可跑且 gameDefinition 路 cutover **≥60%**;否则本单元**无立项数字、不启动**。 +- **前置(硬)**:① `001-U1~U3` 落地可跑;② **第 0 步真基线门(v3)**——mini-desktop 跑「**M3 agentic + thinking 全保留**」n≥30 + 落 verdict/截图 + 2 款失败款"**只改 driver 不改门**"证伪实验,**先量真起点再优化**(别在 n=5 + 错用法上押注;过=上下文桶、不过=能力变量)。 - **范围**:在 `001-U3` 的难门 prompt/gatespec/救场**活代码上续做调优**(SoT 归 `001-U3`,不另起);主攻 `I_control`/`F_wiring`/`H_progress`。 -- **改进杠杆(据根因分析 `docs/brainstorms/2026-06-18-生成失败根因分析`,序 = c 零成本先 → a 升档 + b ReAct 并行)**:**c1 ★换 few-shot 探针含 `_forensicsView`/latch**(命门 = 现注入的 `_goldenpath-probe/factory.js` 缺它、prompt 却硬要求 → 模型抄没见过的东西;改 1 文件、预期最大单点)· c2 prompt 补 I_control 平滑跟手判据(harness 查、prompt 零提及)· c3 F_wiring 接线落核心循环高频事件 · c4 H 断言带终局语义;**a1 难门升 `deepseek-v4-pro` · a2 修 failCount 跨档不重置(强档现只剩 3 次救场)· a3 repair 回喂带上一版源码**(现只喂失败文字、反复犯同错);b ReAct(**P2 agent-native 轨** `agentic编排-SAA.md`;**contingency·非本计划拥有**:升档+修不达 80% 才升级,便宜模型 tool-use 待实测)。**每改单变量 A/B 重测(同组 n≥10),先单验 c1。** -- **⚠️ 评审更新(2026-06-18 · 001 已合 dev/2.0.0)**:gamedef 路**已绕开命门**(`_forensicsView` 由 build-from-source 自动派生、I_control prompt 明写、clickable 内置)→ **c1 对目标 gamedef 路基本 moot**(c1 仍治 iife 旧路)。**新焦点**:① **`remaining=alive.length` 语义错位**(multiball 类 spawn 抬高 alive→`remaining decreased` 假阴 H 门)→ gd-runtime 改"剩余目标语义"或 DESIGN_SYSTEM 的 assertAfterPlay 范例改 `score`;② **assertAfterPlay 词汇门禁**(designNode 合并前校 path 仅 `score/remaining/result`+实体路径,拒 `moves/totalRound`)= c4 落地(Mac 待办 #2);③ **gamedef 模型产出过门率=未测**(commit 的"9/9"=手写金样过 harness、非模型过门;真量测=本 baseline);④ worker `prompt.py` 仍 iife-only,gamedef 切默认前必补 `GAMEDEF_SYSTEM`(防 http 路丢 gamedef)。 +- **改进杠杆(v3 · SoT=根因分析档 `docs/brainstorms/2026-06-18-生成失败根因分析-requirements.md`,2026-06-19 重写;序按"用对 M3 优先")**: + - **① 用对 M3(用法桶·首·治最深)**:**U-A** M3 切 Anthropic `/v1/messages`(或 OpenAI `reasoning_split=True`),**thinking 保持开 + 干净分离**(Java 用 Spring AI `AnthropicChatModel` 替 `OpenAiApi`);**U-B** 完整 `response.content`(thinking+text+tool_use)**入历史**,repair 改**连续对话**(恢复并升级 a3);**U-C** **agentic 工具循环(接法B/ReAct 提主路)**——M3 调工具 写源/build/跑九门/读 verdict/改,**九门作 M3 手里的验证工具**,交错思维迭代;max_tokens 抬 <128K。 + - **② 测量/门修**:I_control 按 control-scheme 分型;**H/F 不改门本体、改 gatespec 约定**(消除类用 `tap-pairs`+`score`)。 + - **③ 上下文(纯加料)**:8/8 driver 决策树 + 失败品类 worked example + 反例 + 512K 喂满。 + - **④ 次要**:best-of-N(**需先解 dispatcher 整图串行**)/ JSON mode(per-model 实测,Anthropic 协议下可能 moot)。**每改单变量 A/B(同组 n≥10)。** +- **⚠️ v3 修正注记(2026-06-19,实测 + 双评审)**:① **M3 是 agentic 模型、双协议**(探针证 `/v1/messages` 返原生 `['thinking','text']` 块);**QC 的 `thinking:disabled` 是错补丁**(该分离+保留、非关)→ 环境桶 M3 修法改为"Anthropic 协议 + thinking 保留"。② **点击消除 H 失败 = 上下文/生成问题、非门测错**(评审证金样 `match3` 用 `tap-pairs`+`score` 已过 H)→ **不改 H 门本体**,改 prompt 选对 driver+断言。③ **a3 救场回传未做**(gamedef repair 只喂题面+门 verdict、不回传上一版源码)→ U-B 恢复并升级为"完整历史+thinking"。④ gamedef 模型产出过门率=未测(commit 的"9/9"=手写金样;真量测=第 0 步基线);worker `prompt.py` 仍 iife-only,切默认前补 `GAMEDEF_SYSTEM`。 - **验收门(P1:可客观运行)**:**改造 `SaaFullGraphE2eTest`**——扩 brief 至 `n≥10`(或外部 brief 文件)+ 增 **`minSuccessRate=0.8` 硬断言**(现默认 5 条、只断"≥1 跑通"=不可作 flip 前置硬门);gameDefinition 路实测 **≥80%**;成本守门(见 KTD 5 优先级)。 - **file 级(留 Mac)**:`001-U3` 同批活代码(`SaaPrompts`/`SaaStudioNodes` gatespec + worker `prompt.py`)+ 测试改造。 @@ -117,16 +121,15 @@ review: 本档已过 Codex + Opus 双评审(AGENTS.md §6 条款 8,2026-06-18), --- -## 80% 不可达退路分支(★P0-2 整改:必须预置,非空头) +## 80% 不可达退路分支(v3 修正:接法B 提主路后的真退路) -> **现 `R2` 的"stage2 升档救场"已默认实装、已计入那 60%/基线**(`saaMaxRepairs=5`/`saaStage2ExtraRepairs=3`,escalate 真切强档 `deepseek-v4-pro`)——**不是未来退路**。记忆已判难门是**便宜模型质量天花板**,prompt/gatespec 调优边际收益存疑。故必须预置真退路: +> **v3 转向(创始人 2026-06-19,据 M3 实测 + 官方文档)**:旧框架"便宜模型天花板 → ReAct 作 contingency"**已被推翻**——M3 是 **agentic SOTA 模型**,**用对它(Anthropic 协议 + thinking 保留 + 工具循环)本身就是主达标杠杆**,不是兜底。真天花板无样本实证、且基线未测(现仅 n=5)。故退路重定: -> **✅ 创始人 2026-06-18 拍:走 (i) 升默认模型档 + (iii) ReAct(两者都上,非二选一)。** 质量门 ≥80% 优先于成本——**不指望只靠便宜模型 + prompt/gatespec 硬调到 80%,而以升模型档 + ReAct 自治作达标主杠杆**。 - -- **(i) ✅ 升默认模型档(已定·主杠杆)**:质量优先 → 难门最该升档处升(成本 Phase-3 再压);破 ¥0.15/款临时允许、记账对账。 -- **(iii) ✅ ReAct 自治 = contingency(P2 agent-native 轨,非 003 拥有)**:创始人 2026-06-18 将 U5 移出 001 → P2(`agentic编排-SAA.md`);**升档+修(remaining/asset/c4)不达 80% 才升级到 ReAct**(generate/repair 装真 tools 长成 ReactAgent,九门 verdict 强制终止)。便宜模型 tool-use 可靠性待实测。 -- (ii) 降九门难门判据 /(iv) 改判 Phase-1 门 = **备选**,仅 (i)+(iii) 仍不达时由创始人裁。 -- **触发**:`003-U1` 实测真基线后即按 (i)+(iii) 推进(不必等"调优 2 轮")。配套 = 「生成失败根因分析」(Claude 出)定位天花板真因、细化各门改进。 +- **主杠杆(已提主路,非退路)**:用对 M3 = agentic 工具循环 + thinking 全保留(`003-U1` U-A/B/C)。 +- **(i) 升强档**:M3 agentic 仍不达 → 难门处升 `deepseek-v4-pro` 或 M3 强档;破 ¥0.15/款临时允许、记账(质量优先,Phase-3 压回)。 +- **(ii) Claude premium 兜底**:难品类 M3 仍乱 → Claude 经 Anthropic `/v1/messages`(原生干净 thinking + 顶质量,成本高,对齐 long-term premium 轨)。 +- (iii) 降九门判据 /(iv) 改判 Phase-1 门 = 末选,仅前述仍不达时创始人裁。 +- **触发**:`003-U1` 第 0 步真基线后即推进;天花板真因 + 各门改进细化见根因分析档(2026-06-19 v3 重写)。 --- @@ -139,9 +142,9 @@ review: 本档已过 Codex + Opus 双评审(AGENTS.md §6 条款 8,2026-06-18), ## 风险与依赖 -- **R1 全下游 001 + 零行已建**:gameDefinition 路当前零行(双评审 grep);`003` 在 `001-U1~U3` 落地可跑前**不启动**;gating 链显式(HTD 表)+ 挂总账 M0 追踪。 -- **R2 便宜模型难门天花板(最大)**:stage2 强档已在基线、纯 prompt/gatespec 调优边际收益存疑 → **已拍主杠杆 = 升模型档 + ReAct**(非只调便宜模型);天花板真因待「生成失败根因分析」(Claude 配套出)定位。 -- **R3 ReAct 便宜模型 tool-use 可靠性未知**:`001-U5` ReAct 提为主路后,便宜模型能否稳定 tool-use(写源/build/读错/改)需实测;不稳则该路也升模型档(承质量优先)。 +- **R1 全下游 001(已合 dev/2.0.0 `39c16630`)**:`003` 在 `001-U1~U3` 可跑后启动;gameDefinition 路真基线**未测**(现仅 n=5),第 0 步先量(`003-U1` 前置)。 +- **R2 主因=用法错,非便宜模型天花板(v3 修正)**:实测证 M3 是 agentic SOTA、双协议;旧"天花板(最大)"措辞**推翻** → 主达标杠杆 = **用对 M3(agentic + thinking 保留)**;真天花板无样本实证、占比待第 0 步基线。 +- **R3 M3 tool-use 可靠性(我们任务上)待实测**:M3 官方称 Agent 榜 SOTA,但本生成任务(写源/build/读 verdict/改)的稳定性须 mini-desktop 实测;不稳则升强档/Claude premium(承质量优先)。 - **R4 flip 回归**:回退预案(`003-U2`)+ feature-flag + 隔离实例先验。 - **R5 M0 重复认领**:已澄清机制归 `001`、`003` 只补验收 gate(KTD 3)。 - **依赖**:mini-desktop(九门 e2e)· `NEWAPI_KEY` · `001` 产线化落地 · 前端 `002-U8/U9` 子门 A · 总账 M0 里程碑(追踪)。 @@ -157,14 +160,14 @@ review: 本档已过 Codex + Opus 双评审(AGENTS.md §6 条款 8,2026-06-18), | M0 核心纵切联合验收门(机制归 001) | 003-U3 | | 最终 Phase-1 验收闭环(M1/M2/M3 收口) | 003-U4 | | 引擎资产渲染收尾(六类资产 ref→draw + asset 孤儿闭合,原 002-U11) | 003-U5 | -| 达标主杠杆:升模型档 + prompt/gatespec 修(主)· ReAct(contingency·P2 轨) | 退路分支 + 003-U1 | +| 达标主杠杆:用对 M3=agentic 工具循环 + thinking 保留(主路)· 升强档/Claude premium(退路) | 003-U1 + 退路分支 | --- ## 已拍板(创始人 2026-06-18) 1. ✅ **质量门 ≥80% 优先于成本门 ¥0.15/款**(冲突取质量;允许临时破价上限,Phase-3 压回)。 -2. ✅ **达标主杠杆 = (i) 升默认模型档 + prompt/gatespec 修(remaining 语义/asset/c4)**;**ReAct = contingency**(创始人 2026-06-18:U5 移出 001 → P2 agent-native 轨,升档+修不达 80% 才升级);(ii)降判据 /(iv)改门 = 更后备选。 +2. ✅ **达标主杠杆(2026-06-18 初判 → 2026-06-19 v3 转向)**:~~升模型档 + ReAct 作 contingency~~ → **改为「用对 agentic 的 M3」作主路**(Anthropic 协议 + thinking/历史全保留 + 工具循环 = 接法B/ReAct 提主路);升强档/Claude premium = 退路;降判据/改门 = 末选。**依据 = M3 双协议实测 + 官方 Interleaved Thinking 文档(见根因分析档 v3)。** 3. 🔬 **配套:Claude(6c6g)做「生成为什么失败」根因分析 + 改进**(喂本 `003-U1` + `001` 的 prompt/gatespec/ReAct)——分析档另出、过双评审。 -> **执行姿势**:`003` 全下游 `001`,JIT 排 001 产线化后;`003-U1` **先实测真基线再收敛**(主杠杆 = 升模型档 + ReAct);质量域 file 级 SoT 在 `001-U3` 活代码(`003` 续做、不另起)。测试机 mini-desktop。**本计划已过 Codex + Opus 双评审(AGENTS.md §6 条款 8);2 项待拍已由创始人拍板(见「已拍板」)。** +> **执行姿势**:`003` 全下游 `001`(已合);`003-U1` **先跑第 0 步真基线(M3 agentic + thinking 全保留,n≥30)再收敛**(主杠杆 = 用对 M3,见杠杆 ①);质量域 file 级 SoT 在 `001-U3` 活代码 + 根因分析档 v3(`003` 续做、不另起)。测试机 mini-desktop。**本计划已过双评审 + 2026-06-19 v3 战略转向(M3 agentic 提主路)经创始人拍板。**